gitea.cli.actions.artifact.download
download
Download the archive of one Actions artifact.
The endpoint answers with the zip archive rather than with a document, which is
why this command is shaped differently from its neighbours: the payload goes to
the file named by --file, and what is reported is where it went and how large it
was. Writing the archive to stdout is deliberately not offered - a zip interleaved
with the JSON envelope would be neither - so the path is required.
Two refusals are worth knowing before scripting it. An artifact whose archive has
expired answers with no body, and writing that out would leave a zero-byte file
that looks like an empty artifact rather than a missing one, so it is reported
instead. And an existing file is not overwritten without --force, since the
usual mistake is a path that already holds something else.
Functions:
gitea.cli.actions.artifact.download.download_artifact_command
download_artifact_command(
ctx: Context,
owner: Annotated[
str,
Option("--owner", help="Owner of the repository."),
],
artifact_id: Annotated[
int, Option("--artifact-id", help=ARTIFACT_ID_HELP)
],
file: Annotated[
Path,
Option(
"--file",
help="Path to write the zip archive to. It is not written to stdout.",
),
],
repository: Annotated[
str | None,
Option(
"--repository", help=REPOSITORY_REQUIRED_HELP
),
] = None,
force: Annotated[
bool,
Option(
"--force",
help="Overwrite the file at --file if it already exists.",
),
] = False,
account_name: Annotated[
str | None,
Option(
"--account-name",
help="Name of the account to use for authentication.",
),
] = None,
token: Annotated[
str | None,
Option(
"--token",
help="Token for authentication. If not provided, the token from the specified account will be used.",
),
] = None,
base_url: Annotated[
str | None,
Option(
"--base-url",
help="Base URL of the Gitea platform. If not provided, the base URL from the specified account will be used.",
),
] = None,
) -> None
Download the archive of one Actions artifact.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ctx
|
Context
|
The Typer context. |
required |
owner
|
Annotated[str, Option('--owner', help='Owner of the repository.')]
|
The owner of the repository. |
required |
artifact_id
|
Annotated[int, Option('--artifact-id', help=ARTIFACT_ID_HELP)]
|
The ID of the artifact. |
required |
file
|
Annotated[Path, Option('--file', help='Path to write the zip archive to. It is not written to stdout.')]
|
Where to write the zip archive. |
required |
repository
|
Annotated[str | None, Option('--repository', help=REPOSITORY_REQUIRED_HELP)]
|
The name of the repository, which this command requires. |
None
|
force
|
Annotated[bool, Option('--force', help='Overwrite the file at --file if it already exists.')]
|
Whether to overwrite an existing file. |
False
|
account_name
|
Annotated[str | None, Option('--account-name', help='Name of the account to use for authentication.')]
|
Name of the account to use for authentication. |
None
|
token
|
Annotated[str | None, Option('--token', help='Token for authentication. If not provided, the token from the specified account will be used.')]
|
Token for authentication. |
None
|
base_url
|
Annotated[str | None, Option('--base-url', help='Base URL of the Gitea platform. If not provided, the base URL from the specified account will be used.')]
|
Base URL of the Gitea platform. |
None
|
Source code in src/gitea/cli/actions/artifact/download.py
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | |