class Packager::CLI

Public Class Methods

exit_on_failure?() click to toggle source

Make sure to exit(1) on failure. This isn't covered in the specs. :nocov:

# File lib/packager/cli.rb, line 8
def self.exit_on_failure?
  true
end

Public Instance Methods

__print_version() click to toggle source
# File lib/packager/cli.rb, line 16
def __print_version
  puts Packager::VERSION
end
execute(*args) click to toggle source
# File lib/packager/cli.rb, line 24
def execute(*args)
  if args.empty?
    raise Thor::Error, "No filenames provided for execute"
  end

  (options['var'] || {}).each do |name, value|
    if Packager::DSL.reserved_words.include? name
      raise Thor::Error, "'#{name}' is a reserved word"
    end
    Packager::DSL.add_helper(name.to_sym) { value }
  end

  args.each do |filename|
    unless File.exists? filename
      raise Thor::Error, "'#{filename}' cannot be found"
    end

    begin
      items = Packager::DSL.parse_dsl(IO.read(filename))
    rescue Exception => e
      raise Thor::Error, "'#{filename}' has the following errors:\n#{e}"
    end

    if items.empty?
      raise Thor::Error, "'#{filename}' produces nothing"
    end

    packages = Packager::Executor.new(
      dryrun: options['dryrun'],
    ).execute_on(items)

    puts "'#{filename}' executed #{packages.join(', ')}"
  end
end
validate(*args) click to toggle source
# File lib/packager/cli.rb, line 60
def validate(*args)
  if args.empty?
    raise Thor::Error, "No filenames provided for validate"
  end

  args.each do |filename|
    unless File.exists? filename
      raise Thor::Error, "'#{filename}' cannot be found"
    end

    begin
      items = Packager::DSL.parse_dsl(IO.read(filename))
    rescue Exception => e
      raise Thor::Error, "'#{filename}' has the following errors:\n#{e}"
    end

    if items.empty?
      raise Thor::Error, "'#{filename}' produces nothing"
    end

    puts "'#{filename}' parses cleanly"
  end
end