Sha256: 6e083cc903017507862aa48229064770d8f15d02e06de72d543e020ad83e2c84

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

require 'mixlib/cli'
require 'logger'
require 'shellwords'
require 'prlbackup/version'
require 'prlbackup/cli'
require 'prlbackup/virtual_machine'

module PrlBackup
  class << self
    # The global configuration based on command line options.
    attr_accessor :config
  end

  # Run the command and log the last line from stdout unless --dry-run.
  # @return [String] stdout of the comand.
  def conditionally_run(*args)
    unless PrlBackup.config[:dry_run]
      output = run(*args)
      logger.info(output.split("\n").last)
    else
      output = ''
      logger.info("Dry-running `#{args.shelljoin}`...")
    end
    output
  end

  # Run the command until it is finished.
  # @Note This will even run when option --dry-run is selected!
  # @return [String] stdout of the comand.
  def run(*args)
    logger.info("Running `#{args.shelljoin}`...") if PrlBackup.config[:verbose]
    output = `#{args.shelljoin} 2>&1`
    status = $?
    unless status.success?
      logger.error("Command `#{args.shelljoin}` failed with exit status #{status.exitstatus}:\n#{output}")
      exit(1)
    end
    output
  end

  def logger
    @logger ||= create_logger
  end

private

  def create_logger
    STDOUT.sync = true
    l = Logger.new(STDOUT)
    l.formatter = proc { |severity, datetime, progname, msg| "prlbackup #{severity}: [#{self}] #{msg}\n" }
    l
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
prlbackup-1.1.3 lib/prlbackup.rb
prlbackup-1.1.2 lib/prlbackup.rb