Module: ScrumNinjaGitCli
- Defined in:
- lib/scrum_ninja_git_cli.rb
Constant Summary collapse
- HelpText =
"\nThe 'sgc' command is used to support RF's normal release workflow.\n\nAvailable commands:\n\n [Can be run from any branch]\n sgc \n sgc list list all stories\n sgc info 12345 show only the one story\n sgc xml 12345 show full XML dump (from ScrumNinja API) for one story\n sgc own 12345[, new_owner_id] Set owner of the given story (defaults to value in .scrumninja.yml)\n\n [Must be run from master, with clean working state]\n sgc start 12345 Check out a story branch and change ownership [if not already set]\n sgc join 12345 Check out a story branch without trying to change ownership\n sgc dev-task \"some task\" Check out a dev-task branch (no ScrumNinja interaction)\n\n [Must be run from story branch, with clean working state]\n sgc push-branch git: pull --rebase; push origin story_branch\n sgc merge-from-master git: checkout master; pull; checkout story_branch; merge master\n sgc deliver merge your story branch into master, then push the result.\n (DOES NOT update ScrumNinja.)\n\nConfiguration:\n\n Information required to interact with ScrumNinja will be read from a\n file named .scrumninja.yml. The command will search for this file in\n both the current dir and your home dir. Values defined in ./.scrumninja.yml\n will override those in ~/.scrumninja.yml.\n\n Example YAML for this file:\n api_key: abc123 # generate this at: https://scrumninja.com/user/edit\n project_id: 4493 # swipe this from the address bar\n user_id: 4256 # edit a story card, view source, find element #story_owner_user_id\n\n"- Messages =
{ :git_version => 'You must be running Git 1.7 or newer.', :clean_working_state => 'Working state must be clean.', :must_be_on_master => "Branch 'master' must be checked out.", :wrong_branch => "Your story branch must be checked out.", :rake_failure => "Rake failed. Aborting.", }
Class Method Summary collapse
- .add(*args) ⇒ Object
- .commit ⇒ Object
- .deliver ⇒ Object
- .dev_task(description) ⇒ Object
-
.git_wrapper ⇒ Object
Support functions.
-
.help ⇒ Object
Commands.
- .info(story_id) ⇒ Object
- .join(story_id) ⇒ Object
- .list ⇒ Object
- .merge_from_master ⇒ Object
- .output(*args) ⇒ Object
- .own(story_id, new_owner_id = nil, opts = {}) ⇒ Object
- .print_message(message) ⇒ Object
- .push_branch ⇒ Object
- .rake ⇒ Object
-
.run_command(*args) ⇒ Object
Simple command-line argument dispatching (see bottom of file).
- .session ⇒ Object
- .start(story_id) ⇒ Object
- .start_work_on_branch(branch_name) ⇒ Object
- .xml(story_id) ⇒ Object
Class Method Details
.add(*args) ⇒ Object
126 127 128 |
# File 'lib/scrum_ninja_git_cli.rb', line 126 def add(*args) git_wrapper.add(args.join(" ")) end |
.commit ⇒ Object
130 131 132 133 134 135 136 137 |
# File 'lib/scrum_ninja_git_cli.rb', line 130 def commit commit_msg_parts = git_wrapper.current_branch_name \ .split('-').map(&:capitalize) commit_msg_parts.unshift(commit_msg_parts.shift + ":") \ .unshift('Story') commit_msg = commit_msg_parts.join(" ") git_wrapper.commit(commit_msg) end |
.deliver ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/scrum_ninja_git_cli.rb', line 114 def deliver if 'master' == git_wrapper.current_branch_name output Messages[:wrong_branch] and return end git_wrapper.push_branch git_wrapper.merge_from_master return unless rake git_wrapper.merge_branch_into_master git_wrapper.push_master end |
.dev_task(description) ⇒ Object
97 98 99 |
# File 'lib/scrum_ninja_git_cli.rb', line 97 def dev_task(description) start_work_on_branch('dev-' + GitWrapper.string_hyphenize(description)) end |
.git_wrapper ⇒ Object
Support functions
141 142 143 |
# File 'lib/scrum_ninja_git_cli.rb', line 141 def git_wrapper GitWrapper end |
.help ⇒ Object
Commands
65 66 67 |
# File 'lib/scrum_ninja_git_cli.rb', line 65 def help output HelpText end |
.info(story_id) ⇒ Object
74 75 76 |
# File 'lib/scrum_ninja_git_cli.rb', line 74 def info(story_id) output session.get_story(story_id) end |
.join(story_id) ⇒ Object
87 88 89 90 |
# File 'lib/scrum_ninja_git_cli.rb', line 87 def join(story_id) story = session.get_story(story_id) start_work_on_branch story.branch_name end |
.list ⇒ Object
69 70 71 72 |
# File 'lib/scrum_ninja_git_cli.rb', line 69 def list stories = session.get_stories output stories.map(&:to_s).join("\n") # TODO: can we drop the #map? end |
.merge_from_master ⇒ Object
108 109 110 111 112 |
# File 'lib/scrum_ninja_git_cli.rb', line 108 def merge_from_master git_wrapper.merge_from_master rescue GitWrapper::WrongBranchException :wrong_branch end |
.output(*args) ⇒ Object
153 154 155 156 |
# File 'lib/scrum_ninja_git_cli.rb', line 153 def output(*args) puts *args true end |
.own(story_id, new_owner_id = nil, opts = {}) ⇒ Object
82 83 84 |
# File 'lib/scrum_ninja_git_cli.rb', line 82 def own(story_id, new_owner_id = nil, opts={}) session.update_ownership(story_id, new_owner_id, opts) end |
.print_message(message) ⇒ Object
149 150 151 |
# File 'lib/scrum_ninja_git_cli.rb', line 149 def () output Messages[] end |
.push_branch ⇒ Object
102 103 104 105 106 |
# File 'lib/scrum_ninja_git_cli.rb', line 102 def push_branch git_wrapper.push_branch rescue GitWrapper::WorkingFolderDirtyException :clean_working_state end |
.rake ⇒ Object
158 159 160 161 162 163 164 165 |
# File 'lib/scrum_ninja_git_cli.rb', line 158 def rake if 0 == ShellCmd.run('rake') true else :rake_failure false end end |
.run_command(*args) ⇒ Object
Simple command-line argument dispatching (see bottom of file)
57 58 59 60 61 62 |
# File 'lib/scrum_ninja_git_cli.rb', line 57 def run_command(*args) cmd = args.shift.to_s.gsub('-', '_') send(cmd, *args) rescue ArgumentError help end |
.session ⇒ Object
145 146 147 |
# File 'lib/scrum_ninja_git_cli.rb', line 145 def session @session ||= ScrumNinja::Session.new(:project_dir => git_wrapper.locate_git_repo_root) end |
.start(story_id) ⇒ Object
92 93 94 95 |
# File 'lib/scrum_ninja_git_cli.rb', line 92 def start(story_id) join story_id own story_id, nil, :abort_if_already_owned => true end |
.start_work_on_branch(branch_name) ⇒ Object
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/scrum_ninja_git_cli.rb', line 167 def start_work_on_branch(branch_name) unless git_wrapper.is_git_current_enough? output Messages[:git_version] and return end unless git_wrapper.is_state_clean? output Messages[:clean_working_state] and return end unless 'master' == git_wrapper.current_branch_name output Messages[:must_be_on_master] and return end git_wrapper.checkout(branch_name) end |
.xml(story_id) ⇒ Object
78 79 80 |
# File 'lib/scrum_ninja_git_cli.rb', line 78 def xml(story_id) output session.get_story_xml(story_id) end |