devnomads-cli 0.5.5__tar.gz → 0.5.8__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.
Files changed (20) hide show
  1. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/PKG-INFO +44 -8
  2. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/README.md +42 -6
  3. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/devnomads_cli.egg-info/PKG-INFO +44 -8
  4. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/devnomads_cli.egg-info/requires.txt +1 -1
  5. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/dncli.py +801 -222
  6. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/pyproject.toml +2 -2
  7. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_cert.py +129 -2
  8. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_cli.py +80 -15
  9. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_generated_cli.py +84 -8
  10. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_helpers.py +24 -0
  11. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_transfer.py +2 -1
  12. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/LICENSE +0 -0
  13. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/devnomads_cli.egg-info/SOURCES.txt +0 -0
  14. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/devnomads_cli.egg-info/dependency_links.txt +0 -0
  15. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/devnomads_cli.egg-info/entry_points.txt +0 -0
  16. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/devnomads_cli.egg-info/top_level.txt +0 -0
  17. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/setup.cfg +0 -0
  18. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_config.py +0 -0
  19. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_generate.py +0 -0
  20. {devnomads_cli-0.5.5 → devnomads_cli-0.5.8}/tests/test_hook.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devnomads-cli
3
- Version: 0.5.5
3
+ Version: 0.5.8
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.2.3
14
+ Requires-Dist: devnomads[acme]>=0.2.5
15
15
  Dynamic: license-file
16
16
 
17
17
  # dncli
@@ -111,15 +111,29 @@ export DN_PROFILE=acme
111
111
  ## Scripting
112
112
 
113
113
  Output is a human-readable table on a terminal and JSON when piped,
114
- so pipelines get parseable output without any flags; `--json` and
115
- `--table` force either. Data goes to stdout, everything else
116
- (warnings, prompts, status messages) to stderr, so `dncli ... | jq .`
117
- is always safe.
114
+ so pipelines get parseable output without any flags; `--out
115
+ table|json|csv|tsv` forces a specific format. Data goes to stdout,
116
+ everything else (warnings, prompts, status messages) to stderr, so
117
+ `dncli ... | jq .` is always safe.
118
+
119
+ The `csv` and `tsv` formats use the same columns as the table view, so
120
+ `dncli servers list --out csv` is ready for a spreadsheet.
118
121
 
119
122
  List tables show a focused set of columns: fields that are empty for
120
123
  every row, and nested collections (a server's IPs, a container's
121
124
  instances, a mailbox list) are left out of the overview. Use `<group>
122
- show <id>` or `--json` for the complete record.
125
+ show <id>` or `--out json` for the complete record.
126
+
127
+ To pick exactly the columns you want, pass `--columns` (`-c`) a
128
+ comma-separated list, e.g. `dncli services list -c entity,started_at`.
129
+ It applies to every format, projecting json and csv/tsv to just those
130
+ fields, and reports an error on an unknown column name.
131
+
132
+ Commands that take a service id also accept a unique entity name and
133
+ resolve it for you, so `dncli domains show example.com` works as well
134
+ as `dncli domains show 1234`. A purely numeric value is always treated
135
+ as an id; an entity that matches more than one service is rejected, so
136
+ pass the id when an entity is not unique.
123
137
 
124
138
  In CI and pipelines, skip the credentials file and pass the key via
125
139
  the environment:
@@ -154,11 +168,33 @@ progress.
154
168
  Keys are ECDSA P-384 by default. Pick another with `--key-type`
155
169
  (`ecdsa256`, `ecdsa384`, `ecdsa521`, `rsa2048`, `rsa4096`).
156
170
 
171
+ Let's Encrypt is the certificate authority by default. Pass
172
+ `--provider zerossl` to use ZeroSSL instead. ZeroSSL requires External
173
+ Account Binding credentials (create an EAB key pair in the ZeroSSL
174
+ dashboard under Developer > EAB Credentials), supplied with `--eab-kid`
175
+ and `--eab-hmac-key` or the `DN_ZEROSSL_EAB_KID` and
176
+ `DN_ZEROSSL_EAB_HMAC_KEY` environment variables:
177
+
178
+ ```sh
179
+ dncli cert issue example.com --provider zerossl \
180
+ --eab-kid <kid> --eab-hmac-key <hmac>
181
+ ```
182
+
183
+ `--staging` (the Let's Encrypt staging CA) applies only to the
184
+ letsencrypt provider. `cert renew` takes the same `--provider` and EAB
185
+ options.
186
+
187
+ Each CA gets its own ACME account: the key lives in
188
+ `~/.config/dncli/acme/` as `account.pem` for Let's Encrypt production
189
+ and `account-<provider>.pem` for ZeroSSL and the staging CA.
190
+
157
191
  Re-running `cert issue` is a no-op while the existing certificate is
158
192
  still valid for more than 21 days; pass `--force` to re-issue anyway.
159
193
 
160
194
  List what you have issued and re-export any of them - as a PEM bundle
161
- or a PKCS#12 (`.pfx`) file - without re-issuing:
195
+ or a PKCS#12 (`.pfx`) file - without re-issuing. `cert list` includes a
196
+ `provider` column showing the issuing CA (recorded at issue time, or
197
+ inferred from the certificate's issuer for older certificates):
162
198
 
163
199
  ```sh
164
200
  dncli cert list
@@ -95,15 +95,29 @@ export DN_PROFILE=acme
95
95
  ## Scripting
96
96
 
97
97
  Output is a human-readable table on a terminal and JSON when piped,
98
- so pipelines get parseable output without any flags; `--json` and
99
- `--table` force either. Data goes to stdout, everything else
100
- (warnings, prompts, status messages) to stderr, so `dncli ... | jq .`
101
- is always safe.
98
+ so pipelines get parseable output without any flags; `--out
99
+ table|json|csv|tsv` forces a specific format. Data goes to stdout,
100
+ everything else (warnings, prompts, status messages) to stderr, so
101
+ `dncli ... | jq .` is always safe.
102
+
103
+ The `csv` and `tsv` formats use the same columns as the table view, so
104
+ `dncli servers list --out csv` is ready for a spreadsheet.
102
105
 
103
106
  List tables show a focused set of columns: fields that are empty for
104
107
  every row, and nested collections (a server's IPs, a container's
105
108
  instances, a mailbox list) are left out of the overview. Use `<group>
106
- show <id>` or `--json` for the complete record.
109
+ show <id>` or `--out json` for the complete record.
110
+
111
+ To pick exactly the columns you want, pass `--columns` (`-c`) a
112
+ comma-separated list, e.g. `dncli services list -c entity,started_at`.
113
+ It applies to every format, projecting json and csv/tsv to just those
114
+ fields, and reports an error on an unknown column name.
115
+
116
+ Commands that take a service id also accept a unique entity name and
117
+ resolve it for you, so `dncli domains show example.com` works as well
118
+ as `dncli domains show 1234`. A purely numeric value is always treated
119
+ as an id; an entity that matches more than one service is rejected, so
120
+ pass the id when an entity is not unique.
107
121
 
108
122
  In CI and pipelines, skip the credentials file and pass the key via
109
123
  the environment:
@@ -138,11 +152,33 @@ progress.
138
152
  Keys are ECDSA P-384 by default. Pick another with `--key-type`
139
153
  (`ecdsa256`, `ecdsa384`, `ecdsa521`, `rsa2048`, `rsa4096`).
140
154
 
155
+ Let's Encrypt is the certificate authority by default. Pass
156
+ `--provider zerossl` to use ZeroSSL instead. ZeroSSL requires External
157
+ Account Binding credentials (create an EAB key pair in the ZeroSSL
158
+ dashboard under Developer > EAB Credentials), supplied with `--eab-kid`
159
+ and `--eab-hmac-key` or the `DN_ZEROSSL_EAB_KID` and
160
+ `DN_ZEROSSL_EAB_HMAC_KEY` environment variables:
161
+
162
+ ```sh
163
+ dncli cert issue example.com --provider zerossl \
164
+ --eab-kid <kid> --eab-hmac-key <hmac>
165
+ ```
166
+
167
+ `--staging` (the Let's Encrypt staging CA) applies only to the
168
+ letsencrypt provider. `cert renew` takes the same `--provider` and EAB
169
+ options.
170
+
171
+ Each CA gets its own ACME account: the key lives in
172
+ `~/.config/dncli/acme/` as `account.pem` for Let's Encrypt production
173
+ and `account-<provider>.pem` for ZeroSSL and the staging CA.
174
+
141
175
  Re-running `cert issue` is a no-op while the existing certificate is
142
176
  still valid for more than 21 days; pass `--force` to re-issue anyway.
143
177
 
144
178
  List what you have issued and re-export any of them - as a PEM bundle
145
- or a PKCS#12 (`.pfx`) file - without re-issuing:
179
+ or a PKCS#12 (`.pfx`) file - without re-issuing. `cert list` includes a
180
+ `provider` column showing the issuing CA (recorded at issue time, or
181
+ inferred from the certificate's issuer for older certificates):
146
182
 
147
183
  ```sh
148
184
  dncli cert list
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devnomads-cli
3
- Version: 0.5.5
3
+ Version: 0.5.8
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.2.3
14
+ Requires-Dist: devnomads[acme]>=0.2.5
15
15
  Dynamic: license-file
16
16
 
17
17
  # dncli
@@ -111,15 +111,29 @@ export DN_PROFILE=acme
111
111
  ## Scripting
112
112
 
113
113
  Output is a human-readable table on a terminal and JSON when piped,
114
- so pipelines get parseable output without any flags; `--json` and
115
- `--table` force either. Data goes to stdout, everything else
116
- (warnings, prompts, status messages) to stderr, so `dncli ... | jq .`
117
- is always safe.
114
+ so pipelines get parseable output without any flags; `--out
115
+ table|json|csv|tsv` forces a specific format. Data goes to stdout,
116
+ everything else (warnings, prompts, status messages) to stderr, so
117
+ `dncli ... | jq .` is always safe.
118
+
119
+ The `csv` and `tsv` formats use the same columns as the table view, so
120
+ `dncli servers list --out csv` is ready for a spreadsheet.
118
121
 
119
122
  List tables show a focused set of columns: fields that are empty for
120
123
  every row, and nested collections (a server's IPs, a container's
121
124
  instances, a mailbox list) are left out of the overview. Use `<group>
122
- show <id>` or `--json` for the complete record.
125
+ show <id>` or `--out json` for the complete record.
126
+
127
+ To pick exactly the columns you want, pass `--columns` (`-c`) a
128
+ comma-separated list, e.g. `dncli services list -c entity,started_at`.
129
+ It applies to every format, projecting json and csv/tsv to just those
130
+ fields, and reports an error on an unknown column name.
131
+
132
+ Commands that take a service id also accept a unique entity name and
133
+ resolve it for you, so `dncli domains show example.com` works as well
134
+ as `dncli domains show 1234`. A purely numeric value is always treated
135
+ as an id; an entity that matches more than one service is rejected, so
136
+ pass the id when an entity is not unique.
123
137
 
124
138
  In CI and pipelines, skip the credentials file and pass the key via
125
139
  the environment:
@@ -154,11 +168,33 @@ progress.
154
168
  Keys are ECDSA P-384 by default. Pick another with `--key-type`
155
169
  (`ecdsa256`, `ecdsa384`, `ecdsa521`, `rsa2048`, `rsa4096`).
156
170
 
171
+ Let's Encrypt is the certificate authority by default. Pass
172
+ `--provider zerossl` to use ZeroSSL instead. ZeroSSL requires External
173
+ Account Binding credentials (create an EAB key pair in the ZeroSSL
174
+ dashboard under Developer > EAB Credentials), supplied with `--eab-kid`
175
+ and `--eab-hmac-key` or the `DN_ZEROSSL_EAB_KID` and
176
+ `DN_ZEROSSL_EAB_HMAC_KEY` environment variables:
177
+
178
+ ```sh
179
+ dncli cert issue example.com --provider zerossl \
180
+ --eab-kid <kid> --eab-hmac-key <hmac>
181
+ ```
182
+
183
+ `--staging` (the Let's Encrypt staging CA) applies only to the
184
+ letsencrypt provider. `cert renew` takes the same `--provider` and EAB
185
+ options.
186
+
187
+ Each CA gets its own ACME account: the key lives in
188
+ `~/.config/dncli/acme/` as `account.pem` for Let's Encrypt production
189
+ and `account-<provider>.pem` for ZeroSSL and the staging CA.
190
+
157
191
  Re-running `cert issue` is a no-op while the existing certificate is
158
192
  still valid for more than 21 days; pass `--force` to re-issue anyway.
159
193
 
160
194
  List what you have issued and re-export any of them - as a PEM bundle
161
- or a PKCS#12 (`.pfx`) file - without re-issuing:
195
+ or a PKCS#12 (`.pfx`) file - without re-issuing. `cert list` includes a
196
+ `provider` column showing the issuing CA (recorded at issue time, or
197
+ inferred from the certificate's issuer for older certificates):
162
198
 
163
199
  ```sh
164
200
  dncli cert list
@@ -2,4 +2,4 @@ typer>=0.12
2
2
  httpx>=0.27
3
3
  rich>=13
4
4
  cryptography>=42
5
- devnomads[acme]>=0.2.3
5
+ devnomads[acme]>=0.2.5