On this page
Discover command that lists projects in the rlsbl ecosystem by querying GitHub for repositories tagged with the rlsbl topic.
#rlsbl.commands.discover
#rlsbl.commands.discover
Discover command that lists projects in the rlsbl ecosystem by querying GitHub for repositories tagged with the rlsbl topic.
Every GitHub call here goes through gh api, which resolves and applies the credential inside its own process. rlsbl deliberately never asks gh for the raw token: a live credential on a captured stdout pipe is what the observe standard forbids (see :mod:rlsbl.observe_allowlist).
#_gh_api
def _gh_api(args, *, timeout)Read the GitHub API through gh api; None when gh cannot answer.
--method GET is mandatory rather than incidental: it is what makes the argv match the GET-pinned observe prefix, so these reads really execute under --dry-run instead of being recorded.
#_relative_time
def _relative_time(iso_timestamp)Convert an ISO 8601 timestamp to a relative time string like '2d ago'.
#_get_authenticated_user
def _get_authenticated_user()The authenticated user's login name, or None when gh cannot say.
#_fetch_all_repos
def _fetch_all_repos()Every repo carrying the rlsbl topic, as (name, desc, updated, owner).
gh api --paginate walks the Link header itself, and the --jq projection turns each page into one TSV row per repository, so the concatenated pages parse without a per-page JSON document boundary. Returns None when gh could not answer at all.
#run_cmd
def run_cmd(registry, args, flags)Discover command: list projects in the rlsbl ecosystem.