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 +2 -1
- data/lib/trellish.rb +2 -1
- data/lib/trellish/card.rb +4 -14
- data/lib/trellish/git.rb +30 -8
- data/lib/trellish/version.rb +1 -1
- data/trellish.example.yml +10 -1
- data/trellish.gemspec +2 -1
- metadata +20 -4
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
|
14
|
-
@card.
|
15
|
-
|
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
|
-
|
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
|
9
|
-
@
|
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
|
13
|
-
@
|
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
|
21
|
-
@
|
42
|
+
def pull_request_title
|
43
|
+
@pull_request_title ||= `git show -s --format=%s head`
|
22
44
|
end
|
23
45
|
|
24
|
-
def
|
25
|
-
@
|
46
|
+
def remote_url
|
47
|
+
@remote_url ||= `git config remote.origin.url`
|
26
48
|
end
|
27
49
|
|
28
50
|
end
|
data/lib/trellish/version.rb
CHANGED
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
|
-
|
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{
|
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.
|
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-
|
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:
|
31
|
-
|
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:
|