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