class ProjectReleaser::CLI

Public Instance Methods

run() click to toggle source
# File lib/project_releaser/cli.rb, line 8
def run
  program :name, 'Project Releaser'
  program :version, ProjectReleaser::VERSION
  program :description, 'Painlessly release your SemVer project'
  program :help_formatter, :compact
  default_command :help

  always_trace!

  build_version_cmd
  build_name_cmd
  build_update_cmd
  build_release_cmd

  run!
rescue ProjectReleaser::Project::Repository::RepositoryHasNoBranches
  logger.error "It appears your project '#{project.name}' has no branches, you need at least 2"
rescue ProjectReleaser::Project::Repository::RepositoryNotFound
  logger.error 'Working directory does not have git repository'
rescue ProjectReleaser::Project::Repository::MissingBranch
  logger.error 'Project repository does not have expected branch'
end

Private Instance Methods

action(cmd) { |args, options| ... } click to toggle source
# File lib/project_releaser/cli.rb, line 77
def action(cmd)
  proc = lambda do |args, options|
    yield args, options
    logger.info '`Done!`'
  end
  cmd.action(&proc)
end
build_name_cmd() click to toggle source
# File lib/project_releaser/cli.rb, line 43
def build_name_cmd
  command :name do |c|
    c.syntax = 'project name'
    c.description = 'Infer project name from git remotes'
    action c do
      logger.info "You are working on project '#{project.name}'"
    end
  end
end
build_release_cmd() click to toggle source
# File lib/project_releaser/cli.rb, line 63
def build_release_cmd
  command :release do |c|
    c.syntax = 'project release'
    c.description = 'Merges develop into release and pushes it with new version tag'
    action c do |args, _options|
      ProjectReleaser::Project.release args.first
    end
  end
end
build_update_cmd() click to toggle source
# File lib/project_releaser/cli.rb, line 53
def build_update_cmd
  command :update do |c|
    c.syntax = 'project update'
    c.description = 'Updates release and develop branches from all remotes'
    action c do
      ProjectReleaser::Project.update
    end
  end
end
build_version_cmd() click to toggle source
# File lib/project_releaser/cli.rb, line 33
def build_version_cmd
  command :version do |c|
    c.syntax = 'project version'
    c.description = 'Current version of the project'
    action c do
      logger.info "Current version of '#{project.name}' is #{project.current_version}"
    end
  end
end
project() click to toggle source
# File lib/project_releaser/cli.rb, line 73
def project
  ProjectReleaser::Project
end