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