class Semvergen::Shell

Public Class Methods

new(execute_function = method(:system_exec).to_proc) click to toggle source
# File lib/semvergen/shell.rb, line 5
def initialize(execute_function = method(:system_exec).to_proc)
  @execute_function = execute_function
end

Public Instance Methods

build_gem(gem_name) click to toggle source
# File lib/semvergen/shell.rb, line 45
def build_gem(gem_name)
  execute "gem build #{gem_name}.gemspec --force"
end
cleanup(gem_name, version) click to toggle source
# File lib/semvergen/shell.rb, line 61
def cleanup(gem_name, version)
  execute "rm #{gem_name}-#{version}.gem"
end
commit(version_path, node_version_path, new_version, commit_subject, features) click to toggle source
# File lib/semvergen/shell.rb, line 29
def commit(version_path, node_version_path, new_version, commit_subject, features)
  commit_body = commit_message(new_version, commit_subject, features.join("\n"))

  execute "git add CHANGELOG.md"
  execute "git add #{version_path}"
  if node_version_path
    execute "git add #{node_version_path}"
  end
  execute %Q[git commit -m "#{commit_body}"]
  execute %Q[git tag #{new_version} -a -m "Version: #{new_version} - #{commit_subject}"]
end
current_branch() click to toggle source
# File lib/semvergen/shell.rb, line 13
def current_branch
  execute("git symbolic-ref --short HEAD").strip
end
git_branch_is_tracking?() click to toggle source
# File lib/semvergen/shell.rb, line 21
def git_branch_is_tracking?
  `git rev-list HEAD..@{u} --count` and return $?.exitstatus == 0
end
git_fetch() click to toggle source
# File lib/semvergen/shell.rb, line 17
def git_fetch
  `git fetch -q`
end
git_index_dirty?() click to toggle source
# File lib/semvergen/shell.rb, line 9
def git_index_dirty?
  execute("git status --porcelain") =~ /^\s*(D|M|A|R|C)\s/
end
git_up_to_date?() click to toggle source
# File lib/semvergen/shell.rb, line 25
def git_up_to_date?
  `git rev-list HEAD..@{u} --count`.strip.to_i == 0
end
publish(gem_name, version, gem_server) click to toggle source
# File lib/semvergen/shell.rb, line 49
def publish(gem_name, version, gem_server)
  if gem_server == "rubygems.org"
    publish_to_rubygems(gem_name, version)
  else
    publish_to_gemserver(gem_name, version, gem_server)
  end
end
publish_node_module() click to toggle source
# File lib/semvergen/shell.rb, line 57
def publish_node_module
  execute "npm publish" rescue nil
end
push(new_version, remote_name="origin", branch_name=current_branch) click to toggle source
# File lib/semvergen/shell.rb, line 41
def push(new_version, remote_name="origin", branch_name=current_branch)
  execute "git push -q #{remote_name} #{branch_name} #{new_version}"
end

Private Instance Methods

commit_message(new_version, commit_subject, features) click to toggle source
# File lib/semvergen/shell.rb, line 85
def commit_message(new_version, commit_subject, features)
  "Version #{new_version}: #{commit_subject}\n\n#{features}"
end
execute(command) click to toggle source
# File lib/semvergen/shell.rb, line 75
def execute(command)
  @execute_function[command]
end
publish_to_gemserver(gem_name, version, gem_server) click to toggle source
# File lib/semvergen/shell.rb, line 67
def publish_to_gemserver(gem_name, version, gem_server)
  execute "gem inabox #{gem_name}-#{version}.gem --host #{gem_server}"
end
publish_to_rubygems(gem_name, version) click to toggle source
# File lib/semvergen/shell.rb, line 71
def publish_to_rubygems(gem_name, version)
  execute "gem push #{gem_name}-#{version}.gem"
end
system_exec(command) click to toggle source
# File lib/semvergen/shell.rb, line 79
def system_exec(command)
  result = `#{command}`
  raise if $?.exitstatus > 0
  result
end