diff --git a/build/generate/featureMatrix.go b/build/generate/featureMatrix.go index c7041525f..04d759671 100644 --- a/build/generate/featureMatrix.go +++ b/build/generate/featureMatrix.go @@ -93,7 +93,7 @@ func matrixData() *FeatureMatrix { OfficialSupport = "Official Support" // vs. community supported ProviderDNSProvider = "DNS Provider" ProviderRegistrar = "Registrar" - ProviderThreadSafe = "[Concurrency Verified](../concurrency-verified.md)" + ProviderThreadSafe = "[Concurrency Verified](../advanced-features/concurrency-verified.md)" DomainModifierAlias = "[`ALIAS`](../language-reference/domain-modifiers/ALIAS.md)" DomainModifierCaa = "[`CAA`](../language-reference/domain-modifiers/CAA.md)" DomainModifierDnssec = "[`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md)" @@ -110,7 +110,7 @@ func matrixData() *FeatureMatrix { DomainModifierDhcid = "[`DHCID`](../language-reference/domain-modifiers/DHCID.md)" DomainModifierDname = "[`DNAME`](../language-reference/domain-modifiers/DNAME.md)" DomainModifierDnskey = "[`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md)" - DualHost = "[dual host](../dual-host.md)" + DualHost = "[dual host](../advanced-features/dual-host.md)" CreateDomains = "create-domains" GetZones = "get-zones" ) diff --git a/build/generate/functionTypes.go b/build/generate/functionTypes.go index 2b0794b10..6d2cd3995 100644 --- a/build/generate/functionTypes.go +++ b/build/generate/functionTypes.go @@ -108,7 +108,8 @@ func generateFunctionTypes() (string, error) { } for _, t := range types { if !t.IsDir() { - return "", errors.New("not a directory: " + join(srcRoot, t.Name())) + // Skip non-directories like js.md or why-the-dot.md + continue } tPath := join(srcRoot, t.Name()) funcNames, err := os.ReadDir(tPath) diff --git a/commands/types/dnscontrol.d.ts b/commands/types/dnscontrol.d.ts index 2477a5c76..c54bc453c 100644 --- a/commands/types/dnscontrol.d.ts +++ b/commands/types/dnscontrol.d.ts @@ -1119,7 +1119,7 @@ declare function DefaultTTL(ttl: Duration): DomainModifier; * Using a different number, ie: `DnsProvider("name",2)`, means "fetch all nameservers from this provider, * but limit it to this many. * - * See [this page](../../nameservers.md) for a detailed explanation of how DNSControl handles nameservers and NS records. + * See [this page](../../advanced-features/nameservers.md) for a detailed explanation of how DNSControl handles nameservers and NS records. * * If a domain (`D()`) does not include any `DnsProvider()` functions, * the DNS records will not be modified. In fact, if you want to control @@ -1934,7 +1934,7 @@ declare function MX(name: string, priority: number, target: string, ...modifiers * in the current zone and accepts a label. [`NS()`](NS.md) is for downward * delegations. `NAMESERVER()` is for informing upstream delegations. * - * For more information, refer to [this page](../../nameservers.md). + * For more information, refer to [this page](../../advanced-features/nameservers.md). * * ```javascript * D("example.com", REG_MY_PROVIDER, @@ -2310,13 +2310,13 @@ declare function NS(name: string, target: string, ...modifiers: RecordModifier[] * * * `name` must match the name of an entry in `creds.json`. * * `type` specifies a valid DNS provider type identifier listed on the [provider page](../../provider/index.md). - * * Starting with [v3.16](../../v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). + * * Starting with [v3.16](../../release/v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). * * Starting with v4.0, specifying the type may be an error. Please add the `TYPE` field to `creds.json` and remove this parameter from `dnsconfig.js` to prepare. * * `meta` is a way to send additional parameters to the provider. It is optional and only certain providers use it. See the [individual provider docs](../../provider/index.md) for details. * * This function will return an opaque string that should be assigned to a variable name for use in [D](D.md) directives. * - * Prior to [v3.16](../../v316.md): + * Prior to [v3.16](../../release/v316.md): * * ```javascript * var REG_MYNDC = NewRegistrar("mynamedotcom", "NAMEDOTCOM"); @@ -2327,7 +2327,7 @@ declare function NS(name: string, target: string, ...modifiers: RecordModifier[] * ); * ``` * - * In [v3.16](../../v316.md) and later: + * In [v3.16](../../release/v316.md) and later: * * ```javascript * var REG_MYNDC = NewRegistrar("mynamedotcom"); @@ -2349,13 +2349,13 @@ declare function NewDnsProvider(name: string, type?: string, meta?: object): str * * * `name` must match the name of an entry in `creds.json`. * * `type` specifies a valid DNS provider type identifier listed on the [provider page](../../provider/index.md). - * * Starting with [v3.16](../../v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). + * * Starting with [v3.16](../../release/v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). * * Starting with v4.0, specifying the type may be an error. Please add the `TYPE` field to `creds.json` and remove this parameter from `dnsconfig.js` to prepare. * * `meta` is a way to send additional parameters to the provider. It is optional and only certain providers use it. See the [individual provider docs](../../provider/index.md) for details. * * This function will return an opaque string that should be assigned to a variable name for use in [D](D.md) directives. * - * Prior to [v3.16](../../v316.md): + * Prior to [v3.16](../../release/v316.md): * * ```javascript * var REG_MYNDC = NewRegistrar("mynamedotcom", "NAMEDOTCOM"); @@ -2366,7 +2366,7 @@ declare function NewDnsProvider(name: string, type?: string, meta?: object): str * ); * ``` * - * In [v3.16](../../v316.md) and later: + * In [v3.16](../../release/v316.md) and later: * * ```javascript * var REG_MYNDC = NewRegistrar("mynamedotcom"); @@ -2718,7 +2718,7 @@ declare function REV(address: string): string; * v4 defaults to RFC 2317. In v5.0 the default will change to RFC 4183. * `REVCOMPAT()` is provided for those that wish to retain the old behavior. * - * For more information, see [Opinion #9](../../opinions.md#opinion-9-rfc-4183-is-better-than-rfc-2317). + * For more information, see [Opinion #9](../../advanced-features/opinions.md#opinion-9-rfc-4183-is-better-than-rfc-2317). * * # Transition plan * diff --git a/documentation/SUMMARY.md b/documentation/SUMMARY.md index 2c39e1b80..44131d2b5 100644 --- a/documentation/SUMMARY.md +++ b/documentation/SUMMARY.md @@ -4,14 +4,14 @@ ## Getting Started -* [Overview](getting-started.md) -* [Examples](examples.md) -* [Migrating zones to DNSControl](migrating.md) -* [TypeScript autocomplete and type checking](typescript.md) +* [Overview](getting-started/getting-started.md) +* [Examples](getting-started/examples.md) +* [Migrating zones to DNSControl](getting-started/migrating.md) +* [TypeScript autocomplete and type checking](getting-started/typescript.md) ## Language Reference -* [JavaScript DSL](js.md) +* [JavaScript DSL](language-reference/js.md) * Top Level Functions * [D](language-reference/top-level-functions/D.md) * [DEFAULTS](language-reference/top-level-functions/DEFAULTS.md) @@ -97,7 +97,7 @@ * Amazon Route 53 * [R53_ZONE](language-reference/record-modifiers/R53_ZONE.md) * [R53_EVALUATE_TARGET_HEALTH](language-reference/record-modifiers/R53\_EVALUATE\_TARGET\_HEALTH.md) -* [Why CNAME/MX/NS targets require a "dot"](why-the-dot.md) +* [Why CNAME/MX/NS targets require a "dot"](language-reference/why-the-dot.md) ## Provider @@ -158,43 +158,45 @@ ## Commands -* [preview/push](preview-push.md) -* [check-creds](check-creds.md) -* [get-zones](get-zones.md) -* [get-certs](get-certs.md) -* [fmt](fmt.md) -* [creds.json](creds-json.md) -* [Global Flag](globalflags.md) -* [Disabling Colors](colors.md) +* [preview/push](commands/preview-push.md) +* [check-creds](commands/check-creds.md) +* [get-zones](commands/get-zones.md) +* [get-certs](commands/get-certs.md) +* [fmt](commands/fmt.md) +* [creds.json](commands/creds-json.md) +* [Global Flag](commands/globalflags.md) +* [Disabling Colors](commands/colors.md) ## Advanced features -* [CI/CD example for GitLab](ci-cd-gitlab.md) -* [CLI variables](cli-variables.md) -* [Nameservers and Delegations](nameservers.md) -* [Notifications](notifications.md) -* [Useful code tricks](code-tricks.md) -* [JSON Reports](json-reports.md) +* [Concurrency Verified](advanced-features/concurrency-verified.md) +* [CI/CD example for GitLab](advanced-features/ci-cd-gitlab.md) +* [CLI variables](advanced-features/cli-variables.md) +* [Nameservers and Delegations](advanced-features/nameservers.md) +* [Notifications](advanced-features/notifications.md) +* [Useful code tricks](advanced-features/code-tricks.md) +* [JSON Reports](advanced-features/json-reports.md) +* [Dual Host](advanced-features/dual-host.md) ## Developer info -* [Code Style Guide](styleguide-code.md) -* [Documentation Style Guide](styleguide-doc.md) -* [DNSControl is an opinionated system](opinions.md) -* [Writing new DNS providers](writing-providers.md) -* [Creating new DNS Resource Types (rtypes)](adding-new-rtypes.md) -* [Integration Tests](integration-tests.md) -* [Test a branch](test-a-branch.md) -* [Unit Testing DNS Data](unittests.md) -* [Bug Triage Process](bug-triage.md) -* [Bring-Your-Own-Secrets for automated testing](byo-secrets.md) -* [Debugging with dlv](debugging-with-dlv.md) -* [ALIAS Records](alias.md) -* [TXT record testing](testing-txt-records.md) -* [DNS records ordering](ordering.md) +* [Code Style Guide](advanced-features/styleguide-code.md) +* [Documentation Style Guide](advanced-features/styleguide-doc.md) +* [DNSControl is an opinionated system](advanced-features/opinions.md) +* [Writing new DNS providers](advanced-features/writing-providers.md) +* [Creating new DNS Resource Types (rtypes)](advanced-features/adding-new-rtypes.md) +* [Integration Tests](advanced-features/integration-tests.md) +* [Test a branch](advanced-features/test-a-branch.md) +* [Unit Testing DNS Data](advanced-features/unittests.md) +* [Bug Triage Process](advanced-features/bug-triage.md) +* [Bring-Your-Own-Secrets for automated testing](advanced-features/byo-secrets.md) +* [Debugging with dlv](advanced-features/debugging-with-dlv.md) +* [ALIAS Records](advanced-features/alias.md) +* [TXT record testing](advanced-features/testing-txt-records.md) +* [DNS records ordering](advanced-features/ordering.md) ## Release -* [How to build and ship a release](release-engineering.md) -* [Changelog v3.16.0](v316.md) +* [How to build and ship a release](release/release-engineering.md) +* [Changelog v3.16.0](release/v316.md) * [GitHub releases](https://github.com/StackExchange/dnscontrol/releases/latest) diff --git a/documentation/adding-new-rtypes.md b/documentation/advanced-features/adding-new-rtypes.md similarity index 96% rename from documentation/adding-new-rtypes.md rename to documentation/advanced-features/adding-new-rtypes.md index e3185b3c3..742cb9544 100644 --- a/documentation/adding-new-rtypes.md +++ b/documentation/advanced-features/adding-new-rtypes.md @@ -153,7 +153,7 @@ example we removed `providers.CanUseCAA` from the Add a function to `pkg/js/helpers.js` for the new record type. This is the JavaScript file that defines `dnsconfig.js`'s functions like -[`A()`](language-reference/domain-modifiers/A.md) and [`MX()`](language-reference/domain-modifiers/MX.md). Look at the definition of `A`, `MX` and `CAA` for good +[`A()`](../language-reference/domain-modifiers/A.md) and [`MX()`](../language-reference/domain-modifiers/MX.md). Look at the definition of `A`, `MX` and `CAA` for good examples to use as a base. Please add the function alphabetically with the others. Also, please run @@ -300,7 +300,7 @@ Add a new Markdown file to `documentation/language-reference/domain-modifiers`. The rest of the file is the documentation. You can use Markdown syntax to format the text. -Add the new file `FOO.md` to the documentation table of contents [`documentation/SUMMARY.md`](SUMMARY.md#domain-modifiers), and/or to the [`Service Provider specific`](SUMMARY.md#service-provider-specific) section if you made a record specific to a provider, and to the [`Record Modifiers`](SUMMARY.md#record-modifiers) section if you created any `*_BUILDER` or `*_HELPER` or similar functions for the new record type: +Add the new file `FOO.md` to the documentation table of contents [`documentation/SUMMARY.md`](../SUMMARY.md#domain-modifiers), and/or to the [`Service Provider specific`](../SUMMARY.md#service-provider-specific) section if you made a record specific to a provider, and to the [`Record Modifiers`](../SUMMARY.md#record-modifiers) section if you created any `*_BUILDER` or `*_HELPER` or similar functions for the new record type: {% code title="documentation/SUMMARY.md" %} ```diff diff --git a/documentation/alias.md b/documentation/advanced-features/alias.md similarity index 100% rename from documentation/alias.md rename to documentation/advanced-features/alias.md diff --git a/documentation/bug-triage.md b/documentation/advanced-features/bug-triage.md similarity index 94% rename from documentation/bug-triage.md rename to documentation/advanced-features/bug-triage.md index 63d417078..9355259d9 100644 --- a/documentation/bug-triage.md +++ b/documentation/advanced-features/bug-triage.md @@ -2,7 +2,7 @@ If an issue is related to a particular provider, assign it to the person responsible for the provider, as listed in -[Providers](provider/index.md)'s "Maintainers of +[Providers](../provider/index.md)'s "Maintainers of contributed providers". Otherwise leave it unassigned until someone grabs it. @@ -26,7 +26,7 @@ priority: 1. Respond to the issue with the message below 1. Close the issue -The [Providers](provider/index.md) page is generated +The [Providers](../provider/index.md) page is generated automatically from all the issues tagged `provider-request`: 1. "Requested providers: state=closed, tagged `provider-request` diff --git a/documentation/byo-secrets.md b/documentation/advanced-features/byo-secrets.md similarity index 100% rename from documentation/byo-secrets.md rename to documentation/advanced-features/byo-secrets.md diff --git a/documentation/ci-cd-gitlab.md b/documentation/advanced-features/ci-cd-gitlab.md similarity index 93% rename from documentation/ci-cd-gitlab.md rename to documentation/advanced-features/ci-cd-gitlab.md index e42d822d6..af536f55b 100644 --- a/documentation/ci-cd-gitlab.md +++ b/documentation/advanced-features/ci-cd-gitlab.md @@ -1,6 +1,6 @@ # GitLab CI/CD example -Before discussing the GitLab CI/CD setup, let's assume you already have a working DNSControl setup. Aren't you there yet? Then first check out the '[Getting Started](getting-started.md)' section. +Before discussing the GitLab CI/CD setup, let's assume you already have a working DNSControl setup. Aren't you there yet? Then first check out the '[Getting Started](../getting-started/getting-started.md)' section. ## DNSControl - Demo setup @@ -59,9 +59,9 @@ hY/gnT/MmXXko3YAcI4eQL8= _Example of variable `$TRANSIP_PRIVATE_KEY` contents._ -![GitLab CI/CD variables](assets/ci-cd-gitlab/settings-ci-cd-variables.png) +![GitLab CI/CD variables](../assets/ci-cd-gitlab/settings-ci-cd-variables.png) -![Insert GitLab CI/CD variable TRANSIP_PRIVATE_KEY](assets/ci-cd-gitlab/settings-ci-cd-variables-insert.png) +![Insert GitLab CI/CD variable TRANSIP_PRIVATE_KEY](../assets/ci-cd-gitlab/settings-ci-cd-variables-insert.png) ## GitLab CI - DNSControl preview @@ -132,7 +132,7 @@ dnscontrol "3.20.0" ("8bb63be8f5ed996a7ae0a21091954fcab996621b") built 26 Aug 22 Done. 1 corrections. ``` -![CI/CD job output for DNSControl preview](assets/ci-cd-gitlab/ci-cd-job-output-dnscontrol-preview.png) +![CI/CD job output for DNSControl preview](../assets/ci-cd-gitlab/ci-cd-job-output-dnscontrol-preview.png) ## GitLab CI - DNSControl push @@ -162,7 +162,7 @@ What does this (new) YAML configuration mean? - The `dnscontrol push` is run within the GitLab CI [predefined stage](https://docs.gitlab.com/ee/ci/yaml/#stages) `deploy`. - This only happens when you start a GitLab pipeline from the [GitLab web interface](https://gitlab.com/cafferata/dnscontrol/-/pipelines/new) for the default branch (e.g. `main`). -![Start new CI/CD pipeline from the GitLab web interface](assets/ci-cd-gitlab/ci-cd-pipelines-new.png) +![Start new CI/CD pipeline from the GitLab web interface](../assets/ci-cd-gitlab/ci-cd-pipelines-new.png) When we start the new [GitLab pipeline](https://gitlab.com/cafferata/dnscontrol/-/pipelines/656368384) from the [GitLab web interface](https://gitlab.com/cafferata/dnscontrol/-/pipelines/new), we see the GitLab job [dnscontrol-push](https://gitlab.com/cafferata/dnscontrol/-/jobs/3115896199) which makes the changes within the DNS provider TransIP. @@ -183,7 +183,7 @@ SUCCESS! Done. 1 corrections. ``` -![CI/CD job output for DNSControl push](assets/ci-cd-gitlab/ci-cd-job-output-dnscontrol-push.png) +![CI/CD job output for DNSControl push](../assets/ci-cd-gitlab/ci-cd-job-output-dnscontrol-push.png) ## GitLab CI - Duplicate YAML configuration diff --git a/documentation/cli-variables.md b/documentation/advanced-features/cli-variables.md similarity index 100% rename from documentation/cli-variables.md rename to documentation/advanced-features/cli-variables.md diff --git a/documentation/code-tricks.md b/documentation/advanced-features/code-tricks.md similarity index 93% rename from documentation/code-tricks.md rename to documentation/advanced-features/code-tricks.md index 30ed409c1..e187fd754 100644 --- a/documentation/code-tricks.md +++ b/documentation/advanced-features/code-tricks.md @@ -4,10 +4,10 @@ Problem: It is difficult to get CAA and other records exactly right. Solution: Use a "builder" to construct it for you. -* [CAA_BUILDER](language-reference/domain-modifiers/CAA_BUILDER.md) -* [DMARC_BUILDER](language-reference/domain-modifiers/DMARC_BUILDER.md) -* [M365_BUILDER](language-reference/domain-modifiers/M365_BUILDER.md) -* [SPF_BUILDER](language-reference/domain-modifiers/SPF_BUILDER.md) +* [CAA_BUILDER](../language-reference/domain-modifiers/CAA_BUILDER.md) +* [DMARC_BUILDER](../language-reference/domain-modifiers/DMARC_BUILDER.md) +* [M365_BUILDER](../language-reference/domain-modifiers/M365_BUILDER.md) +* [SPF_BUILDER](../language-reference/domain-modifiers/SPF_BUILDER.md) # Trailing commas @@ -172,5 +172,5 @@ domain exists, who requested it, any associated ticket numbers, and so on. We also comment the individual parts of a record. Look at the [SPF -Optimizer](language-reference/domain-modifiers/SPF_BUILDER.md) example. Each part of +Optimizer](../language-reference/domain-modifiers/SPF_BUILDER.md) example. Each part of the SPF record has a comment. diff --git a/documentation/concurrency-verified.md b/documentation/advanced-features/concurrency-verified.md similarity index 100% rename from documentation/concurrency-verified.md rename to documentation/advanced-features/concurrency-verified.md diff --git a/documentation/debugging-with-dlv.md b/documentation/advanced-features/debugging-with-dlv.md similarity index 100% rename from documentation/debugging-with-dlv.md rename to documentation/advanced-features/debugging-with-dlv.md diff --git a/documentation/dual-host.md b/documentation/advanced-features/dual-host.md similarity index 100% rename from documentation/dual-host.md rename to documentation/advanced-features/dual-host.md diff --git a/documentation/integration-tests.md b/documentation/advanced-features/integration-tests.md similarity index 100% rename from documentation/integration-tests.md rename to documentation/advanced-features/integration-tests.md diff --git a/documentation/json-reports.md b/documentation/advanced-features/json-reports.md similarity index 100% rename from documentation/json-reports.md rename to documentation/advanced-features/json-reports.md diff --git a/documentation/nameservers.md b/documentation/advanced-features/nameservers.md similarity index 98% rename from documentation/nameservers.md rename to documentation/advanced-features/nameservers.md index 13cc627f0..660acc2b8 100644 --- a/documentation/nameservers.md +++ b/documentation/advanced-features/nameservers.md @@ -248,7 +248,7 @@ a notified if the delegation diverges. Why? Sometimes you just want to know if something changes! -See the [DNS-over-HTTPS Provider](provider/dnsoverhttps.md) documentation for more info. +See the [DNS-over-HTTPS Provider](../provider/dnsoverhttps.md) documentation for more info. {% code title="dnsconfig.js" %} ```javascript diff --git a/documentation/notifications.md b/documentation/advanced-features/notifications.md similarity index 97% rename from documentation/notifications.md rename to documentation/advanced-features/notifications.md index cef59b33b..f2d2d0322 100644 --- a/documentation/notifications.md +++ b/documentation/advanced-features/notifications.md @@ -24,7 +24,7 @@ Notifications are configured in the `creds.json` file, since they often contain If you want to send a notification, add the `--notify` flag to the `dnscontrol preview` or `dnscontrol push` commands. -Below is an example where we add [the A record](language-reference/domain-modifiers/A.md) `foo` and display the notification output. +Below is an example where we add [the A record](../language-reference/domain-modifiers/A.md) `foo` and display the notification output. {% code title="dnsconfig.js" %} ```diff diff --git a/documentation/opinions.md b/documentation/advanced-features/opinions.md similarity index 97% rename from documentation/opinions.md rename to documentation/advanced-features/opinions.md index 6c3aa825d..1cd169fd3 100644 --- a/documentation/opinions.md +++ b/documentation/advanced-features/opinions.md @@ -198,7 +198,7 @@ universally. Originally DNSControl implemented RFC 2317. In v5.0 we will adopt RFC 4183 as the default. A new function, -[REVCOMPAT()](language-reference/top-level-functions/REVCOMPAT.md), will be provided to enable backwards compatibility. +[REVCOMPAT()](../language-reference/top-level-functions/REVCOMPAT.md), will be provided to enable backwards compatibility. v4.x users can use the function to adopt the new behavior early. -See [REVCOMPAT()](language-reference/top-level-functions/REVCOMPAT.md) for details. +See [REVCOMPAT()](../language-reference/top-level-functions/REVCOMPAT.md) for details. diff --git a/documentation/ordering.md b/documentation/advanced-features/ordering.md similarity index 100% rename from documentation/ordering.md rename to documentation/advanced-features/ordering.md diff --git a/documentation/styleguide-code.md b/documentation/advanced-features/styleguide-code.md similarity index 100% rename from documentation/styleguide-code.md rename to documentation/advanced-features/styleguide-code.md diff --git a/documentation/styleguide-doc.md b/documentation/advanced-features/styleguide-doc.md similarity index 90% rename from documentation/styleguide-doc.md rename to documentation/advanced-features/styleguide-doc.md index dbbff9ead..d61c3b430 100644 --- a/documentation/styleguide-doc.md +++ b/documentation/advanced-features/styleguide-doc.md @@ -36,7 +36,7 @@ Within the git repo, docs are grouped: Files in the `documentation/language-reference/{record,domain,global}` subdirectories have a header at the top that is used to populate other systems. -Here's an example from [`A`](language-reference/domain-modifiers/A.md) +Here's an example from [`A`](../language-reference/domain-modifiers/A.md) ``` --- @@ -62,7 +62,7 @@ parameter_types: When you submit a GitHub pull request, you can view the result in advance. This allows you to check the impact of changes. -![](assets/styleguide-doc/pull-request-preview.webp) +![](../assets/styleguide-doc/pull-request-preview.webp) ### How to access preview links @@ -126,7 +126,7 @@ D("example.com", REG_NONE, DnsProvider(DNS_BIND), ``` {% endcode %} -[Source code](markdown-examples/code/dnsconfig-code-example-with-filename.md?plain=1) +[Source code](../markdown-examples/code/dnsconfig-code-example-with-filename.md?plain=1) Long example: (without filename) @@ -141,7 +141,7 @@ D("example.com", REG_NONE, DnsProvider(DNS_BIND), ``` {% endcode %} -[Source code](markdown-examples/code/dnsconfig-code-example-without-filename.md?plain=1) +[Source code](../markdown-examples/code/dnsconfig-code-example-without-filename.md?plain=1) ### Hint @@ -155,25 +155,25 @@ There are 4 different types of hints, and both inline content and formatting are **Info hints** are great for showing general information, or providing tips and tricks. {% endhint %} - [Source code](markdown-examples/hint/hint-info.md?plain=1) + [Source code](../markdown-examples/hint/hint-info.md?plain=1) {% hint style="success" %} **Success hints** are good for showing positive actions or achievements. {% endhint %} - [Source code](markdown-examples/hint/hint-success.md?plain=1) + [Source code](../markdown-examples/hint/hint-success.md?plain=1) {% hint style="warning" %} **Warning hints** are good for showing important information or non-critical warnings. {% endhint %} - [Source code](markdown-examples/hint/hint-warning.md?plain=1) + [Source code](../markdown-examples/hint/hint-warning.md?plain=1) {% hint style="danger" %} **Danger hints** are good for highlighting destructive actions or raising attention to critical information. {% endhint %} - [Source code](markdown-examples/hint/hint-danger.md?plain=1) + [Source code](../markdown-examples/hint/hint-danger.md?plain=1) {% hint style="info" %} ### This is a heading @@ -193,7 +193,7 @@ However, the first mention on a page should always be a link. Others are at the authors digression. ```markdown -The [`PTR`](language-reference/domain-modifiers/PTR.md) feature is helpful in LANs. +The [`PTR`](../language-reference/domain-modifiers/PTR.md) feature is helpful in LANs. ``` #### Mentioning functions from the Source code diff --git a/documentation/test-a-branch.md b/documentation/advanced-features/test-a-branch.md similarity index 100% rename from documentation/test-a-branch.md rename to documentation/advanced-features/test-a-branch.md diff --git a/documentation/testing-txt-records.md b/documentation/advanced-features/testing-txt-records.md similarity index 100% rename from documentation/testing-txt-records.md rename to documentation/advanced-features/testing-txt-records.md diff --git a/documentation/unittests.md b/documentation/advanced-features/unittests.md similarity index 100% rename from documentation/unittests.md rename to documentation/advanced-features/unittests.md diff --git a/documentation/writing-providers.md b/documentation/advanced-features/writing-providers.md similarity index 97% rename from documentation/writing-providers.md rename to documentation/advanced-features/writing-providers.md index 3229c8175..bd261378c 100644 --- a/documentation/writing-providers.md +++ b/documentation/advanced-features/writing-providers.md @@ -8,7 +8,7 @@ and the system takes care of the rest. Please do note that if you submit a new provider you will be assigned bugs related to the provider in the future (unless you designate someone else as the maintainer). More details -[here](provider/index.md). +[here](../provider/index.md). Please follow the [DNSControl Code Style Guide](styleguide-code.md) and the [DNSControl Documentation Style Guide](styleguide-doc.md). @@ -289,7 +289,7 @@ golint ./... ## Step 12: Dependencies -See [documentation/release-engineering.md](release-engineering.md) +See [documentation/release-engineering.md](../release/release-engineering.md) for tips about managing modules and checking for outdated dependencies. @@ -367,7 +367,7 @@ These are the things we'll be checking when you submit the PR. Please try to co 4. Verify you're using the most recent version of anything you import. (See [Step 12](#step-12-dependencies)) 5. Re-run the [integration test](#step-7-integration-test) one last time. * Post the results as a comment to your PR. -6. Re-read the [maintainer's responsibilities](provider/index.md#providers-with-contributor-support) bullet list. By submitting a provider you agree to maintain it, respond to bugs, periodically re-run the integration test to verify nothing has broken, and if we don't hear from you for 2 months we may disable the provider. +6. Re-read the [maintainer's responsibilities](../provider/index.md#providers-with-contributor-support) bullet list. By submitting a provider you agree to maintain it, respond to bugs, periodically re-run the integration test to verify nothing has broken, and if we don't hear from you for 2 months we may disable the provider. ## Step 15: Submit a PR diff --git a/documentation/check-creds.md b/documentation/commands/check-creds.md similarity index 81% rename from documentation/check-creds.md rename to documentation/commands/check-creds.md index 27564cff9..ca5406f2a 100644 --- a/documentation/check-creds.md +++ b/documentation/commands/check-creds.md @@ -18,7 +18,7 @@ ARGUMENTS: provider: The name of the provider (second parameter to NewDnsProvider() in dnsconfig.js) ``` -Starting in [v3.16](v316.md), "provider" is optional. If it is omitted (or the placeholder value `-` is used), the `TYPE` specified in `creds.json` will be used instead. A warning will be displayed with advice on how to remain compatible with v4.0. +Starting in [v3.16](../release/v316.md), "provider" is optional. If it is omitted (or the placeholder value `-` is used), the `TYPE` specified in `creds.json` will be used instead. A warning will be displayed with advice on how to remain compatible with v4.0. Starting in v4.0, the "provider" argument is expected to go away. @@ -28,7 +28,7 @@ Starting in v4.0, the "provider" argument is expected to go away. dnscontrol check-creds myr53 ROUTE53 ``` -Starting in [v3.16](v316.md): +Starting in [v3.16](../release/v316.md): ```shell dnscontrol check-creds myr53 diff --git a/documentation/colors.md b/documentation/commands/colors.md similarity index 100% rename from documentation/colors.md rename to documentation/commands/colors.md diff --git a/documentation/creds-json.md b/documentation/commands/creds-json.md similarity index 95% rename from documentation/creds-json.md rename to documentation/commands/creds-json.md index bc5a982b7..58ad56ab9 100644 --- a/documentation/creds-json.md +++ b/documentation/commands/creds-json.md @@ -48,11 +48,11 @@ Here's a sample file: The special subkey "TYPE" is used to indicate the provider type (NONE, CLOUDFLAREAPI, GCLOUD, etc). -Prior to [v3.16](v316.md), the provider type is specified as the second argument +Prior to [v3.16](../release/v316.md), the provider type is specified as the second argument to `NewRegistrar()` and `NewDnsProvider()` in `dnsconfig.js` or as a command-line argument in tools such as `dnscontrol get-zones`. -Starting in [v3.16](v316.md), `NewRegistrar()`, and `NewDnsProvider()` no longer +Starting in [v3.16](../release/v316.md), `NewRegistrar()`, and `NewDnsProvider()` no longer require the provider type to be specified. It may be specified for backwards compatibility, but a warning will be generated with a suggestion of how to upgrade to the 4.0 format. Likewise, @@ -132,7 +132,7 @@ Examples: ``` {% endcode %} -Starting with [v3.16](v316.md) use of an OLD format will trigger warnings with suggestions on how to adopt the NEW format. +Starting with [v3.16](../release/v316.md) use of an OLD format will trigger warnings with suggestions on how to adopt the NEW format. Starting with v4.0 support for the OLD format may be reported as an error. @@ -167,7 +167,7 @@ invalid. Perhaps you meant to specify a `-` on a command-line tool? The fix is to change the `TYPE` subkey entry in `creds.json` from `-` to a valid service provider identifier, as listed -in [the service provider list](provider/index.md). +in [the service provider list](../provider/index.md). ## Using a different file name diff --git a/documentation/fmt.md b/documentation/commands/fmt.md similarity index 100% rename from documentation/fmt.md rename to documentation/commands/fmt.md diff --git a/documentation/get-certs.md b/documentation/commands/get-certs.md similarity index 100% rename from documentation/get-certs.md rename to documentation/commands/get-certs.md diff --git a/documentation/get-zones.md b/documentation/commands/get-zones.md similarity index 96% rename from documentation/get-zones.md rename to documentation/commands/get-zones.md index da0ee5ce2..223dc9a7f 100644 --- a/documentation/get-zones.md +++ b/documentation/commands/get-zones.md @@ -65,7 +65,7 @@ provider: The name of the provider (second parameter to NewDnsProvider() in dnsc zone: One or more zones (domains) to download; or "all". ``` -As of [v3.16](v316.md), `provider` can be `-` to indicate that the provider name is listed in `creds.json` in the `TYPE` field. Doing this will be backwards compatible with an (otherwise) breaking change due in v4.0. +As of [v3.16](../release/v316.md), `provider` can be `-` to indicate that the provider name is listed in `creds.json` in the `TYPE` field. Doing this will be backwards compatible with an (otherwise) breaking change due in v4.0. As of v4.0 (BREAKING CHANGE), you must not specify `provider`. That value is found in the `TYPE` field of the credkey's `creds.json` file. For backwards compatibility, if the first `zone` is `-`, it will be skipped. @@ -99,7 +99,7 @@ dnscontrol get-zones --format=tsv bind BIND example.com dnscontrol get-zones --format=djs --out=draft.js glcoud GCLOUD example.com ``` -As of [v3.16](v316.md): +As of [v3.16](../release/v316.md): ```shell # NOTE: When "-" appears as the 2nd argument, it is assumed that the diff --git a/documentation/globalflags.md b/documentation/commands/globalflags.md similarity index 100% rename from documentation/globalflags.md rename to documentation/commands/globalflags.md diff --git a/documentation/preview-push.md b/documentation/commands/preview-push.md similarity index 98% rename from documentation/preview-push.md rename to documentation/commands/preview-push.md index 7cd28fd66..ef784eea0 100644 --- a/documentation/preview-push.md +++ b/documentation/commands/preview-push.md @@ -106,7 +106,7 @@ OPTIONS: * `--report name` * Write a machine-parseable report of corrections to the file named `name`. If no name is specified, no - report is generated. See [JSON Reports](json-reports.md) + report is generated. See [JSON Reports](../advanced-features/json-reports.md) ## cmode diff --git a/documentation/examples.md b/documentation/getting-started/examples.md similarity index 96% rename from documentation/examples.md rename to documentation/getting-started/examples.md index b8f440108..5b755172d 100644 --- a/documentation/examples.md +++ b/documentation/getting-started/examples.md @@ -51,7 +51,7 @@ D("example.com", REG_MY_PROVIDER, DnsProvider(DSP_R53), {% endcode %} {% hint style="info" %} -**NOTE**: The [`IP()`](language-reference/top-level-functions/IP.md) function doesn't currently support IPv6 (PRs welcome!). IPv6 addresses are strings. +**NOTE**: The [`IP()`](../language-reference/top-level-functions/IP.md) function doesn't currently support IPv6 (PRs welcome!). IPv6 addresses are strings. {% endhint %} {% code title="dnsconfig.js" %} ```javascript @@ -210,4 +210,4 @@ D("example.com", REG_NONE, DnsProvider(DSP_R53_MAIN), ### More advanced examples -See the [Code Tricks](code-tricks.md) page. +See the [Code Tricks](../advanced-features/code-tricks.md) page. diff --git a/documentation/getting-started.md b/documentation/getting-started/getting-started.md similarity index 95% rename from documentation/getting-started.md rename to documentation/getting-started/getting-started.md index b2dc81be9..5cc2596b4 100644 --- a/documentation/getting-started.md +++ b/documentation/getting-started/getting-started.md @@ -102,7 +102,7 @@ D("example.com", REG_NONE, DnsProvider(DNS_BIND), ``` {% endcode %} -Modify this file to match your particular providers and domains. See [the DNSConfig docs](js.md) and [the provider docs](provider/index.md) for more details. +Modify this file to match your particular providers and domains. See [the DNSConfig docs](../language-reference/js.md) and [the provider docs](../provider/index.md) for more details. Create a file called `creds.json` for storing provider configurations (API tokens and other account information). For example, to use both name.com and Cloudflare, you would have: @@ -295,7 +295,7 @@ $TTL 300 ``` You can change the "DEFAULT_NOT_SET" text by following the documentation -for the [BIND provider](provider/bind.md) to set +for the [BIND provider](../provider/bind.md) to set the "master" and "mbox" settings. Try that now. @@ -306,7 +306,7 @@ a real domain (or a test domain if you have one). Set up the provider: Add the providers's definition to `dnsconfig.js` and list any credentials in `creds.json`. Each provider is different. -See [the provider docs](provider/index.md) for +See [the provider docs](../provider/index.md) for specifics. Edit the domain: Add the `D()` entry for the domain, or repurpose @@ -322,7 +322,7 @@ The [Migrating](migrating.md) doc has advice about converting from other systems. You can manually create the `D()` statements, or you can generate them automatically using the -[dnscontrol get-zones](get-zones.md) +[dnscontrol get-zones](../commands/get-zones.md) command to import the zone from (most) providers and output it as code that can be added to `dnsconfig.js` and used with very little modification. @@ -337,5 +337,5 @@ If you are going to use this in production, we highly recommend the following: * Store the configuration files in Git. * Encrypt the `creds.json` file before storing it in Git. Do NOT store API keys or other credentials without encrypting them. -* Use a CI/CD tool like [GitLab](ci-cd-gitlab.md), Jenkins, CircleCI, [GitHub Actions](https://github.com/StackExchange/dnscontrol#via-github-actions-gha), etc. to automatically push DNS changes. +* Use a CI/CD tool like [GitLab](../advanced-features/ci-cd-gitlab.md), Jenkins, CircleCI, [GitHub Actions](https://github.com/StackExchange/dnscontrol#via-github-actions-gha), etc. to automatically push DNS changes. * Join the DNSControl community. File [issues](https://github.com/StackExchange/dnscontrol/issues) and [PRs](https://github.com/StackExchange/dnscontrol/pulls). diff --git a/documentation/migrating.md b/documentation/getting-started/migrating.md similarity index 98% rename from documentation/migrating.md rename to documentation/getting-started/migrating.md index 810c32928..d9c651b51 100644 --- a/documentation/migrating.md +++ b/documentation/getting-started/migrating.md @@ -38,7 +38,7 @@ hand, possibly with your text editor's search and replace functions. However, where's the fun in that? The `dnscontrol get-zones` subcommand -[documented here](get-zones.md) +[documented here](../commands/get-zones.md) can automate 90% of the conversion for you. It reads BIND-style zonefiles, or will use a providers API to gather the DNS records. It will then output the records in a variety of formats, including as a `D()` statement @@ -57,7 +57,7 @@ dnscontrol get-zones --format=js --out=draft.js bind BIND example.com This will read the file `zones/example.com.zone`. By default the system uses directory `zones` and file suffix `.zone`. You can modify this default -behaviour by configuring `creds.json` for BIND as described [here](provider/bind.md). +behaviour by configuring `creds.json` for BIND as described [here](../provider/bind.md). Add the contents of `draft.js` to `dnsconfig.js` and edit it as needed. diff --git a/documentation/typescript.md b/documentation/getting-started/typescript.md similarity index 100% rename from documentation/typescript.md rename to documentation/getting-started/typescript.md diff --git a/documentation/index.md b/documentation/index.md index 7bc87ca87..a5adcc17f 100644 --- a/documentation/index.md +++ b/documentation/index.md @@ -4,7 +4,7 @@ # Try It -Want to jump right in? Follow our [quick start tutorial](getting-started.md) on a new domain or [migrate](migrating.md) an existing one. Read the [language spec](js.md) for more info. +Want to jump right in? Follow our [quick start tutorial](getting-started/getting-started.md) on a new domain or [migrate](getting-started/migrating.md) an existing one. Read the [language spec](language-reference/js.md) for more info. # Use It @@ -16,13 +16,13 @@ Take advantage of the advanced features. Use macros and variables for easier upd * Eliminate vendor lock-in. Switch DNS providers easily, any time, with full fidelity. * Reduce points of failure: Easily maintain dual DNS providers and easily drop one that is down. * Supports 35+ [DNS Providers](provider/index.md) including [BIND](provider/bind.md), [AWS Route 53](provider/route53.md), [Google DNS](provider/gcloud.md), and [name.com](provider/namedotcom.md). -* [Apply CI/CD principles](ci-cd-gitlab.md) to DNS: Unit-tests, system-tests, automated deployment. +* [Apply CI/CD principles](advanced-features/ci-cd-gitlab.md) to DNS: Unit-tests, system-tests, automated deployment. * All the benefits of Git (or any VCS) for your DNS zone data. View history. Accept PRs. * Optimize DNS with [SPF optimizer](language-reference/domain-modifiers/SPF_BUILDER.md). Detect too many lookups. Flatten includes. * Runs on Linux, Windows, Mac, or any operating system supported by Go. * Enable/disable Cloudflare proxying (the "orange cloud" button) directly from your DNSControl files. -* [Assign an IP address to a constant](examples.md#variables-for-common-ip-addresses) and use the variable name throughout the configuration. Need to change the IP address globally? Just change the variable and "recompile". -* Keep similar domains in sync with transforms, [macros](examples.md#macro-to-for-repeated-records), and variables. +* [Assign an IP address to a constant](getting-started/examples.md#variables-for-common-ip-addresses) and use the variable name throughout the configuration. Need to change the IP address globally? Just change the variable and "recompile". +* Keep similar domains in sync with transforms, [macros](getting-started/examples.md#macro-to-for-repeated-records), and variables. {% endhint %} # Get Involved diff --git a/documentation/language-reference/domain-modifiers/DnsProvider.md b/documentation/language-reference/domain-modifiers/DnsProvider.md index 075d12b0d..fe6def9f3 100644 --- a/documentation/language-reference/domain-modifiers/DnsProvider.md +++ b/documentation/language-reference/domain-modifiers/DnsProvider.md @@ -20,7 +20,7 @@ Using `0` for nsCount means "do not fetch nameservers from this domain, or give Using a different number, ie: `DnsProvider("name",2)`, means "fetch all nameservers from this provider, but limit it to this many. -See [this page](../../nameservers.md) for a detailed explanation of how DNSControl handles nameservers and NS records. +See [this page](../../advanced-features/nameservers.md) for a detailed explanation of how DNSControl handles nameservers and NS records. If a domain (`D()`) does not include any `DnsProvider()` functions, the DNS records will not be modified. In fact, if you want to control diff --git a/documentation/language-reference/domain-modifiers/NAMESERVER.md b/documentation/language-reference/domain-modifiers/NAMESERVER.md index 5538766db..ec33f74f5 100644 --- a/documentation/language-reference/domain-modifiers/NAMESERVER.md +++ b/documentation/language-reference/domain-modifiers/NAMESERVER.md @@ -18,7 +18,7 @@ This is different than the [`NS()`](NS.md) function, which inserts NS records in the current zone and accepts a label. [`NS()`](NS.md) is for downward delegations. `NAMESERVER()` is for informing upstream delegations. -For more information, refer to [this page](../../nameservers.md). +For more information, refer to [this page](../../advanced-features/nameservers.md). {% code title="dnsconfig.js" %} ```javascript diff --git a/documentation/js.md b/documentation/language-reference/js.md similarity index 100% rename from documentation/js.md rename to documentation/language-reference/js.md diff --git a/documentation/language-reference/top-level-functions/NewDnsProvider.md b/documentation/language-reference/top-level-functions/NewDnsProvider.md index e249cb784..4d93796b9 100644 --- a/documentation/language-reference/top-level-functions/NewDnsProvider.md +++ b/documentation/language-reference/top-level-functions/NewDnsProvider.md @@ -17,13 +17,13 @@ answers on port 53 to queries related to the zone). * `name` must match the name of an entry in `creds.json`. * `type` specifies a valid DNS provider type identifier listed on the [provider page](../../provider/index.md). - * Starting with [v3.16](../../v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). + * Starting with [v3.16](../../release/v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). * Starting with v4.0, specifying the type may be an error. Please add the `TYPE` field to `creds.json` and remove this parameter from `dnsconfig.js` to prepare. * `meta` is a way to send additional parameters to the provider. It is optional and only certain providers use it. See the [individual provider docs](../../provider/index.md) for details. This function will return an opaque string that should be assigned to a variable name for use in [D](D.md) directives. -Prior to [v3.16](../../v316.md): +Prior to [v3.16](../../release/v316.md): {% code title="dnsconfig.js" %} ```javascript @@ -36,7 +36,7 @@ D("example.com", REG_MYNDC, DnsProvider(DNS_MYAWS), ``` {% endcode %} -In [v3.16](../../v316.md) and later: +In [v3.16](../../release/v316.md) and later: {% code title="dnsconfig.js" %} ```javascript diff --git a/documentation/language-reference/top-level-functions/NewRegistrar.md b/documentation/language-reference/top-level-functions/NewRegistrar.md index 3a9826ed7..89d564308 100644 --- a/documentation/language-reference/top-level-functions/NewRegistrar.md +++ b/documentation/language-reference/top-level-functions/NewRegistrar.md @@ -17,13 +17,13 @@ nameservers for the domain). DNSControl only manages the delegation. * `name` must match the name of an entry in `creds.json`. * `type` specifies a valid DNS provider type identifier listed on the [provider page](../../provider/index.md). - * Starting with [v3.16](../../v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). + * Starting with [v3.16](../../release/v316.md), the type is optional. If it is absent, the `TYPE` field in `creds.json` is used instead. You can leave it out. (Thanks to JavaScript magic, you can leave it out even when there are more fields). * Starting with v4.0, specifying the type may be an error. Please add the `TYPE` field to `creds.json` and remove this parameter from `dnsconfig.js` to prepare. * `meta` is a way to send additional parameters to the provider. It is optional and only certain providers use it. See the [individual provider docs](../../provider/index.md) for details. This function will return an opaque string that should be assigned to a variable name for use in [D](D.md) directives. -Prior to [v3.16](../../v316.md): +Prior to [v3.16](../../release/v316.md): {% code title="dnsconfig.js" %} ```javascript @@ -36,7 +36,7 @@ D("example.com", REG_MYNDC, DnsProvider(DNS_MYAWS), ``` {% endcode %} -In [v3.16](../../v316.md) and later: +In [v3.16](../../release/v316.md) and later: {% code title="dnsconfig.js" %} ```javascript diff --git a/documentation/language-reference/top-level-functions/REVCOMPAT.md b/documentation/language-reference/top-level-functions/REVCOMPAT.md index 69a32404c..e26b17280 100644 --- a/documentation/language-reference/top-level-functions/REVCOMPAT.md +++ b/documentation/language-reference/top-level-functions/REVCOMPAT.md @@ -33,7 +33,7 @@ error. v4 defaults to RFC 2317. In v5.0 the default will change to RFC 4183. `REVCOMPAT()` is provided for those that wish to retain the old behavior. -For more information, see [Opinion #9](../../opinions.md#opinion-9-rfc-4183-is-better-than-rfc-2317). +For more information, see [Opinion #9](../../advanced-features/opinions.md#opinion-9-rfc-4183-is-better-than-rfc-2317). # Transition plan diff --git a/documentation/why-the-dot.md b/documentation/language-reference/why-the-dot.md similarity index 100% rename from documentation/why-the-dot.md rename to documentation/language-reference/why-the-dot.md diff --git a/documentation/provider/index.md b/documentation/provider/index.md index 3e56840db..800aa95e4 100644 --- a/documentation/provider/index.md +++ b/documentation/provider/index.md @@ -74,8 +74,8 @@ If a feature is definitively not supported for whatever reason, we would also li ### Provider API -| Provider name | [Concurrency Verified](../concurrency-verified.md) | [dual host](../dual-host.md) | create-domains | get-zones | -| ------------- | -------------------------------------------------- | ---------------------------- | -------------- | --------- | +| Provider name | [Concurrency Verified](../advanced-features/concurrency-verified.md) | [dual host](../advanced-features/dual-host.md) | create-domains | get-zones | +| ------------- | -------------------------------------------------------------------- | ---------------------------------------------- | -------------- | --------- | | [`AKAMAIEDGEDNS`](akamaiedgedns.md) | ❔ | ✅ | ✅ | ✅ | | [`AUTODNS`](autodns.md) | ✅ | ❌ | ❌ | ✅ | | [`AXFRDDNS`](axfrddns.md) | ✅ | ❌ | ❌ | ❌ | @@ -440,7 +440,7 @@ code to support this provider, we'd be glad to help in any way. #### Q: Why are the above GitHub issues marked "closed"? -A: Following [the bug triage process](../bug-triage.md), the request +A: Following [the bug triage process](../advanced-features/bug-triage.md), the request is closed once it is added to this list. If someone chooses to implement the provider, they re-open the issue. @@ -453,5 +453,5 @@ DNSControl tries to make writing a provider as easy as possible. DNSControl does most of the work for you, you only have to write code to authenticate, download DNS records, and perform create/modify/delete operations on those records. Please read the directions for [Writing new DNS -providers](../writing-providers.md). The DNS maintainers will gladly +providers](../advanced-features/writing-providers.md). The DNS maintainers will gladly coach you through the process. diff --git a/documentation/release-engineering.md b/documentation/release/release-engineering.md similarity index 100% rename from documentation/release-engineering.md rename to documentation/release/release-engineering.md diff --git a/documentation/v316.md b/documentation/release/v316.md similarity index 100% rename from documentation/v316.md rename to documentation/release/v316.md