devnomads-cli 0.7.0__tar.gz → 0.8.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.
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/PKG-INFO +2 -2
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/devnomads_cli.egg-info/PKG-INFO +2 -2
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/devnomads_cli.egg-info/requires.txt +1 -1
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/dncli.py +32 -1
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/pyproject.toml +2 -2
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/LICENSE +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/README.md +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/devnomads_cli.egg-info/SOURCES.txt +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/devnomads_cli.egg-info/dependency_links.txt +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/devnomads_cli.egg-info/entry_points.txt +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/devnomads_cli.egg-info/top_level.txt +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/setup.cfg +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_cert.py +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_cli.py +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_config.py +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_generate.py +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_generated_cli.py +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_helpers.py +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_hook.py +0 -0
- {devnomads_cli-0.7.0 → devnomads_cli-0.8.0}/tests/test_transfer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devnomads-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Manage your DevNomads services from the command line
|
|
5
5
|
Author-email: DevNomads <support@devnomads.nl>
|
|
6
6
|
License: MIT
|
|
@@ -11,7 +11,7 @@ Requires-Dist: typer>=0.12
|
|
|
11
11
|
Requires-Dist: httpx>=0.27
|
|
12
12
|
Requires-Dist: rich>=13
|
|
13
13
|
Requires-Dist: cryptography>=42
|
|
14
|
-
Requires-Dist: devnomads[acme]>=0.
|
|
14
|
+
Requires-Dist: devnomads[acme]>=0.5.0
|
|
15
15
|
Dynamic: license-file
|
|
16
16
|
|
|
17
17
|
# dncli
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devnomads-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Manage your DevNomads services from the command line
|
|
5
5
|
Author-email: DevNomads <support@devnomads.nl>
|
|
6
6
|
License: MIT
|
|
@@ -11,7 +11,7 @@ Requires-Dist: typer>=0.12
|
|
|
11
11
|
Requires-Dist: httpx>=0.27
|
|
12
12
|
Requires-Dist: rich>=13
|
|
13
13
|
Requires-Dist: cryptography>=42
|
|
14
|
-
Requires-Dist: devnomads[acme]>=0.
|
|
14
|
+
Requires-Dist: devnomads[acme]>=0.5.0
|
|
15
15
|
Dynamic: license-file
|
|
16
16
|
|
|
17
17
|
# dncli
|
|
@@ -52,7 +52,7 @@ from rich.markup import escape
|
|
|
52
52
|
from rich.table import Table
|
|
53
53
|
from typer.core import TyperGroup
|
|
54
54
|
|
|
55
|
-
__version__ = "0.
|
|
55
|
+
__version__ = "0.8.0"
|
|
56
56
|
|
|
57
57
|
# Distribution names, for reporting versions via `dncli version`.
|
|
58
58
|
CLI_PACKAGE = "devnomads-cli"
|
|
@@ -1785,6 +1785,18 @@ class KeyType(str, Enum):
|
|
|
1785
1785
|
rsa4096 = "rsa4096"
|
|
1786
1786
|
|
|
1787
1787
|
|
|
1788
|
+
class PreferredChain(str, Enum):
|
|
1789
|
+
"""Terminating root to pin the served certificate chain to (Let's Encrypt).
|
|
1790
|
+
|
|
1791
|
+
This only selects which offered chain is served, not the certificate
|
|
1792
|
+
itself. `ISRG Root X1` gives the broadest compatibility with older clients;
|
|
1793
|
+
the ECDSA-only `ISRG Root X2` chain is smaller but needs a post-2022 trust
|
|
1794
|
+
store. Left unset, the CA's default chain is used unchanged."""
|
|
1795
|
+
|
|
1796
|
+
isrg_root_x1 = "ISRG Root X1"
|
|
1797
|
+
isrg_root_x2 = "ISRG Root X2"
|
|
1798
|
+
|
|
1799
|
+
|
|
1788
1800
|
class ExportFormat(str, Enum):
|
|
1789
1801
|
"""Bundle formats for `cert export`."""
|
|
1790
1802
|
|
|
@@ -1799,6 +1811,18 @@ ProviderOption = Annotated[
|
|
|
1799
1811
|
help="ACME certificate authority: letsencrypt (default) or zerossl.",
|
|
1800
1812
|
),
|
|
1801
1813
|
]
|
|
1814
|
+
PreferredChainOption = Annotated[
|
|
1815
|
+
PreferredChain | None,
|
|
1816
|
+
typer.Option(
|
|
1817
|
+
"--preferred-chain",
|
|
1818
|
+
help=(
|
|
1819
|
+
"Pin the served chain to this terminating root (Let's Encrypt): "
|
|
1820
|
+
"'ISRG Root X1' for the broadest old-client compatibility, or "
|
|
1821
|
+
"'ISRG Root X2' for the smaller ECDSA-only chain. Unset keeps the "
|
|
1822
|
+
"CA default."
|
|
1823
|
+
),
|
|
1824
|
+
),
|
|
1825
|
+
]
|
|
1802
1826
|
EabKidOption = Annotated[
|
|
1803
1827
|
str | None,
|
|
1804
1828
|
typer.Option(
|
|
@@ -2069,6 +2093,7 @@ def _issue_certificate(
|
|
|
2069
2093
|
provider: str = CertProvider.letsencrypt.value,
|
|
2070
2094
|
eab_kid: str | None = None,
|
|
2071
2095
|
eab_hmac_key: str | None = None,
|
|
2096
|
+
preferred_chain: str | None = None,
|
|
2072
2097
|
out_dir: Path,
|
|
2073
2098
|
export_path: Path | None = None,
|
|
2074
2099
|
verbose: bool = False,
|
|
@@ -2085,6 +2110,8 @@ def _issue_certificate(
|
|
|
2085
2110
|
|
|
2086
2111
|
provider_name = provider
|
|
2087
2112
|
client_kwargs: dict[str, Any] = {"contact_email": email}
|
|
2113
|
+
if preferred_chain:
|
|
2114
|
+
client_kwargs["preferred_chain"] = preferred_chain
|
|
2088
2115
|
if staging:
|
|
2089
2116
|
if provider != CertProvider.letsencrypt.value:
|
|
2090
2117
|
raise CliError("--staging only applies to the letsencrypt provider")
|
|
@@ -2172,6 +2199,7 @@ def cert_issue(
|
|
|
2172
2199
|
provider: ProviderOption = CertProvider.letsencrypt,
|
|
2173
2200
|
eab_kid: EabKidOption = None,
|
|
2174
2201
|
eab_hmac_key: EabHmacKeyOption = None,
|
|
2202
|
+
preferred_chain: PreferredChainOption = None,
|
|
2175
2203
|
force: Annotated[
|
|
2176
2204
|
bool,
|
|
2177
2205
|
typer.Option(
|
|
@@ -2218,6 +2246,7 @@ def cert_issue(
|
|
|
2218
2246
|
provider=provider.value,
|
|
2219
2247
|
eab_kid=eab_kid,
|
|
2220
2248
|
eab_hmac_key=eab_hmac_key,
|
|
2249
|
+
preferred_chain=preferred_chain.value if preferred_chain else None,
|
|
2221
2250
|
staging=staging,
|
|
2222
2251
|
out_dir=out_dir,
|
|
2223
2252
|
export_path=out,
|
|
@@ -2268,6 +2297,7 @@ def cert_renew(
|
|
|
2268
2297
|
provider: ProviderOption = CertProvider.letsencrypt,
|
|
2269
2298
|
eab_kid: EabKidOption = None,
|
|
2270
2299
|
eab_hmac_key: EabHmacKeyOption = None,
|
|
2300
|
+
preferred_chain: PreferredChainOption = None,
|
|
2271
2301
|
verbose: Annotated[
|
|
2272
2302
|
bool,
|
|
2273
2303
|
typer.Option("--verbose", "-v", help="Show detailed ACME progress."),
|
|
@@ -2302,6 +2332,7 @@ def cert_renew(
|
|
|
2302
2332
|
provider=provider.value,
|
|
2303
2333
|
eab_kid=eab_kid,
|
|
2304
2334
|
eab_hmac_key=eab_hmac_key,
|
|
2335
|
+
preferred_chain=preferred_chain.value if preferred_chain else None,
|
|
2305
2336
|
out_dir=out_dir,
|
|
2306
2337
|
verbose=verbose,
|
|
2307
2338
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "devnomads-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.8.0"
|
|
4
4
|
description = "Manage your DevNomads services from the command line"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -11,7 +11,7 @@ dependencies = [
|
|
|
11
11
|
"httpx>=0.27",
|
|
12
12
|
"rich>=13",
|
|
13
13
|
"cryptography>=42",
|
|
14
|
-
"devnomads[acme]>=0.
|
|
14
|
+
"devnomads[acme]>=0.5.0",
|
|
15
15
|
]
|
|
16
16
|
|
|
17
17
|
[project.scripts]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|