module Buildizer::Buildizer::MiscMod
Public Instance Methods
command(*args, do_raise: false, **kwargs)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 4 def command(*args, do_raise: false, **kwargs) Shellfold.run(*args, live_log: debug, **kwargs).tap do |cmd| if not cmd.status.success? and do_raise raise Error.new(error: :error, message: "external command error") end end end
command!(*args, **kwargs)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 12 def command!(*args, **kwargs) command(*args, do_raise: true, log_failure: true, **kwargs) end
raw_command(*args, do_raise: false, **kwargs)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 16 def raw_command(*args, do_raise: false, **kwargs) Mixlib::ShellOut.new(*args, **kwargs).tap do |cmd| cmd.run_command if not cmd.status.success? and do_raise raise Error.new(error: :error, message: "external command error: " + [args.join(' '), cmd.stdout + cmd.stderr].reject(&:empty?).join(' => ')) end end end
raw_command!(*args, **kwargs)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 28 def raw_command!(*args, **kwargs) raw_command(*args, do_raise: true, **kwargs) end
warn(msg)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 80 def warn(msg) Kernel::warn msg.to_s.colorize(:yellow) end
with_log(desc: nil, &blk)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 73 def with_log(desc: nil, &blk) # TODO: rename to verbose puts(" #{desc}") if desc blk.call do |status| puts("=> #{desc} [#{status || 'OK'}]") if desc end end
write_path(path, value)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 32 def write_path(path, value) with_log(desc: "Write path #{path}") do |&fin| recreate = path.exist? if path.exist? if path.read == value fin.call 'OK' else path.write! value fin.call 'UPDATED' end else path.write! value fin.call 'CREATED' end end end
write_yaml(path, cfg)
click to toggle source
# File lib/buildizer/buildizer/misc_mod.rb, line 49 def write_yaml(path, cfg) with_log(desc: "Update config #{path}") do |&fin| old_cfg = path.load_yaml if old_cfg == cfg fin.call 'OK' elsif cfg.empty? if path.exist? path.delete fin.call 'DELETED' else fin.call 'OK' end else if path.exist? path.dump_yaml(cfg) fin.call 'UPDATED' else path.dump_yaml(cfg) fin.call 'CREATED' end end end end