waff 0.0.4 → 0.0.6
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 +4 -4
- data/Gemfile.lock +1 -1
- data/bin/waff +2 -0
- data/lib/waff/commander.rb +25 -0
- data/lib/waff/commands/command.rb +15 -0
- data/lib/waff/commands/list.rb +24 -0
- data/lib/waff/commands/pause.rb +14 -0
- data/lib/waff/commands/show.rb +16 -0
- data/lib/waff/commands/take.rb +16 -0
- data/lib/waff/config.rb +60 -0
- data/lib/waff/issue.rb +49 -0
- data/lib/waff/local_repository.rb +16 -0
- data/lib/waff/repository.rb +66 -0
- data/lib/waff/version.rb +3 -0
- data/lib/waff.rb +9 -81
- data/waff.gemspec +4 -1
- metadata +13 -8
- data/lib/config.rb +0 -30
- data/lib/core.rb +0 -5
- data/lib/helper.rb +0 -5
- data/lib/issue.rb +0 -43
- data/lib/local_repository.rb +0 -8
- data/lib/repository.rb +0 -64
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae6ede544fb5577239ae319898d03cbe1842fa98121e5aca07115987c5ec10a1
|
4
|
+
data.tar.gz: 90868e9d22cdc6cf444670512b84c41a2a7680426e91d66609ee0bec8c156315
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc7a20506959df2ac67dd68b95f46d93df12eb261bf1c534019fd23ca360fa39795175aa5c91a9bee401b0616d560ecc7e4ea658a9810afc223b89d20d6d7df4
|
7
|
+
data.tar.gz: 7a9ae012e20fb29ff6877b1df1cc6d1f63c49eea1dafe370b72813a826fde0dd3903c3b944734fcd748ce0db5aab84a8ece5390982c2034dbefa31796fec2b82
|
data/Gemfile.lock
CHANGED
data/bin/waff
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Waff
|
2
|
+
class Commander
|
3
|
+
class << self
|
4
|
+
def call params
|
5
|
+
LocalRepository.check_existence!
|
6
|
+
Config.init_config!
|
7
|
+
|
8
|
+
command = params.shift
|
9
|
+
|
10
|
+
case command
|
11
|
+
when 'take'
|
12
|
+
Commands::Take.call(params)
|
13
|
+
when 'pause'
|
14
|
+
Commands::Pause.call(params)
|
15
|
+
when 'list'
|
16
|
+
Commands::List.call(params)
|
17
|
+
when 'show'
|
18
|
+
Commands::Show.call(params)
|
19
|
+
else
|
20
|
+
puts HELP_TEXT
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require_relative 'command'
|
2
|
+
|
3
|
+
module Waff
|
4
|
+
module Commands
|
5
|
+
class List < Command
|
6
|
+
def call params
|
7
|
+
ready_issues = github_repo.get_open_issues 'ready'
|
8
|
+
ready_issues += github_repo.get_open_issues 'to do'
|
9
|
+
puts "Ready: \n\n"
|
10
|
+
ready_issues.each do |issue|
|
11
|
+
puts "##{issue.number}\t #{issue.title}"
|
12
|
+
end
|
13
|
+
puts
|
14
|
+
|
15
|
+
in_progress_issues = github_repo.get_open_issues 'in progress'
|
16
|
+
puts "In progress: \n\n"
|
17
|
+
in_progress_issues.each do |issue|
|
18
|
+
puts "##{issue.number}\t #{issue.title}"
|
19
|
+
end
|
20
|
+
puts
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'command'
|
2
|
+
|
3
|
+
module Waff
|
4
|
+
module Commands
|
5
|
+
class Show < Command
|
6
|
+
def call params
|
7
|
+
issue_number = params.shift || LocalRepository.current_issue_number
|
8
|
+
issue_number || raise('No issue number given as argument or found as current branch')
|
9
|
+
issue = github_repo.get_issue issue_number
|
10
|
+
|
11
|
+
puts "##{issue.number}\t #{issue.title}\n\n"
|
12
|
+
puts issue.body
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'command'
|
2
|
+
|
3
|
+
module Waff
|
4
|
+
module Commands
|
5
|
+
class Take < Command
|
6
|
+
def call params
|
7
|
+
issue_number = params.shift
|
8
|
+
issue = github_repo.get_issue issue_number
|
9
|
+
|
10
|
+
issue.create_local_branch!
|
11
|
+
issue.assign_to_self!
|
12
|
+
issue.mark_in_progress!
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/waff/config.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
module Waff
|
2
|
+
class Config
|
3
|
+
REMOTE_NOT_FOUND = <<-EOF
|
4
|
+
Can't find owner and repository. Make sure the remote name is correctly set on the configuration file.
|
5
|
+
EOF
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def user
|
9
|
+
config['user']
|
10
|
+
end
|
11
|
+
|
12
|
+
def token
|
13
|
+
config['token']
|
14
|
+
end
|
15
|
+
|
16
|
+
def remote
|
17
|
+
config['remote']
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_owner_and_repo
|
21
|
+
url = `git config --get remote.#{remote}.url`.strip
|
22
|
+
url[/:(.*)\.git/, 1] || raise(REMOTE_NOT_FOUND)
|
23
|
+
end
|
24
|
+
|
25
|
+
def init_config!
|
26
|
+
return if File.exist?(CONFIG_FILE)
|
27
|
+
|
28
|
+
puts "No config file detected (#{CONFIG_FILE}). Will generate one now in current directory."
|
29
|
+
print 'Github username: '
|
30
|
+
user = $stdin.gets
|
31
|
+
print 'Github password/personal token: '
|
32
|
+
token = $stdin.gets
|
33
|
+
print 'Git remote (leave empty for "origin"): '
|
34
|
+
remote = $stdin.gets.strip
|
35
|
+
remote = remote.empty? ? 'origin' : remote
|
36
|
+
|
37
|
+
# Write config file
|
38
|
+
File.open(CONFIG_FILE, 'w') do |file|
|
39
|
+
file.puts "user: #{user}"
|
40
|
+
file.puts "token: #{token}"
|
41
|
+
file.puts "remote: #{remote}"
|
42
|
+
end
|
43
|
+
|
44
|
+
# Write exclude file
|
45
|
+
FileUtils.mkdir_p(File.dirname(EXCLUDE_FILE))
|
46
|
+
File.open(EXCLUDE_FILE, 'a+') do |file|
|
47
|
+
unless file.read =~ /^#{CONFIG_FILE}$/
|
48
|
+
file.puts CONFIG_FILE
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def config
|
56
|
+
@config ||= YAML.load_file(CONFIG_FILE)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/waff/issue.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
module Waff
|
2
|
+
class Issue
|
3
|
+
attr_reader :repository, :number, :title, :labels, :body
|
4
|
+
|
5
|
+
def initialize(repository, data)
|
6
|
+
@repository = repository
|
7
|
+
@number = data['number']
|
8
|
+
@title = data['title']
|
9
|
+
@body = data['body']
|
10
|
+
parse_labels data
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_local_branch!
|
14
|
+
branch_name = "#{number}-#{slug}"
|
15
|
+
puts "Creating branch #{branch_name}"
|
16
|
+
`git checkout -b '#{branch_name}'`
|
17
|
+
end
|
18
|
+
|
19
|
+
def assign_to_self!
|
20
|
+
repository.assign_issue number
|
21
|
+
end
|
22
|
+
|
23
|
+
def mark_in_progress!
|
24
|
+
labels.delete 'ready'
|
25
|
+
labels.delete 'to do'
|
26
|
+
labels << 'in progress'
|
27
|
+
|
28
|
+
repository.export_labels self
|
29
|
+
end
|
30
|
+
|
31
|
+
def mark_ready!
|
32
|
+
labels << 'ready'
|
33
|
+
labels << 'to do'
|
34
|
+
labels.delete 'in progress'
|
35
|
+
|
36
|
+
repository.export_labels self
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def parse_labels(data)
|
42
|
+
@labels = data['labels'].map { |label| label['name'] }
|
43
|
+
end
|
44
|
+
|
45
|
+
def slug
|
46
|
+
title.downcase.strip.tr(' ', '-').gsub(/[^\w-]/, '')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Waff
|
2
|
+
class LocalRepository
|
3
|
+
class << self
|
4
|
+
def current_issue_number
|
5
|
+
branch_name = `git rev-parse --abbrev-ref HEAD`
|
6
|
+
branch_name[/^#?(\d+)-/, 1]
|
7
|
+
end
|
8
|
+
|
9
|
+
def check_existence!
|
10
|
+
unless File.exist?('.git')
|
11
|
+
raise 'No git repository found. Please move to the root of your project.'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Waff
|
2
|
+
class Repository
|
3
|
+
include HTTParty
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@user = Config.user
|
7
|
+
@token = Config.token
|
8
|
+
@owner_and_repo = Config.get_owner_and_repo
|
9
|
+
|
10
|
+
self.class.basic_auth @user, @token
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_issue(number)
|
14
|
+
response = self.class.get github_url ['issues', number]
|
15
|
+
|
16
|
+
if response.success?
|
17
|
+
Issue.new(self, response.parsed_response)
|
18
|
+
else
|
19
|
+
puts 'ERROR requesting issue'
|
20
|
+
puts response.body
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def assign_issue(number)
|
25
|
+
url = github_url ['issues', number, 'assignees']
|
26
|
+
response = self.class.post url, body: { assignees: [@user] }.to_json
|
27
|
+
if response.success?
|
28
|
+
puts "Successfully assigned issue ##{number} to #{@user}."
|
29
|
+
else
|
30
|
+
puts 'ERROR assigning user to issue'
|
31
|
+
puts response.body
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def export_labels issue
|
36
|
+
url = github_url ['issues', issue.number, 'labels']
|
37
|
+
response = self.class.put url, body: issue.labels.to_json
|
38
|
+
if response.success?
|
39
|
+
puts "Successfully assigned #{issue.labels.inspect} labels to ##{issue.number}"
|
40
|
+
else
|
41
|
+
puts 'ERROR setting issue labels'
|
42
|
+
puts response.body
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_open_issues label
|
47
|
+
response = self.class.get github_url(['issues']), query: { labels: label }
|
48
|
+
|
49
|
+
if response.success?
|
50
|
+
issues_data = response.parsed_response
|
51
|
+
issues_data.reject! { |data| data['pull_request'] }
|
52
|
+
issues_data.map { |data| Issue.new(self, data) }
|
53
|
+
else
|
54
|
+
puts 'ERROR requesting open issues'
|
55
|
+
puts response.body
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def github_url(nodes)
|
62
|
+
subpath = nodes.join '/'
|
63
|
+
"https://api.github.com/repos/#{@owner_and_repo}/" + subpath
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/waff/version.rb
ADDED
data/lib/waff.rb
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'httparty'
|
3
|
-
require_relative 'core.rb'
|
4
3
|
|
5
|
-
|
6
|
-
|
4
|
+
Dir[File.join(__dir__, 'waff', '**/*.rb')].each { |file| require file }
|
5
|
+
|
6
|
+
module Waff
|
7
|
+
CONFIG_FILE = '.waff.yml'
|
8
|
+
EXCLUDE_FILE = '.git/info/exclude'
|
9
|
+
|
10
|
+
HELP_TEXT = <<-EOF
|
11
|
+
Waff version #{Waff::VERSION}
|
7
12
|
|
8
|
-
HELP_TEXT = <<-EOF
|
9
13
|
Usage:
|
10
14
|
|
11
15
|
waff [command] [params]
|
@@ -17,82 +21,6 @@ waff show -- Shows description of current issue (determined by current b
|
|
17
21
|
waff show number -- Shows description of a given issue
|
18
22
|
waff take number -- Sets the issue in progress, assigns it to yourself, and creates a branch for it
|
19
23
|
waff pause number -- Sets the issue to ready state
|
20
|
-
EOF
|
21
|
-
|
22
|
-
def init_config
|
23
|
-
unless File.exist?(CONFIG_FILE)
|
24
|
-
puts "No config file detected (#{CONFIG_FILE}). Will generate one now in current directory."
|
25
|
-
print 'Github username: '
|
26
|
-
user = $stdin.gets
|
27
|
-
print 'Github password/personal token: '
|
28
|
-
token = $stdin.gets
|
29
|
-
print 'Git remote (leave empty for "origin"): '
|
30
|
-
remote = $stdin.gets.strip
|
31
|
-
remote = remote.empty? ? 'origin' : remote
|
32
|
-
|
33
|
-
# Write config file
|
34
|
-
File.open(CONFIG_FILE, 'w') do |file|
|
35
|
-
file.puts "user: #{user}"
|
36
|
-
file.puts "token: #{token}"
|
37
|
-
file.puts "remote: #{remote}"
|
38
|
-
end
|
39
|
-
|
40
|
-
# Write exclude file
|
41
|
-
FileUtils.mkdir_p(File.dirname(EXCLUDE_FILE))
|
42
|
-
File.open(EXCLUDE_FILE, 'a+') do |file|
|
43
|
-
unless file.read =~ /^#{CONFIG_FILE}$/
|
44
|
-
file.puts CONFIG_FILE
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def check_local_repository_exists
|
52
|
-
unless File.exist?('.git')
|
53
|
-
puts 'No git repository found. Please move to the root of your project.'
|
54
|
-
exit
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
check_local_repository_exists
|
59
|
-
init_config
|
60
|
-
|
61
|
-
|
62
|
-
command = ARGV[0]
|
63
|
-
issue_number = ARGV[1]
|
64
|
-
repo = Repository.new
|
65
|
-
|
66
|
-
case command
|
67
|
-
when 'take'
|
68
|
-
issue = repo.get_issue issue_number
|
69
|
-
issue.create_local_branch!
|
70
|
-
issue.assign_to_self!
|
71
|
-
issue.mark_in_progress!
|
72
|
-
when 'pause'
|
73
|
-
issue = repo.get_issue issue_number
|
74
|
-
issue.mark_ready!
|
75
|
-
when 'list'
|
76
|
-
ready_issues = repo.get_open_issues 'ready'
|
77
|
-
ready_issues += repo.get_open_issues 'to do'
|
78
|
-
puts "Ready: \n\n"
|
79
|
-
ready_issues.each do |issue|
|
80
|
-
puts "##{issue.number}\t #{issue.title}"
|
81
|
-
end
|
82
|
-
puts
|
24
|
+
EOF
|
83
25
|
|
84
|
-
in_progress_issues = repo.get_open_issues 'in progress'
|
85
|
-
puts "In progress: \n\n"
|
86
|
-
in_progress_issues.each do |issue|
|
87
|
-
puts "##{issue.number}\t #{issue.title}"
|
88
|
-
end
|
89
|
-
puts
|
90
|
-
when 'show'
|
91
|
-
issue_number ||= LocalRepository.current_issue_number
|
92
|
-
issue_number || raise('No issue number given as argument or found as current branch')
|
93
|
-
issue = repo.get_issue issue_number
|
94
|
-
puts "##{issue.number}\t #{issue.title}\n\n"
|
95
|
-
puts issue.body
|
96
|
-
else
|
97
|
-
puts HELP_TEXT
|
98
26
|
end
|
data/waff.gemspec
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
|
3
|
+
require_relative 'lib/waff/version'
|
4
|
+
|
2
5
|
Gem::Specification.new do |spec|
|
3
6
|
spec.name = "waff"
|
4
|
-
spec.version =
|
7
|
+
spec.version = Waff::VERSION
|
5
8
|
spec.authors = ["Armando Andini"]
|
6
9
|
spec.email = ["armando.andini@gmail.com"]
|
7
10
|
spec.summary = %q{Helps you with github flow based on Waffle tool}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Armando Andini
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -35,13 +35,18 @@ files:
|
|
35
35
|
- Gemfile
|
36
36
|
- Gemfile.lock
|
37
37
|
- bin/waff
|
38
|
-
- lib/config.rb
|
39
|
-
- lib/core.rb
|
40
|
-
- lib/helper.rb
|
41
|
-
- lib/issue.rb
|
42
|
-
- lib/local_repository.rb
|
43
|
-
- lib/repository.rb
|
44
38
|
- lib/waff.rb
|
39
|
+
- lib/waff/commander.rb
|
40
|
+
- lib/waff/commands/command.rb
|
41
|
+
- lib/waff/commands/list.rb
|
42
|
+
- lib/waff/commands/pause.rb
|
43
|
+
- lib/waff/commands/show.rb
|
44
|
+
- lib/waff/commands/take.rb
|
45
|
+
- lib/waff/config.rb
|
46
|
+
- lib/waff/issue.rb
|
47
|
+
- lib/waff/local_repository.rb
|
48
|
+
- lib/waff/repository.rb
|
49
|
+
- lib/waff/version.rb
|
45
50
|
- waff.gemspec
|
46
51
|
homepage: https://github.com/antico5/waff
|
47
52
|
licenses:
|
data/lib/config.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
class Config
|
2
|
-
REMOTE_NOT_FOUND = <<-EOF
|
3
|
-
Can't find owner and repository. Make sure the remote name is correctly set on the configuration file.
|
4
|
-
EOF
|
5
|
-
|
6
|
-
class << self
|
7
|
-
def user
|
8
|
-
config['user']
|
9
|
-
end
|
10
|
-
|
11
|
-
def token
|
12
|
-
config['token']
|
13
|
-
end
|
14
|
-
|
15
|
-
def remote
|
16
|
-
config['remote']
|
17
|
-
end
|
18
|
-
|
19
|
-
def get_owner_and_repo
|
20
|
-
url = `git config --get remote.#{remote}.url`.strip
|
21
|
-
url[/:(.*)\.git/, 1] || raise(REMOTE_NOT_FOUND)
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def config
|
27
|
-
@config ||= YAML.load_file(CONFIG_FILE)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/lib/core.rb
DELETED
data/lib/helper.rb
DELETED
data/lib/issue.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
class Issue
|
2
|
-
attr_reader :repository, :number, :title, :labels, :body
|
3
|
-
|
4
|
-
def initialize(repository, data)
|
5
|
-
@repository = repository
|
6
|
-
@number = data['number']
|
7
|
-
@title = data['title']
|
8
|
-
@body = data['body']
|
9
|
-
parse_labels data
|
10
|
-
end
|
11
|
-
|
12
|
-
def create_local_branch!
|
13
|
-
branch_name = "#{number}-#{Helper.slug title}"
|
14
|
-
puts "Creating branch #{branch_name}"
|
15
|
-
`git checkout -b '#{branch_name}'`
|
16
|
-
end
|
17
|
-
|
18
|
-
def assign_to_self!
|
19
|
-
repository.assign_issue number
|
20
|
-
end
|
21
|
-
|
22
|
-
def mark_in_progress!
|
23
|
-
labels.delete 'ready'
|
24
|
-
labels.delete 'to do'
|
25
|
-
labels << 'in progress'
|
26
|
-
|
27
|
-
repository.export_labels self
|
28
|
-
end
|
29
|
-
|
30
|
-
def mark_ready!
|
31
|
-
labels << 'ready'
|
32
|
-
labels << 'to do'
|
33
|
-
labels.delete 'in progress'
|
34
|
-
|
35
|
-
repository.export_labels self
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def parse_labels(data)
|
41
|
-
@labels = data['labels'].map { |label| label['name'] }
|
42
|
-
end
|
43
|
-
end
|
data/lib/local_repository.rb
DELETED
data/lib/repository.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
class Repository
|
2
|
-
include HTTParty
|
3
|
-
|
4
|
-
def initialize
|
5
|
-
@user = Config.user
|
6
|
-
@token = Config.token
|
7
|
-
@owner_and_repo = Config.get_owner_and_repo
|
8
|
-
|
9
|
-
self.class.basic_auth @user, @token
|
10
|
-
end
|
11
|
-
|
12
|
-
def get_issue(number)
|
13
|
-
response = self.class.get github_url ['issues', number]
|
14
|
-
|
15
|
-
if response.success?
|
16
|
-
Issue.new(self, JSON.parse(response.body))
|
17
|
-
else
|
18
|
-
puts 'ERROR requesting issue'
|
19
|
-
puts response.body
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def assign_issue(number)
|
24
|
-
url = github_url ['issues', number, 'assignees']
|
25
|
-
response = self.class.post url, body: { assignees: [@user] }.to_json
|
26
|
-
if response.success?
|
27
|
-
puts "Successfully assigned issue ##{number} to #{@user}."
|
28
|
-
else
|
29
|
-
puts 'ERROR assigning user to issue'
|
30
|
-
puts response.body
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def export_labels issue
|
35
|
-
url = github_url ['issues', issue.number, 'labels']
|
36
|
-
response = self.class.put url, body: issue.labels.to_json
|
37
|
-
if response.success?
|
38
|
-
puts "Successfully assigned #{issue.labels.inspect} labels to ##{issue.number}"
|
39
|
-
else
|
40
|
-
puts 'ERROR setting issue labels'
|
41
|
-
puts response.body
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def get_open_issues label
|
46
|
-
response = self.class.get github_url(['issues']), query: { labels: label }
|
47
|
-
|
48
|
-
if response.success?
|
49
|
-
issues_data = JSON.parse response.body
|
50
|
-
issues_data.reject! { |data| data['pull_request'] }
|
51
|
-
issues_data.map { |data| Issue.new(self, data) }
|
52
|
-
else
|
53
|
-
puts 'ERROR requesting open issues'
|
54
|
-
puts response.body
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def github_url(nodes)
|
61
|
-
subpath = nodes.join '/'
|
62
|
-
"https://api.github.com/repos/#{@owner_and_repo}/" + subpath
|
63
|
-
end
|
64
|
-
end
|