open-pull-request 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf1ae049db699da91eba631f34074fb7f31fa8b8
4
- data.tar.gz: fcab0d3c30f78e8dcc38c72edd08af0e506777d5
3
+ metadata.gz: de6584c8cdb9b19bfed8f76fa0aaa991ae355844
4
+ data.tar.gz: c34eace200a5c187386ecfe54f770f807bdefebc
5
5
  SHA512:
6
- metadata.gz: cf36027fbbb0049b53ec361b060d3cfebbd5f8f0a712857f3ae9cf3cea6996c8ab06d2eb58e46e01bb745fbf510625927663f648a20a8bd0d30b503796187aff
7
- data.tar.gz: 7f6a4f696a2a419b53cf371832462d18f372f048bd8e035cf69ffa9041ea3e174ceea4f0fc888d01df8e8264271a321e7278d57814163d7e7f1b5615039af9e0
6
+ metadata.gz: 99d19d4cf73294355601bb9f3fd7b94da9702a6d794c00a06722841610881c9991b6947354e602f4b77bd757e0d899e67e8e4e811898e1813cf720b4f2383dcc
7
+ data.tar.gz: f2fafe6225d10d145d686622cbf9060868f553f731bcdc739630ce92b96a6d0ea4bc8b43406c292c7194aaaa0239662d59dabacfc6f8834ad2afd3ffcbcdc16e
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in git-pull-request.gemspec
4
3
  gemspec
data/README.md CHANGED
@@ -5,24 +5,24 @@ For the moment all pull requests will be made against master branch.
5
5
 
6
6
  ## Installation
7
7
 
8
- Add this line to your application's Gemfile:
8
+ `$ gem install open-pull-request`
9
9
 
10
- gem 'open-pull-request'
10
+ Optional:
11
+ Set-up the following in git config if you want Trello integration:
12
+ * `git config trello.developer-public-key`
13
+ * `git config trello.member-token`
11
14
 
12
- And then execute:
13
15
 
14
- $ bundle
15
16
 
16
- Or install it yourself as:
17
-
18
- $ gem install open-pull-request
19
17
 
20
18
  ## Usage
21
19
 
22
20
  To use it go to a git repository on a separate branch than master and type
23
21
  `git pr`
24
- This will open a internet browser window with the comparison betwwen the branch you are currently on and master.
25
22
 
23
+ This will open a internet browser window with the comparison between the branch you are currently on and master.
24
+
25
+ If you want to populate the body of the pull-request with the Trello details, pass a `-t CARD_ID` parameter, with CARD_ID being the id of the Trello card
26
26
 
27
27
  ## Contributing
28
28
 
data/bin/git-pr CHANGED
@@ -4,6 +4,6 @@
4
4
  require 'rubygems'
5
5
  require 'cgi'
6
6
  require 'open3'
7
- require 'open-pull-request'
7
+ require_relative '../lib/open-pull-request'
8
8
 
9
- Open::PullRequest.request!
9
+ Open::PullRequest.new.request!
@@ -1,18 +1,37 @@
1
- require "open-pull-request/version"
1
+ require_relative "open-pull-request/version"
2
+ require_relative "open-pull-request/trello_details"
2
3
  require 'cgi'
4
+ require 'optparse'
5
+ require 'ostruct'
6
+ require 'pry'
3
7
 
4
8
  module Open
5
- module PullRequest
6
- extend self
9
+ class PullRequest
10
+ attr_reader :options
11
+ def initialize
12
+ @options = OpenStruct.new
13
+ end
14
+
7
15
  def request!
16
+ option_parser.parse!(ARGV)
8
17
  branch = get_branch_name
9
18
  abort unless $?.success?
10
-
19
+ pr_description = "Please give a description"
20
+ if options.trello_card_id
21
+ developer_public_key = `git config trello.developer-public-key`.strip
22
+ member_token = `git config trello.member-token`.strip
23
+ trello_details = TrelloDetails.new(
24
+ options.trello_card_id,
25
+ developer_public_key,
26
+ member_token
27
+ )
28
+ pr_description = trello_details.pull_request_description
29
+ end
11
30
  root_url = "https://www.github.com/#{repo_url}/compare/"
12
31
  compared_branches = "master...#{CGI.escape(branch.strip)}"
13
32
  options = [
14
33
  ["pull_request[title]", pr_title],
15
- ["pull_request[body]", "Please give a description"]
34
+ ["pull_request[body]", pr_description]
16
35
  ].map{|pair|
17
36
  pair.map{ |el| CGI.escape(el) }.join("=")
18
37
  }.join("&")
@@ -35,5 +54,15 @@ module Open
35
54
  get_branch_name.gsub(/[^\w]+/, " ").strip.capitalize
36
55
  end
37
56
 
57
+ def option_parser
58
+ @option_parser ||= OptionParser.new do |op|
59
+
60
+ op.on("-t", "--trello CARD_ID", "Trello card id to pull info from") do |v|
61
+ options.trello_card_id = v
62
+ end
63
+
64
+ end
65
+ end
66
+
38
67
  end
39
68
  end
@@ -0,0 +1,45 @@
1
+ require 'trello'
2
+ require 'active_support/core_ext/string'
3
+ require 'term/ansicolor'
4
+
5
+ class TrelloDetails
6
+ def initialize(card_id, developer_public_key, member_token)
7
+ @trello_client = ::Trello::Client.new(
8
+ developer_public_key: developer_public_key,
9
+ member_token: member_token
10
+ )
11
+ @card = @trello_client.find(:card, card_id)
12
+ end
13
+
14
+ def pull_request_description
15
+ log "Finding your project and story "
16
+ desc = "##### Trello card\n"
17
+ desc << "**#{@card.name}** - #{@card.url}\n"
18
+ log "."
19
+ desc << "#{@card.desc}\n"
20
+ log "."
21
+ desc << "\n"
22
+ desc << "##### Members\n"
23
+ log "."
24
+ desc << @card.members.map{ |m| "- #{m.full_name}" }.join("\n")
25
+ desc << "\n\n"
26
+ log "."
27
+ @card.checklists.each do |checklist|
28
+ desc << build_checklist_description(checklist)
29
+ log "."
30
+ desc << "\n"
31
+ end
32
+ desc
33
+ end
34
+
35
+ private
36
+ def build_checklist_description(checklist)
37
+ desc = "##### #{checklist.name}\n"
38
+ desc << checklist.check_items.map{|c|"- #{c["name"]}"}.join("\n")
39
+ end
40
+
41
+ def log(msg)
42
+ m = Term::ANSIColor.green(msg)
43
+ print m
44
+ end
45
+ end
@@ -1,5 +1,5 @@
1
1
  module Open
2
- module PullRequest
3
- VERSION = "0.0.1"
2
+ class PullRequest
3
+ VERSION = "0.0.3"
4
4
  end
5
- end
5
+ end
@@ -20,4 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_development_dependency "bundler", "~> 1.5"
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "pry"
23
+
24
+ spec.add_dependency 'ruby-trello'
25
+ spec.add_dependency 'term-ansicolor'
23
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open-pull-request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dragos Miron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-16 00:00:00.000000000 Z
11
+ date: 2014-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ruby-trello
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: term-ansicolor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description:
56
84
  email:
57
85
  - dragosmr@gmail.com
@@ -67,6 +95,7 @@ files:
67
95
  - Rakefile
68
96
  - bin/git-pr
69
97
  - lib/open-pull-request.rb
98
+ - lib/open-pull-request/trello_details.rb
70
99
  - lib/open-pull-request/version.rb
71
100
  - open-pull-request.gemspec
72
101
  homepage: http://github.com/dragosmiron/git-pull-request