{"id":49519656,"url":"https://github.com/flarebyte/gh-flarebyte","last_synced_at":"2026-05-26T08:01:12.677Z","repository":{"id":343149024,"uuid":"1176477486","full_name":"flarebyte/gh-flarebyte","owner":"flarebyte","description":"CLI for landing your git commands right","archived":false,"fork":false,"pushed_at":"2026-05-16T05:54:07.000Z","size":647,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-16T07:38:19.334Z","etag":null,"topics":["flarebyte","gh-extension","git","github-cli"],"latest_commit_sha":null,"homepage":"https://github.com/flarebyte/gh-flarebyte","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flarebyte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-09T04:00:38.000Z","updated_at":"2026-05-16T05:53:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/flarebyte/gh-flarebyte","commit_stats":null,"previous_names":["flarebyte/baldrick-git-go"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/flarebyte/gh-flarebyte","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flarebyte%2Fgh-flarebyte","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flarebyte%2Fgh-flarebyte/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flarebyte%2Fgh-flarebyte/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flarebyte%2Fgh-flarebyte/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flarebyte","download_url":"https://codeload.github.com/flarebyte/gh-flarebyte/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flarebyte%2Fgh-flarebyte/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33386153,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flarebyte","gh-extension","git","github-cli"],"created_at":"2026-05-01T23:04:44.212Z","updated_at":"2026-05-23T07:11:05.787Z","avatar_url":"https://github.com/flarebyte.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gh-flarebyte\nUse `gh flarebyte` to keep a GitHub repository aligned with the config checked into the repo.\n\n![gh-flarebyte illustration](doc/gh-flarebyte-hero.png)\n\n## What it does\n`gh-flarebyte` is a GitHub CLI extension for managing a repository from a local `.gh-flarebyte.cue` file. It helps you:\n\n- bootstrap a repository config\n- update repo settings from config\n- audit drift between config and GitHub\n- sync topics and labels from config\n- build either binary artifacts or library compile checks from the configured language\n- publish a GitHub release with or without binary artifacts\n- discover repositories you contribute to in an organization\n\n## Commands\n\n### Repo sync\n- `gh flarebyte repo init --repo \u003cowner/name\u003e [--overwrite]` creates or seeds `.gh-flarebyte.cue` for a repository.\n- `gh flarebyte repo update [--repo \u003cowner/name\u003e] [--confirm-deletions] [--accept-visibility-change-consequences]` applies the repo config to GitHub.\n- `gh flarebyte repo audit [--repo \u003cowner/name\u003e] [--json]` compares the local config with the live GitHub repository.\n- `gh flarebyte repos mine --org \u003corg\u003e` lists repositories you contribute to in an organization.\n\n### Build and release\n- `gh flarebyte build [--target \u003cos-arch\u003e] [--output-dir \u003cpath\u003e]` builds the project using the language and mode defined in `.gh-flarebyte.cue`.\n- `gh flarebyte release [--draft] [--notes-file \u003cpath\u003e]` builds first, then publishes a GitHub release from the configured release policy.\n\n### Dev commands\n- `gh flarebyte test [--style summary|per_test] [--color auto|true|false] [--failed-only]` runs tests for the configured build language, with optional per-invocation output overrides.\n- `gh flarebyte format` formats source files for the configured build language.\n- `gh flarebyte lint [--color auto|true|false] [--failed-only]` runs lint/static checks for the configured build language.\n- `gh flarebyte cov [--min \u003cpercent\u003e] [--color auto|true|false] [--failed-only]` computes coverage and can fail below a threshold.\n\n### Runtime info\n- `gh flarebyte --version` prints the CLI version metadata, including version, commit id, build date, OS/arch, and Go runtime version.\n- `gh flarebyte --version --json` prints the same version metadata in a machine-readable JSON shape.\n\nUse `gh flarebyte --help` for command usage. Error output is designed to include the failing config field or target and a practical next step.\n\n## Config\nThe repo config lives in `.gh-flarebyte.cue` and is the source of truth for:\n\n- repository metadata such as description, homepage, visibility, and template status\n- topics\n- labels\n- repository feature flags currently enforced by sync/audit: `repository.features.mergeCommit`, `repository.features.rebaseMerge`, `repository.features.squashMerge`, `repository.features.deleteBranchOnMerge`\n- build language, mode, and artifact policy\n- go command execution env for dev flows (`go.cacheDir`, `go.modCacheDir`, `go.toolchain`)\n- go build CGO contract (`go.cgo.enabled`, `go.cgo.cc`, `go.cgo.cxx`)\n- dev command output controls (`devOutput.color`, `devOutput.style`, `devOutput.showPassed`)\n- coverage threshold policy (`coverage.min`, `coverage.enforceMin`)\n- release settings\n- additional repository feature fields may exist in config but are not yet enforced by `repo update` / `repo audit`\n\nExample:\n\n```cue\nproject: {\n  org:  \"flarebyte\"\n  repo: \"gh-flarebyte\"\n}\n\nrepository: {\n  description: \"CLI for landing your git commands right\"\n  defaultBranch: \"main\"\n  topics: [\"gh-extension\", \"github-cli\", \"git\", \"flarebyte\"]\n  labels: [\n    {\n      name: \"bug\"\n      color: \"B60205\"\n      description: \"Something is broken\"\n    },\n  ]\n}\n\nbuild: {\n  language: \"go\"\n  mode: \"binary\"\n  outputDir: \"build\"\n  checksumFile: \"build/checksums.txt\"\n  artifactTargetSuffix: true\n  targets: [\"linux-amd64\", \"darwin-arm64\"]\n}\n\ngo: {\n  cacheDir: \"./.gocache\"\n  modCacheDir: \"./.gomodcache\"\n  toolchain: \"local\"\n  cgo: {\n    enabled: true\n    cc: \"clang\"\n    cxx: \"clang++\"\n  }\n}\n\ndevOutput: {\n  color: \"auto\"\n  style: \"summary\"\n  showPassed: true\n}\n\ncoverage: {\n  min: 80\n  enforceMin: true\n}\n\nrelease: {\n  versionSource: \"main.project.yaml\"\n  tagPrefix: \"v\"\n  notesMode: \"generate-notes\"\n  includeArtifacts: true\n  artifactDir: \"build\"\n  includeChecksums: true\n}\n```\n\nGo library example:\n\n```cue\nbuild: {\n  language: \"go\"\n  mode: \"library\"\n  packages: [\"./...\"]\n  runTests: true\n}\n\nrelease: {\n  versionSource: \"main.project.yaml\"\n  tagPrefix: \"v\"\n  notesMode: \"generate-notes\"\n  includeArtifacts: false\n}\n```\n\n## Typical workflow\n1. Run `gh flarebyte repo init` in a repo that should be managed.\n2. Edit `.gh-flarebyte.cue` to match the desired repository state.\n3. Run `gh flarebyte repo update` to sync the repo.\n4. Run `gh flarebyte repo audit` to check for drift.\n5. Run `gh flarebyte build` and `gh flarebyte release` when you are ready to ship.\n6. Run `gh flarebyte test`, `format`, `lint`, and `cov` for local quality checks.\n\n## Makefile shortcuts\n- `make build-go` builds the local CLI binary at `.e2e-bin/gh-flarebyte`.\n- `make release` runs `.e2e-bin/gh-flarebyte release` (it depends on `build-go`).\n- `GH_FLAREBYTE_FAKE_RELEASE=1 make release` runs the release flow in fake mode (no GitHub mutation).\n\n## Notes\n- Topics are managed as a flat list of strings.\n- Labels are managed as structured objects with `name`, `color`, and `description`.\n- Build is Go-first today, with Dart reserved in the config for later.\n- `build.mode` defaults to `binary`. Use `library` for multi-package libraries (compile verification with `go build`, and optional `go test` when `runTests: true`).\n- `build.mainPackage` controls the Go main package used for binary builds. Default: `./cmd/\u003cproject.repo\u003e`.\n- `build.artifactTargetSuffix` controls whether artifact names include `-os-arch` suffixes.\n  - when `false` with multiple targets, artifacts are written under per-target subdirectories to avoid filename collisions.\n- In `library` mode, `--target` applies `GOOS/GOARCH` cross-compile checks and does not force artifact generation.\n- `go.cgo` uses camelCase keys only: `enabled`, `cc`, `cxx`.\n- When `go.cgo.enabled: true`, `gh flarebyte build` sets `CGO_ENABLED=1` (and applies `CC`/`CXX` when configured).\n- When `go.cgo.enabled: false`, the build keeps `CGO_ENABLED=0` and fails with a policy error if CGO-backed dependencies are detected.\n- `release.includeArtifacts` defaults to `true`. Set it to `false` to publish tag and notes without uploading binaries or checksums.\n- `gh flarebyte cov --min 90` overrides config coverage threshold for that invocation.\n- `devOutput.style` supports `summary` and `per_test`.\n- `--color` overrides `devOutput.color` for `test`, `lint`, and `cov`.\n- `--failed-only` suppresses PASS summary output for `test`, `lint`, and `cov`.\n- In `per_test` style, `test` prints `✓/↷/✗` per test and `cov` prints `✓/✗` per coverage entry; with `--failed-only`, only failing entries are shown.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflarebyte%2Fgh-flarebyte","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflarebyte%2Fgh-flarebyte","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflarebyte%2Fgh-flarebyte/lists"}