geet 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/geet +9 -2
- data/geet.gemspec +1 -0
- data/lib/geet/git/repository.rb +1 -0
- data/lib/geet/git_hub/api_helper.rb +5 -1
- data/lib/geet/git_hub/gist.rb +45 -0
- data/lib/geet/git_hub/issue.rb +8 -6
- data/lib/geet/git_hub/remote_repository.rb +7 -2
- data/lib/geet/helpers/configuration_helper.rb +11 -0
- data/lib/geet/services/create_gist.rb +31 -0
- data/lib/geet/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c29c38895b2fd22b51cba179ee16e94f13c20104
|
4
|
+
data.tar.gz: cc3838fd34621971c813f48c282981758f558acf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 617d8c5acc3b8bc88b49680a39dbf9e0079ef9128ed026bdcb02cb7f241793d70700debd790c52ad8f54612475261c586ca50ddf8559832bdbd77b963fcd68d8
|
7
|
+
data.tar.gz: de39813e76e1323296a7bc69f77e82ce4b285c8a31364f596e06120941efce5be7464d559705bc08fbe08f82908bf2be93a61398e31653363165c0a8b4276ae2
|
data/bin/geet
CHANGED
@@ -11,16 +11,23 @@ configuration_helper = Helpers::ConfigurationHelper.new
|
|
11
11
|
command, options = configuration_helper.decode_argv || exit
|
12
12
|
api_token = configuration_helper.api_token
|
13
13
|
|
14
|
-
title, description = options.values_at(:title, :description)
|
15
|
-
|
16
14
|
repository = Git::Repository.new(api_token)
|
17
15
|
|
18
16
|
case command
|
17
|
+
when Helpers::ConfigurationHelper::GIST_CREATE_COMMAND
|
18
|
+
filename = options.delete(:filename)
|
19
|
+
options[:publik] = options.delete(:public) if options.key?(:public)
|
20
|
+
|
21
|
+
Services::CreateGist.new.execute(repository, filename, options)
|
19
22
|
when Helpers::ConfigurationHelper::ISSUE_CREATE_COMMAND
|
23
|
+
title, description = options.values_at(:title, :description)
|
24
|
+
|
20
25
|
Services::CreateIssue.new.execute(repository, title, description, options)
|
21
26
|
when Helpers::ConfigurationHelper::ISSUE_LIST_COMMAND
|
22
27
|
Services::ListIssues.new.execute(repository)
|
23
28
|
when Helpers::ConfigurationHelper::PR_CREATE_COMMAND
|
29
|
+
title, description = options.values_at(:title, :description)
|
30
|
+
|
24
31
|
Services::CreatePr.new.execute(repository, title, description, options)
|
25
32
|
else
|
26
33
|
raise "Internal error - Unrecognized command #{command.inspect}"
|
data/geet.gemspec
CHANGED
data/lib/geet/git/repository.rb
CHANGED
@@ -15,6 +15,7 @@ module Geet
|
|
15
15
|
extend Forwardable
|
16
16
|
|
17
17
|
def_delegators :@remote_repository, :collaborators, :labels
|
18
|
+
def_delegators :@remote_repository, :create_gist
|
18
19
|
def_delegators :@remote_repository, :create_issue, :list_issues
|
19
20
|
def_delegators :@remote_repository, :create_pr
|
20
21
|
def_delegators :@account, :authenticated_user
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'abstract_issue'
|
4
|
+
|
5
|
+
module Geet
|
6
|
+
module GitHub
|
7
|
+
class Gist
|
8
|
+
def self.create(repository, filename, content, api_helper, description: nil, publik: false)
|
9
|
+
request_address = "#{api_helper.base_link}/gists"
|
10
|
+
request_data = prepare_request_data(filename, content, description, publik)
|
11
|
+
|
12
|
+
response = api_helper.send_request(request_address, data: request_data)
|
13
|
+
|
14
|
+
id = response.fetch('id')
|
15
|
+
|
16
|
+
new(id)
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(id)
|
20
|
+
@id = id
|
21
|
+
end
|
22
|
+
|
23
|
+
def link
|
24
|
+
"https://gist.github.com/#{@id}"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def self.prepare_request_data(filename, content, description, publik)
|
30
|
+
request_data = {
|
31
|
+
"public" => publik,
|
32
|
+
"files" => {
|
33
|
+
filename => {
|
34
|
+
"content" => content
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
request_data['description'] = description if description
|
40
|
+
|
41
|
+
request_data
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/geet/git_hub/issue.rb
CHANGED
@@ -27,12 +27,14 @@ module Geet
|
|
27
27
|
response = api_helper.send_request(request_address, multipage: true)
|
28
28
|
issue_class = Struct.new(:number, :title, :link)
|
29
29
|
|
30
|
-
response.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
response.each_with_object([]) do |issue_data, result|
|
31
|
+
if ! issue_data.key?('pull_request')
|
32
|
+
number = issue_data.fetch('number')
|
33
|
+
title = issue_data.fetch('title')
|
34
|
+
link = issue_data.fetch('html_url')
|
35
|
+
|
36
|
+
result << issue_class.new(number, title, link)
|
37
|
+
end
|
36
38
|
end
|
37
39
|
end
|
38
40
|
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative 'api_helper
|
3
|
+
require_relative 'api_helper'
|
4
|
+
require_relative 'gist'
|
4
5
|
require_relative 'issue'
|
5
|
-
require_relative 'pr
|
6
|
+
require_relative 'pr'
|
6
7
|
|
7
8
|
module Geet
|
8
9
|
module GitHub
|
@@ -26,6 +27,10 @@ module Geet
|
|
26
27
|
response.map { |label_entry| label_entry['name'] }
|
27
28
|
end
|
28
29
|
|
30
|
+
def create_gist(filename, content, description: nil, publik: false)
|
31
|
+
Geet::GitHub::Gist.create(@local_repository, filename, content, @api_helper, description: description, publik: publik)
|
32
|
+
end
|
33
|
+
|
29
34
|
def create_issue(title, description)
|
30
35
|
Geet::GitHub::Issue.create(@local_repository, title, description, @api_helper)
|
31
36
|
end
|
@@ -7,12 +7,20 @@ module Geet
|
|
7
7
|
class ConfigurationHelper
|
8
8
|
# Commands
|
9
9
|
|
10
|
+
GIST_CREATE_COMMAND = 'gist.create'
|
10
11
|
ISSUE_CREATE_COMMAND = 'issue.create'
|
11
12
|
ISSUE_LIST_COMMAND = 'issue.list'
|
12
13
|
PR_CREATE_COMMAND = 'pr.create'
|
13
14
|
|
14
15
|
# Command options
|
15
16
|
|
17
|
+
GIST_CREATE_OPTIONS = [
|
18
|
+
['-p', '--public'],
|
19
|
+
['-B', '--no-browse', "Don't open the gist link in the browser after creation"],
|
20
|
+
'filename',
|
21
|
+
'[description]'
|
22
|
+
]
|
23
|
+
|
16
24
|
ISSUE_CREATE_OPTIONS = [
|
17
25
|
['-n', '--no-open-issue', "Don't open the issue link in the browser after creation"],
|
18
26
|
['-l', '--label-patterns "bug,help wanted"', 'Label patterns'],
|
@@ -36,6 +44,9 @@ module Geet
|
|
36
44
|
|
37
45
|
def decode_argv
|
38
46
|
SimpleScripting::Argv.decode(
|
47
|
+
'gist' => {
|
48
|
+
'create' => GIST_CREATE_OPTIONS,
|
49
|
+
},
|
39
50
|
'issue' => {
|
40
51
|
'create' => ISSUE_CREATE_OPTIONS,
|
41
52
|
'list' => ISSUE_LIST_OPTIONS,
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../helpers/os_helper.rb'
|
4
|
+
require_relative '../git/repository.rb'
|
5
|
+
|
6
|
+
module Geet
|
7
|
+
module Services
|
8
|
+
class CreateGist
|
9
|
+
include Geet::Helpers::OsHelper
|
10
|
+
|
11
|
+
# options:
|
12
|
+
# :description
|
13
|
+
# :publik: defaults to false
|
14
|
+
# :no_browse defaults to false
|
15
|
+
#
|
16
|
+
def execute(repository, filename, description: nil, publik: false, no_browse: false)
|
17
|
+
content = IO.read(filename)
|
18
|
+
|
19
|
+
puts 'Creating the gist...'
|
20
|
+
|
21
|
+
gist = repository.create_gist(filename, content, description: description, publik: publik)
|
22
|
+
|
23
|
+
if no_browse
|
24
|
+
puts "Gist address: #{gist.link}"
|
25
|
+
else
|
26
|
+
os_open(gist.link)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/geet/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saverio Miroddi
|
@@ -46,11 +46,13 @@ files:
|
|
46
46
|
- lib/geet/git_hub/abstract_issue.rb
|
47
47
|
- lib/geet/git_hub/account.rb
|
48
48
|
- lib/geet/git_hub/api_helper.rb
|
49
|
+
- lib/geet/git_hub/gist.rb
|
49
50
|
- lib/geet/git_hub/issue.rb
|
50
51
|
- lib/geet/git_hub/pr.rb
|
51
52
|
- lib/geet/git_hub/remote_repository.rb
|
52
53
|
- lib/geet/helpers/configuration_helper.rb
|
53
54
|
- lib/geet/helpers/os_helper.rb
|
55
|
+
- lib/geet/services/create_gist.rb
|
54
56
|
- lib/geet/services/create_issue.rb
|
55
57
|
- lib/geet/services/create_pr.rb
|
56
58
|
- lib/geet/services/list_issues.rb
|
@@ -67,7 +69,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
69
|
requirements:
|
68
70
|
- - ">="
|
69
71
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
72
|
+
version: 2.2.0
|
71
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
74
|
requirements:
|
73
75
|
- - ">="
|