assisted_workflow 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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