Module: Legion::Extensions::Github::Runners::Contents
- Includes:
- Helpers::Cache, Helpers::Client, Helpers::Lex
- Included in:
- Client
- Defined in:
- lib/legion/extensions/github/runners/contents.rb
Constant Summary
Constants included from Helpers::Cache
Helpers::Cache::DEFAULT_TTL, Helpers::Cache::DEFAULT_TTLS
Constants included from Helpers::Client
Helpers::Client::CREDENTIAL_RESOLVERS
Constants included from Helpers::TokenCache
Helpers::TokenCache::TOKEN_BUFFER_SECONDS
Instance Method Summary collapse
- #commit_files(owner:, repo:, branch:, files:, message:) ⇒ Object
- #get_file_content(owner:, repo:, path:, ref: nil) ⇒ Object
Methods included from Helpers::Cache
#cache_connected?, #cache_invalidate, #cache_write, #cached_get, #github_ttl_for, #local_cache_connected?, #local_cache_delete, #local_cache_get, #local_cache_set
Methods included from Helpers::Client
#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
Methods included from Helpers::ScopeRegistry
#credential_fingerprint, #invalidate_scope, #mark_rate_limited, #rate_limited?, #register_scope, #scope_status
Methods included from Helpers::TokenCache
#fetch_token, #mark_rate_limited, #rate_limited?, #store_token
Instance Method Details
#commit_files(owner:, repo:, branch:, files:, message:) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/legion/extensions/github/runners/contents.rb', line 21 def commit_files(owner:, repo:, branch:, files:, message:, **) conn = connection(owner: owner, repo: repo, **) ref = conn.get("/repos/#{owner}/#{repo}/git/ref/heads/#{branch}") commit_sha = ref.body.dig('object', 'sha') commit = conn.get("/repos/#{owner}/#{repo}/git/commits/#{commit_sha}") base_tree_sha = commit.body.dig('tree', 'sha') tree_items = files.map do |f| { path: f[:path], mode: '100644', type: 'blob', content: f[:content] } end new_tree = conn.post("/repos/#{owner}/#{repo}/git/trees", { base_tree: base_tree_sha, tree: tree_items }) new_commit = conn.post("/repos/#{owner}/#{repo}/git/commits", { message: , tree: new_tree.body['sha'], parents: [commit_sha] }) conn.patch("/repos/#{owner}/#{repo}/git/refs/heads/#{branch}", { sha: new_commit.body['sha'] }) { success: true, commit_sha: new_commit.body['sha'], tree_sha: new_tree.body['sha'] } rescue StandardError => e log.warn(e.) { success: false, error: e. } end |
#get_file_content(owner:, repo:, path:, ref: nil) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/legion/extensions/github/runners/contents.rb', line 14 def get_file_content(owner:, repo:, path:, ref: nil, **) params = ref ? { ref: ref } : {} { result: connection(owner: owner, repo: repo, **).get( "/repos/#{owner}/#{repo}/contents/#{path}", params ).body } end |