Module: Legion::Extensions::Github::Runners::Releases

Includes:
Helpers::Client, Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/github/runners/releases.rb

Constant Summary

Constants included from Helpers::Client

Helpers::Client::CREDENTIAL_RESOLVERS

Constants included from Helpers::TokenCache

Helpers::TokenCache::TOKEN_BUFFER_SECONDS

Instance Method Summary collapse

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

#create_release(owner:, repo:, tag_name:, name: nil, body: nil, target_commitish: nil, draft: false, prerelease: false, generate_release_notes: false) ⇒ Object

rubocop:disable Metrics/ParameterLists



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/legion/extensions/github/runners/releases.rb', line 40

def create_release(owner:, repo:, tag_name:, name: nil, body: nil, # rubocop:disable Metrics/ParameterLists
                   target_commitish: nil, draft: false, prerelease: false,
                   generate_release_notes: false, **)
  payload = { tag_name: tag_name, name: name, body: body,
              target_commitish: target_commitish, draft: draft,
              prerelease: prerelease,
              generate_release_notes: generate_release_notes }.compact
  response = connection(owner: owner, repo: repo, **).post(
    "/repos/#{owner}/#{repo}/releases", payload
  )
  { result: response.body }
end

#delete_release(owner:, repo:, release_id:) ⇒ Object



61
62
63
64
65
66
# File 'lib/legion/extensions/github/runners/releases.rb', line 61

def delete_release(owner:, repo:, release_id:, **)
  response = connection(owner: owner, repo: repo, **).delete(
    "/repos/#{owner}/#{repo}/releases/#{release_id}"
  )
  { result: response.status == 204 }
end

#delete_release_asset(owner:, repo:, asset_id:) ⇒ Object



76
77
78
79
80
81
# File 'lib/legion/extensions/github/runners/releases.rb', line 76

def delete_release_asset(owner:, repo:, asset_id:, **)
  response = connection(owner: owner, repo: repo, **).delete(
    "/repos/#{owner}/#{repo}/releases/assets/#{asset_id}"
  )
  { result: response.status == 204 }
end

#get_latest_release(owner:, repo:) ⇒ Object



26
27
28
29
30
31
# File 'lib/legion/extensions/github/runners/releases.rb', line 26

def get_latest_release(owner:, repo:, **)
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/releases/latest"
  )
  { result: response.body }
end

#get_release(owner:, repo:, release_id:) ⇒ Object



19
20
21
22
23
24
# File 'lib/legion/extensions/github/runners/releases.rb', line 19

def get_release(owner:, repo:, release_id:, **)
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/releases/#{release_id}"
  )
  { result: response.body }
end

#get_release_by_tag(owner:, repo:, tag:) ⇒ Object



33
34
35
36
37
38
# File 'lib/legion/extensions/github/runners/releases.rb', line 33

def get_release_by_tag(owner:, repo:, tag:, **)
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/releases/tags/#{tag}"
  )
  { result: response.body }
end

#list_release_assets(owner:, repo:, release_id:, per_page: 30, page: 1) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/legion/extensions/github/runners/releases.rb', line 68

def list_release_assets(owner:, repo:, release_id:, per_page: 30, page: 1, **)
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/releases/#{release_id}/assets",
    per_page: per_page, page: page
  )
  { result: response.body }
end

#list_releases(owner:, repo:, per_page: 30, page: 1) ⇒ Object



12
13
14
15
16
17
# File 'lib/legion/extensions/github/runners/releases.rb', line 12

def list_releases(owner:, repo:, per_page: 30, page: 1, **)
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/releases", per_page: per_page, page: page
  )
  { result: response.body }
end

#update_release(owner:, repo:, release_id:, **opts) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/legion/extensions/github/runners/releases.rb', line 53

def update_release(owner:, repo:, release_id:, **opts)
  payload = opts.slice(:tag_name, :name, :body, :draft, :prerelease, :target_commitish)
  response = connection(owner: owner, repo: repo, **opts).patch(
    "/repos/#{owner}/#{repo}/releases/#{release_id}", payload
  )
  { result: response.body }
end