Module: Legion::Extensions::Github::Runners::Repositories
Constant Summary
Helpers::Cache::DEFAULT_TTL, Helpers::Cache::DEFAULT_TTLS
Helpers::Client::CREDENTIAL_RESOLVERS
Helpers::TokenCache::TOKEN_BUFFER_SECONDS
Instance Method Summary
collapse
-
#create_repo(name:, description: nil, private: false) ⇒ Object
-
#delete_repo(owner:, repo:) ⇒ Object
-
#get_repo(owner:, repo:) ⇒ Object
-
#get_tree(owner:, repo:, tree_sha:, recursive: true) ⇒ Object
-
#list_branches(owner:, repo:, per_page: 30, page: 1) ⇒ Object
-
#list_repos(username:, per_page: 30, page: 1) ⇒ Object
-
#list_tags(owner:, repo:, per_page: 30, page: 1) ⇒ Object
-
#update_repo(owner:, repo:, **opts) ⇒ Object
#cache_connected?, #cache_invalidate, #cache_write, #cached_get, #github_ttl_for, #local_cache_connected?, #local_cache_delete, #local_cache_get, #local_cache_set
#connection, #gh_cli_token_output, #max_fallback_retries, #on_rate_limit, #on_scope_authorized, #on_scope_denied, #resolve_broker_app, #resolve_credential, #resolve_env, #resolve_gh_cli, #resolve_next_credential, #resolve_settings_app, #resolve_settings_delegated, #resolve_settings_pat, #resolve_vault_app, #resolve_vault_delegated, #resolve_vault_pat
#credential_fingerprint, #invalidate_scope, #mark_rate_limited, #rate_limited?, #register_scope, #scope_status
#fetch_token, #mark_rate_limited, #rate_limited?, #store_token
Instance Method Details
#create_repo(name:, description: nil, private: false) ⇒ Object
24
25
26
27
28
29
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 24
def create_repo(name:, description: nil, private: false, **)
body = { name: name, description: description, private: private }
response = connection(**).post('/user/repos', body)
cache_write("github:repo:#{response.body['full_name']}", response.body) if response.body['id']
{ result: response.body }
end
|
#delete_repo(owner:, repo:) ⇒ Object
38
39
40
41
42
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 38
def delete_repo(owner:, repo:, **)
response = connection(owner: owner, repo: repo, **).delete("/repos/#{owner}/#{repo}")
cache_invalidate("github:repo:#{owner}/#{repo}") if response.status == 204
{ result: response.status == 204 }
end
|
#get_repo(owner:, repo:) ⇒ Object
20
21
22
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 20
def get_repo(owner:, repo:, **)
{ result: cached_get("github:repo:#{owner}/#{repo}") { connection(owner: owner, repo: repo, **).get("/repos/#{owner}/#{repo}").body } }
end
|
#get_tree(owner:, repo:, tree_sha:, recursive: true) ⇒ Object
56
57
58
59
60
61
62
63
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 56
def get_tree(owner:, repo:, tree_sha:, recursive: true, **)
params = recursive ? { recursive: true } : {}
{ result: cached_get("github:repo:#{owner}/#{repo}:tree:#{tree_sha}:#{recursive}") do
connection(owner: owner, repo: repo, **).get(
"/repos/#{owner}/#{repo}/git/trees/#{tree_sha}", params
).body
end }
end
|
#list_branches(owner:, repo:, per_page: 30, page: 1) ⇒ Object
44
45
46
47
48
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 44
def list_branches(owner:, repo:, per_page: 30, page: 1, **)
{ result: cached_get("github:repo:#{owner}/#{repo}:branches:#{page}:#{per_page}") do
connection(owner: owner, repo: repo, **).get("/repos/#{owner}/#{repo}/branches", per_page: per_page, page: page).body
end }
end
|
#list_repos(username:, per_page: 30, page: 1) ⇒ Object
14
15
16
17
18
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 14
def list_repos(username:, per_page: 30, page: 1, **)
{ result: cached_get("github:user:#{username}:repos:#{page}:#{per_page}") do
connection(**).get("/users/#{username}/repos", per_page: per_page, page: page).body
end }
end
|
50
51
52
53
54
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 50
def list_tags(owner:, repo:, per_page: 30, page: 1, **)
{ result: cached_get("github:repo:#{owner}/#{repo}:tags:#{page}:#{per_page}") do
connection(owner: owner, repo: repo, **).get("/repos/#{owner}/#{repo}/tags", per_page: per_page, page: page).body
end }
end
|
#update_repo(owner:, repo:, **opts) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/legion/extensions/github/runners/repositories.rb', line 31
def update_repo(owner:, repo:, **opts)
body = opts.slice(:name, :description, :homepage, :private, :default_branch)
response = connection(owner: owner, repo: repo, **opts).patch("/repos/#{owner}/#{repo}", body)
cache_write("github:repo:#{owner}/#{repo}", response.body) if response.body['id']
{ result: response.body }
end
|