Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .github/workflows/links.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Links

on:
pull_request:
workflow_dispatch:
schedule:
- cron: "43 12 * * *"

jobs:
check:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5

- uses: actions/cache@v4
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
restore-keys: cache-lychee-

- uses: lycheeverse/lychee-action@v2
with:
fail: true
args: >
--root-dir ${{ github.workspace }}
--verbose
--no-progress
--cache
--max-cache-age 2d
--include-fragments
--exclude 'api.hetzner.cloud'
--exclude 'api.hetzner.com'
--exclude 'codecov.io'
--exclude 'github.com'
--exclude '169.254.169.254'
--exclude 'https://docs.hetzner.cloud/changelog#new-product'
--exclude 'https://style-guide.europa.eu/en/content/-/isg/topic'
--exclude 'https://www.hetzner.com/news/arm64-cloud'
'**/*.md'
'**/*.go'
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ hcloud storage-box enable-snapshot-plan backups \

This release adds support for the new [DNS API](https://docs.hetzner.cloud/reference/cloud#dns).

The DNS API is currently in **beta**, which will likely end on 10 November 2025. After the beta ended, it will no longer be possible to create new zones in the old DNS system. See the [DNS Beta FAQ](https://docs.hetzner.com/networking/dns/faq/beta) for more details.
The DNS API is currently in **beta**, which will likely end on 10 November 2025. After the beta ended, it will no longer be possible to create new zones in the old DNS system. See the [DNS Beta FAQ](https://docs.hetzner.com/networking/dns/faq/beta/) for more details.

Future minor releases of this project may include breaking changes for features that are related to the DNS API.

Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ This documentation is written and organized following the [Diátaxis](https://di
## Getting help

- 🐛 Report bugs using [our issue tracker](https://github.com/hetznercloud/cli/issues/new?template=bug.yaml).
- 🙋 If you need help, reach us using the [Support Center](https://console.hetzner.cloud/support).
- 🙋 If you need help, reach us using the [Support Center](https://console.hetzner.com/support).
2 changes: 1 addition & 1 deletion docs/guides/using-output-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ $ hcloud location list --output yaml | yq '.[] | [{"id": .id, "name": .name}]'
## Go Template Format

`describe` commands support the Go string template format as well. You can read up on the syntax in the
[Go documentation](https://pkg.go.dev/text/template/). The data structures passed to the template are defined
[Go documentation](https://pkg.go.dev/text/template). The data structures passed to the template are defined
by our API and can be found in [hcloud-go](https://pkg.go.dev/github.com/hetznercloud/hcloud-go/v2/hcloud/schema).

For example, you could obtain the number of cores of a server using the following command:
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions docs/tutorials/setup-hcloud-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This tutorial will guide you through the process of setting up the hcloud CLI on

Before you begin, ensure you have the following:

- A [Hetzner Cloud account](https://console.hetzner.cloud).
- A [Hetzner Cloud account](https://console.hetzner.com).

## 1. Install the hcloud CLI

Expand Down Expand Up @@ -144,7 +144,7 @@ and source this file from your PowerShell profile.
The hcloud CLI uses contexts to manage multiple Hetzner Cloud tokens and set configuration preferences.

First, you need to create an API token.
Follow the instructions in the [Hetzner Cloud documentation](https://docs.hetzner.com/cloud/api/getting-started/generating-api-token) to create your project API token.
Follow the instructions in the [Hetzner Cloud documentation](https://docs.hetzner.com/cloud/api/getting-started/generating-api-token/) to create your project API token.

Once you have your token, you can create a context using the following command:

Expand Down Expand Up @@ -179,4 +179,4 @@ ID NAME DESCRIPTION LOCATION
If you see this output, congratulations! You have successfully set up the hcloud CLI on your local machine.

If there are any problems, make sure you followed all steps of this tutorial correctly. If there still are problems,
you can reach out to our [Support](https://console.hetzner.cloud/support) to get help.
you can reach out to our [Support](https://console.hetzner.com/support) to get help.
12 changes: 6 additions & 6 deletions internal/cmd/config/add_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func TestAdd(t *testing.T) {
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand Down Expand Up @@ -83,7 +83,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3", "a", "b", "c"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand Down Expand Up @@ -111,7 +111,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3", "a", "b", "c"]
Expand Down Expand Up @@ -140,7 +140,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand Down Expand Up @@ -170,7 +170,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand Down Expand Up @@ -204,7 +204,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand Down
4 changes: 2 additions & 2 deletions internal/cmd/config/get_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func TestGet(t *testing.T) {
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.deeply]
[contexts.preferences.deeply.nested]
Expand Down Expand Up @@ -66,7 +66,7 @@ func TestGet(t *testing.T) {
},
{
key: "endpoint",
expOut: "https://test-endpoint.com\n",
expOut: "https://example.com\n",
},
{
key: "poll-interval",
Expand Down
52 changes: 26 additions & 26 deletions internal/cmd/config/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func TestList(t *testing.T) {
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.deeply]
[contexts.preferences.deeply.nested]
Expand All @@ -58,14 +58,14 @@ func TestList(t *testing.T) {
{
name: "default",
args: []string{},
expOut: `KEY VALUE
context test_context
debug yes
deeply.nested.option bar
endpoint https://test-endpoint.com
poll-interval 1.234s
quiet yes
token [redacted]
expOut: `KEY VALUE
context test_context
debug yes
deeply.nested.option bar
endpoint https://example.com
poll-interval 1.234s
quiet yes
token [redacted]
`,
},
{
Expand All @@ -84,26 +84,26 @@ token
{
name: "no header",
args: []string{"-o=noheader"},
expOut: `context test_context
debug yes
deeply.nested.option bar
endpoint https://test-endpoint.com
poll-interval 1.234s
quiet yes
token [redacted]
expOut: `context test_context
debug yes
deeply.nested.option bar
endpoint https://example.com
poll-interval 1.234s
quiet yes
token [redacted]
`,
},
{
name: "allow sensitive",
args: []string{"--allow-sensitive"},
expOut: `KEY VALUE
context test_context
debug yes
deeply.nested.option bar
endpoint https://test-endpoint.com
poll-interval 1.234s
quiet yes
token super secret token
expOut: `KEY VALUE
context test_context
debug yes
deeply.nested.option bar
endpoint https://example.com
poll-interval 1.234s
quiet yes
token super secret token
`,
},
{
Expand All @@ -125,7 +125,7 @@ token super secret token
},
{
"key": "endpoint",
"value": "https://test-endpoint.com"
"value": "https://example.com"
},
{
"key": "poll-interval",
Expand Down Expand Up @@ -165,6 +165,6 @@ token super secret token
func setTestValues(cfg config.Config) {
_ = os.Setenv("HCLOUD_POLL_INTERVAL", "1234ms")
_ = os.Setenv("HCLOUD_DEBUG", "true")
_ = cfg.FlagSet().Set("endpoint", "https://test-endpoint.com")
_ = cfg.FlagSet().Set("endpoint", "https://example.com")
_ = cfg.FlagSet().Set("quiet", "true")
}
10 changes: 5 additions & 5 deletions internal/cmd/config/remove_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func TestRemove(t *testing.T) {
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand Down Expand Up @@ -84,7 +84,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand All @@ -111,7 +111,7 @@ active_context = "test_context"
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1", "2", "3"]
Expand Down Expand Up @@ -146,7 +146,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
array_option = ["1"]
Expand Down Expand Up @@ -174,7 +174,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["1", "2", "3"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true

[[contexts]]
Expand Down
14 changes: 7 additions & 7 deletions internal/cmd/config/set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func TestSet(t *testing.T) {
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true

[[contexts]]
Expand Down Expand Up @@ -90,7 +90,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
debug_file = "debug.log"
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true

[[contexts]]
Expand Down Expand Up @@ -123,7 +123,7 @@ active_context = "test_context"
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true

[[contexts]]
Expand All @@ -149,7 +149,7 @@ active_context = "test_context"
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true

[[contexts]]
Expand All @@ -174,7 +174,7 @@ active_context = "test_context"
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.nested]
option = "bar"
Expand All @@ -201,7 +201,7 @@ active_context = "test_context"
name = "test_context"
token = "super secret token"
[contexts.preferences]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true
[contexts.preferences.deeply]
[contexts.preferences.deeply.nested]
Expand Down Expand Up @@ -230,7 +230,7 @@ active_context = "test_context"
token = "super secret token"
[contexts.preferences]
array_option = ["a", "b", "c"]
endpoint = "https://test-endpoint.com"
endpoint = "https://example.com"
quiet = true

[[contexts]]
Expand Down
Loading