git_topic 0.3.3 → 0.4.0

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: 1baf0a34af6aca737041298f5329a0c0b3d4e345
4
- data.tar.gz: 87b679a9b0b08b827353a9288e69c5984a36da84
3
+ metadata.gz: b85ccceb01e2ed1580b6873294edad47c16103d4
4
+ data.tar.gz: 31ceecaa343ac94ab05321d922fcce52f6375d76
5
5
  SHA512:
6
- metadata.gz: 5973e1121b69e5dfb64ebb39bcfbff820c80e7b1e22ab067f515936c91b3894c4627c47293c4f0163f4782c5f87433497af5337ea0143e59e2211ce6d8c3e349
7
- data.tar.gz: 3d6947e15e2a44e44b8d61f306a61594c3b8257483c44212d704602886179b3cc95a33ef69592555e20d05b6e9f4752528bfeaa86a6106122e41c9a69636fa8c
6
+ metadata.gz: cced3052b457682b50d13328492e6636d22c0ce7097846477f381d86816527d2642089165b7f1b5e41d6af91f2aa6c04736e66e18233ef259f66d28bfbb03acf
7
+ data.tar.gz: '07183227e39779cab39d55bed2d38e4bd8c130e00d4789c980939a7525c0d6b7673c8b4a57d52b7c10c90eb4df26ffcc8c9446c4fbee3b6b8613fe2c6e332cb6'
data/.rubocop.yml CHANGED
@@ -11,3 +11,10 @@ AllCops:
11
11
  Metrics/BlockLength:
12
12
  Exclude:
13
13
  - 'spec/**/*'
14
+ - 'git_topic.gemspec'
15
+
16
+ RSpec/NestedGroups:
17
+ Max: 4
18
+
19
+ RSpec/MultipleExpectations:
20
+ Enabled: false # This project enables to define multiple expectations
data/README.md CHANGED
@@ -13,15 +13,17 @@ Install it yourself as:
13
13
  ## Usage
14
14
 
15
15
  Commands:
16
- git-topic [list] [-a] # Show managed topics
17
- git-topic edit [branch_name] # Edit topic description
18
- git-topic show [branch_name] # Show topic description
19
- git-topic add topic_name # Remember topic
20
- git-topic delete topic_name # Delete topic
21
-
22
- Plan to support:
23
- git-topic start topic_name # Transfer topic_name to branch to implement code
24
- git-topic publish [branch_name] # Create pull request using branch description
16
+ git-topic [list] [-a] # Show managed topics
17
+ git-topic edit [branch_name] # Edit topic description
18
+ git-topic show [branch_name] # Show topic description
19
+ git-topic add topic_name # Remember topic
20
+ git-topic delete topic_name # Delete topic
21
+ git-topic start topic_name # Start the topic to branch to implement code
22
+ git-topic publish repo branch_name base # Create pull request using branch description
23
+
24
+ ### Authentication (for publish command)
25
+
26
+ publish command uses netrc to authenticate github. Please refer [octokit Using a netrc section](https://github.com/octokit/octokit.rb#using-a-netrc-file).
25
27
 
26
28
  ## Development
27
29
 
data/git_topic.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('../lib', __FILE__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'git_topic/version'
@@ -25,6 +27,8 @@ DESC
25
27
 
26
28
  spec.add_runtime_dependency 'thor', '~> 0.20.0'
27
29
  spec.add_runtime_dependency 'term-ansicolor', '~> 1.6.0'
30
+ spec.add_runtime_dependency 'octokit', '~> 4.0'
31
+ spec.add_runtime_dependency 'netrc', '~> 0.11'
28
32
 
29
33
  spec.add_development_dependency 'bundler', '~> 1.15'
30
34
  spec.add_development_dependency 'rake', '~> 10.0'
data/lib/git_topic/cli.rb CHANGED
@@ -9,6 +9,8 @@ require 'git_topic/commands/delete'
9
9
  require 'git_topic/commands/edit'
10
10
  require 'git_topic/commands/list'
11
11
  require 'git_topic/commands/show'
12
+ require 'git_topic/commands/start'
13
+ require 'git_topic/commands/publish'
12
14
 
13
15
  module GitTopic
14
16
  # CLI command entry point
@@ -18,12 +20,12 @@ module GitTopic
18
20
  desc 'list', 'Show managed topics'
19
21
  option :version, aliases: 'v', desc: 'Show version'
20
22
  option :all, aliases: 'a', desc: 'Show all information'
23
+ option :edit, aliases: 'e', desc: 'Edit current topic description'
21
24
  def list
22
25
  # Show version if -v specified
23
- if options[:version]
24
- version if options[:version]
25
- return
26
- end
26
+ version && return if options[:version]
27
+ # Edit topic if -e specified
28
+ edit && return if options[:edit]
27
29
 
28
30
  command = GitTopic::Commands::List.new options
29
31
  command.execute
@@ -44,6 +46,7 @@ module GitTopic
44
46
  desc 'version', 'Show version'
45
47
  def version
46
48
  puts GitTopic::VERSION
49
+ true
47
50
  end
48
51
 
49
52
  desc 'add topic_name summary', 'Remember topic'
@@ -60,14 +63,17 @@ module GitTopic
60
63
 
61
64
  desc 'start topic_name', 'Transfer topic_name to branch to implement code'
62
65
  def start(topic_name)
63
- puts "start #{topic_name}"
64
- raise 'not implemented'
66
+ command = GitTopic::Commands::Start.new topic_name
67
+ command.execute
65
68
  end
66
69
 
67
- desc 'publish [branch_name]', 'Create pull request using branch description'
68
- def publish(branch_name)
69
- puts "publish #{branch_name}"
70
- raise 'not implemented'
70
+ # rubocop:disable Metrics/LineLength
71
+ desc 'publish repo base branch_name', 'Create pull request using branch description'
72
+ # rubocop:enable Metrics/LineLength
73
+ def publish(repo, base, branch_name)
74
+ client = Octokit::Client.new(netrc: true)
75
+ command = GitTopic::Commands::Publish.new client, repo, branch_name, base
76
+ command.execute
71
77
  end
72
78
  end
73
79
  end
@@ -10,6 +10,10 @@ module GitTopic
10
10
 
11
11
  def execute
12
12
  system("git branch --edit-description #{@topic_name}")
13
+ true
14
+ rescue e
15
+ puts e.message
16
+ true
13
17
  end
14
18
  end
15
19
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'octokit'
4
+
5
+ module GitTopic
6
+ module Commands
7
+ # Publish command creates pull request from description.
8
+ class Publish
9
+ def initialize(client, repo, branch_name, base)
10
+ @client = client
11
+ @repo = repo
12
+ @branch_name = branch_name
13
+ @base = base
14
+ end
15
+
16
+ def execute
17
+ head = @branch_name
18
+ response = create_pull_request(@repo, @base, head)
19
+ puts response[:html_url]
20
+ rescue StandardError => ex
21
+ STDERR.puts ex.message
22
+ end
23
+
24
+ private
25
+
26
+ def create_pull_request(repo, base, branch_name)
27
+ title = load_title(branch_name)
28
+ @client.create_pull_request(repo, base, branch_name, title)
29
+ end
30
+
31
+ def load_title(head)
32
+ config_key = "branch.#{head}.description"
33
+ command = "git config #{config_key}"
34
+ _stdin, stdout, _stderr, _wait_thr = *Open3.popen3(command)
35
+ stdout.readlines[0].chop
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GitTopic
4
+ module Commands
5
+ # this command starts topic to create branch
6
+ class Start
7
+ def initialize(topic_name)
8
+ @topic_name = topic_name
9
+ end
10
+
11
+ def execute
12
+ create_branch
13
+ summary = read_summary
14
+ summary_to_branch summary
15
+ puts "start `#{@topic_name}`"
16
+ end
17
+
18
+ private
19
+
20
+ def create_branch
21
+ command = "git checkout -b #{@topic_name}"
22
+ system(command)
23
+ end
24
+
25
+ def read_summary
26
+ command = "git config --get topic.#{@topic_name}"
27
+ _stdin, stdout, _stderr, _wait_thr = *Open3.popen3(command)
28
+ stdout.readline
29
+ end
30
+
31
+ def summary_to_branch(summary)
32
+ system("git config --add branch.#{@topic_name}.description #{summary}")
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GitTopic
4
- VERSION = '0.3.3'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_topic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroki Kondo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-09 00:00:00.000000000 Z
11
+ date: 2017-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.6.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: octokit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: netrc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -156,7 +184,9 @@ files:
156
184
  - lib/git_topic/commands/delete.rb
157
185
  - lib/git_topic/commands/edit.rb
158
186
  - lib/git_topic/commands/list.rb
187
+ - lib/git_topic/commands/publish.rb
159
188
  - lib/git_topic/commands/show.rb
189
+ - lib/git_topic/commands/start.rb
160
190
  - lib/git_topic/formatter/branches.rb
161
191
  - lib/git_topic/formatter/helper.rb
162
192
  - lib/git_topic/formatter/topics.rb