trellish 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/bin/trellish CHANGED
@@ -23,7 +23,8 @@ end
23
23
  Trellish.configure(
24
24
  trello_api_key: config_file['trello_api_key'],
25
25
  trello_oauth_secret: config_file['trello_oauth_secret'],
26
- trello_oauth_token: config_file['trello_oauth_token'])
26
+ trello_oauth_token: config_file['trello_oauth_token'],
27
+ github_oauth_token: config_file['github_oauth_token'])
27
28
 
28
29
  card = Trellish::Card.new(ARGV[0])
29
30
  card.finish
data/lib/trellish.rb CHANGED
@@ -10,7 +10,8 @@ module Trellish
10
10
  @config = {
11
11
  trello_api_key: 'TRELLO_API_KEY',
12
12
  trello_oauth_secret: 'TRELLO_OAUTH_SECRET',
13
- trello_oauth_token: 'TRELLO_OAUTH_TOKEN'
13
+ trello_oauth_token: 'TRELLO_OAUTH_TOKEN',
14
+ github_oauth_token: 'GITHUB_OAUTH_TOKEN'
14
15
  }
15
16
 
16
17
  @valid_config_keys = @config.keys
data/lib/trellish/card.rb CHANGED
@@ -10,23 +10,13 @@ module Trellish
10
10
  @card = Trello::Card.find(parse_card_id(card_id_or_url))
11
11
  end
12
12
 
13
- def add_branch_link
14
- @card.add_comment(github_branch_url)
15
- end
16
-
17
- def add_merge_to_master_item
18
- checklist = @card.checklists.first
19
- if checklist.nil?
20
- new_checklist = Checklist.create(name: 'Checklist', board_id: @card.board_id)
21
- @card.add_checklist(new_checklist)
22
- checklist = @card.refresh!.checklists.first
23
- end
24
- checklist.add_item('Merge to master')
13
+ def add_pull_request_link
14
+ @card.description = "[Pull Request] (#{github_pull_request_url})\n\n#{@card.description}"
15
+ @card.save
25
16
  end
26
17
 
27
18
  def finish
28
- add_branch_link
29
- add_merge_to_master_item
19
+ add_pull_request_link
30
20
  remove_all
31
21
  move_to_qa
32
22
  end
data/lib/trellish/git.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'faraday'
2
+
1
3
  module Trellish
2
4
  module Git
3
5
 
@@ -5,24 +7,44 @@ module Trellish
5
7
  @current_git_branch ||= `cat .git/head`.split('/').last
6
8
  end
7
9
 
8
- def github_branch_url
9
- @github_branch_url ||= "https://github.com/#{git_repository_owner}/#{git_repository_name}/tree/#{current_git_branch}"
10
+ def github_pull_request_url
11
+ return @github_pull_request_url if @github_pull_request_url
12
+ conn = Faraday.new(:url => 'https://api.github.com', :ssl => {:ca_file => '/System/Library/OpenSSL/certs/ca-certificates.crt'}) do |faraday|
13
+ faraday.request :url_encoded
14
+ faraday.adapter ::Faraday.default_adapter
15
+ end
16
+ response = conn.post do |req|
17
+ req.url "/repos/#{git_repository_owner}/#{git_repository_name}/pulls"
18
+ req.headers['Content-Type'] = 'application/json'
19
+ req.headers['Authorization'] = "token #{Trellish.config[:github_oauth_token]}"
20
+ req.body = %Q|{
21
+ "title": "#{pull_request_title}",
22
+ "base": "master",
23
+ "head": "#{git_repository_owner}:#{current_git_branch}"
24
+ }|.gsub(/\s/, '')
25
+ true
26
+ end
27
+ @github_pull_request_url = JSON.parse(response.body)["html_url"]
10
28
  end
11
29
 
12
- def remote_url
13
- @remote_url ||= `git config remote.origin.url`
30
+ def git_repository_name
31
+ @git_repository_name ||= matches[2]
32
+ end
33
+
34
+ def git_repository_owner
35
+ @git_repository_owner ||= matches[1]
14
36
  end
15
37
 
16
38
  def matches
17
39
  @matches ||= matches = remote_url.match(%r|^git@github.com:([^/]*)\/([^\.]*)\.git$|)
18
40
  end
19
41
 
20
- def git_repository_owner
21
- @git_repository_owner ||= matches[1]
42
+ def pull_request_title
43
+ @pull_request_title ||= `git show -s --format=%s head`
22
44
  end
23
45
 
24
- def git_repository_name
25
- @git_repository_name ||= matches[2]
46
+ def remote_url
47
+ @remote_url ||= `git config remote.origin.url`
26
48
  end
27
49
 
28
50
  end
@@ -1,3 +1,3 @@
1
1
  module Trellish
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/trellish.example.yml CHANGED
@@ -1,7 +1,16 @@
1
1
  # Sign in to Trello and go here https://trello.com/1/appKey/generate.
2
2
  # Copy "Key" from that page to tello_api_key.
3
3
  trello_api_key: numbers_and_letters_and_stuff
4
+
4
5
  # Copy "Secret (for OAuth signing)" from that page to tello_oauth_secret.
5
6
  trello_oauth_secret: numbers_and_letters_and_stuff
6
- # Visit http://trello.com/1/connect?key=TRELLO_API_KEY_FROM_ABOVE&name=Trellish&response_type=token&scope=read,write&expiration=never and copy the token to trello_oauth_token.
7
+
8
+ # Visit
9
+ # http://trello.com/1/connect?key=TRELLO_API_KEY_FROM_ABOVE&name=Trellish&response_type=token&scope=read,write&expiration=never
10
+ # and copy the token to trello_oauth_token here.
7
11
  trello_oauth_token: numbers_and_letters_and_stuff
12
+
13
+ # Run:
14
+ # curl -u 'username' -d '{"scopes":["repo"],"note":"Trellish"}' https://api.github.com/authorizations
15
+ # and copy the token parameter from the response here.
16
+ github_oauth_token: numbers_and_letters_and_stuff
data/trellish.gemspec CHANGED
@@ -4,7 +4,7 @@ require File.expand_path('../lib/trellish/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Wes Gibbs"]
6
6
  gem.email = ["wesgibbs@gmail.com"]
7
- gem.description = %q{Annotate Trello cards with git branch, add 'Merge to master' checkbox, remove yourself and move the card to the QA list}
7
+ gem.description = %q{Create a pull request, put link to it on the card, remove everyone and move the card to the QA list}
8
8
  gem.summary = %q{Finish a Trello card}
9
9
  gem.homepage = "http://rubygems.org/gems/trellish"
10
10
 
@@ -15,5 +15,6 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Trellish::VERSION
17
17
 
18
+ gem.add_dependency 'oauth2', '>=0.7.0'
18
19
  gem.add_dependency 'ruby-trello-wgibbs', '>=0.4.4'
19
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trellish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-03 00:00:00.000000000 Z
12
+ date: 2012-10-02 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: oauth2
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.7.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.7.0
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: ruby-trello-wgibbs
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -27,8 +43,8 @@ dependencies:
27
43
  - - ! '>='
28
44
  - !ruby/object:Gem::Version
29
45
  version: 0.4.4
30
- description: Annotate Trello cards with git branch, add 'Merge to master' checkbox,
31
- remove yourself and move the card to the QA list
46
+ description: Create a pull request, put link to it on the card, remove everyone and
47
+ move the card to the QA list
32
48
  email:
33
49
  - wesgibbs@gmail.com
34
50
  executables: