assisted_workflow 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OWE2NGVhNzAxMmI0NWIwOTRhNjczMGY2MjhmM2RmNzEwYzRkNWI1OQ==
5
- data.tar.gz: !binary |-
6
- ZjJkZTJjNTRmOGViZjFmNjhmNzZhZDUyMDhiMzViMTU4YmViYWYxMg==
2
+ SHA1:
3
+ metadata.gz: 67a9b4050e4f187dcce995edb3525fda212c62da
4
+ data.tar.gz: ff942865f4e047eb9d0ad746653ce694e8f4aabe
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- N2ZiOGYyZjJiYTgwNjkzODZkZmUwNWI4MzY2OWNmOWFlM2U3MDJhZDc0MjAx
10
- ZTY0NzIyZjhiZmU4NzlmZTE0MzA3ZDIyYjhkODkzZWUxMTdhYmRlNzYxMzli
11
- YmRmNzY3MWE3MTczNDA5OTk1NDM0NTk2YjUyNDQxYjk0YTc4M2I=
12
- data.tar.gz: !binary |-
13
- OWU5ODQxOGMxYjc1NTllY2NjMWFlNmQ2M2EwYmU1NDJhOTYwZmFlNWFjNzI5
14
- YmEwMzM0YjgzZGJkOTJhMzlkY2QwNjRkNzBkZTQyMmE4ODNhNGE5OTdhMmJl
15
- NTE5NjliZjdhZWI2NWEyZTg0YjM0ODI5MTI2Zjk2NDU0MDJmMjg=
6
+ metadata.gz: 9c981d14895eac973df61ea28842306a73fd92eb92e691015eb249f15d861392a76172a15af13ffbb6acb0e6200700a322015952c4f17763932c481b71e885e3
7
+ data.tar.gz: 6545db20692ebb93fdae521dcc020a96b3d3fdb1e47d8c103117dff6feee5045409b1fcac232a6062c48197184282fc87e553b94bfa87dc3ceb24964020bd885
data/.gitignore CHANGED
@@ -1,2 +1,5 @@
1
- pkg/
2
- .awconfig
1
+ /pkg/
2
+ .awconfig
3
+ /aw-*/
4
+ aw-*.tar.gz
5
+ /packaging/*.tar.gz
@@ -0,0 +1 @@
1
+ 2.2.2
@@ -1,5 +1,17 @@
1
1
  ### Unreleased
2
2
 
3
+ ### 0.4.0
4
+
5
+ * enchancements
6
+ * Moving from pivotal-tracker to tracker-api gem, in order to use api v5 (@alemata)
7
+ * Packaging with Traveling Ruby (@flaviogranero)
8
+
9
+ ### 0.3.1
10
+
11
+ * bug fix
12
+ * Fixing issue when states/transitions are the default ones
13
+ * Bugfix for issues with empty descriptions
14
+
3
15
  ### 0.3.0
4
16
 
5
17
  * enchancements
@@ -1,64 +1,88 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- assisted_workflow (0.3.1)
4
+ assisted_workflow (0.4.0)
5
5
  hashie (~> 2.0.5)
6
6
  jiralicious (~> 0.4.0)
7
7
  octokit (~> 2.0)
8
- pivotal-tracker (~> 0.5.12)
9
- thor (~> 0.18.1)
8
+ thor (~> 0.19)
9
+ tracker_api (~> 0.2.0)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- addressable (2.3.5)
14
+ activemodel (4.2.1)
15
+ activesupport (= 4.2.1)
16
+ builder (~> 3.1)
17
+ activesupport (4.2.1)
18
+ i18n (~> 0.7)
19
+ json (~> 1.7, >= 1.7.7)
20
+ minitest (~> 5.1)
21
+ thread_safe (~> 0.3, >= 0.3.4)
22
+ tzinfo (~> 1.1)
23
+ addressable (2.3.8)
24
+ axiom-types (0.1.1)
25
+ descendants_tracker (~> 0.0.4)
26
+ ice_nine (~> 0.11.0)
27
+ thread_safe (~> 0.3, >= 0.3.1)
15
28
  builder (3.2.2)
29
+ coercible (1.0.0)
30
+ descendants_tracker (~> 0.0.1)
16
31
  crack (0.1.8)
17
- fakefs (0.5.0)
18
- faraday (0.9.0)
32
+ descendants_tracker (0.0.4)
33
+ thread_safe (~> 0.3, >= 0.3.1)
34
+ equalizer (0.0.11)
35
+ excon (0.45.3)
36
+ fakefs (0.6.7)
37
+ faraday (0.9.1)
19
38
  multipart-post (>= 1.2, < 3)
20
- happymapper (0.4.1)
21
- libxml-ruby (~> 2.0)
39
+ faraday_middleware (0.9.1)
40
+ faraday (>= 0.7.4, < 0.10)
22
41
  hashie (2.0.5)
23
- httparty (0.11.0)
24
- multi_json (~> 1.0)
42
+ httparty (0.13.5)
43
+ json (~> 1.8)
25
44
  multi_xml (>= 0.5.2)
26
- jiralicious (0.4.0)
45
+ i18n (0.7.0)
46
+ ice_nine (0.11.1)
47
+ jiralicious (0.4.3)
27
48
  crack (~> 0.1.8)
28
49
  hashie (>= 1.1)
29
- httparty (>= 0.10, < 0.12.0)
50
+ httparty (>= 0.10)
30
51
  json (>= 1.6, < 1.9.0)
31
- json (1.8.1)
32
- libxml-ruby (2.7.0)
33
- mime-types (2.1)
34
- mini_portile (0.5.2)
35
- multi_json (1.8.4)
52
+ nokogiri
53
+ oauth
54
+ json (1.8.2)
55
+ mini_portile (0.6.2)
56
+ minitest (5.7.0)
36
57
  multi_xml (0.5.5)
37
58
  multipart-post (2.0.0)
38
- nokogiri (1.6.1)
39
- mini_portile (~> 0.5.0)
40
- nokogiri-happymapper (0.5.8)
41
- nokogiri (~> 1.5)
42
- octokit (2.7.1)
59
+ nokogiri (1.6.6.2)
60
+ mini_portile (~> 0.6.0)
61
+ oauth (0.4.7)
62
+ octokit (2.7.2)
43
63
  sawyer (~> 0.5.2)
44
- pivotal-tracker (0.5.12)
45
- builder
46
- builder
47
- crack
48
- happymapper (>= 0.3.2)
49
- nokogiri (>= 1.4.3)
50
- nokogiri (>= 1.5.5)
51
- nokogiri-happymapper (>= 0.5.4)
52
- rest-client (~> 1.6.0)
53
- rest-client (~> 1.6.0)
54
- rake (10.1.1)
55
- rest-client (1.6.7)
56
- mime-types (>= 1.16)
64
+ rake (10.4.2)
57
65
  rr (1.1.2)
58
- sawyer (0.5.3)
66
+ sawyer (0.5.5)
59
67
  addressable (~> 2.3.5)
60
68
  faraday (~> 0.8, < 0.10)
61
- thor (0.18.1)
69
+ thor (0.19.1)
70
+ thread_safe (0.3.5)
71
+ tracker_api (0.2.9)
72
+ activemodel
73
+ activesupport
74
+ addressable
75
+ excon
76
+ faraday (~> 0.9.0)
77
+ faraday_middleware
78
+ virtus
79
+ tzinfo (1.2.2)
80
+ thread_safe (~> 0.1)
81
+ virtus (1.0.5)
82
+ axiom-types (~> 0.1)
83
+ coercible (~> 1.0)
84
+ descendants_tracker (~> 0.0, >= 0.0.3)
85
+ equalizer (~> 0.0, >= 0.0.9)
62
86
 
63
87
  PLATFORMS
64
88
  ruby
@@ -66,5 +90,6 @@ PLATFORMS
66
90
  DEPENDENCIES
67
91
  assisted_workflow!
68
92
  fakefs
93
+ minitest
69
94
  rake
70
95
  rr
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Flavio Granero
1
+ Copyright (c) 2015 Electronic Inaka LLC
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Assisted Workflow (aw)
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/assisted_workflow.png)](http://badge.fury.io/rb/assisted_workflow) [![Build Status](https://travis-ci.org/flaviogranero/assisted_workflow.png?branch=master)](https://travis-ci.org/flaviogranero/assisted_workflow) [![Code Climate](https://codeclimate.com/github/flaviogranero/assisted_workflow.png)](https://codeclimate.com/github/flaviogranero/assisted_workflow)
3
+ [![Gem Version](https://badge.fury.io/rb/assisted_workflow.png)](http://badge.fury.io/rb/assisted_workflow) [![Build Status](https://travis-ci.org/inaka/assisted_workflow.png?branch=master)](https://travis-ci.org/inaka/assisted_workflow) [![Code Climate](https://codeclimate.com/github/inaka/assisted_workflow.png)](https://codeclimate.com/github/inaka/assisted_workflow)
4
4
 
5
5
  AW is a CLI tool to automate software development workflows based on github pull requests.
6
6
 
@@ -14,10 +14,18 @@ Here in [Inaka](http://inaka.net) we have the following workflow steps:
14
14
  4. Finish the story, removing both local and remote feature branches
15
15
  5. Deploy master branch.
16
16
 
17
- For more details, please read more about the [Inaka Workflow](https://github.com/inaka/inaka_corp/wiki/Inaka-Workflow).
17
+ For more details, please read more about the [Inaka's Development Workflow](https://github.com/inaka/assisted_workflow/wiki/Inaka's-Development-Flow).
18
18
 
19
19
  This gem provides a command line tool to automate tasks related with `start`, `submit` and `finish` steps.
20
20
 
21
+ ## Contact Us
22
+ For **questions** or **general comments** regarding the use of this library, please use our public
23
+ [hipchat room](https://www.hipchat.com/gpBpW3SsT).
24
+
25
+ If you find any **bugs** or have a **problem** while using this library, please [open an issue](https://github.com/inaka/assisted_workflow/issues/new) in this repo (or a pull request :)).
26
+
27
+ And you can check all of our open-source projects at [inaka.github.io](http://inaka.github.io)
28
+
21
29
  ## Installation
22
30
 
23
31
  Add this line to your application's Gemfile:
@@ -88,9 +96,4 @@ either add an 'origin' remote that points to the GitHub repository you want to s
88
96
  2. Create your feature branch (`git checkout -b my-new-feature`)
89
97
  3. Commit your changes (`git commit -am 'Add some feature'`)
90
98
  4. Push to the branch (`git push origin my-new-feature`)
91
- 5. Create new Pull Request
92
-
93
- ## To-do
94
-
95
- 1. add github issues support
96
- 2. refactor addons to a base class, with access to a shell output wrapper.
99
+ 5. Create new Pull Request
@@ -0,0 +1,39 @@
1
+ Releasing
2
+ =========
3
+
4
+ Assisted Workflow uses a set of `rake` tasks to create packages and bundles [traveling
5
+ ruby][traveling_ruby] to simplify the dependency on Ruby.
6
+
7
+ Generating packages
8
+ -------------------
9
+
10
+ Packages can be generated for the following systems:
11
+
12
+ * OSX `rake package:osx`
13
+ * Linux x86 `rake package:linux:x86`
14
+ * Linux x86_64 `rake package:linux:x86_64`
15
+
16
+ You can generate all packages with `rake package:all`
17
+
18
+ [traveling_ruby]: https://github.com/phusion/traveling-ruby
19
+
20
+ The packages generated are tarballs of the following directory structure:
21
+
22
+ aw-package
23
+ ├── bin # shims
24
+ └── lib
25
+ ├── app # where aw is installed as a gem with its dependencies
26
+ └── ruby # traveling ruby for target system
27
+
28
+ Releasing a new version
29
+ -----------------------
30
+
31
+ 1. Update the version in `lib/assisted_workflow/version.rb`
32
+ 1. Update the `CHANGELOG.md` with the news
33
+ 1. Use `rake release` to tag and publish the new version as a gem
34
+ 1. Generate the osx package with `rake package:osx`
35
+ 1. Create a [release] for the latest tag and attach the packages
36
+ 1. Update the [homebrew formula] to point to the latest OSX package
37
+
38
+ [release]: https://github.com/inaka/assisted_workflow/releases
39
+ [homebrew formula]: https://github.com/inaka/homebrew-formulas
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
2
  require 'rake/testtask'
3
+ require 'assisted_workflow/version'
3
4
 
4
5
  Rake::TestTask.new do |t|
5
6
  t.libs << "spec"
@@ -13,4 +14,105 @@ task :console do
13
14
  require 'assisted_workflow/cli'
14
15
  ARGV.clear
15
16
  IRB.start
17
+ end
18
+
19
+ PROJECT_NAME = "aw"
20
+ TRAVELING_RUBY_VERSION = "20150517-2.2.2"
21
+ TRAVELING_RUBY_HOST = "http://d6r77u77i8pq3.cloudfront.net/releases"
22
+ RUBY_BASENAME = "traveling-ruby-#{TRAVELING_RUBY_VERSION}"
23
+
24
+ namespace :package do
25
+ desc "Generate assisted_workflow #{AssistedWorkflow::VERSION} packages for OSX, Linux x86 and Linux x86_64"
26
+
27
+ task all: ["linux:x86", "linux:x86_64", "osx"]
28
+
29
+ namespace :linux do
30
+ desc "Generate assisted_workflow #{AssistedWorkflow::VERSION} package for Linux x86"
31
+ task x86: "packaging/#{RUBY_BASENAME}-linux-x86.tar.gz" do
32
+ clean_up("linux-x86")
33
+ create_package("linux-x86")
34
+ end
35
+
36
+ desc "Generate assisted_workflow #{AssistedWorkflow::VERSION} package for Linux x86_64"
37
+ task x86_64: "packaging/#{RUBY_BASENAME}-linux-x86_64.tar.gz" do
38
+ clean_up("linux-x86_64")
39
+ create_package("linux-x86_64")
40
+ end
41
+ end
42
+
43
+ desc "Generate assisted_workflow #{AssistedWorkflow::VERSION} package for OSX"
44
+ task osx: "packaging/#{RUBY_BASENAME}-osx.tar.gz" do
45
+ clean_up("osx")
46
+ create_package("osx")
47
+ end
48
+
49
+ desc "Remove the files generated by packaging"
50
+ task :cleanup do
51
+ clean_up("osx")
52
+ clean_up("linux-x86")
53
+ clean_up("linux-x86_64")
54
+ end
55
+ end
56
+
57
+ file "packaging/#{RUBY_BASENAME}-osx.tar.gz" do
58
+ sh "cd packaging && curl -L -O --fail #{TRAVELING_RUBY_HOST}/#{ruby_for("osx")}"
59
+ end
60
+
61
+ file "packaging/#{RUBY_BASENAME}-linux-x86.tar.gz" do
62
+ sh "cd packaging && curl -L -O --fail #{TRAVELING_RUBY_HOST}/#{ruby_for("linux-x86")}"
63
+ end
64
+
65
+ file "packaging/#{RUBY_BASENAME}-linux-x86_64.tar.gz" do
66
+ sh "cd packaging && curl -L -O --fail #{TRAVELING_RUBY_HOST}/#{ruby_for("linux-x86_64")}"
67
+ end
68
+
69
+ def create_package(target)
70
+ if RUBY_VERSION !~ /^2\.2\./
71
+ abort "You can't package with a Ruby version other than 2.2."
72
+ end
73
+ package_dir = "#{PROJECT_NAME}-#{AssistedWorkflow::VERSION}-#{target}"
74
+
75
+ copy_shims(package_dir)
76
+ install_dependencies(package_dir)
77
+ extract_ruby(package_dir, target)
78
+ archive_package(package_dir)
79
+ end
80
+
81
+ def clean_up(target)
82
+ package_name = "#{PROJECT_NAME}-#{AssistedWorkflow::VERSION}-#{target}"
83
+ rm_rf package_name
84
+ rm_f "#{package_name}.tar.gz"
85
+ end
86
+
87
+ def ruby_for(target)
88
+ "#{RUBY_BASENAME}-#{target}.tar.gz"
89
+ end
90
+
91
+ def install_dependencies(package_dir)
92
+ app_path = "#{package_dir}/lib/app"
93
+ mkdir_p app_path
94
+
95
+ cp "packaging/Gemfile", app_path
96
+ mkdir "#{app_path}/.bundle"
97
+ cp "packaging/bundler-config", "#{app_path}/.bundle/config"
98
+ Bundler.with_clean_env do
99
+ sh "cd #{app_path}/ && bundle install"
100
+ end
101
+ end
102
+
103
+ def copy_shims(package_dir)
104
+ shim_dir = "#{package_dir}/bin"
105
+ mkdir_p shim_dir
106
+
107
+ cp "packaging/aw.sh", "#{shim_dir}/aw"
108
+ end
109
+
110
+ def extract_ruby(package_dir, target)
111
+ ruby_dir = "#{package_dir}/lib/ruby"
112
+ mkdir_p ruby_dir
113
+ sh "tar -xzf packaging/#{ruby_for(target)} -C #{ruby_dir}"
114
+ end
115
+
116
+ def archive_package(package_dir)
117
+ sh "tar -czf #{package_dir}.tar.gz #{package_dir}"
16
118
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
9
9
  gem.authors = ["Flavio Granero"]
10
10
  gem.email = ["maltempe@gmail.com"]
11
11
  gem.summary = %q{AW is a CLI tool to automate software development workflows based on github pull requests}
12
- gem.homepage = "https://github.com/flaviogranero/assisted_workflow"
12
+ gem.homepage = "https://github.com/inaka/assisted_workflow"
13
13
  gem.license = "MIT"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
@@ -21,12 +21,13 @@ Gem::Specification.new do |gem|
21
21
  gem.add_development_dependency "rake"
22
22
  gem.add_development_dependency "rr"
23
23
  gem.add_development_dependency "fakefs"
24
+ gem.add_development_dependency "minitest"
24
25
 
25
- gem.add_dependency "thor", "~> 0.18.1"
26
- gem.add_dependency "pivotal-tracker", "~> 0.5.12"
26
+ gem.add_dependency "thor", "~> 0.19"
27
27
  gem.add_dependency "jiralicious", "~> 0.4.0"
28
28
  gem.add_dependency "octokit", "~> 2.0"
29
29
  gem.add_dependency "hashie", "~> 2.0.5"
30
+ gem.add_dependency "tracker_api", "~> 0.2.0"
30
31
 
31
32
  gem.description = <<desc
32
33
  `aw` is a command line tool to automate software development workflows based on github pull requests.
@@ -17,9 +17,9 @@ module AssistedWorkflow::Addons
17
17
  # creates a new git branch based on story attributes
18
18
  # the branch name format is:
19
19
  # => story_onwer_username.story_id.story_name
20
- def create_story_branch(story)
20
+ def create_story_branch(story, username)
21
21
  log "creating the feature branch"
22
- branch = branch_name(story)
22
+ branch = branch_name(story, username)
23
23
  git "checkout -b #{branch}"
24
24
  # git "push --set-upstream origin #{branch}"
25
25
  end
@@ -97,9 +97,9 @@ module AssistedWorkflow::Addons
97
97
  $? != 0
98
98
  end
99
99
 
100
- def branch_name(story)
100
+ def branch_name(story, username)
101
101
  description = story.name.to_s.downcase.gsub(/\W/, "_").slice(0, DESCRIPTION_LIMIT)
102
- [story.other_id, story.id, description].join(".").downcase
102
+ [username, story.id, description].join(".").downcase
103
103
  end
104
104
 
105
105
  def not_commited_changes
@@ -110,4 +110,4 @@ module AssistedWorkflow::Addons
110
110
  raise AssistedWorkflow::Error, "git: there are not commited changes" unless not_commited_changes.empty?
111
111
  end
112
112
  end
113
- end
113
+ end
@@ -22,12 +22,12 @@ module AssistedWorkflow::Addons
22
22
  @issue.body.to_s.gsub("\r\n", "\n")
23
23
  end
24
24
 
25
- def other_id
26
- @issue.assignee.login
27
- end
28
-
29
25
  def current_state
30
- other_id
26
+ @issue.labels.map(&:name).join(",")
27
+ end
28
+
29
+ def owners_str
30
+ @issue.assignee.login if issue.assignee
31
31
  end
32
32
 
33
33
  def labels
@@ -57,7 +57,7 @@ module AssistedWorkflow::Addons
57
57
 
58
58
  # Creates a pull request using current branch changes
59
59
  #
60
- # @param repo [String] Repository name. flaviogranero/assisted_workflow
60
+ # @param repo [String] Repository name. inaka/assisted_workflow
61
61
  # @param branch [String] Branch name. flavio.0001.new_feature
62
62
  # @param story [Story] Pivotal story object
63
63
  # @return [Sawyer::Resource] The newly created pull request
@@ -118,5 +118,9 @@ module AssistedWorkflow::Addons
118
118
  def valid?
119
119
  @client.user_authenticated?
120
120
  end
121
+
122
+ def username
123
+ @username
124
+ end
121
125
  end
122
- end
126
+ end
@@ -21,13 +21,13 @@ module AssistedWorkflow::Addons
21
21
  @issue.summary
22
22
  end
23
23
 
24
- def other_id
25
- @issue.fields.current["assignee"]["name"].split.join
26
- end
27
-
28
24
  def current_state
29
25
  @issue.fields.current["status"]["name"]
30
26
  end
27
+
28
+ def owners_str
29
+ @issue.fields.current["assignee"]["name"]
30
+ end
31
31
 
32
32
  def estimate
33
33
  @issue.fields.current["priority"]["name"]
@@ -102,4 +102,4 @@ module AssistedWorkflow::Addons
102
102
  end
103
103
  end
104
104
  end
105
- end
105
+ end
@@ -1,18 +1,30 @@
1
1
  require "assisted_workflow/exceptions"
2
2
  require "assisted_workflow/addons/base"
3
- require 'pivotal_tracker'
3
+ require "tracker_api"
4
4
 
5
5
  # wrapper class to pivotal api client
6
6
  module AssistedWorkflow::Addons
7
+
8
+ class PivotalStory < SimpleDelegator
9
+ def initialize(story)
10
+ super
11
+ end
12
+
13
+ def owners_str
14
+ url = "/projects/#{project_id}/stories/#{id}/owners"
15
+ client.get(url).body.map{|owner| owner["name"]}.join(", ")
16
+ end
17
+ end
18
+
7
19
  class Pivotal < Base
8
20
  required_options :fullname, :token, :project_id
9
21
 
10
22
  def initialize(output, options = {})
11
23
  super
12
24
 
13
- PivotalTracker::Client.token = options["token"]
25
+ @client = TrackerApi::Client.new(token: options["token"])
14
26
  begin
15
- @project = PivotalTracker::Project.find(options["project_id"])
27
+ @project = @client.project(options["project_id"])
16
28
  rescue
17
29
  raise AssistedWorkflow::Error, "pivotal project #{options["project_id"]} not found."
18
30
  end
@@ -23,22 +35,27 @@ module AssistedWorkflow::Addons
23
35
  def find_story(story_id)
24
36
  if story_id.to_i > 0
25
37
  log "loading story ##{story_id}"
26
- story = @project.stories.find(story_id)
27
- story.other_id = @username || @fullname
28
- story.other_id = story.other_id.to_s.downcase.split.join
29
- story
38
+ PivotalStory.new(@project.story(story_id))
30
39
  end
31
40
  end
32
41
 
33
42
  def start_story(story, options = {})
34
43
  log "starting story ##{story.id}"
35
- update_story! story, options.merge(:current_state => "started")
44
+ options.delete(:estimate) if options[:estimate].nil?
45
+ update_story!(story, options.merge(:current_state => "started"))
46
+
47
+ owner_ids = story.owner_ids
48
+ if owner_ids.empty? || !owner_ids.include?(@client.me.id)
49
+ log "assigning story ##{story.id}"
50
+ update_story!(story, :owner_ids => owner_ids.dup << @client.me.id)
51
+ end
36
52
  end
37
-
53
+
38
54
  def finish_story(story, options = {})
39
55
  log "finishing story ##{story.id}"
40
- if update_story! story, :current_state => finished_state(story)
41
- story.notes.create(:text => options[:note]) if options[:note]
56
+ saved = update_story! story, :current_state => finished_state(story)
57
+ if saved && options[:note]
58
+ add_comment_to_story(story, options[:note])
42
59
  end
43
60
  end
44
61
 
@@ -46,14 +63,27 @@ module AssistedWorkflow::Addons
46
63
  log "loading pending stories"
47
64
  states = ["unstarted"]
48
65
  states << "started" if options[:include_started]
49
- @project.stories.all(:state => states, :owned_by => @fullname, :limit => 5)
66
+ filter_str = "state:#{states.join(',')} owned_by:#{@client.me.id}"
67
+ stories = @project.stories(:filter => filter_str, :limit => 5)
68
+ stories.map do |story|
69
+ PivotalStory.new(story)
70
+ end
50
71
  end
51
72
 
52
73
  def valid?
53
74
  !@project.nil?
54
75
  end
55
-
76
+
56
77
  private
78
+
79
+ def add_comment_to_story(story, text)
80
+ url = "/projects/#{story.project_id}/stories/#{story.id}/comments"
81
+ @client.post(url, params: {:text => text})
82
+ rescue TrackerApi::Error => e
83
+ body = e.response[:body]
84
+ msg = body["possible_fix"] || body["general_problem"]
85
+ raise AssistedWorkflow::Error, msg
86
+ end
57
87
 
58
88
  def finished_state(story)
59
89
  if story.story_type == "chore"
@@ -65,10 +95,16 @@ module AssistedWorkflow::Addons
65
95
 
66
96
  def update_story!(story, attributes)
67
97
  if story
68
- story.update(attributes)
69
- raise AssistedWorkflow::Error, story.errors.first.to_s if story.errors.any?
98
+ begin
99
+ story.attributes = attributes
100
+ story.save
101
+ rescue TrackerApi::Error => e
102
+ body = e.response[:body]
103
+ msg = body["possible_fix"] || body["general_problem"]
104
+ raise AssistedWorkflow::Error, msg
105
+ end
70
106
  true
71
107
  end
72
108
  end
73
109
  end
74
- end
110
+ end
@@ -28,6 +28,7 @@ module AssistedWorkflow
28
28
  c << "$ aw config pivotal.fullname='Your Pivotal User Name' --global"
29
29
  c << "$ aw config pivotal.token=MYPIVOTALTOKEN --global"
30
30
  c << "$ aw config github.token=MYGITHUBOAUTHTOKEN --global"
31
+ c << "$ aw config branch_username='Username for branch names' --global"
31
32
  c << "$ aw config pivotal.project_id=00001"
32
33
  end
33
34
  end
@@ -45,7 +46,7 @@ module AssistedWorkflow
45
46
  else
46
47
  tracker.start_story(story, :estimate => options[:estimate])
47
48
  out.print_story story
48
- git.create_story_branch(story)
49
+ git.create_story_branch(story, configuration[:branch_username])
49
50
  out.next_command "after commiting your changes, submit a pull request using:", "$ aw submit"
50
51
  end
51
52
  end
@@ -151,4 +152,4 @@ module AssistedWorkflow
151
152
  end
152
153
  end
153
154
  end
154
- end
155
+ end
@@ -25,11 +25,7 @@ module AssistedWorkflow
25
25
  def print_stories(title, stories, options = {})
26
26
  print_title title
27
27
  rows = stories.map do |story|
28
- if options[:all]
29
- [story.id, story.current_state, story.name]
30
- else
31
- [story.id, story.estimate, story.name]
32
- end
28
+ [story.id, story.current_state, story.owners_str, story.name]
33
29
  end
34
30
  print_table(rows)
35
31
  end
@@ -51,4 +47,4 @@ module AssistedWorkflow
51
47
  end
52
48
 
53
49
  end
54
- end
50
+ end
@@ -4,4 +4,5 @@ pivotal:
4
4
  fullname:
5
5
  token:
6
6
  github:
7
- token:
7
+ token:
8
+ branch_username:
@@ -1,3 +1,3 @@
1
1
  module AssistedWorkflow
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'assisted_workflow'
@@ -0,0 +1,13 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Figure out where this script is located.
5
+ SELFDIR="`dirname \"$0\"`"
6
+ SELFDIR="`cd \"$SELFDIR\" && pwd`"
7
+
8
+ # Tell Bundler where the Gemfile and gems are.
9
+ export BUNDLE_GEMFILE="$SELFDIR/../lib/app/Gemfile"
10
+ unset BUNDLE_IGNORE_CONFIG
11
+
12
+ # Run the actual app using the bundled Ruby interpreter, with Bundler activated.
13
+ exec "$SELFDIR/../lib/ruby/bin/ruby" -rbundler/setup "$SELFDIR/../lib/app/vendor/ruby/2.2.0/bin/aw" "$@"
@@ -0,0 +1,4 @@
1
+ ---
2
+ BUNDLE_PATH: "vendor"
3
+ BUNDLE_WITHOUT: development
4
+ BUNDLE_DISABLE_SHARED_GEMS: '1'
@@ -5,18 +5,18 @@ describe AssistedWorkflow::Addons::Git do
5
5
  before do
6
6
  @git = AssistedWorkflow::Addons::Git.new(nil, :silent => true)
7
7
  stub(@git).system_error?{ false }
8
- stub(@git).system("git rev-parse --abbrev-ref HEAD"){ "flavio.00001.new_feature"}
8
+ stub(@git).system("git rev-parse --abbrev-ref HEAD"){ "flavio.1234.new_feature"}
9
9
  end
10
10
 
11
11
  it "creates a story branch" do
12
- mock(@git).system("git checkout -b flavio.00001.new_feature")
13
- @git.create_story_branch(story)
12
+ mock(@git).system("git checkout -b flavio.1234.new_feature")
13
+ @git.create_story_branch(story, "flavio")
14
14
  end
15
15
 
16
16
  it "raises a git error when git command does not exit with success" do
17
17
  mock(@git).system_error?{ true }
18
- mock(@git).system("git checkout -b flavio.00001.new_feature")
19
- proc { @git.create_story_branch(story) }.must_raise AssistedWorkflow::Addons::GitError, "git command error"
18
+ mock(@git).system("git checkout -b flavio.1234.new_feature")
19
+ proc { @git.create_story_branch(story, "flavio") }.must_raise AssistedWorkflow::Addons::GitError, "git command error"
20
20
  end
21
21
 
22
22
 
@@ -24,9 +24,9 @@ describe AssistedWorkflow::Addons::Git do
24
24
  mock(@git).system("git status --porcelain"){ "" }
25
25
  mock(@git).system("git checkout master")
26
26
  mock(@git).system("git pull --rebase")
27
- mock(@git).system("git checkout flavio.00001.new_feature")
27
+ mock(@git).system("git checkout flavio.1234.new_feature")
28
28
  mock(@git).system("git rebase master")
29
- mock(@git).system("git push -u -f origin flavio.00001.new_feature")
29
+ mock(@git).system("git push -u -f origin flavio.1234.new_feature")
30
30
  @git.rebase_and_push
31
31
  end
32
32
 
@@ -38,11 +38,11 @@ describe AssistedWorkflow::Addons::Git do
38
38
  end
39
39
 
40
40
  it "returns the story_id from branch name" do
41
- @git.current_story_id.must_equal "00001"
41
+ @git.current_story_id.must_equal "1234"
42
42
  end
43
43
 
44
44
  it "return the current branch name" do
45
- @git.current_branch.must_equal "flavio.00001.new_feature"
45
+ @git.current_branch.must_equal "flavio.1234.new_feature"
46
46
  end
47
47
 
48
48
  it "returns the repository name assigned to origin" do
@@ -54,33 +54,47 @@ describe AssistedWorkflow::Addons::Git do
54
54
 
55
55
  before do
56
56
  mock(@git).system("git status --porcelain"){ "" }
57
- mock(@git).system("git checkout flavio.00001.new_feature")
57
+ mock(@git).system("git checkout flavio.1234.new_feature")
58
58
  mock(@git).system("git checkout master")
59
59
  mock(@git).system("git pull --rebase")
60
60
  end
61
61
 
62
62
  it "returns true if current branch is merged into master" do
63
- mock(@git).system("git branch --merged"){ "flavio.00001.new_feature" }
63
+ mock(@git).system("git branch --merged"){ "flavio.1234.new_feature" }
64
64
  @git.check_merged!.must_equal true
65
65
  end
66
66
 
67
67
  it "returns false if current branch is not merged into master" do
68
- mock(@git).system("git branch --merged"){ "flavio.00002.other_feature" }
68
+ mock(@git).system("git branch --merged"){ "flavio.1234.other_feature" }
69
69
  proc { @git.check_merged! }.must_raise AssistedWorkflow::Error, "this branch is not merged into master"
70
70
 
71
71
  end
72
72
  end
73
73
 
74
74
  it "removes current branch and its remote version" do
75
- mock(@git).system("git push origin :flavio.00001.new_feature")
75
+ mock(@git).system("git push origin :flavio.1234.new_feature")
76
76
  mock(@git).system("git checkout master")
77
- mock(@git).system("git branch -D flavio.00001.new_feature")
77
+ mock(@git).system("git branch -D flavio.1234.new_feature")
78
78
  @git.remove_branch
79
79
  end
80
80
 
81
81
  private #==================================================================
82
82
 
83
83
  def story
84
- @story ||= PivotalTracker::Story.new(:id => "00001", :name => "New Feature", :description => "Feature description", :other_id => "flavio")
84
+ # stubs
85
+ @client = TrackerApi::Client.new(token: "mypivotaltoken")
86
+ stub(TrackerApi::Client).new{ @client }
87
+
88
+ any_instance_of(TrackerApi::Resources::Story) do |klass|
89
+ stub(klass).comments { [] }
90
+ stub(klass).tasks { [] }
91
+ end
92
+ @story ||= TrackerApi::Resources::Story.new(:id => "1234",
93
+ :name => "New Feature",
94
+ :description => "Feature description",
95
+ :client => @client)
96
+ stub(@story).save {}
97
+
98
+ @story
85
99
  end
86
- end
100
+ end
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'pivotal_tracker'
3
2
  require 'assisted_workflow/addons/github'
4
3
 
5
4
  describe AssistedWorkflow::Addons::Github do
@@ -25,25 +24,25 @@ describe AssistedWorkflow::Addons::Github do
25
24
  end
26
25
 
27
26
  it "creates a new valid pull request from a pivotal story" do
28
- mock(@client).create_pull_request("fakeuser/fakerepo", "master", "fakeuser.00001.new_feature", "[#00001] New Feature", "Feature description"){ pull_request }
27
+ mock(@client).create_pull_request("fakeuser/fakerepo", "master", "fakeuser.1234.new_feature", "[#1234] New Feature", "Feature description"){ pull_request }
29
28
  @github.create_pull_request(
30
- "fakeuser.00001.new_feature", story
29
+ "fakeuser.1234.new_feature", story
31
30
  ).must_match /fakeuser\/fakerepo\/pull\/1/
32
31
  end
33
32
 
34
33
  it "creates a new valid pull request from a github story" do
35
- mock(@client).create_pull_request_for_issue("fakeuser/fakerepo", "master", "fakeuser.00001.new_feature", 10){ pull_request }
34
+ mock(@client).create_pull_request_for_issue("fakeuser/fakerepo", "master", "fakeuser.1234.new_feature", 10){ pull_request }
36
35
  @github.create_pull_request(
37
- "fakeuser.00001.new_feature",
36
+ "fakeuser.1234.new_feature",
38
37
  AssistedWorkflow::Addons::GithubStory.new(gh_issue(:number => 10))
39
38
  ).must_match /fakeuser\/fakerepo\/pull\/1/
40
39
  end
41
40
 
42
41
  it "raises on creating an invalid pull request" do
43
- mock(@client).create_pull_request("fakeuser/fakerepo", "master", "fakeuser.00001.new_feature", "[#00001] New Feature", "Feature description"){ nil }
42
+ mock(@client).create_pull_request("fakeuser/fakerepo", "master", "fakeuser.1234.new_feature", "[#1234] New Feature", "Feature description"){ nil }
44
43
  proc {
45
44
  @github.create_pull_request(
46
- "fakeuser.00001.new_feature", story
45
+ "fakeuser.1234.new_feature", story
47
46
  )
48
47
  }.must_raise AssistedWorkflow::Error, "error on submiting the pull request"
49
48
  end
@@ -55,7 +54,6 @@ describe AssistedWorkflow::Addons::Github do
55
54
 
56
55
  story = @github.find_story("10")
57
56
  story.id.must_equal "10"
58
- story.other_id.must_match /fakeuser/
59
57
  end
60
58
 
61
59
  it "returns pending stories" do
@@ -82,7 +80,19 @@ describe AssistedWorkflow::Addons::Github do
82
80
  private #==================================================================
83
81
 
84
82
  def story
85
- @story ||= PivotalTracker::Story.new(:id => "00001", :name => "New Feature", :description => "Feature description")
83
+ # stubs
84
+ @client = TrackerApi::Client.new(token: "mypivotaltoken")
85
+ stub(TrackerApi::Client).new{ @client }
86
+
87
+ any_instance_of(TrackerApi::Resources::Story) do |klass|
88
+ stub(klass).comments { [] }
89
+ stub(klass).tasks { [] }
90
+ end
91
+ @story ||= TrackerApi::Resources::Story.new(:id => "1234", :name => "New Feature",
92
+ :description => "Feature description", :client => @client)
93
+ stub(@story).save {}
94
+
95
+ @story
86
96
  end
87
97
 
88
98
  def agent_stub
@@ -108,4 +118,4 @@ describe AssistedWorkflow::Addons::Github do
108
118
  stub(client).user_authenticated?{ true }
109
119
  client
110
120
  end
111
- end
121
+ end
@@ -74,7 +74,6 @@ describe AssistedWorkflow::Addons::Jira do
74
74
 
75
75
  story = @jira.find_story("aw-01")
76
76
  story.id.must_equal "aw-01"
77
- story.other_id.must_match /jirauser/
78
77
  end
79
78
 
80
79
  it "returns pending stories" do
@@ -134,4 +133,4 @@ describe AssistedWorkflow::Addons::Jira do
134
133
  mock(Jiralicious::Issue).get_transitions(url){ response }
135
134
  mock(Jiralicious::Issue).transition(url, {"transition" => status_id})
136
135
  end
137
- end
136
+ end
@@ -11,9 +11,12 @@ describe AssistedWorkflow::Addons::Pivotal do
11
11
  "fullname" => "Flavio Granero"
12
12
  }
13
13
  # stubs
14
- @project = PivotalTracker::Project.new(:id => "1")
15
- stub(PivotalTracker::Project).find(@configuration["project_id"]){ @project }
16
-
14
+ @client = TrackerApi::Client.new(token: "mypivotaltoken")
15
+ stub(TrackerApi::Client).new{ @client }
16
+ @project = TrackerApi::Resources::Project.new(client: @client, id: 1)
17
+ stub(@client).project(@configuration["project_id"]){ @project }
18
+ stub(@client).me{ TrackerApi::Resources::Me.new }
19
+
17
20
  @pivotal = AssistedWorkflow::Addons::Pivotal.new(nil, @configuration)
18
21
  end
19
22
 
@@ -49,23 +52,22 @@ describe AssistedWorkflow::Addons::Pivotal do
49
52
  end
50
53
 
51
54
  it "finds a story by id" do
52
- mock(PivotalTracker::Story).find("100001", @project.id) do |story_id, project_id|
53
- story_stub(:id => story_id, :project_id => project_id)
55
+ mock(@project).story("100001") do |story_id|
56
+ story_stub(:id => story_id, :project_id => @project.id)
54
57
  end
55
58
 
56
59
  story = @pivotal.find_story("100001")
57
- story.id.must_equal "100001"
58
- story.other_id.must_match /flavio/
60
+ story.id.must_equal 100001
59
61
  end
60
62
 
61
63
  it "returns pending stories" do
62
- mock(PivotalTracker::Story).all(@project, :state => ["unstarted", "started"], :owned_by => @configuration["fullname"], :limit => 5) do |project|
64
+ stub(@project).stories do
63
65
  [
64
- story_stub(:id => "100001", :project_id => project.id),
65
- story_stub(:id => "100002", :project_id => project.id)
66
+ story_stub(:id => "100001", :project_id => @project.id),
67
+ story_stub(:id => "100002", :project_id => @project.id)
66
68
  ]
67
69
  end
68
-
70
+
69
71
  stories = @pivotal.pending_stories(:include_started => true)
70
72
  stories.size.must_equal 2
71
73
  end
@@ -74,30 +76,29 @@ describe AssistedWorkflow::Addons::Pivotal do
74
76
  story = story_stub(:id => "100001", :project_id => @project.id)
75
77
  @pivotal.start_story(story, :estimate => "3")
76
78
  story.current_state.must_match /started/
77
- story.estimate.must_equal "3"
78
- story.errors.must_be_empty
79
+ story.estimate.must_equal 3
79
80
  end
80
81
 
81
82
  it "finishes a story" do
82
83
  story = story_stub(:id => "100001", :project_id => @project.id)
83
- any_instance_of(PivotalTracker::Note) do |klass|
84
- stub(klass).create{ true }
85
- end
84
+ #stub post to create comment
85
+ url = "/projects/#{story.project_id}/stories/#{story.id}/comments"
86
+ stub(@client).post(url, :params => {:text=>"pull_request_url"}){}
86
87
 
87
88
  @pivotal.finish_story(story, :note => "pull_request_url")
88
89
  story.current_state.must_match /finished/
89
- story.errors.must_be_empty
90
90
  end
91
91
 
92
92
  private #===================================================================
93
93
 
94
94
  def story_stub(attributes = {})
95
- story = PivotalTracker::Story.new(attributes)
96
- stub(story).update do |attrs|
97
- story.send(:update_attributes, attrs)
98
- story
95
+ any_instance_of(TrackerApi::Resources::Story) do |klass|
96
+ stub(klass).comments { [] }
97
+ stub(klass).tasks { [] }
99
98
  end
100
-
99
+ story = TrackerApi::Resources::Story.new(attributes.merge(client: @client))
100
+ stub(story).save {}
101
+
101
102
  story
102
103
  end
103
- end
104
+ end
metadata CHANGED
@@ -1,131 +1,143 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assisted_workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Flavio Granero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-13 00:00:00.000000000 Z
11
+ date: 2015-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rr
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: fakefs
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: thor
56
+ name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 0.18.1
62
- type: :runtime
61
+ version: '0'
62
+ type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 0.18.1
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: pivotal-tracker
70
+ name: thor
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.5.12
75
+ version: '0.19'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.5.12
82
+ version: '0.19'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: jiralicious
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.4.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.4.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: octokit
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '2.0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '2.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: hashie
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: 2.0.5
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 2.0.5
125
- description: ! ' `aw` is a command line tool to automate software development workflows
126
- based on github pull requests.
127
-
128
- '
125
+ - !ruby/object:Gem::Dependency
126
+ name: tracker_api
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.2.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.2.0
139
+ description: |2
140
+ `aw` is a command line tool to automate software development workflows based on github pull requests.
129
141
  email:
130
142
  - maltempe@gmail.com
131
143
  executables:
@@ -133,13 +145,15 @@ executables:
133
145
  extensions: []
134
146
  extra_rdoc_files: []
135
147
  files:
136
- - .gitignore
137
- - .travis.yml
148
+ - ".gitignore"
149
+ - ".ruby-version"
150
+ - ".travis.yml"
138
151
  - CHANGELOG.md
139
152
  - Gemfile
140
153
  - Gemfile.lock
141
- - LICENSE.txt
154
+ - LICENSE
142
155
  - README.md
156
+ - RELEASING.md
143
157
  - Rakefile
144
158
  - assisted_workflow.gemspec
145
159
  - bin/aw
@@ -157,17 +171,20 @@ files:
157
171
  - lib/assisted_workflow/templates/awconfig.local.tt
158
172
  - lib/assisted_workflow/templates/commit-msg.tt
159
173
  - lib/assisted_workflow/version.rb
174
+ - packaging/Gemfile
175
+ - packaging/aw.sh
176
+ - packaging/bundler-config
160
177
  - spec/assisted_workflow/addons/git_spec.rb
161
178
  - spec/assisted_workflow/addons/github_spec.rb
162
179
  - spec/assisted_workflow/addons/jira_spec.rb
163
180
  - spec/assisted_workflow/addons/pivotal_spec.rb
164
181
  - spec/assisted_workflow/config_file_spec.rb
165
182
  - spec/spec_helper.rb
166
- homepage: https://github.com/flaviogranero/assisted_workflow
183
+ homepage: https://github.com/inaka/assisted_workflow
167
184
  licenses:
168
185
  - MIT
169
186
  metadata: {}
170
- post_install_message: ! "\n `..::/++ooooooooo+/::--` \n
187
+ post_install_message: "\n `..::/++ooooooooo+/::--` \n
171
188
  \ `-:://:---....```......--::///:-.` \n
172
189
  \ `..-:::---.``` ```...----::-..` \n
173
190
  \ `.:///-````` .-:++::-` \n
@@ -215,17 +232,17 @@ require_paths:
215
232
  - lib
216
233
  required_ruby_version: !ruby/object:Gem::Requirement
217
234
  requirements:
218
- - - ! '>='
235
+ - - ">="
219
236
  - !ruby/object:Gem::Version
220
237
  version: '0'
221
238
  required_rubygems_version: !ruby/object:Gem::Requirement
222
239
  requirements:
223
- - - ! '>='
240
+ - - ">="
224
241
  - !ruby/object:Gem::Version
225
242
  version: '0'
226
243
  requirements: []
227
244
  rubyforge_project:
228
- rubygems_version: 2.2.2
245
+ rubygems_version: 2.4.6
229
246
  signing_key:
230
247
  specification_version: 4
231
248
  summary: AW is a CLI tool to automate software development workflows based on github