class Releasecop::Cli

Public Class Methods

exit_on_failure?() click to toggle source
# File lib/releasecop/cli.rb, line 5
def self.exit_on_failure?
  true
end

Public Instance Methods

check(project = nil) click to toggle source
# File lib/releasecop/cli.rb, line 21
def check(project = nil)
  raise Thor::Error, "Must specify a PROJECT or --all" if project.nil? && !options[:all]

  initialize_manifest! unless File.exist?(Releasecop::MANIFEST_PATH)
  selected = options[:all] ? manifest['projects'] : manifest['projects'].select{|k,v| k == project }
  raise Thor::Error, "No projects found." if selected.empty?

  checkers = selected.map { |name, envs| Releasecop::Checker.new(name, envs) }

  for checker in checkers
    checker.check
    checker.puts_message(options[:verbose])
  end

  unreleased = checkers.map(&:unreleased).inject(&:+)
  $stderr.puts "#{selected.size} project(s) checked. #{unreleased} environment(s) out-of-date."
  exit 1 if unreleased > 0
end
edit() click to toggle source
# File lib/releasecop/cli.rb, line 10
def edit
  editor = ENV['EDITOR']
  raise Thor::Error, "To open manifest, first set $EDITOR" if editor.nil? || editor.empty?
  command = Shellwords.split(editor) + [Releasecop::MANIFEST_PATH]
  initialize_manifest! unless File.exist?(Releasecop::MANIFEST_PATH)
  system(*command)
end
version() click to toggle source
# File lib/releasecop/cli.rb, line 41
def version
  puts Releasecop::VERSION
end

Private Instance Methods

initialize_dir!() click to toggle source
# File lib/releasecop/cli.rb, line 51
def initialize_dir!
  FileUtils.mkdir_p(Releasecop::CONFIG_DIR)
end
initialize_manifest!() click to toggle source
# File lib/releasecop/cli.rb, line 55
def initialize_manifest!
  initialize_dir!
  File.open(Releasecop::MANIFEST_PATH, 'w') { |f| f.write(Releasecop::DEFAULT_MANIFEST) }
end
manifest() click to toggle source
# File lib/releasecop/cli.rb, line 47
def manifest
  JSON.parse(File.read(Releasecop::MANIFEST_PATH))
end