From 5945dca3c8a86bc98e164fdd81dc459b3eac33bc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 21 Jul 2026 00:09:42 +0000 Subject: [PATCH 1/4] docs: add CLI guide, credentials examples, and release process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add docs/cli.md for the nested CLI, expand configuration.md with settings.toml/.secrets.toml credential examples, introduce CHANGELOG.md, and document the GitHub Release → PyPI publish flow in CONTRIBUTING. Fixes #91 Fixes #94 Fixes #95 Co-authored-by: akae --- CHANGELOG.md | 34 +++++++++ CONTRIBUTING.md | 20 +++++ README.md | 77 ++----------------- docs/cli.md | 172 ++++++++++++++++++++++++++++++++++++++++++ docs/configuration.md | 50 +++++++++++- 5 files changed, 279 insertions(+), 74 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 docs/cli.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..84d833a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,34 @@ +# Changelog + +All notable changes to this project are documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Breaking + +- Replaced flat commands with nested groups: + - `get-repo` → `repo get` + - `list-repo` → `repo list` + - `create-repo` → `repo create` + - `delete-repo` → `repo delete` + - `dependabot --enable` / `--disable` → `dependabot enable` / `dependabot disable` + - `environment` → `environment create` +- Replaced `repo create --visibility` with mutually exclusive `--public` / `--private` / `--internal` (default public). + +### Changed + +- Moved argparse construction and command handlers into `parser.py`; `main.py` is a thin entrypoint. +- Migrated uv development dependencies to PEP 735 `[dependency-groups]`. + +### Documentation + +- Added [CLI guide](docs/cli.md). +- Expanded [configuration](docs/configuration.md) with `settings.toml` / `.secrets.toml` credential examples. +- Documented the release process in [CONTRIBUTING.md](CONTRIBUTING.md). + +## [1.0.3] - 2025-08-22 + +Previous release on PyPI. See Git history and GitHub Releases for earlier notes. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e29f8fb..195f3a9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,6 +49,8 @@ Export a GitHub PAT the same way end users do: export GITHUB_AUTH_TOKEN="" ``` +Or use `.secrets.toml` in the project root (gitignored). See [docs/configuration.md](docs/configuration.md). + Run the CLI entrypoint: ```shell @@ -68,6 +70,8 @@ just profile repo list --format json See [docs/configuration.md](docs/configuration.md) for environment variables, optional settings files, and Dynaconf tooling (`just dl` / `just dv`). +CLI usage for end users: [docs/cli.md](docs/cli.md). + ## Lint and format ```shell @@ -91,6 +95,8 @@ just test ## Build and publish (maintainers) +Local dry-run: + ```shell just build-local just publish-local # requires PYPI_TOKEN @@ -102,6 +108,20 @@ Clean the uv cache: just cache ``` +### Release process + +Publishing to PyPI is triggered by creating a GitHub Release. The workflow is [`.github/workflows/release.yml`](.github/workflows/release.yml) (`uv build` + `uv publish` with Trusted Publishing). + +1. Ensure `main` is green (CI) and docs are up to date ([CLI guide](docs/cli.md), [configuration](docs/configuration.md)). +2. Agree the SemVer bump (breaking CLI changes usually mean a major or an intentional minor while still Beta). +3. Update `version` in [`pyproject.toml`](pyproject.toml). +4. Move `[Unreleased]` notes in [`CHANGELOG.md`](CHANGELOG.md) into a new version section with today’s date. +5. Open a PR for the version bump + changelog, merge to `main`. +6. Create a GitHub Release for the new tag (for example `v1.1.0`) whose target is the merge commit on `main`. +7. Confirm the **Python Publish Release** workflow succeeds on [PyPI](https://pypi.org/project/github-rest-cli/). + +Do not tag a release until the version in `pyproject.toml` matches the tag. + ## Pull requests 1. Create a branch from `main` diff --git a/README.md b/README.md index 9bf8322..9554d4a 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Suggested classic PAT scopes: Fine-grained tokens need repository access with permissions for Contents, Administration (create/delete), Environments, and Dependabot/security alerts as needed. -For optional API URL overrides, settings files, and environments, see [Configuration](docs/configuration.md). +For optional API URL overrides, settings files (including `settings.toml` / `.secrets.toml`), and environments, see [Configuration](docs/configuration.md). ## Quick start @@ -49,83 +49,20 @@ github-rest-cli --version github-rest-cli --help ``` -## Commands - -Top-level groups: - -```shell -github-rest-cli repo --help -github-rest-cli dependabot --help -github-rest-cli environment --help -``` - -### Get a repository - -```shell -github-rest-cli repo get --name my-repo -github-rest-cli repo get --name my-repo --org my-org -github-rest-cli repo get --name my-repo --format json -``` - -### List repositories - ```shell github-rest-cli repo list -github-rest-cli repo list --page 50 --sort pushed -github-rest-cli repo list --role owner --format json -``` - -| Flag | Description | Default | -| --- | --- | --- | -| `-p` / `--page` | Number of results (`per_page`) | `20` | -| `-s` / `--sort` | Sort field (e.g. `pushed`, `updated`, `created`) | `pushed` | -| `-r` / `--role` | Filter by affiliation/role | unset | -| `-f` / `--format` | Output format: `table` or `json` | `table` | - -### Create a repository - -```shell -github-rest-cli repo create --name my-new-repo +github-rest-cli repo get --name my-repo github-rest-cli repo create --name my-new-repo --private -github-rest-cli repo create --name my-new-repo --org my-org -github-rest-cli repo create --name my-new-repo --empty -``` - -### Delete a repository - -Prompts for confirmation unless `--yes` / `-y` is passed: - -```shell -github-rest-cli repo delete --name my-repo -github-rest-cli repo delete --name my-repo --org my-org -github-rest-cli repo delete --name my-repo --yes -``` - -### Dependabot security updates - -```shell -github-rest-cli dependabot enable --name my-repo -github-rest-cli dependabot disable --name my-repo -github-rest-cli dependabot enable --name my-repo --org my-org ``` -### Deployment environments - -```shell -github-rest-cli environment create --name my-repo --env production -github-rest-cli environment create --name my-repo --env staging --org my-org -``` - -## Output format - -`repo get` and `repo list` support: +## Commands -- `table` (default) — PrettyTable display -- `json` — JSON string suitable for piping or scripting +Full command reference: [CLI guide](docs/cli.md). ```shell -github-rest-cli repo list --format json -github-rest-cli repo get --name my-repo --format table +github-rest-cli repo --help +github-rest-cli dependabot --help +github-rest-cli environment --help ``` ## Contributing diff --git a/docs/cli.md b/docs/cli.md new file mode 100644 index 0000000..c148e15 --- /dev/null +++ b/docs/cli.md @@ -0,0 +1,172 @@ +# CLI guide + +Command reference for `github-rest-cli`. The CLI uses nested groups: + +```text +github-rest-cli [options] +``` + +For authentication and settings files, see [Configuration](configuration.md). + +## Global options + +```shell +github-rest-cli --help +github-rest-cli --version +``` + +| Option | Description | +| --- | --- | +| `-h` / `--help` | Show help | +| `-v` / `--version` | Show package version | + +## Command groups + +| Group | Purpose | +| --- | --- | +| `repo` | Get, list, create, and delete repositories | +| `dependabot` | Enable or disable Dependabot security updates | +| `environment` | Create deployment environments | + +```shell +github-rest-cli repo --help +github-rest-cli dependabot --help +github-rest-cli environment --help +``` + +## `repo` + +### `repo get` + +Fetch details for one repository. + +```shell +github-rest-cli repo get --name my-repo +github-rest-cli repo get --name my-repo --org my-org +github-rest-cli repo get --name my-repo --format json +``` + +| Flag | Required | Default | Description | +| --- | --- | --- | --- | +| `-n` / `--name` | Yes | — | Repository name | +| `-o` / `--org` | No | authenticated user | Organization owner | +| `-f` / `--format` | No | `table` | Output format: `table` or `json` | + +### `repo list` + +List repositories for the authenticated user. + +```shell +github-rest-cli repo list +github-rest-cli repo list --page 50 --sort pushed +github-rest-cli repo list --role owner --format json +``` + +| Flag | Required | Default | Description | +| --- | --- | --- | --- | +| `-p` / `--page` | No | `20` | Number of results (`per_page`) | +| `-s` / `--sort` | No | `pushed` | Sort field (e.g. `pushed`, `updated`, `created`) | +| `-r` / `--role` | No | unset | Filter by affiliation/role | +| `-f` / `--format` | No | `table` | Output format: `table` or `json` | + +`--format` only changes presentation. Table and JSON use the same repository set and the same fields: `name`, `owner`, `url`, `visibility`. + +### `repo create` + +Create a repository. Visibility defaults to **public** when none of the visibility flags is passed. + +```shell +github-rest-cli repo create --name my-new-repo +github-rest-cli repo create --name my-new-repo --private +github-rest-cli repo create --name my-new-repo --public +github-rest-cli repo create --name my-new-repo --internal +github-rest-cli repo create --name my-new-repo --org my-org +github-rest-cli repo create --name my-new-repo --empty +``` + +| Flag | Required | Default | Description | +| --- | --- | --- | --- | +| `-n` / `--name` | Yes | — | Repository name | +| `-o` / `--org` | No | authenticated user | Create under an organization | +| `--public` | No | default when omitted | Public repository | +| `--private` | No | — | Private repository | +| `--internal` | No | — | Internal repository (org) | +| `-e` / `--empty` | No | off | Create without an initial commit / README | + +`--public`, `--private`, and `--internal` are mutually exclusive. + +### `repo delete` + +Delete a repository. Prompts for confirmation unless `--yes` is passed. + +```shell +github-rest-cli repo delete --name my-repo +github-rest-cli repo delete --name my-repo --org my-org +github-rest-cli repo delete --name my-repo --yes +``` + +| Flag | Required | Default | Description | +| --- | --- | --- | --- | +| `-n` / `--name` | Yes | — | Repository name | +| `-o` / `--org` | No | authenticated user | Organization owner | +| `-y` / `--yes` | No | off | Skip confirmation prompt | + +## `dependabot` + +### `dependabot enable` / `dependabot disable` + +Enable or disable Dependabot security updates for a repository. + +```shell +github-rest-cli dependabot enable --name my-repo +github-rest-cli dependabot disable --name my-repo +github-rest-cli dependabot enable --name my-repo --org my-org +``` + +| Flag | Required | Default | Description | +| --- | --- | --- | --- | +| `-n` / `--name` | Yes | — | Repository name | +| `-o` / `--org` | No | authenticated user | Organization owner | + +## `environment` + +### `environment create` + +Create a deployment environment on a repository. + +```shell +github-rest-cli environment create --name my-repo --env production +github-rest-cli environment create --name my-repo --env staging --org my-org +``` + +| Flag | Required | Default | Description | +| --- | --- | --- | --- | +| `-n` / `--name` | Yes | — | Repository name | +| `-e` / `--env` | Yes | — | Environment name | +| `-o` / `--org` | No | authenticated user | Organization owner | + +## Output format + +`repo get` and `repo list` support: + +- `table` (default) — PrettyTable display +- `json` — JSON string suitable for piping or scripting + +```shell +github-rest-cli repo list --format json +github-rest-cli repo get --name my-repo --format table +``` + +## Breaking changes (nested CLI) + +Older flat commands were removed: + +| Old | New | +| --- | --- | +| `get-repo` | `repo get` | +| `list-repo` | `repo list` | +| `create-repo` | `repo create` | +| `delete-repo` | `repo delete` | +| `dependabot --enable` / `--disable` | `dependabot enable` / `dependabot disable` | +| `environment ...` | `environment create ...` | +| `create-repo --visibility private` | `repo create --private` | diff --git a/docs/configuration.md b/docs/configuration.md index af416d0..f65a6f7 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -18,14 +18,55 @@ export GITHUB_AUTH_TOKEN="" export GITHUB_API_URL="https://api.github.com" ``` +Dynaconf uses the `GITHUB_` prefix, so `AUTH_TOKEN` in a settings file maps to `GITHUB_AUTH_TOKEN` in the environment. Environment variables override file values. + ## Optional settings files -When present in the **current working directory**, Dynaconf loads: +When present in the **current working directory**, Dynaconf loads (in order): + +1. `settings.toml` — non-secret defaults +2. `.secrets.toml` — local secrets (gitignored via `.secrets.*`) + +An installed package does not ship these files; env vars alone are enough for normal use. Repository clones may include a sample `settings.toml` with `API_URL`. + +### Recommended layout + +Put non-secret defaults in `settings.toml`: + +```toml +# settings.toml +[default] +API_URL = "https://api.github.com" +``` + +Put credentials in `.secrets.toml` (do **not** commit this file): + +```toml +# .secrets.toml +[default] +AUTH_TOKEN = "ghp_your_token_here" +``` + +Then run from that directory: + +```shell +github-rest-cli repo list +``` + +Optional environment selection: + +```shell +export SET_ENV=development +github-rest-cli repo list +``` + +Matching sections in the files (for example `[development]`) are used when `SET_ENV` is set. -1. `settings.toml` -2. `.secrets.toml` (gitignored; for local secrets) +### Security notes -File defaults for local clones live in the repository `settings.toml` (including `API_URL`). An installed package does not ship these files; env vars are enough. +- Prefer `.secrets.toml` or `GITHUB_AUTH_TOKEN` for tokens — never commit PATs. +- `.secrets.*` is listed in `.gitignore`. +- Files are read from the process **current working directory**, not necessarily the package install location. ## Contributor tooling @@ -49,6 +90,7 @@ Implementation lives in `src/github_rest_cli/config.py`. ## References +- [CLI guide](cli.md) - [dynaconf/dynaconf](https://github.com/dynaconf/dynaconf) - [Dynaconf documentation](https://www.dynaconf.com/) - [Dynaconf API](https://www.dynaconf.com/api/) From a14b007eae49e9fe96318e76d17fcc0205d0410c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 21 Jul 2026 00:11:28 +0000 Subject: [PATCH 2/4] docs: extract Authentication into its own guide Move PAT scopes and token setup from README into docs/authentication.md; link from README, CLI, and configuration. Co-authored-by: akae --- CHANGELOG.md | 1 + CONTRIBUTING.md | 8 +------ README.md | 18 ++------------ docs/authentication.md | 53 ++++++++++++++++++++++++++++++++++++++++++ docs/cli.md | 2 +- docs/configuration.md | 3 +++ 6 files changed, 61 insertions(+), 24 deletions(-) create mode 100644 docs/authentication.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 84d833a..88f66fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Documentation - Added [CLI guide](docs/cli.md). +- Added [Authentication](docs/authentication.md) guide (PAT scopes and token setup). - Expanded [configuration](docs/configuration.md) with `settings.toml` / `.secrets.toml` credential examples. - Documented the release process in [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 195f3a9..7d331b8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,13 +43,7 @@ uv pip list ## Authentication for local runs -Export a GitHub PAT the same way end users do: - -```shell -export GITHUB_AUTH_TOKEN="" -``` - -Or use `.secrets.toml` in the project root (gitignored). See [docs/configuration.md](docs/configuration.md). +See [docs/authentication.md](docs/authentication.md) for PAT scopes and how to provide the token (`GITHUB_AUTH_TOKEN` or `.secrets.toml`). Run the CLI entrypoint: diff --git a/README.md b/README.md index 9554d4a..945b555 100644 --- a/README.md +++ b/README.md @@ -24,23 +24,9 @@ Requires Python 3.11.5 or newer. ## Authentication -Create a [GitHub personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) and export it: +See [Authentication](docs/authentication.md) for PAT scopes and how to set `GITHUB_AUTH_TOKEN` (or `.secrets.toml`). -```shell -export GITHUB_AUTH_TOKEN="" -``` - -Suggested classic PAT scopes: - -| Scope | Used for | -| --- | --- | -| `repo` | Private repos, create/delete, environments, Dependabot settings | -| `public_repo` | Public repositories only (subset of `repo`) | -| `delete_repo` | Deleting repositories (included in full `repo` on classic tokens) | - -Fine-grained tokens need repository access with permissions for Contents, Administration (create/delete), Environments, and Dependabot/security alerts as needed. - -For optional API URL overrides, settings files (including `settings.toml` / `.secrets.toml`), and environments, see [Configuration](docs/configuration.md). +For API URL overrides, settings files, and Dynaconf environments, see [Configuration](docs/configuration.md). ## Quick start diff --git a/docs/authentication.md b/docs/authentication.md new file mode 100644 index 0000000..a004219 --- /dev/null +++ b/docs/authentication.md @@ -0,0 +1,53 @@ +# Authentication + +`github-rest-cli` authenticates to the GitHub REST API with a personal access token (PAT). + +## Create a token + +Create a [GitHub personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens). + +### Classic PAT scopes + +| Scope | Used for | +| --- | --- | +| `repo` | Private repos, create/delete, environments, Dependabot settings | +| `public_repo` | Public repositories only (subset of `repo`) | +| `delete_repo` | Deleting repositories (included in full `repo` on classic tokens) | + +### Fine-grained tokens + +Fine-grained tokens need repository access with permissions for Contents, Administration (create/delete), Environments, and Dependabot/security alerts as needed. + +## Provide the token + +### Environment variable (recommended) + +```shell +export GITHUB_AUTH_TOKEN="" +``` + +### Settings file + +You can also set `AUTH_TOKEN` in `.secrets.toml` (gitignored). See [Configuration](configuration.md) for `settings.toml` / `.secrets.toml` layout and Dynaconf environments. + +```toml +# .secrets.toml +[default] +AUTH_TOKEN = "ghp_your_token_here" +``` + +Never commit tokens. Prefer `.secrets.toml` or the environment variable. + +## Verify + +```shell +github-rest-cli --version +github-rest-cli repo list +``` + +If the token is missing or invalid, API calls fail with an authorization error. + +## See also + +- [Configuration](configuration.md) — env vars, settings files, `API_URL` +- [CLI guide](cli.md) — commands and examples diff --git a/docs/cli.md b/docs/cli.md index c148e15..df57ab2 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -6,7 +6,7 @@ Command reference for `github-rest-cli`. The CLI uses nested groups: github-rest-cli [options] ``` -For authentication and settings files, see [Configuration](configuration.md). +For tokens and PAT scopes, see [Authentication](authentication.md). For settings files and API URL, see [Configuration](configuration.md). ## Global options diff --git a/docs/configuration.md b/docs/configuration.md index f65a6f7..95e3685 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -2,6 +2,8 @@ `github-rest-cli` uses Dynaconf for settings. Prefer environment variables; optional files are supported for local development. +For creating a GitHub token and required scopes, see [Authentication](authentication.md). + ## Environment variables (recommended) | Variable | Setting | Required | Description | @@ -90,6 +92,7 @@ Implementation lives in `src/github_rest_cli/config.py`. ## References +- [Authentication](authentication.md) - [CLI guide](cli.md) - [dynaconf/dynaconf](https://github.com/dynaconf/dynaconf) - [Dynaconf documentation](https://www.dynaconf.com/) From 6bb4c5e7d3e7d1c5360e761bb83b0710ef106c97 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 21 Jul 2026 00:12:59 +0000 Subject: [PATCH 3/4] docs: drop old CLI command references Remove the Breaking changes migration table from the CLI guide and describe Unreleased changelog entries without legacy names. Co-authored-by: akae --- CHANGELOG.md | 13 ++----------- docs/cli.md | 14 -------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88f66fb..b89fc0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,19 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Breaking - -- Replaced flat commands with nested groups: - - `get-repo` → `repo get` - - `list-repo` → `repo list` - - `create-repo` → `repo create` - - `delete-repo` → `repo delete` - - `dependabot --enable` / `--disable` → `dependabot enable` / `dependabot disable` - - `environment` → `environment create` -- Replaced `repo create --visibility` with mutually exclusive `--public` / `--private` / `--internal` (default public). - ### Changed +- Nested CLI groups: `repo`, `dependabot`, and `environment` with subcommands. +- `repo create` visibility via `--public` / `--private` / `--internal` (default public). - Moved argparse construction and command handlers into `parser.py`; `main.py` is a thin entrypoint. - Migrated uv development dependencies to PEP 735 `[dependency-groups]`. diff --git a/docs/cli.md b/docs/cli.md index df57ab2..7d1b71c 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -156,17 +156,3 @@ github-rest-cli environment create --name my-repo --env staging --org my-org github-rest-cli repo list --format json github-rest-cli repo get --name my-repo --format table ``` - -## Breaking changes (nested CLI) - -Older flat commands were removed: - -| Old | New | -| --- | --- | -| `get-repo` | `repo get` | -| `list-repo` | `repo list` | -| `create-repo` | `repo create` | -| `delete-repo` | `repo delete` | -| `dependabot --enable` / `--disable` | `dependabot enable` / `dependabot disable` | -| `environment ...` | `environment create ...` | -| `create-repo --visibility private` | `repo create --private` | From 12f37860609773b4f1b9c2348f0058de34d85b6e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 21 Jul 2026 00:14:21 +0000 Subject: [PATCH 4/4] chore: bump version to 2.0.0 Prepare the next PyPI release for the nested CLI and docs updates. Fixes #92 Co-authored-by: akae --- CHANGELOG.md | 2 ++ CONTRIBUTING.md | 2 +- pyproject.toml | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b89fc0a..730e1b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.0.0] - 2026-07-21 + ### Changed - Nested CLI groups: `repo`, `dependabot`, and `environment` with subcommands. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7d331b8..d50741d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -111,7 +111,7 @@ Publishing to PyPI is triggered by creating a GitHub Release. The workflow is [` 3. Update `version` in [`pyproject.toml`](pyproject.toml). 4. Move `[Unreleased]` notes in [`CHANGELOG.md`](CHANGELOG.md) into a new version section with today’s date. 5. Open a PR for the version bump + changelog, merge to `main`. -6. Create a GitHub Release for the new tag (for example `v1.1.0`) whose target is the merge commit on `main`. +6. Create a GitHub Release for the new tag (for example `v2.0.0`) whose target is the merge commit on `main`. 7. Confirm the **Python Publish Release** workflow succeeds on [PyPI](https://pypi.org/project/github-rest-cli/). Do not tag a release until the version in `pyproject.toml` matches the tag. diff --git a/pyproject.toml b/pyproject.toml index 69f5002..f51d4ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "github-rest-cli" -version = "1.0.3" +version = "2.0.0" description = "A Python CLI tool for interacting with the GitHub REST API." authors = [ { name = "lbrealdev", email = "lbrealdeveloper@gmail.com" }