Class: Pike::Main
- Inherits:
-
Object
- Object
- Pike::Main
- Defined in:
- lib/pike/main.rb
Class Attribute Summary collapse
-
.debug ⇒ Object
Returns the value of attribute debug.
-
.dry_run ⇒ Object
readonly
Returns the value of attribute dry_run.
-
.env ⇒ Object
readonly
Returns the value of attribute env.
-
.envs ⇒ Object
readonly
Returns the value of attribute envs.
-
.task_to_run ⇒ Object
readonly
Returns the value of attribute task_to_run.
-
.tasks ⇒ Object
readonly
Returns the value of attribute tasks.
-
.variables ⇒ Object
readonly
Returns the value of attribute variables.
-
.verbose ⇒ Object
readonly
Returns the value of attribute verbose.
Class Method Summary collapse
- .action(msg, vital = true, &block) ⇒ Object
-
.add_env(name, &block) ⇒ Object
Add a environment (called from DSL::Pikefile.env).
- .add_task(name, &block) ⇒ Object
-
.check_pikefile ⇒ Object
Check if Pikefile exists.
-
.error(msg, trace = nil) ⇒ Object
Handles an error.
-
.finalize ⇒ Object
Close ssh connection and logger.
- .find_task(task) ⇒ Object
- .get_var(key) ⇒ Object
- .init(options) ⇒ Object
-
.load_pikefile ⇒ Object
Load Pikefile.
-
.prepare ⇒ Object
Load tasks.
-
.run ⇒ Object
Run the deployment.
-
.run_lifecycle ⇒ Object
Run the lifecycle for the environment.
-
.set_environment ⇒ Object
Sets the @env variable depending on what the user provided.
- .set_var(vars = {}) ⇒ Object
Class Attribute Details
.debug ⇒ Object
Returns the value of attribute debug.
19 20 21 |
# File 'lib/pike/main.rb', line 19 def debug @debug end |
.dry_run ⇒ Object (readonly)
Returns the value of attribute dry_run.
21 22 23 |
# File 'lib/pike/main.rb', line 21 def dry_run @dry_run end |
.env ⇒ Object (readonly)
Returns the value of attribute env.
21 22 23 |
# File 'lib/pike/main.rb', line 21 def env @env end |
.envs ⇒ Object (readonly)
Returns the value of attribute envs.
21 22 23 |
# File 'lib/pike/main.rb', line 21 def envs @envs end |
.task_to_run ⇒ Object (readonly)
Returns the value of attribute task_to_run.
21 22 23 |
# File 'lib/pike/main.rb', line 21 def task_to_run @task_to_run end |
.tasks ⇒ Object (readonly)
Returns the value of attribute tasks.
21 22 23 |
# File 'lib/pike/main.rb', line 21 def tasks @tasks end |
.variables ⇒ Object (readonly)
Returns the value of attribute variables.
21 22 23 |
# File 'lib/pike/main.rb', line 21 def variables @variables end |
.verbose ⇒ Object (readonly)
Returns the value of attribute verbose.
21 22 23 |
# File 'lib/pike/main.rb', line 21 def verbose @verbose end |
Class Method Details
.action(msg, vital = true, &block) ⇒ Object
251 252 253 254 255 256 257 258 259 |
# File 'lib/pike/main.rb', line 251 def action(msg, vital = true, &block) begin step msg, vital: vital, debug: @debug do yield block end rescue Exception => e Main.error(e., e.backtrace) end end |
.add_env(name, &block) ⇒ Object
Add a environment (called from DSL::Pikefile.env)
232 233 234 235 |
# File 'lib/pike/main.rb', line 232 def add_env(name, &block) Logger.log "Adding environment '#{name}'" @envs[name] = Env.new(name, &block) end |
.add_task(name, &block) ⇒ Object
223 224 225 226 |
# File 'lib/pike/main.rb', line 223 def add_task(name, &block) Logger.log "Adding task '#{name}'" @tasks[name] = Task.new(name, &block) end |
.check_pikefile ⇒ Object
Check if Pikefile exists
106 107 108 109 110 111 |
# File 'lib/pike/main.rb', line 106 def check_pikefile action "#{@config_char} Checking Pikefile" do # Check if file exists raise 'No Pikefile found' unless File.exist?(Dir.pwd + '/Pikefile') end end |
.error(msg, trace = nil) ⇒ Object
Handles an error
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
# File 'lib/pike/main.rb', line 266 def error(msg, trace = nil) puts puts puts msg puts if @debug puts trace || caller end puts Logger.log Logger.log Logger.log "Error in task:" Logger.log msg Logger.log exit 1 end |
.finalize ⇒ Object
Close ssh connection and logger
189 190 191 192 193 194 195 |
# File 'lib/pike/main.rb', line 189 def finalize Logger.log Logger.log "Finished." SSH::Connection.close Logger.close end |
.find_task(task) ⇒ Object
242 243 244 |
# File 'lib/pike/main.rb', line 242 def find_task(task) @tasks[task] end |
.get_var(key) ⇒ Object
214 215 216 |
# File 'lib/pike/main.rb', line 214 def get_var(key) @variables[key] end |
.init(options) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/pike/main.rb', line 47 def init() @envs = {} @variables = {} @tasks = {} @debug = [:debug] @task_to_run = nil @dry_run = [:dry_run] @verbose = [:verbose] Logger. # Variable defaults set_var ({ branch: :master, log_file: 'log/pike.log' }) # Some pretty utf8 chars to illustrate some actions @config_char = "\u26a1" @environment_char = "\u2699" end |
.load_pikefile ⇒ Object
Load Pikefile
118 119 120 121 122 123 |
# File 'lib/pike/main.rb', line 118 def load_pikefile action "#{@config_char} Loading Pikefile" do # Load the Pikefile DSL::Pikefile.load('Pikefile') end end |
.prepare ⇒ Object
Load tasks
156 157 158 159 160 161 162 163 |
# File 'lib/pike/main.rb', line 156 def prepare action "#{@config_char} Preparing ..." do Logger.log("Loading tasks ...") DSL::Pikefile.load(File.(File.dirname(__FILE__)) + '/tasks/tasks.rb') true end end |
.run ⇒ Object
Run the deployment
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/pike/main.rb', line 74 def run begin # Step 1: Check if the Pikefile exists # step 2: Internal stuff Logger.init # Step 3: Load tasks.rb prepare # Step 4: Load Pikefile load_pikefile # Step 5: Set environment set_environment # Step 5: Run deployment lifecycle for the given environment run_lifecycle # Step 6: Close SSH connection finalize rescue Exception => e Main.error(e., e.backtrace) end end |
.run_lifecycle ⇒ Object
Run the lifecycle for the environment
170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/pike/main.rb', line 170 def run_lifecycle if @task_to_run Logger.log "Run task #{@task_to_run} for env '#{@env.name}'" action "#{@environment_char} Run task #{@task_to_run} for env '#{@env.name}'" do @env.run_single_task(@task_to_run) end else Logger.log "Run deployment lifecycle for env '#{@env.name}'" action "#{@environment_char} Run deployment lifecycle for env '#{@env.name}'" do @env.run_lifecycle end end end |
.set_environment ⇒ Object
Sets the @env variable depending on what the user provided
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/pike/main.rb', line 130 def set_environment action "#{@config_char} Check given environment" do @env = ARGV[0].to_sym if @envs.include?(@env) @env = @envs[@env] Logger.log "Environment: #{@env.name}" else Logger.log "Unknown environment #{@env}. Please check you Pikefile." raise "Unknown environment #{@env}. Please check you Pikefile." end if ARGV[1] @task_to_run = ARGV[1].to_sym Logger.log "Task: #{@task_to_run}" end @env end end |