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
-
.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
239 240 241 242 243 244 245 246 247 |
# File 'lib/pike/main.rb', line 239 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)
220 221 222 223 |
# File 'lib/pike/main.rb', line 220 def add_env(name, &block) Logger.log "Adding environment '#{name}'" @envs[name] = Env.new(name, &block) end |
.add_task(name, &block) ⇒ Object
211 212 213 214 |
# File 'lib/pike/main.rb', line 211 def add_task(name, &block) Logger.log "Adding task '#{name}'" @tasks[name] = Task.new(name, &block) end |
.error(msg, trace = nil) ⇒ Object
Handles an error
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'lib/pike/main.rb', line 254 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
177 178 179 180 181 182 183 |
# File 'lib/pike/main.rb', line 177 def finalize Logger.log Logger.log "Finished." SSH::Connection.close Logger.close end |
.find_task(task) ⇒ Object
230 231 232 |
# File 'lib/pike/main.rb', line 230 def find_task(task) @tasks[task] end |
.get_var(key) ⇒ Object
202 203 204 |
# File 'lib/pike/main.rb', line 202 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
103 104 105 106 107 108 109 110 111 |
# File 'lib/pike/main.rb', line 103 def load_pikefile action "#{@config_char} Loading Pikefile" do # Check if file exists raise 'No Pikefile found' unless File.exist?(Dir.pwd + '/Pikefile') # Load the Pikefile DSL::Pikefile.load('Pikefile') end end |
.prepare ⇒ Object
Load tasks
144 145 146 147 148 149 150 151 |
# File 'lib/pike/main.rb', line 144 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 |
# File 'lib/pike/main.rb', line 74 def run begin # Step 1: Check if the Pikefile exists and load config load_pikefile # step 2: Internal stuff Logger.init # Step 3: Set environment set_environment # Step 4: Load tasks.rb prepare # 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
158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/pike/main.rb', line 158 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
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/pike/main.rb', line 118 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 |
.set_var(vars = {}) ⇒ Object
190 191 192 193 194 195 |
# File 'lib/pike/main.rb', line 190 def set_var(vars = {}) vars.keys.each do |key| Logger.log "Set variable '#{key}' to '#{vars[key]}" @variables[key] = vars[key] end end |