k_ext-github 0.0.2 → 0.0.3
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/Guardfile +31 -31
- data/Rakefile +3 -3
- data/k_ext-github.gemspec +47 -47
- data/lib/k_ext/github.rb +41 -40
- data/lib/k_ext/github/api.rb +124 -124
- data/lib/k_ext/github/configuration.rb +20 -18
- data/lib/k_ext/github/models/hook.rb +30 -30
- data/lib/k_ext/github/models/owner.rb +19 -19
- data/lib/k_ext/github/models/repository.rb +30 -30
- data/lib/k_ext/github/printer.rb +160 -160
- data/lib/k_ext/github/version.rb +7 -7
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2c9862027020fc728f735425e078dca3451555ed55941bcadb4cd61bcf8b7d3
|
4
|
+
data.tar.gz: 105e15847f190a1bea23250687962a00be3db249bd3c2ba5495ab25af214f8fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f81c9ac640ab78e68e2d2df9b612a7b3c15a349f7e9a614989c952695e949d590a047e430294e0cfca467c834f5ca360ff076d120af46e038c87da80140c9f9
|
7
|
+
data.tar.gz: 7de7c88c18837ecd0b43bf090aba878e9bb6cf274c4a275c6211730ca3c98741160bb4fb8b8206b0ad48d0ff7a82603b9de6cb78b4340d2209c91f28cefbaa80
|
data/Guardfile
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
guard :bundler, cmd: 'bundle install' do
|
4
|
-
watch('Gemfile')
|
5
|
-
watch('k_ext_github.gemspec')
|
6
|
-
end
|
7
|
-
|
8
|
-
group :green_pass_then_cop, halt_on_fail: true do
|
9
|
-
guard :rspec, cmd: 'bundle exec rspec -f doc' do
|
10
|
-
require 'guard/rspec/dsl'
|
11
|
-
dsl = Guard::RSpec::Dsl.new(self)
|
12
|
-
|
13
|
-
# RSpec files
|
14
|
-
rspec = dsl.rspec
|
15
|
-
watch(rspec.spec_helper) { rspec.spec_dir }
|
16
|
-
watch(rspec.spec_support) { rspec.spec_dir }
|
17
|
-
watch(rspec.spec_files)
|
18
|
-
|
19
|
-
# Ruby files
|
20
|
-
ruby = dsl.ruby
|
21
|
-
dsl.watch_spec_files_for(ruby.lib_files)
|
22
|
-
watch(%r{^lib/k_ext/github/(.+)\.rb$}) { |m| "spec/k_ext/#{m[1]}_spec.rb" }
|
23
|
-
watch(%r{^lib/k_ext/github/models/(.+)\.rb$}) { |m| "spec/k_ext/models/#{m[1]}_spec.rb" }
|
24
|
-
watch(%r{^lib/k_ext/github/commands/(.+)\.rb$}) { |m| "spec/unit/commands/#{m[1]}_spec.rb" }
|
25
|
-
end
|
26
|
-
|
27
|
-
guard :rubocop, all_on_start: false, cli: ['--format', 'clang'] do
|
28
|
-
watch(/{.+\.rb$/)
|
29
|
-
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
30
|
-
end
|
31
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
guard :bundler, cmd: 'bundle install' do
|
4
|
+
watch('Gemfile')
|
5
|
+
watch('k_ext_github.gemspec')
|
6
|
+
end
|
7
|
+
|
8
|
+
group :green_pass_then_cop, halt_on_fail: true do
|
9
|
+
guard :rspec, cmd: 'bundle exec rspec -f doc' do
|
10
|
+
require 'guard/rspec/dsl'
|
11
|
+
dsl = Guard::RSpec::Dsl.new(self)
|
12
|
+
|
13
|
+
# RSpec files
|
14
|
+
rspec = dsl.rspec
|
15
|
+
watch(rspec.spec_helper) { rspec.spec_dir }
|
16
|
+
watch(rspec.spec_support) { rspec.spec_dir }
|
17
|
+
watch(rspec.spec_files)
|
18
|
+
|
19
|
+
# Ruby files
|
20
|
+
ruby = dsl.ruby
|
21
|
+
dsl.watch_spec_files_for(ruby.lib_files)
|
22
|
+
watch(%r{^lib/k_ext/github/(.+)\.rb$}) { |m| "spec/k_ext/#{m[1]}_spec.rb" }
|
23
|
+
watch(%r{^lib/k_ext/github/models/(.+)\.rb$}) { |m| "spec/k_ext/models/#{m[1]}_spec.rb" }
|
24
|
+
watch(%r{^lib/k_ext/github/commands/(.+)\.rb$}) { |m| "spec/unit/commands/#{m[1]}_spec.rb" }
|
25
|
+
end
|
26
|
+
|
27
|
+
guard :rubocop, all_on_start: false, cli: ['--format', 'clang'] do
|
28
|
+
watch(/{.+\.rb$/)
|
29
|
+
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
30
|
+
end
|
31
|
+
end
|
data/Rakefile
CHANGED
@@ -15,9 +15,9 @@ require 'rake/extensiontask'
|
|
15
15
|
desc 'Compile all the extensions'
|
16
16
|
task build: :compile
|
17
17
|
|
18
|
-
Rake::ExtensionTask.new('k_ext_github') do |ext|
|
19
|
-
|
20
|
-
end
|
18
|
+
# Rake::ExtensionTask.new('k_ext_github') do |ext|
|
19
|
+
# ext.lib_dir = 'lib/k_ext/github'
|
20
|
+
# end
|
21
21
|
|
22
22
|
desc 'Publish the gem to RubyGems.org'
|
23
23
|
task :publish do
|
data/k_ext-github.gemspec
CHANGED
@@ -1,47 +1,47 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'lib/k_ext/github/version'
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.required_ruby_version = '>= 2.5'
|
7
|
-
spec.name = 'k_ext-github'
|
8
|
-
spec.version = KExt::Github::VERSION
|
9
|
-
spec.authors = ['David Cruwys']
|
10
|
-
spec.email = ['david@ideasmen.com.au']
|
11
|
-
|
12
|
-
spec.summary = 'KExt/Github provides useful github extensions specifically for the klueless code generator'
|
13
|
-
spec.description = <<-TEXT
|
14
|
-
KExt/Github provides useful github extensions specifically for the klueless code generator
|
15
|
-
TEXT
|
16
|
-
spec.homepage = 'http://appydave.com/gems/k-ext-github'
|
17
|
-
spec.license = 'MIT'
|
18
|
-
|
19
|
-
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
20
|
-
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
21
|
-
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
|
22
|
-
|
23
|
-
# spec.metadata['allowed_push_host'] = "Set to 'http://mygemserver.com'"
|
24
|
-
|
25
|
-
spec.metadata['homepage_uri'] = spec.homepage
|
26
|
-
spec.metadata['source_code_uri'] = 'https://github.com/klueless-io/k_ext-github'
|
27
|
-
spec.metadata['changelog_uri'] = 'https://github.com/klueless-io/k_ext-github/commits/master'
|
28
|
-
|
29
|
-
# Specify which files should be added to the gem when it is released.
|
30
|
-
# The `git ls-files -z` loads the RubyGem files that have been added into git.
|
31
|
-
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
32
|
-
`git ls-files -z`.split("\x0").reject do |f|
|
33
|
-
f.match(%r{^(test|spec|features)/})
|
34
|
-
end
|
35
|
-
end
|
36
|
-
spec.bindir = 'exe'
|
37
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
38
|
-
spec.require_paths = ['lib']
|
39
|
-
# spec.extensions = ['ext/k_ext_github/extconf.rb']
|
40
|
-
|
41
|
-
spec.add_dependency 'k_log', '~> 0.0.0'
|
42
|
-
spec.add_dependency 'k_type', '~> 0.0.0'
|
43
|
-
|
44
|
-
spec.add_dependency 'octokit', '~> 4.0'
|
45
|
-
|
46
|
-
spec.add_dependency 'virtus', '~> 1.0.5'
|
47
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/k_ext/github/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.required_ruby_version = '>= 2.5'
|
7
|
+
spec.name = 'k_ext-github'
|
8
|
+
spec.version = KExt::Github::VERSION
|
9
|
+
spec.authors = ['David Cruwys']
|
10
|
+
spec.email = ['david@ideasmen.com.au']
|
11
|
+
|
12
|
+
spec.summary = 'KExt/Github provides useful github extensions specifically for the klueless code generator'
|
13
|
+
spec.description = <<-TEXT
|
14
|
+
KExt/Github provides useful github extensions specifically for the klueless code generator
|
15
|
+
TEXT
|
16
|
+
spec.homepage = 'http://appydave.com/gems/k-ext-github'
|
17
|
+
spec.license = 'MIT'
|
18
|
+
|
19
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
20
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
21
|
+
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
|
22
|
+
|
23
|
+
# spec.metadata['allowed_push_host'] = "Set to 'http://mygemserver.com'"
|
24
|
+
|
25
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
26
|
+
spec.metadata['source_code_uri'] = 'https://github.com/klueless-io/k_ext-github'
|
27
|
+
spec.metadata['changelog_uri'] = 'https://github.com/klueless-io/k_ext-github/commits/master'
|
28
|
+
|
29
|
+
# Specify which files should be added to the gem when it is released.
|
30
|
+
# The `git ls-files -z` loads the RubyGem files that have been added into git.
|
31
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
32
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
33
|
+
f.match(%r{^(test|spec|features)/})
|
34
|
+
end
|
35
|
+
end
|
36
|
+
spec.bindir = 'exe'
|
37
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
38
|
+
spec.require_paths = ['lib']
|
39
|
+
# spec.extensions = ['ext/k_ext_github/extconf.rb']
|
40
|
+
|
41
|
+
spec.add_dependency 'k_log', '~> 0.0.0'
|
42
|
+
spec.add_dependency 'k_type', '~> 0.0.0'
|
43
|
+
spec.add_dependency 'k_util', '~> 0.0.0'
|
44
|
+
spec.add_dependency 'octokit', '~> 4.0'
|
45
|
+
|
46
|
+
spec.add_dependency 'virtus', '~> 1.0.5'
|
47
|
+
end
|
data/lib/k_ext/github.rb
CHANGED
@@ -1,40 +1,41 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'virtus'
|
4
|
-
require 'k_log'
|
5
|
-
|
6
|
-
|
7
|
-
require 'k_ext/github/
|
8
|
-
require 'k_ext/github/
|
9
|
-
require 'k_ext/github/models/
|
10
|
-
require 'k_ext/github/models/
|
11
|
-
require 'k_ext/github/
|
12
|
-
require 'k_ext/github/
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'virtus'
|
4
|
+
require 'k_log'
|
5
|
+
require 'k_util'
|
6
|
+
|
7
|
+
require 'k_ext/github/version'
|
8
|
+
require 'k_ext/github/configuration'
|
9
|
+
require 'k_ext/github/models/hook'
|
10
|
+
require 'k_ext/github/models/owner'
|
11
|
+
require 'k_ext/github/models/repository'
|
12
|
+
require 'k_ext/github/printer'
|
13
|
+
require 'k_ext/github/api'
|
14
|
+
|
15
|
+
module KExt
|
16
|
+
module Github
|
17
|
+
# raise KExt::Github::Error, 'Sample message'
|
18
|
+
class Error < StandardError; end
|
19
|
+
|
20
|
+
class << self
|
21
|
+
def configuration
|
22
|
+
@configuration ||= KExt::Github::Configuration.new
|
23
|
+
end
|
24
|
+
|
25
|
+
def reset
|
26
|
+
@configuration = KExt::Github::Configuration.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def configure
|
30
|
+
yield(configuration)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
|
37
|
+
namespace = 'KExt::Github::Version'
|
38
|
+
file_path = $LOADED_FEATURES.find { |f| f.include?('k_ext/github/version') }
|
39
|
+
version = KExt::Github::VERSION.ljust(9)
|
40
|
+
puts "#{namespace.ljust(35)} : #{version.ljust(9)} : #{file_path}"
|
41
|
+
end
|
data/lib/k_ext/github/api.rb
CHANGED
@@ -1,124 +1,124 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KExt
|
4
|
-
module Github
|
5
|
-
# Print formatted log for GitHub data such as repositories
|
6
|
-
require 'octokit'
|
7
|
-
|
8
|
-
# The API provides a limited set of service methods for working against GitHub
|
9
|
-
class Api
|
10
|
-
include KLog::Logging
|
11
|
-
include Virtus.model
|
12
|
-
|
13
|
-
# attribute :client_id, String, :writer => :private
|
14
|
-
# attribute :secret, String, :writer => :private
|
15
|
-
|
16
|
-
# attribute :sites, Array[Netlify::Site], :writer => :private
|
17
|
-
attribute :client, Octokit::Client, writer: :private
|
18
|
-
|
19
|
-
def self.instance(access_token)
|
20
|
-
GithubApi.new(token: access_token)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Create API for communicating with GitHub
|
24
|
-
#
|
25
|
-
# Provide token OR login/password
|
26
|
-
#
|
27
|
-
# Create a token here
|
28
|
-
# https://github.com/settings/tokens/new
|
29
|
-
#
|
30
|
-
# @param [String] token
|
31
|
-
# @param [String] login
|
32
|
-
# @param [String] password
|
33
|
-
def initialize(token: nil, login: nil, password: nil)
|
34
|
-
auth(token: token, login: login, password: password) if token || login || password
|
35
|
-
end
|
36
|
-
|
37
|
-
# Authenticate against GitHub with username and password or token
|
38
|
-
#
|
39
|
-
# Provide token OR login/password
|
40
|
-
#
|
41
|
-
# Create a token here
|
42
|
-
# https://github.com/settings/tokens/new
|
43
|
-
# @param [String] token
|
44
|
-
# @param [String] login
|
45
|
-
# @param [String] password
|
46
|
-
def auth(token: nil, login: nil, password: nil)
|
47
|
-
raise 'Provide credentials. Token or username/password' if token.nil? && (login.nil? || password.nil?)
|
48
|
-
|
49
|
-
self.client = if token.nil?
|
50
|
-
Octokit::Client.new(login: login, password: password)
|
51
|
-
else
|
52
|
-
Octokit::Client.new(access_token: token)
|
53
|
-
end
|
54
|
-
|
55
|
-
# Fetch the current user
|
56
|
-
log.kv 'GitHub User', client.user.name
|
57
|
-
end
|
58
|
-
|
59
|
-
# --------------------------------------------------------------------------------
|
60
|
-
# Service Actions
|
61
|
-
# --------------------------------------------------------------------------------
|
62
|
-
|
63
|
-
# list of repositories for this user
|
64
|
-
#
|
65
|
-
def repositories
|
66
|
-
items = @client.repositories({}, query: { per_page: 100 })
|
67
|
-
|
68
|
-
items.map { |item| KExt::Github::Models::Repository.new(item) }
|
69
|
-
end
|
70
|
-
|
71
|
-
# create repository
|
72
|
-
#
|
73
|
-
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
74
|
-
def create_repository(repository_name, **options)
|
75
|
-
@client.create_repository(repository_name, options)
|
76
|
-
end
|
77
|
-
|
78
|
-
# delete repository
|
79
|
-
#
|
80
|
-
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
81
|
-
def delete_repository(repository_name, **options)
|
82
|
-
@client.delete_repository(repository_name, **options)
|
83
|
-
end
|
84
|
-
|
85
|
-
# list of hooks for repository
|
86
|
-
#
|
87
|
-
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
88
|
-
def hooks(repository_name)
|
89
|
-
items = @client.hooks(repository_name)
|
90
|
-
|
91
|
-
items.map { |item| KExt::Github::Models::Hook.new(item) }
|
92
|
-
end
|
93
|
-
|
94
|
-
# list of repositories for organization
|
95
|
-
#
|
96
|
-
# @param [String] org_name Organization name
|
97
|
-
def organization_repositories(org_name)
|
98
|
-
items = @client.repositories(org_name, query: { per_page: 100 })
|
99
|
-
|
100
|
-
items.map { |item| KExt::Github::Models::Repository.new(item) }
|
101
|
-
end
|
102
|
-
# organization_repositories(org, options = {}) => Array<Sawyer::Resource> (also: #org_repositories, #org_repos)
|
103
|
-
|
104
|
-
# remove hook from repository by id
|
105
|
-
#
|
106
|
-
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
107
|
-
# @param [Integer] id hook ID
|
108
|
-
def remove_hook(repository_name, id)
|
109
|
-
@client.remove_hook(repository_name, id)
|
110
|
-
end
|
111
|
-
|
112
|
-
# remove all hooks in a repository
|
113
|
-
#
|
114
|
-
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
115
|
-
def remove_hooks(repository_name)
|
116
|
-
hooks = hooks(repository_name)
|
117
|
-
|
118
|
-
hooks.each do |hook|
|
119
|
-
@client.remove_hook(repository_name, hook.id)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KExt
|
4
|
+
module Github
|
5
|
+
# Print formatted log for GitHub data such as repositories
|
6
|
+
require 'octokit'
|
7
|
+
|
8
|
+
# The API provides a limited set of service methods for working against GitHub
|
9
|
+
class Api
|
10
|
+
include KLog::Logging
|
11
|
+
include Virtus.model
|
12
|
+
|
13
|
+
# attribute :client_id, String, :writer => :private
|
14
|
+
# attribute :secret, String, :writer => :private
|
15
|
+
|
16
|
+
# attribute :sites, Array[Netlify::Site], :writer => :private
|
17
|
+
attribute :client, Octokit::Client, writer: :private
|
18
|
+
|
19
|
+
def self.instance(access_token)
|
20
|
+
GithubApi.new(token: access_token)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Create API for communicating with GitHub
|
24
|
+
#
|
25
|
+
# Provide token OR login/password
|
26
|
+
#
|
27
|
+
# Create a token here
|
28
|
+
# https://github.com/settings/tokens/new
|
29
|
+
#
|
30
|
+
# @param [String] token
|
31
|
+
# @param [String] login
|
32
|
+
# @param [String] password
|
33
|
+
def initialize(token: nil, login: nil, password: nil)
|
34
|
+
auth(token: token, login: login, password: password) if token || login || password
|
35
|
+
end
|
36
|
+
|
37
|
+
# Authenticate against GitHub with username and password or token
|
38
|
+
#
|
39
|
+
# Provide token OR login/password
|
40
|
+
#
|
41
|
+
# Create a token here
|
42
|
+
# https://github.com/settings/tokens/new
|
43
|
+
# @param [String] token
|
44
|
+
# @param [String] login
|
45
|
+
# @param [String] password
|
46
|
+
def auth(token: nil, login: nil, password: nil)
|
47
|
+
raise 'Provide credentials. Token or username/password' if token.nil? && (login.nil? || password.nil?)
|
48
|
+
|
49
|
+
self.client = if token.nil?
|
50
|
+
Octokit::Client.new(login: login, password: password)
|
51
|
+
else
|
52
|
+
Octokit::Client.new(access_token: token)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Fetch the current user
|
56
|
+
log.kv 'GitHub User', client.user.name
|
57
|
+
end
|
58
|
+
|
59
|
+
# --------------------------------------------------------------------------------
|
60
|
+
# Service Actions
|
61
|
+
# --------------------------------------------------------------------------------
|
62
|
+
|
63
|
+
# list of repositories for this user
|
64
|
+
#
|
65
|
+
def repositories
|
66
|
+
items = @client.repositories({}, query: { per_page: 100 })
|
67
|
+
|
68
|
+
items.map { |item| KExt::Github::Models::Repository.new(item) }
|
69
|
+
end
|
70
|
+
|
71
|
+
# create repository
|
72
|
+
#
|
73
|
+
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
74
|
+
def create_repository(repository_name, **options)
|
75
|
+
@client.create_repository(repository_name, options)
|
76
|
+
end
|
77
|
+
|
78
|
+
# delete repository
|
79
|
+
#
|
80
|
+
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
81
|
+
def delete_repository(repository_name, **options)
|
82
|
+
@client.delete_repository(repository_name, **options)
|
83
|
+
end
|
84
|
+
|
85
|
+
# list of hooks for repository
|
86
|
+
#
|
87
|
+
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
88
|
+
def hooks(repository_name)
|
89
|
+
items = @client.hooks(repository_name)
|
90
|
+
|
91
|
+
items.map { |item| KExt::Github::Models::Hook.new(item) }
|
92
|
+
end
|
93
|
+
|
94
|
+
# list of repositories for organization
|
95
|
+
#
|
96
|
+
# @param [String] org_name Organization name
|
97
|
+
def organization_repositories(org_name)
|
98
|
+
items = @client.repositories(org_name, query: { per_page: 100 })
|
99
|
+
|
100
|
+
items.map { |item| KExt::Github::Models::Repository.new(item) }
|
101
|
+
end
|
102
|
+
# organization_repositories(org, options = {}) => Array<Sawyer::Resource> (also: #org_repositories, #org_repos)
|
103
|
+
|
104
|
+
# remove hook from repository by id
|
105
|
+
#
|
106
|
+
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
107
|
+
# @param [Integer] id hook ID
|
108
|
+
def remove_hook(repository_name, id)
|
109
|
+
@client.remove_hook(repository_name, id)
|
110
|
+
end
|
111
|
+
|
112
|
+
# remove all hooks in a repository
|
113
|
+
#
|
114
|
+
# @param [String] repository_name e.g. klueless-io/z-test-aerial.com
|
115
|
+
def remove_hooks(repository_name)
|
116
|
+
hooks = hooks(repository_name)
|
117
|
+
|
118
|
+
hooks.each do |hook|
|
119
|
+
@client.remove_hook(repository_name, hook.id)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -1,18 +1,20 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KExt
|
4
|
-
module Github
|
5
|
-
# Configuration class for KExt::Github
|
6
|
-
class Configuration
|
7
|
-
|
8
|
-
|
9
|
-
attr_accessor :
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KExt
|
4
|
+
module Github
|
5
|
+
# Configuration class for KExt::Github
|
6
|
+
class Configuration
|
7
|
+
include KUtil::Data::InstanceVariablesToH
|
8
|
+
|
9
|
+
attr_accessor :user
|
10
|
+
attr_accessor :personal_access_token
|
11
|
+
attr_accessor :personal_access_token_delete
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@user = ENV['GITHUB_USER']
|
15
|
+
@personal_access_token = ENV['GITHUB_PERSONAL_ACCESS_TOKEN']
|
16
|
+
@personal_access_token_delete = ENV['GITHUB_PERSONAL_ACCESS_TOKEN_DELETE']
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,30 +1,30 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KExt
|
4
|
-
module Github
|
5
|
-
module Models
|
6
|
-
# This model represents a GitHub hook
|
7
|
-
class Hook
|
8
|
-
include Virtus.model
|
9
|
-
|
10
|
-
def initialize(attributes = nil)
|
11
|
-
# Virtus will take your attributes and match them to the attribute definitions listed below
|
12
|
-
super(attributes)
|
13
|
-
end
|
14
|
-
|
15
|
-
attribute :type, String
|
16
|
-
attribute :id, String
|
17
|
-
attribute :name, String
|
18
|
-
attribute :active, String
|
19
|
-
attribute :events, String
|
20
|
-
attribute :config, Hash
|
21
|
-
attribute :updated_at, String
|
22
|
-
attribute :created_at, String
|
23
|
-
attribute :url, String
|
24
|
-
attribute :test_url, String
|
25
|
-
attribute :ping_url, String
|
26
|
-
attribute :last_response, String
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KExt
|
4
|
+
module Github
|
5
|
+
module Models
|
6
|
+
# This model represents a GitHub hook
|
7
|
+
class Hook
|
8
|
+
include Virtus.model
|
9
|
+
|
10
|
+
def initialize(attributes = nil)
|
11
|
+
# Virtus will take your attributes and match them to the attribute definitions listed below
|
12
|
+
super(attributes)
|
13
|
+
end
|
14
|
+
|
15
|
+
attribute :type, String
|
16
|
+
attribute :id, String
|
17
|
+
attribute :name, String
|
18
|
+
attribute :active, String
|
19
|
+
attribute :events, String
|
20
|
+
attribute :config, Hash
|
21
|
+
attribute :updated_at, String
|
22
|
+
attribute :created_at, String
|
23
|
+
attribute :url, String
|
24
|
+
attribute :test_url, String
|
25
|
+
attribute :ping_url, String
|
26
|
+
attribute :last_response, String
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,19 +1,19 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KExt
|
4
|
-
module Github
|
5
|
-
module Models
|
6
|
-
# This model represents a GitHub owner
|
7
|
-
class Owner
|
8
|
-
include Virtus.model
|
9
|
-
|
10
|
-
def initialize(attributes = nil)
|
11
|
-
# Virtus will take your attributes and match them to the attribute definitions listed below
|
12
|
-
super(attributes)
|
13
|
-
end
|
14
|
-
|
15
|
-
attribute :login, String
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KExt
|
4
|
+
module Github
|
5
|
+
module Models
|
6
|
+
# This model represents a GitHub owner
|
7
|
+
class Owner
|
8
|
+
include Virtus.model
|
9
|
+
|
10
|
+
def initialize(attributes = nil)
|
11
|
+
# Virtus will take your attributes and match them to the attribute definitions listed below
|
12
|
+
super(attributes)
|
13
|
+
end
|
14
|
+
|
15
|
+
attribute :login, String
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,30 +1,30 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KExt
|
4
|
-
module Github
|
5
|
-
module Models
|
6
|
-
# This model represents a GitHub Repository
|
7
|
-
class Repository
|
8
|
-
include Virtus.model
|
9
|
-
|
10
|
-
def initialize(attributes = nil)
|
11
|
-
# Virtus will take your attributes and match them to the attribute definitions listed below
|
12
|
-
super(attributes)
|
13
|
-
end
|
14
|
-
|
15
|
-
attribute :id, String
|
16
|
-
attribute :node_id, String
|
17
|
-
attribute :name, String
|
18
|
-
attribute :full_name, String
|
19
|
-
attribute :private, String
|
20
|
-
attribute :description, String
|
21
|
-
attribute :url, String
|
22
|
-
attribute :created_at, String
|
23
|
-
attribute :updated_at, String
|
24
|
-
attribute :pushed_at, String
|
25
|
-
attribute :git_url, String
|
26
|
-
attribute :owner, KExt::Github::Models::Owner
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KExt
|
4
|
+
module Github
|
5
|
+
module Models
|
6
|
+
# This model represents a GitHub Repository
|
7
|
+
class Repository
|
8
|
+
include Virtus.model
|
9
|
+
|
10
|
+
def initialize(attributes = nil)
|
11
|
+
# Virtus will take your attributes and match them to the attribute definitions listed below
|
12
|
+
super(attributes)
|
13
|
+
end
|
14
|
+
|
15
|
+
attribute :id, String
|
16
|
+
attribute :node_id, String
|
17
|
+
attribute :name, String
|
18
|
+
attribute :full_name, String
|
19
|
+
attribute :private, String
|
20
|
+
attribute :description, String
|
21
|
+
attribute :url, String
|
22
|
+
attribute :created_at, String
|
23
|
+
attribute :updated_at, String
|
24
|
+
attribute :pushed_at, String
|
25
|
+
attribute :git_url, String
|
26
|
+
attribute :owner, KExt::Github::Models::Owner
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/k_ext/github/printer.rb
CHANGED
@@ -1,160 +1,160 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KExt
|
4
|
-
module Github
|
5
|
-
# Print formatted log for GitHub data such as repositories
|
6
|
-
class Printer
|
7
|
-
extend KLog::Logging
|
8
|
-
|
9
|
-
# ---------------------------------------------
|
10
|
-
# Print Repositories
|
11
|
-
# ---------------------------------------------
|
12
|
-
|
13
|
-
def self.repositories(rows = nil, format = 'default')
|
14
|
-
log.block 'Repositories'
|
15
|
-
|
16
|
-
if rows.nil?
|
17
|
-
Repository.all.each do |_r|
|
18
|
-
repository_with_format(repo, format)
|
19
|
-
end
|
20
|
-
else
|
21
|
-
rows.each do |_r|
|
22
|
-
repository_with_format(repo, format)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.repositories_as_table(rows = nil, format = 'default')
|
28
|
-
log.block 'Repositories'
|
29
|
-
|
30
|
-
rows = Repository.all if rows.nil?
|
31
|
-
|
32
|
-
case format
|
33
|
-
when 'detailed'
|
34
|
-
# tp rows
|
35
|
-
tp rows, :id, :node_id, :name, :full_name, :private, :description, :url, 'owner.login', :created_at, :updated_at, :pushed_at, :git_url
|
36
|
-
else
|
37
|
-
tp rows, :id, :name, :git_url, :full_name, :private, :description, :url, 'owner.login'
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.repository_with_format(repo, format)
|
42
|
-
case format
|
43
|
-
when 'detailed'
|
44
|
-
repository_detailed(repo)
|
45
|
-
else
|
46
|
-
repository(repo)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.repository(repo)
|
51
|
-
data = repo_key_values(repo)
|
52
|
-
|
53
|
-
log.kv_hash(data)
|
54
|
-
log.line
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.repository_detailed(repo)
|
58
|
-
data = repo_key_values(repo)
|
59
|
-
|
60
|
-
log.kv_hash(data)
|
61
|
-
log.line
|
62
|
-
|
63
|
-
# Print Relations
|
64
|
-
|
65
|
-
log.line
|
66
|
-
end
|
67
|
-
|
68
|
-
# ---------------------------------------------
|
69
|
-
# Print Hooks
|
70
|
-
# ---------------------------------------------
|
71
|
-
|
72
|
-
def self.hooks(rows = nil, format = 'default')
|
73
|
-
log.block 'Hooks'
|
74
|
-
|
75
|
-
if rows.nil?
|
76
|
-
Hook.all.each do |_r|
|
77
|
-
hook_with_format(repo, format)
|
78
|
-
end
|
79
|
-
else
|
80
|
-
rows.each do |_r|
|
81
|
-
hook_with_format(repo, format)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def self.hooks_as_table(rows = nil, format = 'default')
|
87
|
-
log.block 'Hooks'
|
88
|
-
|
89
|
-
rows = Hook.all if rows.nil?
|
90
|
-
|
91
|
-
case format
|
92
|
-
when 'detailed'
|
93
|
-
tp rows, :type, :id, :name, :active, :events, :config, :updated_at, :created_at, :url, :test_url, :ping_url, :last_response
|
94
|
-
else
|
95
|
-
tp rows, :type, :id, :name, :active, :url, :config
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
def self.hook_with_format(repo, format)
|
100
|
-
case format
|
101
|
-
when 'detailed'
|
102
|
-
hook_detailed(repo)
|
103
|
-
else
|
104
|
-
hook(repo)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def self.hook(hook)
|
109
|
-
hook_key_values(hook).each do |key_value|
|
110
|
-
log.kv key_value.key, key_value.vale
|
111
|
-
end
|
112
|
-
|
113
|
-
log.line
|
114
|
-
end
|
115
|
-
|
116
|
-
def self.hook_detailed(hook)
|
117
|
-
hook_key_values(hook).each do |key_value|
|
118
|
-
log.kv key_value.key, key_value.vale
|
119
|
-
end
|
120
|
-
|
121
|
-
# Print Relations
|
122
|
-
|
123
|
-
log.line
|
124
|
-
end
|
125
|
-
|
126
|
-
def self.repo_key_values(repo)
|
127
|
-
{
|
128
|
-
id: repo.id,
|
129
|
-
node_id: repo.node_id,
|
130
|
-
name: repo.name,
|
131
|
-
full_name: repo.full_name,
|
132
|
-
private: repo.private,
|
133
|
-
description: repo.description,
|
134
|
-
url: repo.url,
|
135
|
-
created_at: repo.created_at,
|
136
|
-
updated_at: repo.updated_at,
|
137
|
-
pushed_at: repo.pushed_at,
|
138
|
-
git_url: repo.git_url
|
139
|
-
}
|
140
|
-
end
|
141
|
-
|
142
|
-
def self.hook_key_values(hook)
|
143
|
-
{
|
144
|
-
type: hook.type,
|
145
|
-
id: hook.id,
|
146
|
-
name: hook.name,
|
147
|
-
active: hook.active,
|
148
|
-
events: hook.events,
|
149
|
-
config: hook.config,
|
150
|
-
updated_at: hook.updated_at,
|
151
|
-
created_at: hook.created_at,
|
152
|
-
url: hook.url,
|
153
|
-
test_url: hook.test_url,
|
154
|
-
ping_url: hook.ping_url,
|
155
|
-
last_response: hook.last_response
|
156
|
-
}
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KExt
|
4
|
+
module Github
|
5
|
+
# Print formatted log for GitHub data such as repositories
|
6
|
+
class Printer
|
7
|
+
extend KLog::Logging
|
8
|
+
|
9
|
+
# ---------------------------------------------
|
10
|
+
# Print Repositories
|
11
|
+
# ---------------------------------------------
|
12
|
+
|
13
|
+
def self.repositories(rows = nil, format = 'default')
|
14
|
+
log.block 'Repositories'
|
15
|
+
|
16
|
+
if rows.nil?
|
17
|
+
Repository.all.each do |_r|
|
18
|
+
repository_with_format(repo, format)
|
19
|
+
end
|
20
|
+
else
|
21
|
+
rows.each do |_r|
|
22
|
+
repository_with_format(repo, format)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.repositories_as_table(rows = nil, format = 'default')
|
28
|
+
log.block 'Repositories'
|
29
|
+
|
30
|
+
rows = Repository.all if rows.nil?
|
31
|
+
|
32
|
+
case format
|
33
|
+
when 'detailed'
|
34
|
+
# tp rows
|
35
|
+
tp rows, :id, :node_id, :name, :full_name, :private, :description, :url, 'owner.login', :created_at, :updated_at, :pushed_at, :git_url
|
36
|
+
else
|
37
|
+
tp rows, :id, :name, :git_url, :full_name, :private, :description, :url, 'owner.login'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.repository_with_format(repo, format)
|
42
|
+
case format
|
43
|
+
when 'detailed'
|
44
|
+
repository_detailed(repo)
|
45
|
+
else
|
46
|
+
repository(repo)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.repository(repo)
|
51
|
+
data = repo_key_values(repo)
|
52
|
+
|
53
|
+
log.kv_hash(data)
|
54
|
+
log.line
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.repository_detailed(repo)
|
58
|
+
data = repo_key_values(repo)
|
59
|
+
|
60
|
+
log.kv_hash(data)
|
61
|
+
log.line
|
62
|
+
|
63
|
+
# Print Relations
|
64
|
+
|
65
|
+
log.line
|
66
|
+
end
|
67
|
+
|
68
|
+
# ---------------------------------------------
|
69
|
+
# Print Hooks
|
70
|
+
# ---------------------------------------------
|
71
|
+
|
72
|
+
def self.hooks(rows = nil, format = 'default')
|
73
|
+
log.block 'Hooks'
|
74
|
+
|
75
|
+
if rows.nil?
|
76
|
+
Hook.all.each do |_r|
|
77
|
+
hook_with_format(repo, format)
|
78
|
+
end
|
79
|
+
else
|
80
|
+
rows.each do |_r|
|
81
|
+
hook_with_format(repo, format)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.hooks_as_table(rows = nil, format = 'default')
|
87
|
+
log.block 'Hooks'
|
88
|
+
|
89
|
+
rows = Hook.all if rows.nil?
|
90
|
+
|
91
|
+
case format
|
92
|
+
when 'detailed'
|
93
|
+
tp rows, :type, :id, :name, :active, :events, :config, :updated_at, :created_at, :url, :test_url, :ping_url, :last_response
|
94
|
+
else
|
95
|
+
tp rows, :type, :id, :name, :active, :url, :config
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def self.hook_with_format(repo, format)
|
100
|
+
case format
|
101
|
+
when 'detailed'
|
102
|
+
hook_detailed(repo)
|
103
|
+
else
|
104
|
+
hook(repo)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.hook(hook)
|
109
|
+
hook_key_values(hook).each do |key_value|
|
110
|
+
log.kv key_value.key, key_value.vale
|
111
|
+
end
|
112
|
+
|
113
|
+
log.line
|
114
|
+
end
|
115
|
+
|
116
|
+
def self.hook_detailed(hook)
|
117
|
+
hook_key_values(hook).each do |key_value|
|
118
|
+
log.kv key_value.key, key_value.vale
|
119
|
+
end
|
120
|
+
|
121
|
+
# Print Relations
|
122
|
+
|
123
|
+
log.line
|
124
|
+
end
|
125
|
+
|
126
|
+
def self.repo_key_values(repo)
|
127
|
+
{
|
128
|
+
id: repo.id,
|
129
|
+
node_id: repo.node_id,
|
130
|
+
name: repo.name,
|
131
|
+
full_name: repo.full_name,
|
132
|
+
private: repo.private,
|
133
|
+
description: repo.description,
|
134
|
+
url: repo.url,
|
135
|
+
created_at: repo.created_at,
|
136
|
+
updated_at: repo.updated_at,
|
137
|
+
pushed_at: repo.pushed_at,
|
138
|
+
git_url: repo.git_url
|
139
|
+
}
|
140
|
+
end
|
141
|
+
|
142
|
+
def self.hook_key_values(hook)
|
143
|
+
{
|
144
|
+
type: hook.type,
|
145
|
+
id: hook.id,
|
146
|
+
name: hook.name,
|
147
|
+
active: hook.active,
|
148
|
+
events: hook.events,
|
149
|
+
config: hook.config,
|
150
|
+
updated_at: hook.updated_at,
|
151
|
+
created_at: hook.created_at,
|
152
|
+
url: hook.url,
|
153
|
+
test_url: hook.test_url,
|
154
|
+
ping_url: hook.ping_url,
|
155
|
+
last_response: hook.last_response
|
156
|
+
}
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
data/lib/k_ext/github/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module KExt
|
4
|
-
module Github
|
5
|
-
VERSION = '0.0.
|
6
|
-
end
|
7
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module KExt
|
4
|
+
module Github
|
5
|
+
VERSION = '0.0.3'
|
6
|
+
end
|
7
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: k_ext-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: k_log
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: k_util
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.0.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: octokit
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|