octo_merge 0.1.3 → 0.2.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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7b9a5819e11f475b2e7676343592c274f4a17ac
4
- data.tar.gz: 4a5f04d70abfbacc7718ab84143e7e68000762b7
3
+ metadata.gz: fc888e5760a08871d2d68cd5e43044e4cc03eb92
4
+ data.tar.gz: e715350366209678d5c31d315ac5d905ef9e1904
5
5
  SHA512:
6
- metadata.gz: 96bb75ccc5a91b4b9009b0e9bbb6dc888b6a49ff59917c85bada93f6fcd9c293035b5b03a1d1d806715ca4cf5b2c0a44439a4a8abb05ab3563399038bd6d270d
7
- data.tar.gz: 13ff3e0eaa02942eb16cd998257b4501b34fdb798b12edd029f5d44e5959e620ed0562ded954f4121c006485b2ef87aedd88d4fdd01407e2dee28e7557772686
6
+ metadata.gz: 777dc01da1a20b0c2df6711089a0fce0a065a76e789c7c1aae5a9948c96ad0ee14954929ce222c77cf47839873da37584efd432c4b74ed9f9663741af05a6748
7
+ data.tar.gz: 53660d4e55248fff632d5cee36c71cc32c3024047769b3a6aaf12bbad188a740764425224e538538cd4f7d0a5ee0dc2eccf0bc7df743d706add9379713a917f3
data/exe/octo-merge CHANGED
@@ -41,6 +41,14 @@ OptionParser.new do |opts|
41
41
  options[:strategy] = strategy
42
42
  end
43
43
 
44
+ opts.on("--query=QUERY", "Query to use in interactive mode (e.g.: 'label:ready-to-merge')") do |query|
45
+ options[:query] = query
46
+ end
47
+
48
+ opts.on('--interactive', 'Select PullRequests within an interactive session') do |interactive|
49
+ options[:interactive] = interactive
50
+ end
51
+
44
52
  opts.on('-h', '--help', 'Display this screen') do
45
53
  puts opts
46
54
  exit
@@ -52,15 +60,17 @@ OptionParser.new do |opts|
52
60
  end
53
61
  end.parse!
54
62
 
55
- options[:dir] = File.expand_path(options[:dir])
56
- options[:pull_requests] = options[:pull_requests].split(",")
57
- options[:strategy] = Object.const_get("OctoMerge::#{options[:strategy]}")
58
-
59
63
  OctoMerge.configure do |config|
60
64
  config.login = options[:login]
61
65
  config.password = options[:password]
62
66
  end
63
67
 
68
+ options[:dir] = File.expand_path(options[:dir])
69
+ options[:strategy] = Object.const_get("OctoMerge::#{options[:strategy]}")
70
+
71
+ options[:pull_requests] = OctoMerge::InteractivePullRequests.get(options) if options[:interactive]
72
+ options[:pull_requests] = options[:pull_requests].to_s.split(",")
73
+
64
74
  OctoMerge.run(
65
75
  repo: options[:repo],
66
76
  pull_request_numbers: options[:pull_requests],
@@ -0,0 +1,46 @@
1
+ module OctoMerge
2
+ # TODO: Write specs
3
+ class InteractivePullRequests
4
+ def initialize(repo:, query:)
5
+ @repo = repo
6
+ @query = query
7
+ end
8
+
9
+ def self.get(options = {})
10
+ new(repo: options[:repo], query: options[:query]).pull_requests
11
+ end
12
+
13
+ def pull_requests
14
+ display_pull_requests
15
+ display_input_message
16
+
17
+ gets.strip
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :repo, :query
23
+
24
+ def display_pull_requests
25
+ puts "[INFO] Fetching PullRequests. Please wait ...\n\n"
26
+
27
+ list.all.each do |pull_request|
28
+ puts format_pull_request(pull_request)
29
+ end
30
+ end
31
+
32
+ def display_input_message
33
+ puts "\n\nPlease enter the pull requests you want to merge: (e.g.: '23,42,66'):\n\n"
34
+ print "$: "
35
+ end
36
+
37
+ def format_pull_request(pull_request)
38
+ "* #{pull_request.number}:\t\"#{pull_request.title}\" by @#{pull_request.user.login}"
39
+ end
40
+
41
+ def list
42
+ @list = OctoMerge::ListPullRequests.new(repo: repo, query: query)
43
+ end
44
+ end
45
+ end
46
+
@@ -0,0 +1,20 @@
1
+ module OctoMerge
2
+ class ListPullRequests
3
+ attr_reader :repo, :query
4
+
5
+ def initialize(repo:, query:)
6
+ @repo = repo
7
+ @query = query
8
+ end
9
+
10
+ def all
11
+ @all ||= github_client.search_issues("is:open is:pr repo:#{repo} #{query}")[:items]
12
+ end
13
+
14
+ private
15
+
16
+ def github_client
17
+ OctoMerge.github_client
18
+ end
19
+ end
20
+ end
@@ -32,14 +32,7 @@ module OctoMerge
32
32
  end
33
33
 
34
34
  def github_client
35
- @github_client ||= Octokit::Client.new(
36
- login: config.login,
37
- password: config.password
38
- )
39
- end
40
-
41
- def config
42
- OctoMerge.configuration
35
+ OctoMerge.github_client
43
36
  end
44
37
  end
45
38
  end
@@ -1,3 +1,3 @@
1
1
  module OctoMerge
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/octo_merge.rb CHANGED
@@ -4,6 +4,8 @@ require "octo_merge/configuration"
4
4
  require "octo_merge/context"
5
5
  require "octo_merge/execute"
6
6
  require "octo_merge/git"
7
+ require "octo_merge/interactive_pull_requests"
8
+ require "octo_merge/list_pull_requests"
7
9
  require "octo_merge/pull_request"
8
10
 
9
11
  require "octo_merge/abstract_merge"
@@ -23,11 +25,19 @@ module OctoMerge
23
25
  end
24
26
 
25
27
  def configure
28
+ @github_client = nil
26
29
  yield(configuration)
27
30
  end
28
31
 
29
32
  def configuration
30
33
  @configuration ||= Configuration.new
31
34
  end
35
+
36
+ def github_client
37
+ @github_client ||= Octokit::Client.new(
38
+ login: configuration.login,
39
+ password: configuration.password
40
+ )
41
+ end
32
42
  end
33
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octo_merge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Helm
@@ -134,6 +134,8 @@ files:
134
134
  - lib/octo_merge/context.rb
135
135
  - lib/octo_merge/execute.rb
136
136
  - lib/octo_merge/git.rb
137
+ - lib/octo_merge/interactive_pull_requests.rb
138
+ - lib/octo_merge/list_pull_requests.rb
137
139
  - lib/octo_merge/merge_with_rebase.rb
138
140
  - lib/octo_merge/merge_without_rebase.rb
139
141
  - lib/octo_merge/pull_request.rb