python-gitea 0.10.1__tar.gz → 0.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_gitea-0.10.1 → python_gitea-0.11.0}/PKG-INFO +4 -2
- {python_gitea-0.10.1 → python_gitea-0.11.0}/README.md +3 -1
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/dev/architecture.md +39 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/user-guide/cli.md +396 -10
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/user-guide/python-api.md +165 -13
- {python_gitea-0.10.1 → python_gitea-0.11.0}/mkdocs.yml +4 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/pyproject.toml +2 -0
- python_gitea-0.11.0/src/gitea/_lazy.py +90 -0
- python_gitea-0.11.0/src/gitea/actions/__init__.py +37 -0
- python_gitea-0.11.0/src/gitea/actions/actions.py +575 -0
- python_gitea-0.11.0/src/gitea/actions/artifact.py +205 -0
- python_gitea-0.11.0/src/gitea/actions/async_actions.py +566 -0
- python_gitea-0.11.0/src/gitea/actions/async_artifact.py +210 -0
- python_gitea-0.11.0/src/gitea/actions/async_run_management.py +259 -0
- python_gitea-0.11.0/src/gitea/actions/async_runner.py +346 -0
- python_gitea-0.11.0/src/gitea/actions/async_secret.py +226 -0
- python_gitea-0.11.0/src/gitea/actions/async_variable.py +343 -0
- python_gitea-0.11.0/src/gitea/actions/base.py +905 -0
- python_gitea-0.11.0/src/gitea/actions/run_management.py +248 -0
- python_gitea-0.11.0/src/gitea/actions/runner.py +333 -0
- python_gitea-0.11.0/src/gitea/actions/scope.py +134 -0
- python_gitea-0.11.0/src/gitea/actions/secret.py +221 -0
- python_gitea-0.11.0/src/gitea/actions/variable.py +336 -0
- python_gitea-0.11.0/src/gitea/cli/actions/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/artifact/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/artifact/delete.py +88 -0
- python_gitea-0.11.0/src/gitea/cli/actions/artifact/download.py +145 -0
- python_gitea-0.11.0/src/gitea/cli/actions/artifact/get.py +88 -0
- python_gitea-0.11.0/src/gitea/cli/actions/artifact/list.py +101 -0
- python_gitea-0.11.0/src/gitea/cli/actions/job/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/job/get.py +86 -0
- python_gitea-0.11.0/src/gitea/cli/actions/job/list.py +106 -0
- python_gitea-0.11.0/src/gitea/cli/actions/job/logs.py +120 -0
- python_gitea-0.11.0/src/gitea/cli/actions/job/rerun.py +94 -0
- python_gitea-0.11.0/src/gitea/cli/actions/main.py +269 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/approve.py +89 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/cancel.py +96 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/delete.py +90 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/force_cancel.py +93 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/get.py +86 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/jobs.py +97 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/list.py +147 -0
- python_gitea-0.11.0/src/gitea/cli/actions/run/rerun.py +103 -0
- python_gitea-0.11.0/src/gitea/cli/actions/runner/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/runner/delete.py +90 -0
- python_gitea-0.11.0/src/gitea/cli/actions/runner/get.py +92 -0
- python_gitea-0.11.0/src/gitea/cli/actions/runner/list.py +102 -0
- python_gitea-0.11.0/src/gitea/cli/actions/runner/registration_token.py +92 -0
- python_gitea-0.11.0/src/gitea/cli/actions/runner/state.py +45 -0
- python_gitea-0.11.0/src/gitea/cli/actions/runner/update.py +97 -0
- python_gitea-0.11.0/src/gitea/cli/actions/secret/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/secret/delete.py +86 -0
- python_gitea-0.11.0/src/gitea/cli/actions/secret/list.py +101 -0
- python_gitea-0.11.0/src/gitea/cli/actions/secret/set.py +159 -0
- python_gitea-0.11.0/src/gitea/cli/actions/variable/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/variable/create.py +99 -0
- python_gitea-0.11.0/src/gitea/cli/actions/variable/delete.py +86 -0
- python_gitea-0.11.0/src/gitea/cli/actions/variable/get.py +91 -0
- python_gitea-0.11.0/src/gitea/cli/actions/variable/list.py +94 -0
- python_gitea-0.11.0/src/gitea/cli/actions/variable/update.py +106 -0
- python_gitea-0.11.0/src/gitea/cli/actions/workflow/__init__.py +1 -0
- python_gitea-0.11.0/src/gitea/cli/actions/workflow/dispatch.py +169 -0
- python_gitea-0.11.0/src/gitea/cli/actions/workflow/get.py +83 -0
- python_gitea-0.11.0/src/gitea/cli/actions/workflow/list.py +80 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/main.py +2 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/issue/add.py +1 -1
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/issue/remove.py +32 -13
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/main.py +8 -1
- python_gitea-0.11.0/src/gitea/cli/utils/__init__.py +23 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/utils/issue.py +405 -7
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/utils/options.py +65 -1
- python_gitea-0.11.0/src/gitea/cli/watch/advance.py +239 -0
- python_gitea-0.11.0/src/gitea/cli/watch/list.py +197 -0
- python_gitea-0.11.0/src/gitea/cli/watch/main.py +35 -0
- python_gitea-0.10.1/src/gitea/cli/watch/list.py → python_gitea-0.11.0/src/gitea/cli/watch/scopes.py +41 -177
- python_gitea-0.11.0/src/gitea/client/__init__.py +23 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/client/async_gitea.py +2 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/client/gitea.py +2 -0
- python_gitea-0.11.0/src/gitea/comment/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/config/__init__.py +24 -0
- python_gitea-0.11.0/src/gitea/issue/__init__.py +46 -0
- python_gitea-0.11.0/src/gitea/label/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/milestone/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/notification/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/organization/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/project/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/pull_request/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/repository/__init__.py +23 -0
- python_gitea-0.11.0/src/gitea/utils/response.py +166 -0
- python_gitea-0.11.0/tests/actions/__init__.py +1 -0
- python_gitea-0.11.0/tests/actions/test_actions_base.py +646 -0
- python_gitea-0.11.0/tests/actions/test_actions_imports.py +118 -0
- python_gitea-0.11.0/tests/actions/test_actions_requests.py +863 -0
- python_gitea-0.11.0/tests/actions/test_actions_scope.py +141 -0
- python_gitea-0.11.0/tests/cli/actions/__init__.py +1 -0
- python_gitea-0.11.0/tests/cli/actions/invoking.py +149 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_artifact.py +291 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_job_get.py +48 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_job_list.py +86 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_job_logs.py +122 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_main.py +70 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_run_get.py +48 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_run_jobs.py +53 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_run_list.py +163 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_run_management.py +147 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_runner.py +156 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_secret.py +188 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_variable.py +173 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_workflow_dispatch.py +179 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_workflow_get.py +48 -0
- python_gitea-0.11.0/tests/cli/actions/test_cli_actions_workflow_list.py +79 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/project/test_cli_project.py +465 -1
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/test_cli_contract.py +204 -1
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/test_cli_main.py +62 -6
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/utils/test_cli_utils_options.py +54 -1
- python_gitea-0.11.0/tests/cli/watch/support.py +150 -0
- python_gitea-0.11.0/tests/cli/watch/test_cli_watch_advance.py +424 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/watch/test_cli_watch_list.py +110 -187
- python_gitea-0.11.0/tests/cli/watch/test_cli_watch_scopes.py +93 -0
- python_gitea-0.11.0/tests/test_lazy_reexports.py +358 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/transport.py +83 -5
- python_gitea-0.11.0/tests/utils/test_utils_response.py +381 -0
- python_gitea-0.10.1/src/gitea/cli/utils/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/cli/watch/main.py +0 -21
- python_gitea-0.10.1/src/gitea/client/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/comment/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/config/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/issue/__init__.py +0 -25
- python_gitea-0.10.1/src/gitea/label/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/milestone/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/notification/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/organization/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/project/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/pull_request/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/repository/__init__.py +0 -8
- python_gitea-0.10.1/src/gitea/utils/response.py +0 -69
- python_gitea-0.10.1/tests/utils/test_utils_response.py +0 -132
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.coderabbit.yaml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/pull_request_template.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/ci.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/codeql.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/documentation.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/draft_release.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/publish.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/publish_testpypi.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/release.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/scheduled_release.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/semantic_pull_request.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.github/workflows/support_floor_update.yml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.gitignore +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.markdownlint.yaml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.pre-commit-config.yaml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.prettierrc +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.pypirc +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/.typos.toml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/CITATION.cff +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/CODE_OF_CONDUCT.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/CONTRIBUTING.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/LICENSE +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/SECURITY.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/SUPPORT.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/cliff.toml +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/contributing.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/dev/troubleshooting.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/gen_ref_pages.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/index.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/javascripts/mathjax.js +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/security.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/style/api.css +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/user-guide/configuration.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/user-guide/installation.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/docs/user-guide/quickstart.md +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/renovate.json +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/scripts/release_version.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/__main__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/comment/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/comment/add.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/comment/delete.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/comment/edit.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/comment/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/comment/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/config/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/config/add.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/config/delete.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/config/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/config/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/config/update.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/close.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/dependency/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/dependency/add.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/dependency/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/dependency/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/dependency/remove.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/edit.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/get.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/issue/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/label/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/label/create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/label/delete.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/label/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/label/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/label/update.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/milestone/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/milestone/create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/milestone/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/milestone/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/notification/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/notification/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/notification/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/notification/read.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/organization/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/organization/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/organization/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/output.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/column/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/column/create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/column/issues.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/column/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/delete.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/edit.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/get.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/issue/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/issue/move.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/issues.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/project/show.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/pull_request/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/pull_request/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/pull_request/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/repository/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/repository/list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/repository/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/user/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/user/get.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/user/main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/user/update_settings.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/utils/api.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/utils/auth.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/utils/convert.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/utils/errors.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/cli/watch/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/client/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/comment/async_comment.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/comment/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/comment/comment.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/config/manager.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/config/model.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/issue/async_issue.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/issue/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/issue/issue.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/issue/project_column.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/label/async_label.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/label/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/label/label.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/milestone/async_milestone.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/milestone/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/milestone/milestone.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/notification/async_notification.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/notification/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/notification/notification.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/organization/async_organization.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/organization/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/organization/organization.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/project/async_project.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/project/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/project/project.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/pull_request/async_pull_request.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/pull_request/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/pull_request/pull_request.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/repository/async_repository.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/repository/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/repository/repository.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/resource/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/resource/async_resource.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/resource/resource.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/user/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/user/async_user.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/user/base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/user/user.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/utils/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/utils/fields.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/utils/log.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/utils/pagination.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/version.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/watch/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/watch/changes.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/src/gitea/watch/state.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/board.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/comment/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/comment/test_cli_comment_add.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/comment/test_cli_comment_delete.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/comment/test_cli_comment_edit.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/comment/test_cli_comment_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/comment/test_cli_comment_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/config/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/config/test_cli_config_add.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/config/test_cli_config_delete.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/config/test_cli_config_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/config/test_cli_config_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/config/test_cli_config_update.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/envelope.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/dependency/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/dependency/test_cli_issue_dependency.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/test_cli_issue_close.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/test_cli_issue_comment.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/test_cli_issue_create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/test_cli_issue_edit.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/test_cli_issue_get.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/test_cli_issue_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/issue/test_cli_issue_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/label/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/label/test_cli_label_create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/label/test_cli_label_delete.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/label/test_cli_label_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/label/test_cli_label_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/label/test_cli_label_update.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/milestone/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/milestone/test_cli_milestone_create.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/milestone/test_cli_milestone_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/milestone/test_cli_milestone_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/notification/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/notification/test_cli_notification.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/organization/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/organization/test_cli_organization_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/organization/test_cli_organization_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/project/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/project/test_cli_project_column_issues.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/project/test_cli_project_show.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/pull_request/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/pull_request/test_cli_pull_request_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/pull_request/test_cli_pull_request_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/rendering.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/repository/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/repository/test_cli_repository_list.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/repository/test_cli_repository_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/test_cli_output.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/tree.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/user/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/user/test_cli_user_get.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/user/test_cli_user_update_settings.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/utils/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/utils/test_cli_utils_api.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/utils/test_cli_utils_auth.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/utils/test_cli_utils_convert.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/utils/test_cli_utils_errors.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/utils/test_cli_utils_issue.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/cli/watch/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/client/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/client/test_client_async_gitea.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/client/test_client_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/client/test_client_gitea.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/comment/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/comment/test_comment_async_comment.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/comment/test_comment_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/comment/test_comment_comment.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/config/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/config/test_config_manager.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/config/test_config_model.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/conftest.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/issue/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/issue/test_issue_async_issue.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/issue/test_issue_async_project_column.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/issue/test_issue_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/issue/test_issue_dependencies.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/issue/test_issue_issue.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/issue/test_issue_project_column.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/label/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/label/test_label_async_label.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/label/test_label_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/label/test_label_label.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/milestone/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/milestone/test_milestone_async_milestone.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/milestone/test_milestone_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/milestone/test_milestone_milestone.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/notification/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/notification/test_notification_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/notification/test_notification_notification.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/organization/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/organization/test_organization_async_organization.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/organization/test_organization_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/organization/test_organization_organization.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/project/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/project/test_project_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/project/test_project_project.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/project/test_project_requests.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/pull_request/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/pull_request/test_pull_request_async_pull_request.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/pull_request/test_pull_request_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/pull_request/test_pull_request_pull_request.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/repository/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/repository/test_repository_async_repository.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/repository/test_repository_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/repository/test_repository_repository.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/resource/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/resource/test_resource_async_resource.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/resource/test_resource_resource.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/smoke_test.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/test_import.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/test_main.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/test_release_version.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/test_version.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/user/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/user/test_user_async_user.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/user/test_user_base.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/user/test_user_user.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/utils/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/utils/test_utils_fields.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/utils/test_utils_log.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/utils/test_utils_pagination.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/watch/__init__.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/watch/test_watch_changes.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/tests/watch/test_watch_state.py +0 -0
- {python_gitea-0.10.1 → python_gitea-0.11.0}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: python-gitea
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.0
|
|
4
4
|
Summary: A Python package for interacting with the Gitea API, offering a simple interface to access repositories, users, organizations, issues, and more for automation and data management.
|
|
5
5
|
Project-URL: Documentation, https://isaac-cf-wong.github.io/python-gitea
|
|
6
6
|
Project-URL: Source, https://github.com/isaac-cf-wong/python-gitea
|
|
@@ -36,6 +36,7 @@ Description-Content-Type: text/markdown
|
|
|
36
36
|
[](https://github.com/isaac-cf-wong/python-gitea/blob/main/LICENSE)
|
|
37
37
|
[](https://github.com/PyCQA/bandit)
|
|
38
38
|
[](https://doi.org/10.5281/zenodo.18211496)
|
|
39
|
+
[](https://scientific-python.org/specs/spec-0000/)
|
|
39
40
|
|
|
40
41
|
A Python package for interacting with the Gitea API. It provides a simple,
|
|
41
42
|
intuitive interface to access Gitea repositories, users, organizations, issues,
|
|
@@ -45,7 +46,8 @@ data retrieval, and management tasks.
|
|
|
45
46
|
## Features
|
|
46
47
|
|
|
47
48
|
- **Full API Coverage**: Repositories, users, organizations, issues, pull
|
|
48
|
-
requests, comments, labels, milestones, notifications, and
|
|
49
|
+
requests, comments, labels, milestones, notifications, projects, and Actions
|
|
50
|
+
workflows, runs, and job logs.
|
|
49
51
|
- **Easy Authentication**: Token-based authentication, with multiple saved
|
|
50
52
|
accounts and a default-account fallback.
|
|
51
53
|
- **Asynchronous Support**: Built with `async`/`await` for non-blocking
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
[](https://github.com/isaac-cf-wong/python-gitea/blob/main/LICENSE)
|
|
10
10
|
[](https://github.com/PyCQA/bandit)
|
|
11
11
|
[](https://doi.org/10.5281/zenodo.18211496)
|
|
12
|
+
[](https://scientific-python.org/specs/spec-0000/)
|
|
12
13
|
|
|
13
14
|
A Python package for interacting with the Gitea API. It provides a simple,
|
|
14
15
|
intuitive interface to access Gitea repositories, users, organizations, issues,
|
|
@@ -18,7 +19,8 @@ data retrieval, and management tasks.
|
|
|
18
19
|
## Features
|
|
19
20
|
|
|
20
21
|
- **Full API Coverage**: Repositories, users, organizations, issues, pull
|
|
21
|
-
requests, comments, labels, milestones, notifications, and
|
|
22
|
+
requests, comments, labels, milestones, notifications, projects, and Actions
|
|
23
|
+
workflows, runs, and job logs.
|
|
22
24
|
- **Easy Authentication**: Token-based authentication, with multiple saved
|
|
23
25
|
accounts and a default-account fallback.
|
|
24
26
|
- **Asynchronous Support**: Built with `async`/`await` for non-blocking
|
|
@@ -35,6 +35,15 @@ src/gitea/
|
|
|
35
35
|
│ └── manager.py # ConfigManager (load/save/CRUD accounts)
|
|
36
36
|
├── resource/ # Resource base class
|
|
37
37
|
│ └── resource.py # Shared request helpers for resources
|
|
38
|
+
├── actions/ # Actions resource (sync + async), composed per family
|
|
39
|
+
│ ├── base.py # Every Actions path and query parameter
|
|
40
|
+
│ ├── scope.py # Which scope a set of coordinates addresses
|
|
41
|
+
│ ├── actions.py # Workflows, runs, jobs; composes the families below
|
|
42
|
+
│ ├── run_management.py # Cancel, approve, rerun, delete a run
|
|
43
|
+
│ ├── artifact.py # The files a run produced, archive included
|
|
44
|
+
│ ├── secret.py # Write-only secrets of a scope
|
|
45
|
+
│ ├── variable.py # Their readable counterpart
|
|
46
|
+
│ └── runner.py # Runners of a scope, and the registration token
|
|
38
47
|
├── issue/ # Issue resource (sync + async)
|
|
39
48
|
├── pull_request/ # Pull request resource (sync + async)
|
|
40
49
|
├── repository/ # Repository resource (sync + async)
|
|
@@ -48,6 +57,7 @@ src/gitea/
|
|
|
48
57
|
├── cli/ # Typer CLI application
|
|
49
58
|
│ ├── main.py # gitea-cli entry point, command registration
|
|
50
59
|
│ ├── config/ # config commands
|
|
60
|
+
│ ├── actions/ # actions workflow, run, job, artifact, secret, variable, runner commands
|
|
51
61
|
│ ├── issue/ # issue + issue dependency commands
|
|
52
62
|
│ ├── pull_request/ # pull-request commands
|
|
53
63
|
│ ├── comment/ # comment commands
|
|
@@ -80,6 +90,7 @@ Each client exposes one attribute per resource:
|
|
|
80
90
|
|
|
81
91
|
```python
|
|
82
92
|
with Gitea(token="...", base_url="...") as client:
|
|
93
|
+
client.actions # Actions
|
|
83
94
|
client.issue # Issue
|
|
84
95
|
client.pull_request # PullRequest
|
|
85
96
|
client.repository # Repository
|
|
@@ -107,6 +118,34 @@ it, so the resource methods stay one-to-one with the API. For example,
|
|
|
107
118
|
`gitea.issue.project_column` resolves the board column an issue's card sits in,
|
|
108
119
|
which Gitea only reveals through the project's column listings.
|
|
109
120
|
|
|
121
|
+
`actions` is the one resource split further, into a module per family - runs,
|
|
122
|
+
artifacts, secrets, variables, runners - which `Actions` and `AsyncActions`
|
|
123
|
+
compose. Gitea's Actions API is large enough that one class per client would be
|
|
124
|
+
a file nobody reads end to end, and the families differ from each other in ways
|
|
125
|
+
worth writing down beside their own methods: which listings answer with an
|
|
126
|
+
object and which with a bare array, which endpoints answer with a file rather
|
|
127
|
+
than a document, and which scopes each family exists at. The path building for
|
|
128
|
+
all of them stays in one `base.py`, so every URL the resource can address is in
|
|
129
|
+
one place.
|
|
130
|
+
|
|
131
|
+
That package's `__init__.py` re-exports nothing, unlike its neighbours'. With
|
|
132
|
+
thirteen modules an eager re-export would make `import gitea.actions.scope`
|
|
133
|
+
execute all of them, and would put each in an import cycle: importing a
|
|
134
|
+
submodule imports its package, so a package that imports its submodules is one
|
|
135
|
+
they import back. `tests/actions/test_actions_imports.py` pins both properties.
|
|
136
|
+
|
|
137
|
+
The neighbours keep their re-exports and avoid the same two costs by resolving
|
|
138
|
+
them on first read instead, through a module-level `__getattr__` (PEP 562) that
|
|
139
|
+
`gitea._lazy.lazy_reexports` builds from a table of name against origin module.
|
|
140
|
+
`from gitea.issue import Issue` works exactly as it did, while
|
|
141
|
+
`import gitea.issue.base` no longer executes either client - and the package no
|
|
142
|
+
longer imports the submodules that import it back, which is where 44 of the
|
|
143
|
+
import cycles in this tree came from. Each such package keeps a `TYPE_CHECKING`
|
|
144
|
+
block naming the same imports, so editors and type checkers still resolve the
|
|
145
|
+
names statically; that block does not execute, so it reintroduces no cycle.
|
|
146
|
+
`tests/test_lazy_reexports.py` pins the public names, the laziness, and the
|
|
147
|
+
absence of any module-level import cycle anywhere in `gitea`.
|
|
148
|
+
|
|
110
149
|
## CLI Layer
|
|
111
150
|
|
|
112
151
|
The CLI is a single Typer application registered in `cli/main.py`. Each resource
|
|
@@ -126,9 +126,18 @@ way, so an invocation can be written without reading `--help` first:
|
|
|
126
126
|
| `--owner` | The user or organization that owns the target. Required. |
|
|
127
127
|
| `--repository` | Narrows the target to one repository of that owner. |
|
|
128
128
|
| `--<entity>-id` | Names the entity acted on. |
|
|
129
|
+
| `--admin` | Asks for the instance-wide form, where one exists. |
|
|
129
130
|
|
|
130
|
-
The entity options are `--issue-id`, `--project-id`, `--column-id`,
|
|
131
|
-
|
|
131
|
+
The entity options are `--issue-id`, `--project-id`, `--column-id`,
|
|
132
|
+
`--label-id`, `--comment-id`, `--workflow-id`, `--run-id`, `--job-id`,
|
|
133
|
+
`--artifact-id` and `--runner-id`. Two entities Gitea addresses by name rather
|
|
134
|
+
than by number - an Actions secret and an Actions variable - are named by
|
|
135
|
+
`--secret-name` and `--variable-name`, since `--secret-id` would promise a
|
|
136
|
+
number the API does not have.
|
|
137
|
+
|
|
138
|
+
`--admin` is offered by the Actions commands whose endpoint has an instance-wide
|
|
139
|
+
form. It belongs to no owner, so it cannot be combined with `--owner`, and it
|
|
140
|
+
needs an administrator's token. See [the Actions scopes](#actions-scopes).
|
|
132
141
|
|
|
133
142
|
Omitting `--repository` asks for the target that belongs to the owner itself
|
|
134
143
|
rather than to one of its repositories. The `project` commands have both forms:
|
|
@@ -138,6 +147,9 @@ gitea-cli project get --owner my-org --project-id 1 # organ
|
|
|
138
147
|
gitea-cli project get --owner my-org --repository my-repo --project-id 1 # repository project
|
|
139
148
|
```
|
|
140
149
|
|
|
150
|
+
Most of the Actions commands have both forms too, and some have four: see
|
|
151
|
+
[the Actions scopes](#actions-scopes) for the table.
|
|
152
|
+
|
|
141
153
|
The other families have no owner-wide endpoint - an issue, a comment, a label, a
|
|
142
154
|
milestone and a pull request all live in a repository - so omitting
|
|
143
155
|
`--repository` there is reported as an error naming the option to pass:
|
|
@@ -205,6 +217,224 @@ endpoint to serve it with, so they answer by naming the option to pass.
|
|
|
205
217
|
- Under `--output json` the confirmation prompt is written to stderr so that
|
|
206
218
|
stdout stays parsable; pass `--force` to skip it entirely.
|
|
207
219
|
|
|
220
|
+
### Actions - run, inspect and configure workflows
|
|
221
|
+
|
|
222
|
+
A workflow is the file in the repository and what is dispatched, a run is one
|
|
223
|
+
execution of it and what carries the status, a job is a part of a run and what
|
|
224
|
+
carries the logs, and an artifact is a file a job produced. The commands are
|
|
225
|
+
grouped that way. Three further groups configure Actions rather than watch it: a
|
|
226
|
+
`secret` and a `variable` are what a workflow reads at run time, and a `runner`
|
|
227
|
+
is a machine that executes jobs.
|
|
228
|
+
|
|
229
|
+
`--workflow-id` is the workflow's **file name** - `build.yml` - and not a
|
|
230
|
+
number: that is what Gitea's endpoint takes. `--run-id` and `--job-id` are IDs,
|
|
231
|
+
as everywhere else.
|
|
232
|
+
|
|
233
|
+
- `gitea-cli actions workflow list --owner <owner> --repository <repo>`
|
|
234
|
+
- `gitea-cli actions workflow get --owner <owner> --repository <repo> --workflow-id <file>`
|
|
235
|
+
- `gitea-cli actions workflow dispatch --owner <owner> --repository <repo> --workflow-id <file> --ref <ref>`
|
|
236
|
+
- Optional: `--input KEY=VALUE` (repeatable), `--return-run-details`
|
|
237
|
+
- The workflow has to declare a `workflow_dispatch` trigger: that is the
|
|
238
|
+
trigger a dispatch fires, so a workflow without one has nothing for this
|
|
239
|
+
to start.
|
|
240
|
+
- Gitea accepts a dispatch with `204` and no body, which says the request
|
|
241
|
+
was taken but not which run it started. `--return-run-details` asks the
|
|
242
|
+
response to name the run - `workflow_run_id`, `run_url`, `html_url` - so a
|
|
243
|
+
script can follow the run it dispatched instead of guessing which of the
|
|
244
|
+
runs that appeared is its own. An instance too old to know the parameter
|
|
245
|
+
answers without a body as before, so treat an empty `data` as "accepted,
|
|
246
|
+
run not named" rather than as a failure.
|
|
247
|
+
- Only the first `=` of an `--input` divides the name from the value, so
|
|
248
|
+
`--input query=a=b` sets `query` to `a=b`. An input given twice with two
|
|
249
|
+
different values is refused rather than one of them silently kept.
|
|
250
|
+
- `gitea-cli actions run list --owner <owner> --repository <repo>`
|
|
251
|
+
- Optional: `--workflow-id`, `--admin`, `--event`, `--branch`, `--status`,
|
|
252
|
+
`--actor`, `--head-sha`, `--exclude-pull-requests`, `--page`, `--limit`
|
|
253
|
+
- `--status` is one of `pending`, `queued`, `in_progress`, `failure`,
|
|
254
|
+
`success`, `skipped`.
|
|
255
|
+
- `--workflow-id` asks a different endpoint - the workflow's own runs -
|
|
256
|
+
rather than filtering the repository's.
|
|
257
|
+
- This listing exists at four [scopes](#actions-scopes). `--workflow-id` and
|
|
258
|
+
`--exclude-pull-requests` belong to the repository form alone, and passing
|
|
259
|
+
either outside a repository is refused rather than quietly ignored.
|
|
260
|
+
- `gitea-cli actions run get --owner <owner> --repository <repo> --run-id <id>`
|
|
261
|
+
- `status` says how far the run has got, `conclusion` how it ended. A run
|
|
262
|
+
still going has no conclusion yet.
|
|
263
|
+
- `gitea-cli actions run jobs --owner <owner> --repository <repo> --run-id <id>`
|
|
264
|
+
- Optional: `--status`, `--page`, `--limit`
|
|
265
|
+
- `gitea-cli actions job get --owner <owner> --repository <repo> --job-id <id>`
|
|
266
|
+
- The job carries its `steps`, each with a `status` and a `conclusion`,
|
|
267
|
+
which is where a failure is narrowed to the step that failed.
|
|
268
|
+
- `gitea-cli actions job logs --owner <owner> --repository <repo> --job-id <id>`
|
|
269
|
+
- Text output is the log itself, so it can be piped, grepped or redirected
|
|
270
|
+
like the file it is; `--output json` wraps it in the envelope instead,
|
|
271
|
+
with the log as a string under `logs` and `job_id` alongside it. A job
|
|
272
|
+
that has produced nothing yet prints nothing.
|
|
273
|
+
- `gitea-cli actions job list --owner <owner> --repository <repo>`
|
|
274
|
+
- Optional: `--admin`, `--status`, `--page`, `--limit`
|
|
275
|
+
- A different endpoint from `run jobs`: it answers with **every** job of the
|
|
276
|
+
scope rather than the jobs of one run, so `--status queued` finds what is
|
|
277
|
+
waiting for a runner without walking the runs to reach it. Exists at four
|
|
278
|
+
[scopes](#actions-scopes).
|
|
279
|
+
|
|
280
|
+
These listings answer with an **object** and not with the bare array the other
|
|
281
|
+
listings in this CLI return: `total_count` alongside `workflows`,
|
|
282
|
+
`workflow_runs` or `jobs`. That is the shape Gitea's Actions endpoints send, and
|
|
283
|
+
[the field-name convention](#field-names) is why it is passed through rather
|
|
284
|
+
than flattened. So a script reads `.data.workflow_runs[]` where it would read
|
|
285
|
+
`.data[]` for issues. One page is fetched per invocation; `--page` and `--limit`
|
|
286
|
+
walk a long history.
|
|
287
|
+
|
|
288
|
+
#### Acting on a run
|
|
289
|
+
|
|
290
|
+
- `gitea-cli actions run cancel --owner <owner> --repository <repo> --run-id <id>`
|
|
291
|
+
- Asks the run's jobs to stop and waits for them to notice. A job whose
|
|
292
|
+
runner has gone away never does, and the run then stays `in_progress`.
|
|
293
|
+
- `gitea-cli actions run force-cancel --owner <owner> --repository <repo> --run-id <id>`
|
|
294
|
+
- Marks the run cancelled regardless, which is what clears a stuck one. It
|
|
295
|
+
is a different endpoint and not a retry of `cancel`: a job that really is
|
|
296
|
+
still running somewhere is disowned rather than stopped, so cancel first
|
|
297
|
+
and reach for this when that has not taken effect.
|
|
298
|
+
- `gitea-cli actions run approve --owner <owner> --repository <repo> --run-id <id>`
|
|
299
|
+
- A run triggered by a first-time contributor's pull request waits for
|
|
300
|
+
someone with write access and shows as `blocked` until then.
|
|
301
|
+
- `gitea-cli actions run rerun --owner <owner> --repository <repo> --run-id <id>`
|
|
302
|
+
- Optional: `--failed-jobs`
|
|
303
|
+
- `--failed-jobs` reruns only the jobs that failed, which is a different
|
|
304
|
+
endpoint and the one for a long run that failed on one flaky job: the jobs
|
|
305
|
+
that succeeded keep their results. It answers without a body, so an empty
|
|
306
|
+
`data` there is a rerun that started.
|
|
307
|
+
- `gitea-cli actions job rerun --owner <owner> --repository <repo> --run-id <id> --job-id <id>`
|
|
308
|
+
- Reruns one named job. This is the one job command that takes the run as
|
|
309
|
+
well, because Gitea addresses the rerun through the run.
|
|
310
|
+
- `gitea-cli actions run delete --owner <owner> --repository <repo> --run-id <id>`
|
|
311
|
+
- Deletes the run **and** the jobs, logs and artifacts it produced, which is
|
|
312
|
+
how a repository is cleared of those rather than only of the run's entry.
|
|
313
|
+
A run that has not finished cannot be deleted; cancel it first.
|
|
314
|
+
|
|
315
|
+
Cancelling, approving and rerunning answer with the run as it now stands, so
|
|
316
|
+
`.data.status` says what the request did rather than only that it was taken.
|
|
317
|
+
|
|
318
|
+
#### Artifacts
|
|
319
|
+
|
|
320
|
+
An artifact is a file a job uploaded. Uploading one is not offered here and is
|
|
321
|
+
not an omission: Gitea has no REST endpoint for it - an artifact is uploaded
|
|
322
|
+
from inside a running job, by the runner, over the Actions protocol.
|
|
323
|
+
|
|
324
|
+
- `gitea-cli actions artifact list --owner <owner> --repository <repo>`
|
|
325
|
+
- Optional: `--run-id`, `--name`
|
|
326
|
+
- `--run-id` asks the run's own artifacts, a different endpoint rather than
|
|
327
|
+
a filter. `--name` narrows rather than identifies: a run uploading one
|
|
328
|
+
artifact per job has several of the same name.
|
|
329
|
+
- Answers with an object: `total_count` alongside `artifacts`.
|
|
330
|
+
- `gitea-cli actions artifact get --owner <owner> --repository <repo> --artifact-id <id>`
|
|
331
|
+
- `size_in_bytes` sizes a download and `expired` says whether there is an
|
|
332
|
+
archive left to download at all.
|
|
333
|
+
- `gitea-cli actions artifact download --owner <owner> --repository <repo> --artifact-id <id> --file <path>`
|
|
334
|
+
- Optional: `--force`
|
|
335
|
+
- Writes the zip to `--file`; it is never written to stdout, since a zip
|
|
336
|
+
interleaved with the JSON envelope would be neither. `--force` overwrites
|
|
337
|
+
an existing file, and without it an existing path is refused. An artifact
|
|
338
|
+
whose archive has expired is reported rather than saved as a zero-byte
|
|
339
|
+
file.
|
|
340
|
+
- `data` names where the archive went and how large it was - `path` and
|
|
341
|
+
`size_in_bytes` - since the response itself carries no field saying
|
|
342
|
+
either.
|
|
343
|
+
- `gitea-cli actions artifact delete --owner <owner> --repository <repo> --artifact-id <id>`
|
|
344
|
+
- Deletes the archive; the run it belongs to stays, and keeps its logs.
|
|
345
|
+
|
|
346
|
+
#### Secrets, variables and runners
|
|
347
|
+
|
|
348
|
+
<a id="actions-scopes"></a> These three, and the `run list` and `job list`
|
|
349
|
+
commands, exist at more than one **scope**, and which one is asked for follows
|
|
350
|
+
[the naming convention](#option-naming):
|
|
351
|
+
|
|
352
|
+
| Coordinates | Scope | Path |
|
|
353
|
+
| ---------------------------- | ------------------------- | ----------------------------------- |
|
|
354
|
+
| `--owner` and `--repository` | that repository | `/repos/{owner}/{repo}/actions/...` |
|
|
355
|
+
| `--owner` alone | that organization | `/orgs/{owner}/actions/...` |
|
|
356
|
+
| neither | the authenticated account | `/user/actions/...` |
|
|
357
|
+
| `--admin` | the whole instance | `/admin/actions/...` |
|
|
358
|
+
|
|
359
|
+
`--owner` alone is the **organization** form, not a generic owner form: Gitea
|
|
360
|
+
answers it only for an organization. `--admin` needs an administrator's token
|
|
361
|
+
and cannot be combined with `--owner`.
|
|
362
|
+
|
|
363
|
+
Not every group offers every scope. A secret cannot be _listed_ for the
|
|
364
|
+
authenticated account, and neither secrets nor variables have an instance-wide
|
|
365
|
+
form. Asking for a scope that does not exist is refused by name rather than
|
|
366
|
+
answered with an empty listing, which is what the missing endpoint would
|
|
367
|
+
otherwise look like.
|
|
368
|
+
|
|
369
|
+
- `gitea-cli actions secret list --owner <owner> [--repository <repo>]`
|
|
370
|
+
- Optional: `--page`, `--limit`
|
|
371
|
+
- A secret's value is never listed: Gitea stores it write-only, so the
|
|
372
|
+
entries carry the name, the description and when it was set. Answers with
|
|
373
|
+
a **bare array**, unlike the other Actions listings.
|
|
374
|
+
- A job sees the secrets of every scope above it, so a repository's listing
|
|
375
|
+
is not the set of secrets its workflows can read.
|
|
376
|
+
- `gitea-cli actions secret set --secret-name <name> --data <value> [--owner <owner>] [--repository <repo>]`
|
|
377
|
+
- Optional: `--description`
|
|
378
|
+
- `--data -` reads the value from **stdin**, which is the spelling to use
|
|
379
|
+
anywhere the value matters: a value on the command line is in the shell
|
|
380
|
+
history and in the process list of the machine it ran on. Exactly one
|
|
381
|
+
trailing newline is stripped, so `echo` and `printf` both send what they
|
|
382
|
+
look like they send.
|
|
383
|
+
- One endpoint creates and replaces. Gitea answers `201` when the secret was
|
|
384
|
+
new and `204` when it replaced one, so `.metadata.status_code` is what
|
|
385
|
+
says which happened; both are success.
|
|
386
|
+
- Omitting `--description` leaves the existing one rather than clearing it.
|
|
387
|
+
- `gitea-cli actions secret delete --secret-name <name> [--owner <owner>] [--repository <repo>]`
|
|
388
|
+
- `gitea-cli actions variable list [--owner <owner>] [--repository <repo>]`
|
|
389
|
+
- Optional: `--page`, `--limit`
|
|
390
|
+
- The readable counterpart of a secret: the value comes back, under `data`.
|
|
391
|
+
Anything a workflow must not print belongs in a secret instead. Answers
|
|
392
|
+
with a bare array.
|
|
393
|
+
- `gitea-cli actions variable get --variable-name <name> [--owner <owner>] [--repository <repo>]`
|
|
394
|
+
- `gitea-cli actions variable create --variable-name <name> --value <value> [--owner <owner>] [--repository <repo>]`
|
|
395
|
+
- Optional: `--description`
|
|
396
|
+
- A name that already exists is a conflict rather than an overwrite, so this
|
|
397
|
+
is safe to retry against a name believed to be free.
|
|
398
|
+
- `gitea-cli actions variable update --variable-name <name> --value <value> [--owner <owner>] [--repository <repo>]`
|
|
399
|
+
- Optional: `--new-name`, `--description`
|
|
400
|
+
- `--value` is required even by an update that only means to rename: Gitea
|
|
401
|
+
requires the value in the body, so read it with `variable get` first
|
|
402
|
+
rather than guessing it. `--new-name` is the rename; omitting it leaves
|
|
403
|
+
the name alone.
|
|
404
|
+
- `gitea-cli actions variable delete --variable-name <name> [--owner <owner>] [--repository <repo>]`
|
|
405
|
+
- `gitea-cli actions runner list [--owner <owner>] [--repository <repo>] [--admin]`
|
|
406
|
+
- Optional: `--state enabled|disabled`
|
|
407
|
+
- A runner is registered to one scope and then runs the jobs of everything
|
|
408
|
+
under it, so a scope's listing shows the runners registered **there** -
|
|
409
|
+
not every runner that could pick up its jobs. A repository whose jobs all
|
|
410
|
+
run on an organization runner has an empty listing of its own, and that is
|
|
411
|
+
not a repository with nowhere to run.
|
|
412
|
+
- `status` says whether the runner is reachable and `busy` whether it is
|
|
413
|
+
running something; both are independent of `--state`, since a runner can
|
|
414
|
+
be online and disabled at once and then takes no jobs. Answers with an
|
|
415
|
+
object: `total_count` alongside `runners`.
|
|
416
|
+
- `gitea-cli actions runner get --runner-id <id> [--owner <owner>] [--repository <repo>] [--admin]`
|
|
417
|
+
- `labels` is what a job's `runs-on` is matched against, and is the usual
|
|
418
|
+
reason a job sits queued while a runner sits idle.
|
|
419
|
+
- A runner is addressed through the scope it is registered to, so a real
|
|
420
|
+
runner asked for through another scope is reported as not found.
|
|
421
|
+
- `gitea-cli actions runner update --runner-id <id> --state enabled|disabled [--owner <owner>] [--repository <repo>] [--admin]`
|
|
422
|
+
- `--state` is Gitea's `disabled` field, named rather than offered as a
|
|
423
|
+
flag: there is no partial update of a runner, so an update says which of
|
|
424
|
+
the two states it means rather than defaulting to one. Disabling is the
|
|
425
|
+
reversible alternative to `runner delete`.
|
|
426
|
+
- `gitea-cli actions runner delete --runner-id <id> [--owner <owner>] [--repository <repo>] [--admin]`
|
|
427
|
+
- Removes the registration. A runner process still running keeps trying to
|
|
428
|
+
poll and is refused, so a machine meant to come back has to re-register.
|
|
429
|
+
- `gitea-cli actions runner registration-token [--owner <owner>] [--repository <repo>] [--admin]`
|
|
430
|
+
- The token `act_runner register` is given. Registering a runner is not
|
|
431
|
+
something this API does: take the token here, register the machine out of
|
|
432
|
+
band, then list what appeared.
|
|
433
|
+
- The token belongs to the **scope** and not to one runner, and it is a
|
|
434
|
+
credential: anything holding it can attach a machine that will execute the
|
|
435
|
+
scope's jobs. It is printed, so redirect it rather than leaving it in a
|
|
436
|
+
shell history or a CI log.
|
|
437
|
+
|
|
208
438
|
### Issue - manage issues
|
|
209
439
|
|
|
210
440
|
- `gitea-cli issue create --owner <owner> --repository <repo> --title <title>`
|
|
@@ -325,8 +555,11 @@ gitea-cli project list --owner my-org --repository my-repo # that repository's
|
|
|
325
555
|
arrived in `--column-id`. An issue with no card there is reported as an
|
|
326
556
|
error naming `project issue add`; `--add-if-missing` has this command put
|
|
327
557
|
it in `--column-id` instead.
|
|
328
|
-
- `gitea-cli project issue remove --owner <owner> [--repository <repo>] --project-id <id> --
|
|
329
|
-
- Optional: `--issue-repository`
|
|
558
|
+
- `gitea-cli project issue remove --owner <owner> [--repository <repo>] --project-id <id> --issue-id <id>`
|
|
559
|
+
- Optional: `--column-id`, `--issue-repository`
|
|
560
|
+
- Takes the issue's card off the project. `--column-id` is the column the
|
|
561
|
+
card is in, and is found on the board when it is omitted; an issue with no
|
|
562
|
+
card there is reported as having none.
|
|
330
563
|
|
|
331
564
|
The project endpoints identify an issue by its global ID, which is not the
|
|
332
565
|
number shown in the web UI: `my-org/my-repo#15` may well be global ID `1854`.
|
|
@@ -342,6 +575,39 @@ for you:
|
|
|
342
575
|
ID. `--issue-repository` also overrides `--repository`, for the case of a
|
|
343
576
|
repository project holding an issue from elsewhere.
|
|
344
577
|
|
|
578
|
+
`--column-id` does not mean the same thing to all three commands. For `add` and
|
|
579
|
+
`move` it is where the card is going, which only the caller can say. For
|
|
580
|
+
`remove` it is where the card already is, which the board can be asked - so the
|
|
581
|
+
option is optional there, and omitting it has the project's columns walked to
|
|
582
|
+
find the card:
|
|
583
|
+
|
|
584
|
+
```console
|
|
585
|
+
$ gitea-cli project issue remove --owner my-org --project-id 1 \
|
|
586
|
+
--issue-repository my-repo --issue-id 42
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
The column the card was taken off comes back as `metadata.resolved_column_id`,
|
|
590
|
+
and an issue with no card on the project is reported as having none rather than
|
|
591
|
+
removed from a column chosen for it.
|
|
592
|
+
|
|
593
|
+
A column found that way is read back as well: the board is walked again after
|
|
594
|
+
the removal, and a zero exit status says that no column of the project holds a
|
|
595
|
+
card for the issue afterwards, rather than that a request to take one off was
|
|
596
|
+
accepted. The walk and the removal are separate requests, so a card moved in
|
|
597
|
+
between leaves the removal addressed to a column the card has left, which is a
|
|
598
|
+
removal with nothing to do — and whether the instance refuses that call or
|
|
599
|
+
answers it with a success, the status code is an answer about the request and
|
|
600
|
+
not about the card. It is the whole board that is read back rather than the
|
|
601
|
+
column the removal named, because that column holds no card whether the removal
|
|
602
|
+
took it off or the card had already moved elsewhere. The window is narrowed and
|
|
603
|
+
not closed: Gitea has no conditional delete, so a card put back on the board
|
|
604
|
+
after the confirming walk is one the command has already reported on.
|
|
605
|
+
|
|
606
|
+
A `--column-id` that is passed is used as it stands, and nothing is read back
|
|
607
|
+
for it: a column that does not hold the card is the caller's call to make rather
|
|
608
|
+
than something quietly corrected here, and whatever the instance answers such a
|
|
609
|
+
removal with is reported as it came.
|
|
610
|
+
|
|
345
611
|
`add` and `move` are not two ways of doing the same thing. `add` puts an issue
|
|
346
612
|
on a board, giving it a card in a column; `move` relocates the card it already
|
|
347
613
|
has there, and an issue with no card has nothing to relocate. Gitea's move
|
|
@@ -422,14 +688,18 @@ gitea-cli repo list --owner alice --owner-type user # a user's repositories
|
|
|
422
688
|
Every other command answers a question about the instance now. `watch` answers
|
|
423
689
|
what moved since you last looked: it keeps a local cache of issue snapshots and
|
|
424
690
|
reports the difference between that cache and the instance, then records the
|
|
425
|
-
instance as the new baseline.
|
|
691
|
+
instance as the new baseline. `list` does both in one run; `--no-advance` and
|
|
692
|
+
`advance` pull them apart, for a caller that wants a change to survive until it
|
|
693
|
+
has been acted on rather than until it has been reported.
|
|
426
694
|
|
|
427
695
|
The family is called `watch` because that is what it is for. `state` names the
|
|
428
696
|
cache rather than the purpose, and `diff` suggests comparing two things you
|
|
429
697
|
name, where this compares the present against whatever was last seen.
|
|
430
698
|
|
|
431
699
|
- `gitea-cli watch list --owner <owner> [--repository <repo>] [--project-id <id>]`
|
|
432
|
-
- Optional: `--state-file`, `--dry-run`
|
|
700
|
+
- Optional: `--state-file`, `--dry-run` (also spelled `--no-advance`)
|
|
701
|
+
- `gitea-cli watch advance --owner <owner> [--repository <repo>] [--project-id <id>]`
|
|
702
|
+
- Optional: `--state-file`
|
|
433
703
|
|
|
434
704
|
Each `--repository` watches the open issues of that repository, and each
|
|
435
705
|
`--project-id` watches the cards on that board. Both may be repeated, and both
|
|
@@ -492,10 +762,6 @@ Three behaviours of it are worth knowing before it surprises you:
|
|
|
492
762
|
announcing every comment on every watched issue as rewritten. It is logged,
|
|
493
763
|
and it happens once.
|
|
494
764
|
|
|
495
|
-
`--dry-run` reports the changes and leaves the cache untouched, so the same
|
|
496
|
-
changes come back on the next run. Everything else about the run is unchanged,
|
|
497
|
-
including the requests it makes.
|
|
498
|
-
|
|
499
765
|
A cache that cannot be written fails the run: the changes it reported would
|
|
500
766
|
otherwise be reported again forever, which is worth an error rather than a
|
|
501
767
|
silent one-line difference. As with every other failure, nothing is printed on
|
|
@@ -539,6 +805,48 @@ what kind of change it was, and what was added and removed:
|
|
|
539
805
|
`issue_count`, `change_count`, `state_file` and `dry_run`, so a run that
|
|
540
806
|
reported nothing still says why.
|
|
541
807
|
|
|
808
|
+
#### Detecting a change without consuming it
|
|
809
|
+
|
|
810
|
+
By default `list` does both at once: it reports the difference and advances the
|
|
811
|
+
cache past it, so a change is announced exactly once whether or not anyone was
|
|
812
|
+
in a position to act on it. A consumer that was busy - its previous run still in
|
|
813
|
+
flight, its queue full - drops the change, and the next run has nothing to say
|
|
814
|
+
about it.
|
|
815
|
+
|
|
816
|
+
`--dry-run`, also spelled `--no-advance`, reports the changes and leaves the
|
|
817
|
+
cache exactly as it was, so they come back on the next run. Everything else
|
|
818
|
+
about the run is unchanged, including the requests it makes. `watch advance`
|
|
819
|
+
then records the current state as the new baseline, which is how a caller
|
|
820
|
+
commits the cache once it has actually handled what it was told about:
|
|
821
|
+
|
|
822
|
+
```bash
|
|
823
|
+
changes=$(gitea-cli --output json watch list --owner my-org --repository my-repo --no-advance)
|
|
824
|
+
if handle "$changes"; then
|
|
825
|
+
gitea-cli watch advance --owner my-org --repository my-repo
|
|
826
|
+
fi
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
`advance` names its scopes exactly as `list` does, reads the same
|
|
830
|
+
`--state-file`, and reports one line per scope rather than one per change:
|
|
831
|
+
|
|
832
|
+
```console
|
|
833
|
+
$ gitea-cli watch advance --owner my-org --repository my-repo --project-id 29
|
|
834
|
+
repo:my-org/my-repo: recorded 12 issues, 1 change baselined
|
|
835
|
+
project:my-org/29: recorded 5 issues, unchanged since the cache
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
In `json` its `data` is one record per scope - `scope`, `issue_count`,
|
|
839
|
+
`change_count` and `baselined` - and its `metadata` carries `scopes`,
|
|
840
|
+
`baselined_scopes`, `issue_count`, `change_count` and `state_file`.
|
|
841
|
+
|
|
842
|
+
What it commits is the state of the instance **now**, not the state the dry run
|
|
843
|
+
saw: the dry run deliberately wrote nothing down, so there is nothing else left
|
|
844
|
+
to commit. That leaves one window the pair does not close - a change landing
|
|
845
|
+
between the two calls is baselined without ever having been reported.
|
|
846
|
+
`change_count` is how far the baseline moved, so an advance reporting more
|
|
847
|
+
changes than its dry run did is that window showing; keeping the two calls close
|
|
848
|
+
together is what keeps it small.
|
|
849
|
+
|
|
542
850
|
#### Cost
|
|
543
851
|
|
|
544
852
|
A run lists every page of each scope, and then every page of the comments of
|
|
@@ -546,6 +854,10 @@ every issue in it. That is one request per page of issues plus one per page of
|
|
|
546
854
|
comments per issue, which is what makes comment edits detectable and what makes
|
|
547
855
|
a large repository worth a longer interval.
|
|
548
856
|
|
|
857
|
+
`advance` costs exactly what `list` costs: it walks the same pages, and only
|
|
858
|
+
what it does with them differs. Pairing a dry run with an advance therefore
|
|
859
|
+
doubles the requests of the tick it replaces.
|
|
860
|
+
|
|
549
861
|
## Examples
|
|
550
862
|
|
|
551
863
|
List all open issues in a repository:
|
|
@@ -565,6 +877,80 @@ gitea-cli issue create \
|
|
|
565
877
|
--milestone 3
|
|
566
878
|
```
|
|
567
879
|
|
|
880
|
+
Start a workflow, then follow the run it started:
|
|
881
|
+
|
|
882
|
+
```bash
|
|
883
|
+
run=$(gitea-cli --output json actions workflow dispatch \
|
|
884
|
+
--owner my-org \
|
|
885
|
+
--repository my-repo \
|
|
886
|
+
--workflow-id build.yml \
|
|
887
|
+
--ref main \
|
|
888
|
+
--input environment=staging \
|
|
889
|
+
--return-run-details |
|
|
890
|
+
jq -r '.data.workflow_run_id')
|
|
891
|
+
|
|
892
|
+
gitea-cli --output json actions run get --owner my-org --repository my-repo --run-id "$run" |
|
|
893
|
+
jq -r '.data | "\(.status) \(.conclusion // "-")"'
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
Read the log of the job that failed:
|
|
897
|
+
|
|
898
|
+
```bash
|
|
899
|
+
gitea-cli --output json actions run jobs \
|
|
900
|
+
--owner my-org --repository my-repo --run-id 42 |
|
|
901
|
+
jq -r '.data.jobs[] | select(.conclusion == "failure") | .id' |
|
|
902
|
+
while read -r job; do
|
|
903
|
+
gitea-cli actions job logs --owner my-org --repository my-repo --job-id "$job"
|
|
904
|
+
done
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
Rerun only the jobs that failed, then wait for the run to settle:
|
|
908
|
+
|
|
909
|
+
```bash
|
|
910
|
+
gitea-cli actions run rerun \
|
|
911
|
+
--owner my-org --repository my-repo --run-id 42 --failed-jobs
|
|
912
|
+
|
|
913
|
+
until [ "$(gitea-cli --output json actions run get \
|
|
914
|
+
--owner my-org --repository my-repo --run-id 42 |
|
|
915
|
+
jq -r '.data.status')" != "in_progress" ]; do
|
|
916
|
+
sleep 10
|
|
917
|
+
done
|
|
918
|
+
```
|
|
919
|
+
|
|
920
|
+
Set a secret without putting it in the shell history or the process list:
|
|
921
|
+
|
|
922
|
+
```bash
|
|
923
|
+
read -rs -p 'token: ' token
|
|
924
|
+
printf %s "$token" |
|
|
925
|
+
gitea-cli actions secret set \
|
|
926
|
+
--owner my-org --repository my-repo \
|
|
927
|
+
--secret-name DEPLOY_TOKEN --data - --description 'staging deploys'
|
|
928
|
+
unset token
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
Find the jobs that are waiting for a runner across a whole organization, and the
|
|
932
|
+
runners that could take them:
|
|
933
|
+
|
|
934
|
+
```bash
|
|
935
|
+
gitea-cli --output json actions job list --owner my-org --status queued |
|
|
936
|
+
jq -r '.data.jobs[] | "\(.id)\t\(.name)"'
|
|
937
|
+
|
|
938
|
+
gitea-cli --output json actions runner list --owner my-org |
|
|
939
|
+
jq -r '.data.runners[] | "\(.name)\t\(.status)\t\([.labels[].name] | join(","))"'
|
|
940
|
+
```
|
|
941
|
+
|
|
942
|
+
Download the artifacts of a run, skipping the ones whose archive is gone:
|
|
943
|
+
|
|
944
|
+
```bash
|
|
945
|
+
gitea-cli --output json actions artifact list \
|
|
946
|
+
--owner my-org --repository my-repo --run-id 42 |
|
|
947
|
+
jq -r '.data.artifacts[] | select(.expired == false) | "\(.id)\t\(.name)"' |
|
|
948
|
+
while IFS=$'\t' read -r id name; do
|
|
949
|
+
gitea-cli actions artifact download \
|
|
950
|
+
--owner my-org --repository my-repo --artifact-id "$id" --file "$name.zip"
|
|
951
|
+
done
|
|
952
|
+
```
|
|
953
|
+
|
|
568
954
|
Put an issue on a project board, in a column of it, addressing the issue by the
|
|
569
955
|
number shown in the web UI:
|
|
570
956
|
|