diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 28d756c..2e59376 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,44 +1,39 @@ # This GitHub action can publish assets for release when a tag is created. # Currently its setup to run on any tag that matches the pattern "v*" (ie. v0.1.0). # -# This uses an action (hashicorp/ghaction-import-gpg) that assumes you set your -# private key in the `GPG_PRIVATE_KEY` secret and passphrase in the `PASSPHRASE` +# This uses an action (hashicorp/ghaction-import-gpg) that assumes you set your +# private key in the `GPG_PRIVATE_KEY` secret and passphrase in the `GPG_PASSPHRASE` # secret. If you would rather own your own GPG handling, please fork this action # or use an alternative one for key handling. # -# You will need to pass the `--batch` flag to `gpg` in your signing step +# You will need to pass the `--batch` flag to `gpg` in your signing step # in `goreleaser` to indicate this is being used in a non-interactive mode. # name: release on: push: tags: - - 'v*' + - "v*" jobs: goreleaser: runs-on: ubuntu-latest steps: - - - name: Checkout + - name: Checkout uses: actions/checkout@v2.3.4 - - - name: Unshallow + - name: Unshallow run: git fetch --prune --unshallow - - - name: Set up Go + - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.14 - - - name: Import GPG key + - name: Import GPG key id: import_gpg uses: hashicorp/ghaction-import-gpg@v2.1.0 env: # These secrets will need to be configured for the repository: GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} - PASSPHRASE: ${{ secrets.PASSPHRASE }} - - - name: Run GoReleaser + PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + - name: Run GoReleaser uses: goreleaser/goreleaser-action@v2.5.0 with: version: latest diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dffa811..1d5d317 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,12 +5,12 @@ name: Tests on: pull_request: paths-ignore: - - 'README.md' + - "README.md" push: paths-ignore: - - 'README.md' + - "README.md" # For systems with an upstream API that could drift unexpectedly (like most SaaS systems, etc.), - # we recommend testing at a regular interval not necessarily tied to code changes. This will + # we recommend testing at a regular interval not necessarily tied to code changes. This will # ensure you are alerted to something breaking due to an API change, even if the code did not # change. # schedule: @@ -22,23 +22,22 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: + - name: Set up Go + uses: actions/setup-go@v2.1.3 + with: + go-version: "1.16" + id: go - - name: Set up Go - uses: actions/setup-go@v2.1.3 - with: - go-version: '1.15' - id: go + - name: Check out code into the Go module directory + uses: actions/checkout@v2.3.4 - - name: Check out code into the Go module directory - uses: actions/checkout@v2.3.4 + - name: Get dependencies + run: | + go mod download - - name: Get dependencies - run: | - go mod download - - - name: Build - run: | - go build -v . + - name: Build + run: | + go build -v . # run acceptance tests in a matrix with Terraform core versions test: @@ -51,34 +50,32 @@ jobs: matrix: # list whatever Terraform versions here you would like to support terraform: - - '0.12.29' - - '0.13.4' - - '0.14.0-beta2' + - "0.15" + - "1.0" steps: + - name: Set up Go + uses: actions/setup-go@v2.1.3 + with: + go-version: "1.16" + id: go - - name: Set up Go - uses: actions/setup-go@v2.1.3 - with: - go-version: '1.15' - id: go + - name: Check out code into the Go module directory + uses: actions/checkout@v2.3.4 - - name: Check out code into the Go module directory - uses: actions/checkout@v2.3.4 + - name: Get dependencies + run: | + go mod download - - name: Get dependencies - run: | - go mod download - - - name: TF acceptance tests - timeout-minutes: 10 - env: - TF_ACC: "1" - TF_ACC_TERRAFORM_VERSION: ${{ matrix.terraform }} + - name: TF acceptance tests + timeout-minutes: 10 + env: + TF_ACC: "1" + TF_ACC_TERRAFORM_VERSION: ${{ matrix.terraform }} - # Set whatever additional acceptance test env vars here. You can - # optionally use data from your repository secrets using the - # following syntax: - # SOME_VAR: ${{ secrets.SOME_VAR }} + # Set whatever additional acceptance test env vars here. You can + # optionally use data from your repository secrets using the + # following syntax: + # SOME_VAR: ${{ secrets.SOME_VAR }} - run: | - go test -v -cover ./internal/provider/ \ No newline at end of file + run: | + go test -v -cover ./internal/provider/ diff --git a/docs/index.md b/docs/index.md index b179887..9de0525 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,20 +1,29 @@ --- -# generated by https://github.com/hashicorp/terraform-plugin-docs -page_title: "gpg Provider" +page_title: "GPG Provider" subcategory: "" description: |- - + The GPG provider provides resources to generate a private/public key pair. --- -# gpg Provider - +# GPG Provider +The GPG provider provides resources to generate a private/public key pair. ## Example Usage ```terraform -provider "gpg" {} +terraform { + required_providers { + gpg = { + source = "Olivr/gpg" + } + } +} ``` - -## Schema +```terraform +resource "gpg_private_key" "key" { + name = "John Doe" + email = "john@doe.com" +} +``` diff --git a/docs/resources/private_key.md b/docs/resources/private_key.md index fcb5e96..78fe1b4 100644 --- a/docs/resources/private_key.md +++ b/docs/resources/private_key.md @@ -3,12 +3,12 @@ page_title: "gpg_private_key Resource - terraform-provider-gpg" subcategory: "" description: |- - The resource private_key generates a GPG private/public key pair. + The resource private_key generates a GPG private/public key pair in ASCII-armored format. --- # gpg_private_key (Resource) -The resource `private_key` generates a GPG private/public key pair. +The resource `private_key` generates a GPG private/public key pair in ASCII-armored format. ## Example Usage @@ -30,12 +30,12 @@ resource "gpg_private_key" "key" { ### Optional - **id** (String) The ID of this resource. -- **rsa_bits** (Number) Number of bits to use when generating RSA key +- **rsa_bits** (Number) Number of bits to use when generating RSA key. ### Read-Only -- **fingerprint** (String) -- **private_key** (String, Sensitive) -- **public_key** (String) +- **fingerprint** (String) Public key fingerprint. +- **private_key** (String, Sensitive) Generated private key in ASCII-armored format. +- **public_key** (String) Generated public key in ASCII-armored format. diff --git a/examples/provider/provider.tf b/examples/provider/provider.tf index 63fb29b..830720f 100644 --- a/examples/provider/provider.tf +++ b/examples/provider/provider.tf @@ -1 +1,7 @@ -provider "gpg" {} \ No newline at end of file +terraform { + required_providers { + gpg = { + source = "Olivr/gpg" + } + } +} \ No newline at end of file diff --git a/internal/provider/resource_private_key.go b/internal/provider/resource_private_key.go index fa65dbf..430b7e1 100644 --- a/internal/provider/resource_private_key.go +++ b/internal/provider/resource_private_key.go @@ -11,7 +11,7 @@ import ( func resourcePrivateKey() *schema.Resource { return &schema.Resource{ // This description is used by the documentation generator and the language server. - Description: "The resource `private_key` generates a GPG private/public key pair.", + Description: "The resource `private_key` generates a GPG private/public key pair in ASCII-armored format.", CreateContext: resourcePrivateKeyCreate, ReadContext: resourcePrivateKeyRead, DeleteContext: resourcePrivateKeyDelete, @@ -34,25 +34,28 @@ func resourcePrivateKey() *schema.Resource { "rsa_bits": { Type: schema.TypeInt, Optional: true, - Description: "Number of bits to use when generating RSA key", + Description: "Number of bits to use when generating RSA key.", ForceNew: true, Default: 4096, }, "private_key": { - Type: schema.TypeString, - Computed: true, - Sensitive: true, + Type: schema.TypeString, + Description: "Generated private key in ASCII-armored format.", + Computed: true, + Sensitive: true, }, "public_key": { - Type: schema.TypeString, - Computed: true, + Type: schema.TypeString, + Description: "Generated public key in ASCII-armored format.", + Computed: true, }, "fingerprint": { - Type: schema.TypeString, - Computed: true, + Type: schema.TypeString, + Description: "Public key fingerprint.", + Computed: true, }, }, } diff --git a/templates/index.md.tmpl b/templates/index.md.tmpl new file mode 100644 index 0000000..5d1ce7a --- /dev/null +++ b/templates/index.md.tmpl @@ -0,0 +1,16 @@ +--- +page_title: "GPG Provider" +subcategory: "" +description: |- + The GPG provider provides resources to generate a private/public key pair. +--- + +# GPG Provider + +The GPG provider provides resources to generate a private/public key pair. + +## Example Usage + +{{tffile "examples/provider/provider.tf"}} + +{{tffile "examples/resources/gpg_private_key/resource.tf"}}