initial commit
This commit is contained in:
55
.ci-mgmt.yaml
Normal file
55
.ci-mgmt.yaml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# REQUIRED: provider is the name of the provider without the pulumi-prefix e.g. "aws".
|
||||||
|
provider: xyz
|
||||||
|
|
||||||
|
# The name of the GitHub organization or username the repository lives in. Defaults to 'pulumi'
|
||||||
|
organization: pulumi
|
||||||
|
|
||||||
|
# The external template only includes workflows relevant for non-Pulumi managed providers.
|
||||||
|
template: external-bridged-provider
|
||||||
|
|
||||||
|
# The name of the GitHub organisation or username where the upstream terraform provider lives.
|
||||||
|
upstreamProviderOrg: pulumi
|
||||||
|
|
||||||
|
# major version of the current provider - used in make files
|
||||||
|
# This should always be set by all providers as this is key to go module paths.
|
||||||
|
major-version: 1
|
||||||
|
|
||||||
|
# Enable using the terraform converter for example generation.
|
||||||
|
pulumiConvert: 1
|
||||||
|
|
||||||
|
# Set a GitHub username here for automatic upgrade PRs to be assigned to.
|
||||||
|
# pr-assign: pulumi-bot
|
||||||
|
|
||||||
|
# List of pulumi plugins to install in the "install_plugins" makefile target. Will include at least the terraform plugin
|
||||||
|
# Should be set for all bridged providers
|
||||||
|
plugins:
|
||||||
|
- name: terraform
|
||||||
|
version: "1.0.16"
|
||||||
|
kind: converter
|
||||||
|
|
||||||
|
# providerDefaultBranch is used to customise the default branch for the repo
|
||||||
|
providerDefaultBranch: main
|
||||||
|
|
||||||
|
# Explicit list of languages to support for SDKs. Java is currently excluded because it doesn't yet work well for non-internal providers.
|
||||||
|
languages:
|
||||||
|
- dotnet
|
||||||
|
- go
|
||||||
|
- nodejs
|
||||||
|
- python
|
||||||
|
|
||||||
|
# Disable Java publishing and pushing the provider binary to the CDN as these only work internally within Pulumi.
|
||||||
|
publish:
|
||||||
|
sdk: "all,!java"
|
||||||
|
cdn: false
|
||||||
|
|
||||||
|
# Enables automatic generation of basic docs pages for the registry.
|
||||||
|
# registryDocs: true
|
||||||
|
|
||||||
|
# Disables a pulumi-internal-only step for running create_docs_build during the release
|
||||||
|
publishRegistry: false
|
||||||
|
|
||||||
|
# For additional options, please refer to the defaults set in ci-mgmt:
|
||||||
|
# https://github.com/pulumi/ci-mgmt/blob/master/provider-ci/internal/pkg/templates/defaults.config.yaml
|
||||||
|
|
||||||
|
toolVersions:
|
||||||
|
pulumictl: "v0.0.48"
|
||||||
12
.devcontainer/Dockerfile
Normal file
12
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM jetpackio/devbox:latest
|
||||||
|
|
||||||
|
# Installing your devbox project
|
||||||
|
WORKDIR /code
|
||||||
|
COPY devbox.json devbox.json
|
||||||
|
COPY devbox.lock devbox.lock
|
||||||
|
RUN sudo chown -R "${DEVBOX_USER}:${DEVBOX_USER}" /code
|
||||||
|
|
||||||
|
|
||||||
|
RUN devbox run -- echo "Installed Packages."
|
||||||
|
|
||||||
|
RUN devbox shellenv --init-hook >> ~/.profile
|
||||||
16
.devcontainer/devcontainer.json
Normal file
16
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "Devbox Remote Container",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "./Dockerfile",
|
||||||
|
"context": ".."
|
||||||
|
},
|
||||||
|
"customizations": {
|
||||||
|
"vscode": {
|
||||||
|
"settings": {},
|
||||||
|
"extensions": [
|
||||||
|
"jetpack-io.devbox"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"remoteUser": "devbox"
|
||||||
|
}
|
||||||
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
sdk/**/* linguist-generated=true
|
||||||
28
.github/actions/download-prerequisites/action.yml
vendored
Normal file
28
.github/actions/download-prerequisites/action.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
name: Download the code generator binary
|
||||||
|
description: Downloads the code generator binary to `bin/`.
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Download the prerequisites bin
|
||||||
|
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
|
||||||
|
with:
|
||||||
|
name: prerequisites-bin
|
||||||
|
path: bin
|
||||||
|
|
||||||
|
- name: Restore executable permissions
|
||||||
|
shell: bash
|
||||||
|
run: chmod +x $(< bin/executables.txt)
|
||||||
|
|
||||||
|
- name: Remove executables list
|
||||||
|
shell: bash
|
||||||
|
run: rm bin/executables.txt
|
||||||
|
|
||||||
|
- name: Download schema-embed.json
|
||||||
|
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
|
||||||
|
with:
|
||||||
|
# Use a pattern to avoid failing if the artifact doesn't exist
|
||||||
|
pattern: schema-embed.*
|
||||||
|
# Avoid creating directories for each artifact
|
||||||
|
merge-multiple: true
|
||||||
|
path: provider/cmd/pulumi-resource-xyz
|
||||||
23
.github/actions/download-provider/action.yml
vendored
Normal file
23
.github/actions/download-provider/action.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
name: Download the provider binary
|
||||||
|
description: Downloads the provider binary to `bin/`.
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Download pulumi-resource-xyz
|
||||||
|
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
|
||||||
|
with:
|
||||||
|
pattern: pulumi-resource-xyz-*-linux-amd64.tar.gz
|
||||||
|
path: ${{ github.workspace }}/bin
|
||||||
|
merge-multiple: true
|
||||||
|
|
||||||
|
- name: Untar pulumi-resource-xyz
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
tar -zxf ${{ github.workspace }}/bin/*amd64.tar.gz -C ${{ github.workspace}}/bin
|
||||||
|
|
||||||
|
- name: Mark pulumi-resource-xyz as executable
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
find ${{ github.workspace }} -name "pulumi-*-xyz" -print -exec chmod +x {} \;
|
||||||
19
.github/actions/download-sdk/action.yml
vendored
Normal file
19
.github/actions/download-sdk/action.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: Download SDK asset
|
||||||
|
description: Restores the SDK asset for a language.
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
language:
|
||||||
|
required: true
|
||||||
|
description: One of nodejs, python, dotnet, go, java
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Download ${{ inputs.language }} SDK
|
||||||
|
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
|
||||||
|
with:
|
||||||
|
name: ${{ inputs.language }}-sdk.tar.gz
|
||||||
|
path: ${{ github.workspace}}/sdk/
|
||||||
|
- name: Uncompress SDK folder
|
||||||
|
shell: bash
|
||||||
|
run: tar -zxf ${{ github.workspace }}/sdk/${{ inputs.language }}.tar.gz -C ${{ github.workspace }}/sdk/${{ inputs.language }}
|
||||||
17
.github/actions/download-tfgen/action.yml
vendored
Normal file
17
.github/actions/download-tfgen/action.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
name: Download the tfgen binary
|
||||||
|
description: Downloads the tfgen binary to `bin/`.
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Download pulumi-tfgen-xyz
|
||||||
|
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||||
|
with:
|
||||||
|
name: pulumi-tfgen-xyz
|
||||||
|
path: ${{ github.workspace }}/bin
|
||||||
|
|
||||||
|
- name: Ensure pulumi-tfgen-xyz is executable
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
find ${{ github.workspace }} -name "pulumi-*-xyz" -print -exec chmod +x {} \;
|
||||||
91
.github/actions/setup-tools/action.yml
vendored
Normal file
91
.github/actions/setup-tools/action.yml
vendored
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
name: Setup tools
|
||||||
|
description: Installs Go, Pulumi, pulumictl, schema-tools, Node.JS, Python, dotnet and Java.
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
tools:
|
||||||
|
description: |
|
||||||
|
Comma separated list of tools to install. The default of "all" installs all tools. Available tools are:
|
||||||
|
go
|
||||||
|
pulumicli
|
||||||
|
pulumictl
|
||||||
|
schema-tools
|
||||||
|
nodejs
|
||||||
|
python
|
||||||
|
dotnet
|
||||||
|
java
|
||||||
|
default: all
|
||||||
|
cache-go:
|
||||||
|
description: |
|
||||||
|
Whether to enable the GitHub cache for Go. Appropriate for disabling in
|
||||||
|
smaller jobs that typically completely before the "real" job has an
|
||||||
|
opportunity to populate the cache.
|
||||||
|
default: "true"
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Install Go
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'go')
|
||||||
|
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5
|
||||||
|
with:
|
||||||
|
go-version: "1.21.x"
|
||||||
|
cache-dependency-path: |
|
||||||
|
provider/*.sum
|
||||||
|
upstream/*.sum
|
||||||
|
sdk/go/*.sum
|
||||||
|
sdk/*.sum
|
||||||
|
*.sum
|
||||||
|
# TODO(https://github.com/actions/setup-go/issues/316): Restore but don't save the cache.
|
||||||
|
cache: ${{ inputs.cache-go }}
|
||||||
|
|
||||||
|
- name: Install pulumictl
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'pulumictl')
|
||||||
|
uses: jaxxstorm/action-install-gh-release@4304621e8c48d66093a8a214af5d5b5bc3b3d943 # v2.0.0
|
||||||
|
with:
|
||||||
|
tag: v0.0.48
|
||||||
|
repo: pulumi/pulumictl
|
||||||
|
|
||||||
|
- name: Install Pulumi CLI
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'pulumicli')
|
||||||
|
uses: pulumi/actions@9519177da243fd32cab35cdbf19cce1ab7472fcc # v6
|
||||||
|
with:
|
||||||
|
pulumi-version: "dev"
|
||||||
|
|
||||||
|
- name: Install Schema Tools
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'schema-tools')
|
||||||
|
uses: jaxxstorm/action-install-gh-release@4304621e8c48d66093a8a214af5d5b5bc3b3d943 # v2.0.0
|
||||||
|
with:
|
||||||
|
repo: pulumi/schema-tools
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'nodejs')
|
||||||
|
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||||
|
with:
|
||||||
|
node-version: 20.x
|
||||||
|
registry-url: https://registry.npmjs.org
|
||||||
|
|
||||||
|
- name: Setup DotNet
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'dotnet')
|
||||||
|
uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1
|
||||||
|
with:
|
||||||
|
dotnet-version: 8.0.x
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'python')
|
||||||
|
uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
|
||||||
|
with:
|
||||||
|
python-version: 3.11.8
|
||||||
|
|
||||||
|
- name: Setup Java
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'java')
|
||||||
|
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
|
||||||
|
with:
|
||||||
|
cache: gradle
|
||||||
|
distribution: temurin
|
||||||
|
java-version: 11
|
||||||
|
|
||||||
|
- name: Setup Gradle
|
||||||
|
if: inputs.tools == 'all' || contains(inputs.tools, 'java')
|
||||||
|
uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3
|
||||||
|
with:
|
||||||
|
gradle-version: 7.6
|
||||||
15
.github/actions/upload-bin/action.yml
vendored
Normal file
15
.github/actions/upload-bin/action.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
name: Upload bin assets
|
||||||
|
description: Uploads the provider and tfgen binaries to `bin/`.
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Tar provider binaries
|
||||||
|
shell: bash
|
||||||
|
run: tar -zcf ${{ github.workspace }}/bin/provider.tar.gz -C ${{ github.workspace }}/bin/ pulumi-resource-xyz pulumi-tfgen-xyz
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
|
||||||
|
with:
|
||||||
|
name: xyz-provider.tar.gz
|
||||||
|
path: ${{ github.workspace }}/bin/provider.tar.gz
|
||||||
|
retention-days: 30
|
||||||
23
.github/actions/upload-prerequisites/action.yml
vendored
Normal file
23
.github/actions/upload-prerequisites/action.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
name: Upload SDK asset
|
||||||
|
description: Upload the SDK for a specific language as an asset for the workflow.
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Capture executable permissions
|
||||||
|
shell: bash
|
||||||
|
run: find bin -type f -executable > bin/executables.txt
|
||||||
|
|
||||||
|
- name: Upload prerequisites bin
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
with:
|
||||||
|
name: prerequisites-bin
|
||||||
|
path: bin/*
|
||||||
|
retention-days: 30
|
||||||
|
|
||||||
|
- name: Upload schema-embed.json
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
with:
|
||||||
|
name: schema-embed.json
|
||||||
|
path: provider/cmd/pulumi-resource-xyz/schema-embed.json
|
||||||
|
retention-days: 30
|
||||||
20
.github/actions/upload-sdk/action.yml
vendored
Normal file
20
.github/actions/upload-sdk/action.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Upload SDK asset
|
||||||
|
description: Upload the SDK for a specific language as an asset for the workflow.
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
language:
|
||||||
|
required: true
|
||||||
|
description: One of nodejs, python, dotnet, go, java
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Compress SDK folder
|
||||||
|
shell: bash
|
||||||
|
run: tar -zcf sdk/${{ inputs.language }}.tar.gz -C sdk/${{ inputs.language }} .
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
with:
|
||||||
|
name: ${{ inputs.language }}-sdk.tar.gz
|
||||||
|
path: ${{ github.workspace}}/sdk/${{ inputs.language }}.tar.gz
|
||||||
|
retention-days: 30
|
||||||
97
.github/workflows/build_provider.yml
vendored
Normal file
97
.github/workflows/build_provider.yml
vendored
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: "Build Provider"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: Version of the provider to build
|
||||||
|
matrix:
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: |
|
||||||
|
{
|
||||||
|
"platform": [
|
||||||
|
{"os": "linux", "arch": "amd64"},
|
||||||
|
{"os": "linux", "arch": "arm64"},
|
||||||
|
{"os": "darwin", "arch": "amd64"},
|
||||||
|
{"os": "darwin", "arch": "arm64"},
|
||||||
|
{"os": "windows", "arch": "amd64"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_provider:
|
||||||
|
name: Build ${{ matrix.platform.os }}-${{ matrix.platform.arch }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
PROVIDER_VERSION: ${{ inputs.version }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
matrix: ${{ fromJSON(inputs.matrix) }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
# Without ldid cross-compiling Node binaries on a Linux worker intended to work on darwin-arm64 fails to sign the
|
||||||
|
# binaries properly and they do not work as expected. See https://github.com/pulumi/pulumi-awsx/issues/1490
|
||||||
|
- uses: MOZGIII/install-ldid-action@v1
|
||||||
|
with:
|
||||||
|
tag: v2.1.5-procursus2
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumictl, go
|
||||||
|
# use per-platform/arch caches instead since we are doing cross-builds
|
||||||
|
cache-go: false
|
||||||
|
# Based on https://github.com/actions/cache/blob/main/examples.md#go---modules
|
||||||
|
- name: Get GOCACHE
|
||||||
|
id: gocache
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "path=$(go env GOCACHE)" >> "${GITHUB_OUTPUT}"
|
||||||
|
- name: Get GOMODCACHE
|
||||||
|
id: gomodcache
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "path=$(go env GOMODCACHE)" >> "${GITHUB_OUTPUT}"
|
||||||
|
- name: Go Cache
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
${{ steps.gocache.outputs.path }}
|
||||||
|
${{ steps.gomodcache.outputs.path }}
|
||||||
|
key: go-provider-${{ matrix.platform.os }}-${{ matrix.platform.arch }}-${{ hashFiles('provider/go.sum') }}
|
||||||
|
restore-keys: |
|
||||||
|
go-provider-${{ matrix.platform.os }}-${{ matrix.platform.arch }}-
|
||||||
|
- name: Prepare local workspace before restoring previously built
|
||||||
|
run: make prepare_local_workspace
|
||||||
|
- name: Restore prerequisites
|
||||||
|
uses: ./.github/actions/download-prerequisites
|
||||||
|
- name: Restore makefile progress
|
||||||
|
# This mirrors the targets completed in the prerequisites job
|
||||||
|
run: make --touch provider schema
|
||||||
|
|
||||||
|
- name: Build provider
|
||||||
|
run: make "provider-${{ matrix.platform.os }}-${{ matrix.platform.arch }}"
|
||||||
|
env:
|
||||||
|
AZURE_SIGNING_CLIENT_ID: ${{ secrets.AZURE_SIGNING_CLIENT_ID }}
|
||||||
|
AZURE_SIGNING_CLIENT_SECRET: ${{ secrets.AZURE_SIGNING_CLIENT_SECRET }}
|
||||||
|
AZURE_SIGNING_TENANT_ID: ${{ secrets.AZURE_SIGNING_TENANT_ID }}
|
||||||
|
AZURE_SIGNING_KEY_VAULT_URI: ${{ secrets.AZURE_SIGNING_KEY_VAULT_URI }}
|
||||||
|
SKIP_SIGNING: ${{ secrets.AZURE_SIGNING_CLIENT_ID == '' && secrets.AZURE_SIGNING_CLIENT_SECRET == '' && secrets.AZURE_SIGNING_TENANT_ID == '' && secrets.AZURE_SIGNING_KEY_VAULT_URI == '' }}
|
||||||
|
|
||||||
|
- name: Package provider
|
||||||
|
run: make provider_dist-${{ matrix.platform.os }}-${{ matrix.platform.arch }}
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
with:
|
||||||
|
name: pulumi-resource-xyz-v${{ inputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz
|
||||||
|
path: bin/pulumi-resource-xyz-v${{ inputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz
|
||||||
|
retention-days: 30
|
||||||
124
.github/workflows/build_sdk.yml
vendored
Normal file
124
.github/workflows/build_sdk.yml
vendored
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: "Build SDK"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
PROVIDER_VERSION: ${{ inputs.version }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build_sdk:
|
||||||
|
name: build_sdk
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
# We normally fail fast unless this is a PR from Renovate in which case
|
||||||
|
# we'll always build all SDKs in case there are any changes to commit.
|
||||||
|
fail-fast: ${{ ! contains(github.actor, 'renovate') }}
|
||||||
|
matrix:
|
||||||
|
language:
|
||||||
|
- dotnet
|
||||||
|
- go
|
||||||
|
- nodejs
|
||||||
|
- python
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Cache examples generation
|
||||||
|
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
.pulumi/examples-cache
|
||||||
|
key: ${{ runner.os }}-${{ hashFiles('provider/go.sum') }}
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumictl, pulumicli, ${{ matrix.language }}
|
||||||
|
- name: Prepare local workspace
|
||||||
|
run: make prepare_local_workspace
|
||||||
|
- name: Download prerequisites
|
||||||
|
uses: ./.github/actions/download-prerequisites
|
||||||
|
- name: Update path
|
||||||
|
run: echo "${{ github.workspace }}/bin" >> "$GITHUB_PATH"
|
||||||
|
- name: Restore makefile progress
|
||||||
|
run: make --touch provider schema
|
||||||
|
- name: Build SDK
|
||||||
|
run: make build_${{ matrix.language }}
|
||||||
|
- name: Check worktree clean
|
||||||
|
id: worktreeClean
|
||||||
|
uses: pulumi/git-status-check-action@v1
|
||||||
|
with:
|
||||||
|
# Keep these in sync with the Renovate step below to avoid them getting checked in.
|
||||||
|
allowed-changes: |
|
||||||
|
sdk/**/pulumi-plugin.json
|
||||||
|
sdk/dotnet/*.csproj
|
||||||
|
sdk/go/**/pulumiUtilities.go
|
||||||
|
sdk/nodejs/package.json
|
||||||
|
sdk/python/pyproject.toml
|
||||||
|
- name: Commit ${{ matrix.language }} SDK changes for Renovate
|
||||||
|
# If the worktree is dirty and this is a Renovate PR to bump
|
||||||
|
# dependencies, commit the updated SDK and push it back to the PR. The
|
||||||
|
# job will still be marked as a failure.
|
||||||
|
if: failure() && steps.worktreeClean.outcome == 'failure' && contains(github.actor, 'renovate') && github.event_name == 'pull_request'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
git diff --quiet -- sdk && echo "no changes to sdk" && exit
|
||||||
|
|
||||||
|
git config --global user.email "bot@pulumi.com"
|
||||||
|
git config --global user.name "pulumi-bot"
|
||||||
|
|
||||||
|
# Stash local changes and check out the PR's branch directly.
|
||||||
|
git stash
|
||||||
|
git fetch
|
||||||
|
git checkout "origin/$HEAD_REF"
|
||||||
|
|
||||||
|
# Apply and add our changes, but don't commit any files we expect to
|
||||||
|
# always change due to versioning.
|
||||||
|
git stash pop
|
||||||
|
git add sdk
|
||||||
|
git reset \
|
||||||
|
sdk/python/*/pulumi-plugin.json \
|
||||||
|
sdk/python/pyproject.toml \
|
||||||
|
sdk/dotnet/pulumi-plugin.json \
|
||||||
|
sdk/dotnet/Pulumi.*.csproj \
|
||||||
|
sdk/go/*/pulumi-plugin.json \
|
||||||
|
sdk/go/*/internal/pulumiUtilities.go \
|
||||||
|
sdk/nodejs/package.json
|
||||||
|
git commit -m 'Commit ${{ matrix.language }} SDK for Renovate'
|
||||||
|
|
||||||
|
# Push with pulumi-bot credentials to trigger a re-run of the
|
||||||
|
# workflow. https://github.com/orgs/community/discussions/25702
|
||||||
|
git push https://pulumi-bot:${{ secrets.PULUMI_BOT_TOKEN }}@github.com/${{ github.repository }} \
|
||||||
|
"HEAD:$HEAD_REF"
|
||||||
|
env:
|
||||||
|
# head_ref is untrusted so it's recommended to pass via env var to
|
||||||
|
# avoid injections.
|
||||||
|
HEAD_REF: ${{ github.head_ref }}
|
||||||
|
|
||||||
|
- name: Upload SDK
|
||||||
|
uses: ./.github/actions/upload-sdk
|
||||||
|
with:
|
||||||
|
language: ${{ matrix.language }}
|
||||||
63
.github/workflows/license.yml
vendored
Normal file
63
.github/workflows/license.yml
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: license_check
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs: {}
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
license_check:
|
||||||
|
name: License Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: go
|
||||||
|
cache-go: false
|
||||||
|
- run: make prepare_local_workspace
|
||||||
|
continue-on-error: true
|
||||||
|
- uses: pulumi/license-check-action@main
|
||||||
|
with:
|
||||||
|
module-path: provider
|
||||||
|
ignore-modules: >-
|
||||||
|
github.com/aead/chacha20,
|
||||||
|
github.com/apache/arrow/go/v12,
|
||||||
|
github.com/apache/thrift/lib/go/thrift,
|
||||||
|
github.com/cloudflare/circl,
|
||||||
|
github.com/golang,
|
||||||
|
github.com/gorhill/cronexpr,
|
||||||
|
github.com/in-toto/in-toto-golang,
|
||||||
|
github.com/jmespath/go-jmespath,
|
||||||
|
github.com/keybase/go-crypto,
|
||||||
|
github.com/klauspost/compress,
|
||||||
|
github.com/mattn/go-localereader,
|
||||||
|
github.com/modern-go/reflect2,
|
||||||
|
github.com/pierrec/lz4,
|
||||||
|
github.com/pjbgf/sha1cd,
|
||||||
|
github.com/pulumi,
|
||||||
|
github.com/segmentio/asm,
|
||||||
|
golang.org
|
||||||
54
.github/workflows/lint.yml
vendored
Normal file
54
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: lint
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs: {}
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
name: lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Install go
|
||||||
|
uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5
|
||||||
|
with:
|
||||||
|
# The versions of golangci-lint and setup-go here cross-depend and need to update together.
|
||||||
|
go-version: 1.23
|
||||||
|
# Either this action or golangci-lint needs to disable the cache
|
||||||
|
cache: false
|
||||||
|
- name: disarm go:embed directives to enable lint
|
||||||
|
continue-on-error: true # this fails if there are no go:embed directives
|
||||||
|
run: |
|
||||||
|
git grep -l 'go:embed' -- provider | xargs sed -i 's/go:embed/ goembed/g'
|
||||||
|
- name: prepare workspace
|
||||||
|
continue-on-error: true
|
||||||
|
run: make prepare_local_workspace
|
||||||
|
- name: golangci-lint
|
||||||
|
uses: golangci/golangci-lint-action@55c2c1448f86e01eaae002a5a3a9624417608d84 # v6
|
||||||
|
with:
|
||||||
|
version: v1.64.6
|
||||||
|
working-directory: provider
|
||||||
20
.github/workflows/main-post-build.yml
vendored
Normal file
20
.github/workflows/main-post-build.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: "Main post-build"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
post_build:
|
||||||
|
name: post_build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: false
|
||||||
|
steps:
|
||||||
|
- name: Placeholder
|
||||||
|
shell: bash
|
||||||
|
run: echo "This is a placeholder job to ensure that the post_build job is always present"
|
||||||
121
.github/workflows/main.yml
vendored
Normal file
121
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
jobs:
|
||||||
|
prerequisites:
|
||||||
|
uses: ./.github/workflows/prerequisites.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
default_branch: ${{ github.event.repository.default_branch }}
|
||||||
|
is_pr: ${{ github.event_name == 'pull_request' }}
|
||||||
|
is_automated: ${{ github.actor == 'dependabot[bot]' }}
|
||||||
|
|
||||||
|
build_provider:
|
||||||
|
uses: ./.github/workflows/build_provider.yml
|
||||||
|
needs: prerequisites
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
build_sdk:
|
||||||
|
name: build_sdk
|
||||||
|
needs: prerequisites
|
||||||
|
uses: ./.github/workflows/build_sdk.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
post_build:
|
||||||
|
name: post_build
|
||||||
|
needs: prerequisites
|
||||||
|
uses: ./.github/workflows/main-post-build.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
lint:
|
||||||
|
name: lint
|
||||||
|
uses: ./.github/workflows/lint.yml
|
||||||
|
secrets: inherit
|
||||||
|
license_check:
|
||||||
|
name: License Check
|
||||||
|
uses: ./.github/workflows/license.yml
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
publish:
|
||||||
|
name: publish
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
id-token: write
|
||||||
|
needs:
|
||||||
|
- prerequisites
|
||||||
|
- build_provider
|
||||||
|
- test
|
||||||
|
- license_check
|
||||||
|
uses: ./.github/workflows/publish.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
isPrerelease: true
|
||||||
|
skipGoSdk: true
|
||||||
|
skipJavaSdk: true
|
||||||
|
|
||||||
|
tag_release_if_labeled_needs_release:
|
||||||
|
name: Tag release if labeled as needs-release
|
||||||
|
needs: publish
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: check if this commit needs release
|
||||||
|
if: ${{ env.RELEASE_BOT_ENDPOINT != '' }}
|
||||||
|
uses: pulumi/action-release-by-pr-label@main
|
||||||
|
with:
|
||||||
|
command: "release-if-needed"
|
||||||
|
repo: ${{ github.repository }}
|
||||||
|
commit: ${{ github.sha }}
|
||||||
|
slack_channel: ${{ secrets.RELEASE_OPS_SLACK_CHANNEL }}
|
||||||
|
env:
|
||||||
|
RELEASE_BOT_ENDPOINT: ${{ secrets.RELEASE_BOT_ENDPOINT }}
|
||||||
|
RELEASE_BOT_KEY: ${{ secrets.RELEASE_BOT_KEY }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
test:
|
||||||
|
uses: ./.github/workflows/test.yml
|
||||||
|
needs:
|
||||||
|
- prerequisites
|
||||||
|
- build_provider
|
||||||
|
- build_sdk
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
name: main
|
||||||
|
on:
|
||||||
|
workflow_dispatch: {}
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths-ignore:
|
||||||
|
- "**.md"
|
||||||
|
tags-ignore:
|
||||||
|
- v*
|
||||||
|
- sdk/*
|
||||||
|
- "**"
|
||||||
87
.github/workflows/prerelease.yml
vendored
Normal file
87
.github/workflows/prerelease.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
env:
|
||||||
|
IS_PRERELEASE: true
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
jobs:
|
||||||
|
prerequisites:
|
||||||
|
uses: ./.github/workflows/prerequisites.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
default_branch: ${{ github.event.repository.default_branch }}
|
||||||
|
is_pr: ${{ github.event_name == 'pull_request' }}
|
||||||
|
is_automated: ${{ github.actor == 'dependabot[bot]' }}
|
||||||
|
|
||||||
|
build_provider:
|
||||||
|
uses: ./.github/workflows/build_provider.yml
|
||||||
|
needs: prerequisites
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
build_sdk:
|
||||||
|
name: build_sdk
|
||||||
|
needs: prerequisites
|
||||||
|
uses: ./.github/workflows/build_sdk.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
lint:
|
||||||
|
name: lint
|
||||||
|
uses: ./.github/workflows/lint.yml
|
||||||
|
secrets: inherit
|
||||||
|
license_check:
|
||||||
|
name: License Check
|
||||||
|
uses: ./.github/workflows/license.yml
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
publish:
|
||||||
|
name: publish
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
id-token: write
|
||||||
|
needs:
|
||||||
|
- prerequisites
|
||||||
|
- build_provider
|
||||||
|
- test
|
||||||
|
- license_check
|
||||||
|
uses: ./.github/workflows/publish.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
isPrerelease: true
|
||||||
|
|
||||||
|
test:
|
||||||
|
uses: ./.github/workflows/test.yml
|
||||||
|
needs:
|
||||||
|
- prerequisites
|
||||||
|
- build_provider
|
||||||
|
- build_sdk
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
name: prerelease
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v*.*.*-**
|
||||||
100
.github/workflows/prerequisites.yml
vendored
Normal file
100
.github/workflows/prerequisites.yml
vendored
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: "Prerequisites"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
is_pr:
|
||||||
|
type: boolean
|
||||||
|
required: true
|
||||||
|
is_automated:
|
||||||
|
type: boolean
|
||||||
|
required: true
|
||||||
|
default_branch:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
outputs:
|
||||||
|
version:
|
||||||
|
description: "Provider version being built"
|
||||||
|
value: ${{ jobs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prerequisites:
|
||||||
|
name: prerequisites
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
version: ${{ steps.provider-version.outputs.version }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- uses: pulumi/provider-version-action@f96d032a2758fdda7939e5728eff6c0d980ae894 # v1.6.0
|
||||||
|
id: provider-version
|
||||||
|
with:
|
||||||
|
major-version: 1
|
||||||
|
set-env: 'PROVIDER_VERSION'
|
||||||
|
- name: Cache examples generation
|
||||||
|
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
.pulumi/examples-cache
|
||||||
|
key: ${{ runner.os }}-${{ hashFiles('provider/go.sum') }}
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: go, pulumictl, pulumicli, schema-tools
|
||||||
|
- name: Prepare local workspace before restoring previously built files
|
||||||
|
run: make prepare_local_workspace
|
||||||
|
- name: Generate schema
|
||||||
|
run: make schema
|
||||||
|
- name: Build provider binary
|
||||||
|
run: make provider
|
||||||
|
- name: Unit-test provider code
|
||||||
|
run: make test_provider
|
||||||
|
- name: Upload coverage reports to Codecov
|
||||||
|
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0
|
||||||
|
env:
|
||||||
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
- if: inputs.is_pr
|
||||||
|
name: Check Schema is Valid
|
||||||
|
run: |
|
||||||
|
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
|
||||||
|
{
|
||||||
|
echo "SCHEMA_CHANGES<<$EOF";
|
||||||
|
schema-tools compare -r github://api.github.com/pulumi -p xyz -o "${{ inputs.default_branch }}" -n --local-path=provider/cmd/pulumi-resource-xyz/schema.json;
|
||||||
|
echo "$EOF";
|
||||||
|
} >> "$GITHUB_ENV"
|
||||||
|
- if: inputs.is_pr && inputs.is_automated == false && github.actor != 'dependabot[bot]'
|
||||||
|
name: Comment on PR with Details of Schema Check
|
||||||
|
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
comment-tag: schemaCheck
|
||||||
|
message: >+
|
||||||
|
${{ env.SCHEMA_CHANGES }}
|
||||||
|
|
||||||
|
|
||||||
|
Maintainer note: consult the [runbook](https://github.com/pulumi/platform-providers-team/blob/main/playbooks/tf-provider-updating.md) for dealing with any breaking changes.
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: ./.github/actions/upload-prerequisites
|
||||||
195
.github/workflows/publish.yml
vendored
Normal file
195
.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
name: Publish
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
isPrerelease:
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
skipGoSdk:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
description: Skip publishing & verifying the Go SDK
|
||||||
|
skipJavaSdk:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
description: Skip publishing the Java SDK
|
||||||
|
|
||||||
|
env:
|
||||||
|
IS_PRERELEASE: ${{ inputs.isPrerelease }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
name: publish
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Validate prerelease
|
||||||
|
if: inputs.isPrerelease == false && (contains(inputs.version, '-') || contains(inputs.version, '+'))
|
||||||
|
run: echo "Can't publish a prerelease version as a stable release. This is likely a bug in the calling workflow." && exit 1
|
||||||
|
- name: Validate skipGoSdk
|
||||||
|
if: inputs.skipGoSdk && inputs.isPrerelease == false
|
||||||
|
run: echo "Can't skip Go SDK for stable releases. This is likely a bug in the calling workflow." && exit 1
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumictl, pulumicli, go, schema-tools
|
||||||
|
cache-go: false
|
||||||
|
- name: Create dist directory
|
||||||
|
run: mkdir -p dist
|
||||||
|
- name: Download provider assets
|
||||||
|
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
|
||||||
|
with:
|
||||||
|
pattern: pulumi-resource-xyz-v${{ inputs.version }}-*
|
||||||
|
path: dist
|
||||||
|
# Don't create a directory for each artifact
|
||||||
|
merge-multiple: true
|
||||||
|
- name: Download schema
|
||||||
|
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
|
||||||
|
with:
|
||||||
|
# Use a pattern to avoid failing if the artifact doesn't exist
|
||||||
|
pattern: schema-embed.*
|
||||||
|
# Avoid creating directories for each artifact
|
||||||
|
merge-multiple: true
|
||||||
|
path: dist
|
||||||
|
- name: Calculate checksums
|
||||||
|
working-directory: dist
|
||||||
|
run: shasum ./*.tar.gz > "pulumi-xyz_${{ inputs.version }}_checksums.txt"
|
||||||
|
- name: Get Schema Change Summary
|
||||||
|
id: schema-summary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# Get latest stable release. Return only first column from result (tag).
|
||||||
|
LAST_VERSION=$(gh release view --repo pulumi/pulumi-xyz --json tagName -q .tagName || echo "No stable release" )
|
||||||
|
{
|
||||||
|
echo 'summary<<EOF'
|
||||||
|
if [[ "$LAST_VERSION" != "No stable release" ]]; then
|
||||||
|
schema-tools compare --provider="xyz" --old-commit="$LAST_VERSION" --repository="github://api.github.com/pulumi" --new-commit="--local-path=provider/cmd/pulumi-resource-xyz/schema.json"
|
||||||
|
fi
|
||||||
|
echo 'EOF'
|
||||||
|
} >> "$GITHUB_OUTPUT"
|
||||||
|
- name: Create GH Release
|
||||||
|
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # v2
|
||||||
|
if: inputs.isPrerelease == false
|
||||||
|
with:
|
||||||
|
tag_name: v${{ inputs.version }}
|
||||||
|
prerelease: ${{ inputs.isPrerelease }}
|
||||||
|
# We keep pre-releases as drafts so they're not visible until we manually publish them.
|
||||||
|
draft: ${{ inputs.isPrerelease }}
|
||||||
|
body: ${{ steps.schema-summary.outputs.summary }}
|
||||||
|
generate_release_notes: true
|
||||||
|
files: dist/*
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
publish_sdk:
|
||||||
|
name: publish_sdk
|
||||||
|
needs: publish
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
python_version: ${{ steps.python_version.outputs.version }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
# Persist credentials so we can push back to the repo
|
||||||
|
persist-credentials: true
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumictl, pulumicli, dotnet, go, nodejs, python
|
||||||
|
cache-go: false
|
||||||
|
- name: Publish SDKs
|
||||||
|
if: inputs.skipJavaSdk == false
|
||||||
|
uses: pulumi/pulumi-package-publisher@696a0fe98f86d86ada2a842d1859f3e8c40d6cd7 # v0.0.21
|
||||||
|
with:
|
||||||
|
sdk: all,!java
|
||||||
|
version: ${{ inputs.version }}
|
||||||
|
- name: Publish SDKs (except Java)
|
||||||
|
if: inputs.skipJavaSdk == true
|
||||||
|
uses: pulumi/pulumi-package-publisher@696a0fe98f86d86ada2a842d1859f3e8c40d6cd7 # v0.0.21
|
||||||
|
with:
|
||||||
|
sdk: all,!java,!java
|
||||||
|
version: ${{ inputs.version }}
|
||||||
|
- name: Download Go SDK
|
||||||
|
uses: ./.github/actions/download-sdk
|
||||||
|
with:
|
||||||
|
language: go
|
||||||
|
- uses: pulumi/publish-go-sdk-action@v1
|
||||||
|
if: inputs.skipGoSdk == false
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}
|
||||||
|
base-ref: ${{ github.sha }}
|
||||||
|
source: sdk
|
||||||
|
path: sdk
|
||||||
|
version: ${{ inputs.version }}
|
||||||
|
additive: false
|
||||||
|
# Avoid including other language SDKs & artifacts in the commit
|
||||||
|
files: |
|
||||||
|
go.*
|
||||||
|
go/**
|
||||||
|
!*.tar.gz
|
||||||
|
- name: Extract python version
|
||||||
|
id: python_version
|
||||||
|
working-directory: sdk/python
|
||||||
|
run: |
|
||||||
|
pip install toml-cli==0.7.0
|
||||||
|
version=$(toml get --toml-path pyproject.toml project.version)
|
||||||
|
echo "version=${version}" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
clean_up_release_labels:
|
||||||
|
name: Clean up release labels
|
||||||
|
# Only run for non-prerelease, if the publish_go_sdk job was successful or skipped
|
||||||
|
if: inputs.isPrerelease == false
|
||||||
|
|
||||||
|
needs: publish_sdk
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Clean up release labels
|
||||||
|
uses: pulumi/action-release-by-pr-label@main
|
||||||
|
with:
|
||||||
|
command: "clean-up-release-labels"
|
||||||
|
repo: ${{ github.repository }}
|
||||||
|
commit: ${{ github.sha }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
verify_release:
|
||||||
|
name: verify_release
|
||||||
|
needs: publish_sdk
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
id-token: write
|
||||||
|
uses: ./.github/workflows/verify-release.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
providerVersion: ${{ inputs.version }}
|
||||||
|
skipGoSdk: ${{ inputs.skipGoSdk }}
|
||||||
|
pythonVersion: ${{ needs.publish_sdk.outputs.python_version }}
|
||||||
40
.github/workflows/pull-request.yml
vendored
Normal file
40
.github/workflows/pull-request.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
jobs:
|
||||||
|
comment-on-pr:
|
||||||
|
if: github.event.pull_request.head.repo.full_name != github.repository
|
||||||
|
name: comment-on-pr
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Comment PR
|
||||||
|
uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
message: >
|
||||||
|
PR is now waiting for a maintainer to run the acceptance tests.
|
||||||
|
|
||||||
|
**Note for the maintainer:** To run the acceptance tests, please comment */run-acceptance-tests* on the PR
|
||||||
|
name: pull-request
|
||||||
|
on:
|
||||||
|
pull_request_target: {}
|
||||||
87
.github/workflows/release.yml
vendored
Normal file
87
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
name: release
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- v*.*.*
|
||||||
|
- "!v*.*.*-**"
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
jobs:
|
||||||
|
prerequisites:
|
||||||
|
uses: ./.github/workflows/prerequisites.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
default_branch: ${{ github.event.repository.default_branch }}
|
||||||
|
is_pr: ${{ github.event_name == 'pull_request' }}
|
||||||
|
is_automated: ${{ github.actor == 'dependabot[bot]' }}
|
||||||
|
|
||||||
|
build_provider:
|
||||||
|
uses: ./.github/workflows/build_provider.yml
|
||||||
|
needs: prerequisites
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
build_sdk:
|
||||||
|
name: build_sdk
|
||||||
|
needs: prerequisites
|
||||||
|
uses: ./.github/workflows/build_sdk.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
lint:
|
||||||
|
name: lint
|
||||||
|
uses: ./.github/workflows/lint.yml
|
||||||
|
secrets: inherit
|
||||||
|
license_check:
|
||||||
|
name: License Check
|
||||||
|
uses: ./.github/workflows/license.yml
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
|
publish:
|
||||||
|
name: publish
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
id-token: write
|
||||||
|
needs:
|
||||||
|
- prerequisites
|
||||||
|
- build_provider
|
||||||
|
- test
|
||||||
|
- license_check
|
||||||
|
uses: ./.github/workflows/publish.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
isPrerelease: false
|
||||||
|
|
||||||
|
test:
|
||||||
|
uses: ./.github/workflows/test.yml
|
||||||
|
needs:
|
||||||
|
- prerequisites
|
||||||
|
- build_provider
|
||||||
|
- build_sdk
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
41
.github/workflows/resync-build.yml
vendored
Normal file
41
.github/workflows/resync-build.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
name: "Resync Build Workflows"
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
# 3 AM UTC ~ 8 PM PDT / 7 PM PST every Tuesday.
|
||||||
|
- cron: 0 3 * * TUE
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.PULUMI_PROVIDER_AUTOMATION_TOKEN || secrets.PULUMI_BOT_TOKEN || secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
upgrade_provider:
|
||||||
|
name: pull-workflow-changes
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
# Persist credentials so pull-workflow-changes can push a new branch.
|
||||||
|
persist-credentials: true
|
||||||
|
- name: Regenerate the workflow files via https://github.com/pulumi/ci-mgmt
|
||||||
|
run: |
|
||||||
|
make ci-mgmt
|
||||||
|
- name: Create PR (no linked issue)
|
||||||
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||||
|
with:
|
||||||
|
author: pulumi-bot <bot@pulumi.com>
|
||||||
|
base: main
|
||||||
|
body: This pull request was generated automatically by the resync-build workflow
|
||||||
|
in this repository.
|
||||||
|
branch: chore/resync-${{ github.run_id }}
|
||||||
|
commit-message: Regenerate workflows for pulumi-xyz
|
||||||
|
committer: pulumi-bot <bot@pulumi.com>
|
||||||
|
labels: impact/no-changelog-required
|
||||||
|
title: Regenerate Github Actions workflows for pulumi-xyz
|
||||||
|
token: ${{ env.GITHUB_TOKEN }}
|
||||||
142
.github/workflows/run-acceptance-tests.yml
vendored
Normal file
142
.github/workflows/run-acceptance-tests.yml
vendored
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: run-acceptance-tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- CHANGELOG.md
|
||||||
|
repository_dispatch:
|
||||||
|
types:
|
||||||
|
- run-acceptance-tests-command
|
||||||
|
|
||||||
|
env:
|
||||||
|
PR_COMMIT_SHA: ${{ github.event.client_payload.pull_request.head.sha }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
# This should cancel any previous runs of the same workflow on the same branch which are still running.
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prerequisites:
|
||||||
|
if: github.event_name == 'repository_dispatch' ||
|
||||||
|
github.event.pull_request.head.repo.full_name == github.repository
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
uses: ./.github/workflows/prerequisites.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
default_branch: ${{ github.event.repository.default_branch }}
|
||||||
|
is_pr: ${{ github.event_name == 'pull_request' }}
|
||||||
|
is_automated: ${{ github.actor == 'dependabot[bot]' }}
|
||||||
|
|
||||||
|
build_provider:
|
||||||
|
uses: ./.github/workflows/build_provider.yml
|
||||||
|
needs: prerequisites
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
matrix: |
|
||||||
|
{
|
||||||
|
"platform": [
|
||||||
|
{"os": "linux", "arch": "amd64"},
|
||||||
|
{"os": "windows", "arch": "amd64"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
build_sdk:
|
||||||
|
if: github.event_name == 'repository_dispatch' ||
|
||||||
|
github.event.pull_request.head.repo.full_name == github.repository
|
||||||
|
name: build_sdk
|
||||||
|
needs: prerequisites
|
||||||
|
uses: ./.github/workflows/build_sdk.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
comment-notification:
|
||||||
|
if: github.event_name == 'repository_dispatch'
|
||||||
|
name: comment-notification
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- id: run-url
|
||||||
|
name: Create URL to the run output
|
||||||
|
run: echo "run-url=https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> "$GITHUB_OUTPUT"
|
||||||
|
- name: Update with Result
|
||||||
|
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||||
|
with:
|
||||||
|
body: "Please view the PR build: ${{ steps.run-url.outputs.run-url }}"
|
||||||
|
issue-number: ${{ github.event.client_payload.github.payload.issue.number }}
|
||||||
|
repository: ${{ github.event.client_payload.github.payload.repository.full_name }}
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
lint:
|
||||||
|
if: github.event_name == 'repository_dispatch' ||
|
||||||
|
github.event.pull_request.head.repo.full_name == github.repository
|
||||||
|
name: lint
|
||||||
|
uses: ./.github/workflows/lint.yml
|
||||||
|
secrets: inherit
|
||||||
|
sentinel:
|
||||||
|
name: sentinel
|
||||||
|
if: github.event_name == 'repository_dispatch' ||
|
||||||
|
github.event.pull_request.head.repo.full_name == github.repository
|
||||||
|
permissions:
|
||||||
|
statuses: write
|
||||||
|
needs:
|
||||||
|
- test
|
||||||
|
- build_provider
|
||||||
|
- license_check
|
||||||
|
- lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: guibranco/github-status-action-v2@0849440ec82c5fa69b2377725b9b7852a3977e76 # v1.1.13
|
||||||
|
with:
|
||||||
|
authToken: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
# Write an explicit status check called "Sentinel" which will only pass if this code really runs.
|
||||||
|
# This should always be a required check for PRs.
|
||||||
|
context: 'Sentinel'
|
||||||
|
description: 'All required checks passed'
|
||||||
|
state: 'success'
|
||||||
|
# Write to the PR commit SHA if it's available as we don't want the merge commit sha,
|
||||||
|
# otherwise use the current SHA for any other type of build.
|
||||||
|
sha: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||||
|
|
||||||
|
test:
|
||||||
|
# Don't run tests on PRs from forks.
|
||||||
|
if: github.event_name == 'repository_dispatch' ||
|
||||||
|
github.event.pull_request.head.repo.full_name == github.repository
|
||||||
|
uses: ./.github/workflows/test.yml
|
||||||
|
needs:
|
||||||
|
- prerequisites
|
||||||
|
- build_provider
|
||||||
|
- build_sdk
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.prerequisites.outputs.version }}
|
||||||
|
|
||||||
|
license_check:
|
||||||
|
name: License Check
|
||||||
|
uses: ./.github/workflows/license.yml
|
||||||
|
secrets: inherit
|
||||||
89
.github/workflows/test.yml
vendored
Normal file
89
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: "Test Provider"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description: Version of the provider to test
|
||||||
|
|
||||||
|
env:
|
||||||
|
PR_COMMIT_SHA: ${{ github.event.client_payload.pull_request.head.sha }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
PROVIDER_VERSION: ${{ inputs.version }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
ref: ${{ env.PR_COMMIT_SHA }}
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Checkout p/examples
|
||||||
|
if: matrix.testTarget == 'pulumiExamples'
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
repository: pulumi/examples
|
||||||
|
path: p-examples
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumictl, pulumicli, ${{ matrix.language }}
|
||||||
|
- name: Prepare local workspace
|
||||||
|
run: make prepare_local_workspace
|
||||||
|
- name: Download bin
|
||||||
|
uses: ./.github/actions/download-provider
|
||||||
|
- name: Download SDK
|
||||||
|
uses: ./.github/actions/download-sdk
|
||||||
|
with:
|
||||||
|
language: ${{ matrix.language }}
|
||||||
|
- name: Restore makefile progress
|
||||||
|
run: make --touch provider schema build_${{ matrix.language }}
|
||||||
|
- name: Update path
|
||||||
|
run: echo "${{ github.workspace }}/bin" >> "$GITHUB_PATH"
|
||||||
|
- name: Install Python deps
|
||||||
|
if: matrix.language == 'python'
|
||||||
|
run: |-
|
||||||
|
pip3 install virtualenv==20.0.23
|
||||||
|
pip3 install pipenv
|
||||||
|
- name: Install dependencies
|
||||||
|
run: make install_${{ matrix.language}}_sdk
|
||||||
|
- name: Run tests
|
||||||
|
if: matrix.testTarget == 'local'
|
||||||
|
run: cd examples && go test -v -count=1 -cover -timeout 2h -tags=${{ matrix.language }} -skip TestPulumiExamples -parallel 4 .
|
||||||
|
- name: Run pulumi/examples tests
|
||||||
|
if: matrix.testTarget == 'pulumiExamples'
|
||||||
|
run: cd examples && go test -v -count=1 -cover -timeout 2h -tags=${{ matrix.language }} -run TestPulumiExamples -parallel 4 .
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language:
|
||||||
|
- dotnet
|
||||||
|
- go
|
||||||
|
- nodejs
|
||||||
|
- python
|
||||||
|
testTarget: [local]
|
||||||
115
.github/workflows/upgrade-bridge.yml
vendored
Normal file
115
.github/workflows/upgrade-bridge.yml
vendored
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: Upgrade bridge
|
||||||
|
on:
|
||||||
|
repository_dispatch:
|
||||||
|
types:
|
||||||
|
- upgrade-bridge
|
||||||
|
- upgrade-bridge-test
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
kind:
|
||||||
|
description: Overrides the kind of upgrade. Must be one of `all`, `bridge`, `provider`, `code`, `pf`, or `pulumi`.
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: "bridge"
|
||||||
|
target-bridge-version:
|
||||||
|
description: pulumi-terraform-bridge version or hash reference
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: "latest"
|
||||||
|
target-pulumi-version:
|
||||||
|
description: |
|
||||||
|
Set the version of `pulumi/pkg` and `pulumi/sdk` to depend on for bridged providers. Currently,
|
||||||
|
these versions inform the linked runtime and SDK generation in all languages except Java. Valid
|
||||||
|
options are:
|
||||||
|
- "": Use the same version as pulumi-terraform-bridge
|
||||||
|
- A go version such as "v3.90.1"
|
||||||
|
- A commit SHA in pulumi/pulumi such as "ac71ebc1d34e5ccfd1a7fed61e6ff43a3160f3cb"
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
pr-reviewers:
|
||||||
|
description: Reviewers to assign to the auto-opened pull request
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
pr-description:
|
||||||
|
description: Extra description to add to the auto-opened pull request
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
pr-title-prefix:
|
||||||
|
description: Prefix to add to the auto-opened pull request title
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
automerge:
|
||||||
|
description: Mark created PR for auto-merging?
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.PULUMI_PROVIDER_AUTOMATION_TOKEN || secrets.PULUMI_BOT_TOKEN || secrets.GITHUB_TOKEN }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
upgrade_provider:
|
||||||
|
name: upgrade-provider
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumictl, pulumicli, dotnet, go, nodejs, python
|
||||||
|
- name: Call upgrade provider action
|
||||||
|
if: github.event_name == 'workflow_dispatch'
|
||||||
|
uses: pulumi/pulumi-upgrade-provider-action@ff5cb5907aecba099e61146c4d4d074c7fd6ca99 # v0.0.15
|
||||||
|
with:
|
||||||
|
kind: ${{ inputs.kind }}
|
||||||
|
email: bot@pulumi.com
|
||||||
|
username: pulumi-bot
|
||||||
|
automerge: ${{ inputs.automerge }}
|
||||||
|
target-bridge-version: ${{ inputs.target-bridge-version }}
|
||||||
|
target-pulumi-version: ${{ inputs.target-pulumi-version }}
|
||||||
|
pr-reviewers: ${{ inputs.pr-reviewers }}
|
||||||
|
pr-description: ${{ inputs.pr-description }}
|
||||||
|
pr-title-prefix: ${{ inputs.pr-title-prefix }}
|
||||||
|
- name: Call upgrade provider action
|
||||||
|
if: github.event_name == 'repository_dispatch'
|
||||||
|
uses: pulumi/pulumi-upgrade-provider-action@ff5cb5907aecba099e61146c4d4d074c7fd6ca99 # v0.0.15
|
||||||
|
with:
|
||||||
|
kind: ${{ github.event.client_payload.kind || 'bridge' }}
|
||||||
|
email: bot@pulumi.com
|
||||||
|
username: pulumi-bot
|
||||||
|
automerge: ${{ github.event.client_payload.automerge }}
|
||||||
|
target-pulumi-version: ${{ github.event.client_payload.target-pulumi-version }}
|
||||||
|
target-bridge-version: ${{ github.event.client_payload.target-bridge-version }}
|
||||||
|
pr-reviewers: ${{ github.event.client_payload.pr-reviewers }}
|
||||||
|
pr-description: ${{ github.event.client_payload.pr-description }}
|
||||||
|
pr-title-prefix: ${{ github.event.client_payload.pr-title-prefix }}
|
||||||
88
.github/workflows/upgrade-provider.yml
vendored
Normal file
88
.github/workflows/upgrade-provider.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
name: Upgrade provider
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: |
|
||||||
|
The version of the upstream provider to upgrade to, without the 'v' prefix
|
||||||
|
|
||||||
|
If no version is specified, it will be inferred from the upstream provider's release tags.
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
upgradeProviderVersion:
|
||||||
|
description: |
|
||||||
|
Version of upgrade-provider to use. This must be a valid git reference in the pulumi/upgrade-provider repo. Defaults to "main"
|
||||||
|
|
||||||
|
See https://go.dev/ref/mod#versions for valid versions. E.g. "v0.1.0", "main", "da25dec".
|
||||||
|
default: main
|
||||||
|
type: string
|
||||||
|
schedule:
|
||||||
|
# 3 AM UTC ~ 8 PM PDT / 7 PM PST daily. Time chosen to run during off hours.
|
||||||
|
- cron: 0 3 * * *
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.PULUMI_PROVIDER_AUTOMATION_TOKEN || secrets.PULUMI_BOT_TOKEN || secrets.GITHUB_TOKEN }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
upgrade_provider:
|
||||||
|
name: upgrade-provider
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
# Persist credentials so upgrade-provider can push a new branch.
|
||||||
|
persist-credentials: true
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumictl, pulumicli, dotnet, go, nodejs, python
|
||||||
|
- name: Install upgrade-provider
|
||||||
|
run: go install github.com/pulumi/upgrade-provider@${{ inputs.upgradeProviderVersion || 'main' }}
|
||||||
|
shell: bash
|
||||||
|
- name: "Set up git identity"
|
||||||
|
run: |
|
||||||
|
git config --global user.name 'bot@pulumi.com'
|
||||||
|
git config --global user.email 'bot@pulumi.com'
|
||||||
|
shell: bash
|
||||||
|
- name: Create issues for new upstream version
|
||||||
|
if: inputs.version == ''
|
||||||
|
id: upstream_version
|
||||||
|
# This step outputs `latest_version` if there is a pending upgrade
|
||||||
|
run: upgrade-provider "$REPO" --kind=check-upstream-version
|
||||||
|
env:
|
||||||
|
REPO: ${{ github.repository }}
|
||||||
|
shell: bash
|
||||||
|
- name: Calculate target version
|
||||||
|
id: target_version
|
||||||
|
# Prefer the manually specified version if it exists
|
||||||
|
# upstream_version will be empty if the provider is up-to-date
|
||||||
|
run: echo "version=${{ github.event.inputs.version || steps.upstream_version.outputs.latest_version }}" >> "$GITHUB_OUTPUT"
|
||||||
|
shell: bash
|
||||||
|
- name: Call upgrade provider action
|
||||||
|
id: upgrade_provider
|
||||||
|
if: steps.target_version.outputs.version != ''
|
||||||
|
continue-on-error: true
|
||||||
|
uses: pulumi/pulumi-upgrade-provider-action@ff5cb5907aecba099e61146c4d4d074c7fd6ca99 # v0.0.15
|
||||||
|
with:
|
||||||
|
kind: provider
|
||||||
|
email: bot@pulumi.com
|
||||||
|
username: pulumi-bot
|
||||||
|
automerge: true
|
||||||
|
target-version: ${{ steps.target_version.outputs.version }}
|
||||||
|
allow-missing-docs: true
|
||||||
|
- name: Comment on upgrade issue if automated PR failed
|
||||||
|
if: steps.upgrade_provider.outcome == 'failure'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
issue_number=$(gh issue list --search "pulumiupgradeproviderissue" --repo "${{ github.repository }}" --json=number --jq=".[0].number")
|
||||||
|
gh issue comment "${issue_number}" --repo "${{ github.repository }}" --body "Failed to create automatic PR: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/"
|
||||||
|
|
||||||
83
.github/workflows/verify-release.yml
vendored
Normal file
83
.github/workflows/verify-release.yml
vendored
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
name: "Verify Release"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
providerVersion:
|
||||||
|
description: "The version of the provider to verify"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
enableMacRunner:
|
||||||
|
description: "Enable the MacOS runner in addition to Linux and Windows. Defaults to 'false'."
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
skipGoSdk:
|
||||||
|
description: "Skip the Go SDK verification. Defaults to 'false'. Enable this when verifying a pre-release for which we don't publish the Go SDK (for PRs and the default branch)."
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
pythonVersion:
|
||||||
|
description: "Optional python SDK version to verify. Defaults to inputs.providerVersion."
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
providerVersion:
|
||||||
|
description: "The version of the provider to verify"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
skipGoSdk:
|
||||||
|
description: "Skip the Go SDK verification. Defaults to 'false'. This is used when we're not publishing a Go SDK on the default branch build."
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
pythonVersion:
|
||||||
|
description: "Optional python SDK version to verify. Defaults to inputs.providerVersion."
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
NUGET_PUBLISH_KEY: ${{ secrets.NUGET_PUBLISH_KEY }}
|
||||||
|
PUBLISH_REPO_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||||
|
PUBLISH_REPO_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||||
|
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
|
||||||
|
PULUMI_API: https://api.pulumi-staging.io
|
||||||
|
PULUMI_GO_DEP_ROOT: ${{ github.workspace }}/..
|
||||||
|
PULUMI_LOCAL_NUGET: ${{ github.workspace }}/nuget
|
||||||
|
PYPI_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
PYPI_USERNAME: __token__
|
||||||
|
SIGNING_KEY: ${{ secrets.JAVA_SIGNING_KEY }}
|
||||||
|
SIGNING_KEY_ID: ${{ secrets.JAVA_SIGNING_KEY_ID }}
|
||||||
|
SIGNING_PASSWORD: ${{ secrets.JAVA_SIGNING_PASSWORD }}
|
||||||
|
TF_APPEND_USER_AGENT: pulumi
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
verify-release:
|
||||||
|
name: verify-release
|
||||||
|
# We don't have any release verification configurations, so we never run this workflow.
|
||||||
|
# Configure your .ci-mgmt.yaml files to include the release verification configurations e.g.
|
||||||
|
# releaseVerification:
|
||||||
|
# nodejs: path/to/nodejs/project
|
||||||
|
# python: path/to/python/project
|
||||||
|
# dotnet: path/to/dotnet/project
|
||||||
|
# go: path/to/go/project
|
||||||
|
if: false
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
# We don't have any release verification configurations, so we only run on Linux to print warnings to help users configure the release verification.
|
||||||
|
runner: ["ubuntu-latest"]
|
||||||
|
runs-on: ${{ matrix.runner }}
|
||||||
|
steps:
|
||||||
|
- name: Configure Git to checkout files with long names
|
||||||
|
run: git config --global core.longpaths true
|
||||||
|
- name: Checkout Repo
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
- name: Setup tools
|
||||||
|
uses: ./.github/actions/setup-tools
|
||||||
|
with:
|
||||||
|
tools: pulumicli, dotnet, go, nodejs, python
|
||||||
39
.gitignore
vendored
Normal file
39
.gitignore
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
.idea
|
||||||
|
.code
|
||||||
|
**/vendor/
|
||||||
|
.pulumi
|
||||||
|
**/bin/
|
||||||
|
**/obj/
|
||||||
|
Pulumi.*.yaml
|
||||||
|
**/node_modules/
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
**/command-output/
|
||||||
|
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
*.sln
|
||||||
|
.vscode/settings.json
|
||||||
|
|
||||||
|
yarn.lock
|
||||||
|
**/pulumiManifest.go
|
||||||
|
|
||||||
|
ci-scripts
|
||||||
|
provider/**/schema-embed.json
|
||||||
|
**/version.txt
|
||||||
|
**/nuget
|
||||||
|
**/dist
|
||||||
|
|
||||||
|
sdk/java/build
|
||||||
|
sdk/java/.gradle
|
||||||
|
sdk/java/gradle
|
||||||
|
sdk/java/gradlew
|
||||||
|
sdk/java/gradlew.bat
|
||||||
|
|
||||||
|
sdk/python/venv
|
||||||
|
|
||||||
|
go.work
|
||||||
|
go.work.sum
|
||||||
|
|
||||||
|
# Ignore local build tracking directory
|
||||||
|
.make
|
||||||
37
.golangci.yml
Normal file
37
.golangci.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
linters:
|
||||||
|
enable:
|
||||||
|
- errcheck
|
||||||
|
- gci
|
||||||
|
- goconst
|
||||||
|
- gofmt
|
||||||
|
- gosec
|
||||||
|
- govet
|
||||||
|
- ineffassign
|
||||||
|
- lll
|
||||||
|
- gosimple
|
||||||
|
- staticcheck
|
||||||
|
- misspell
|
||||||
|
- nakedret
|
||||||
|
- revive
|
||||||
|
- unconvert
|
||||||
|
- unused
|
||||||
|
enable-all: false
|
||||||
|
issues:
|
||||||
|
exclude-dirs:
|
||||||
|
- pkg/vendored
|
||||||
|
exclude-files:
|
||||||
|
- schema.go
|
||||||
|
- pulumiManifest.go
|
||||||
|
run:
|
||||||
|
timeout: 20m
|
||||||
|
linters-settings:
|
||||||
|
gci:
|
||||||
|
sections:
|
||||||
|
- standard # Standard section: captures all standard library packages.
|
||||||
|
- blank # Blank section: contains all blank imports.
|
||||||
|
- default # Default section: contains all imports that could not be matched to another section type.
|
||||||
|
- prefix(github.com/pulumi/) # Custom section: groups all imports with the github.com/pulumi/ prefix.
|
||||||
|
- prefix(github.com/pulumi/pulumi-xyz) # Custom section: local imports
|
||||||
|
custom-order: true
|
||||||
1
.pulumi-java-gen.version
Normal file
1
.pulumi-java-gen.version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1.9.0
|
||||||
6
.upgrade-config.yml
Normal file
6
.upgrade-config.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten if not made via https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
---
|
||||||
|
upstream-provider-name: terraform-provider-xyz
|
||||||
|
pulumi-infer-version: true
|
||||||
|
remove-plugins: true
|
||||||
80
CODE-OF-CONDUCT.md
Normal file
80
CODE-OF-CONDUCT.md
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
In the interest of fostering an open and welcoming environment, we as
|
||||||
|
contributors and maintainers pledge to making participation in our project and
|
||||||
|
our community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, disability, ethnicity, gender identity and expression, level of experience,
|
||||||
|
education, socio-economic status, nationality, personal appearance, race,
|
||||||
|
religion, or sexual identity and orientation.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to creating a positive environment
|
||||||
|
include:
|
||||||
|
|
||||||
|
* Using welcoming and inclusive language
|
||||||
|
* Being respectful of differing viewpoints and experiences
|
||||||
|
* Gracefully accepting constructive criticism
|
||||||
|
* Focusing on what is best for the community
|
||||||
|
* Showing empathy towards other community members
|
||||||
|
* Contribute in a positive and constructive way
|
||||||
|
|
||||||
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||||
|
advances
|
||||||
|
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or electronic
|
||||||
|
address, without explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Our Community Guidelines
|
||||||
|
* Be clear and stay on topic. Communicating with strangers on the Internet can make it hard to convey or read tone, and sarcasm is frequently misunderstood. Try to use clear language, and think about how the other person will receive it.
|
||||||
|
* Don’t cross-post the same thing in multiple GitHub Discussion topics or multiple Slack channels. This can make it difficult for people answering your questions and creates "scrollback spam".
|
||||||
|
* Public discussion is preferred to private. Avoid using Slack DMs for questions, and instead share them in public Slack channels or GitHub Discussion threads. This allows a larger audience to both share their knowledge as well as learn from your question or issue. If you're having a problem, chances are someone else is having a similar problem. Learning in public is a community contribution.
|
||||||
|
* Minimize notifications to other community members. Avoid tagging other community members in Slack messages or Discussion threads, unless you are replying to something specific. Community members are here to help each other, but are not "on call" for support, and we expect everyone to try to minimize "notification fatigue". If your issue is time-sensitive or critical, use methods like support@pulumi.com instead.
|
||||||
|
|
||||||
|
## Our Responsibilities
|
||||||
|
|
||||||
|
Project maintainers are responsible for clarifying the standards of acceptable
|
||||||
|
behavior and are expected to take appropriate and fair corrective action in
|
||||||
|
response to any instances of unacceptable behavior.
|
||||||
|
|
||||||
|
Project maintainers have the right and responsibility to remove, edit, or
|
||||||
|
reject comments, commits, code, wiki edits, issues, GitHub Discussions posts,
|
||||||
|
and other contributions that are not aligned to this Code of Conduct, or to ban
|
||||||
|
temporarily or permanently any contributor for other behaviors that they deem
|
||||||
|
inappropriate, threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies both within project spaces (including the Community Slack
|
||||||
|
and GitHub Discussions forums) and in public spaces when an individual is representing the
|
||||||
|
project or its community. Examples of representing a project or community include
|
||||||
|
using an official project e-mail address, posting via an official social media account,
|
||||||
|
or acting as an appointed representative at an online or offline event. Representation
|
||||||
|
of a project may be further defined and clarified by project maintainers.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported by contacting the project team at code-of-conduct@pulumi.com. All
|
||||||
|
complaints will be reviewed and investigated and will result in a response that
|
||||||
|
is deemed necessary and appropriate to the circumstances. The project team is
|
||||||
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
|
Further details of specific enforcement policies may be posted separately.
|
||||||
|
|
||||||
|
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||||
|
faith may face temporary or permanent repercussions as determined by other
|
||||||
|
members of the project's leadership.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||||
|
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
35
CONTRIBUTING.md
Normal file
35
CONTRIBUTING.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Contributing to the Pulumi ecosystem
|
||||||
|
|
||||||
|
Do you want to contribute to Pulumi? Awesome! We are so happy to have you.
|
||||||
|
We have a few tips and housekeeping items to help you get up and running.
|
||||||
|
|
||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
Please make sure to read and observe our [Code of Conduct](./CODE-OF-CONDUCT.md)
|
||||||
|
|
||||||
|
## Community Expectations
|
||||||
|
|
||||||
|
Please read about our [contribution guidelines here.](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md#communications)
|
||||||
|
|
||||||
|
## Setting up your development environment
|
||||||
|
|
||||||
|
### Pulumi prerequisites
|
||||||
|
|
||||||
|
Please refer to the [main Pulumi repo](https://github.com/pulumi/pulumi/)'s [CONTRIBUTING.md file](
|
||||||
|
https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md#developing) for details on how to get set up with Pulumi.
|
||||||
|
|
||||||
|
## Committing Generated Code
|
||||||
|
|
||||||
|
You must generate and check in the SDKs on each pull request containing a code change, e.g. adding a new resource to `resources.go`.
|
||||||
|
|
||||||
|
1. Run `make build_sdks` from the root of this repository
|
||||||
|
1. Open a pull request containing all changes
|
||||||
|
1. *Note:* If a large number of seemingly-unrelated diffs are produced by `make build_sdks` (for example, lots of changes to comments unrelated to the change you are making), ensure that the latest dependencies for the provider are installed by running `go mod tidy` in the `provider/` directory of this repository.
|
||||||
|
|
||||||
|
## Running Integration Tests
|
||||||
|
|
||||||
|
The examples and integration tests in this repository will create and destroy real
|
||||||
|
cloud resources while running. Before running these tests, make sure that you have
|
||||||
|
configured access to your cloud provider with Pulumi.
|
||||||
|
|
||||||
|
*TODO: Add any steps you need to take to run integration tests here*
|
||||||
11
COPYRIGHT
Normal file
11
COPYRIGHT
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Except as otherwise noted below and/or in individual files, this
|
||||||
|
project is licensed under the Apache License, Version 2.0 (see
|
||||||
|
LICENSE or <http://www.apache.org/licenses/LICENSE-2.0>).
|
||||||
|
|
||||||
|
This project is a larger work that combines with software written
|
||||||
|
by third parties, licensed under their own terms.
|
||||||
|
|
||||||
|
Notably, this larger work combines with the Terraform XYZ Provider,
|
||||||
|
which is licensed under the Mozilla Public License 2.0 (see
|
||||||
|
<https://www.mozilla.org/en-US/MPL/2.0/> or the project itself at
|
||||||
|
<https://github.com/terraform-providers/terraform-provider-aws>).
|
||||||
285
Makefile
Normal file
285
Makefile
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
PACK := xyz
|
||||||
|
ORG := pulumi
|
||||||
|
PROJECT := github.com/$(ORG)/pulumi-$(PACK)
|
||||||
|
PROVIDER_PATH := provider
|
||||||
|
VERSION_PATH := $(PROVIDER_PATH)/pkg/version.Version
|
||||||
|
CODEGEN := pulumi-tfgen-$(PACK)
|
||||||
|
PROVIDER := pulumi-resource-$(PACK)
|
||||||
|
JAVA_GEN := pulumi-java-gen
|
||||||
|
TESTPARALLELISM := 10
|
||||||
|
GOTESTARGS := ""
|
||||||
|
WORKING_DIR := $(shell pwd)
|
||||||
|
PULUMI_PROVIDER_BUILD_PARALLELISM ?=
|
||||||
|
PULUMI_CONVERT := 1
|
||||||
|
PULUMI_MISSING_DOCS_ERROR := false
|
||||||
|
|
||||||
|
# Override during CI using `make [TARGET] PROVIDER_VERSION=""` or by setting a PROVIDER_VERSION environment variable
|
||||||
|
# Local & branch builds will just used this fixed default version unless specified
|
||||||
|
PROVIDER_VERSION ?= 1.0.0-alpha.0+dev
|
||||||
|
|
||||||
|
# Check version doesn't start with a "v" - this is a common mistake
|
||||||
|
ifeq ($(shell echo $(PROVIDER_VERSION) | cut -c1),v)
|
||||||
|
$(error PROVIDER_VERSION should not start with a "v")
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Strips debug information from the provider binary to reduce its size and speed up builds
|
||||||
|
LDFLAGS_STRIP_SYMBOLS=-s -w
|
||||||
|
LDFLAGS_PROJ_VERSION=-X $(PROJECT)/$(VERSION_PATH)=$(PROVIDER_VERSION)
|
||||||
|
LDFLAGS_UPSTREAM_VERSION=
|
||||||
|
LDFLAGS_EXTRAS=
|
||||||
|
LDFLAGS=$(LDFLAGS_PROJ_VERSION) $(LDFLAGS_UPSTREAM_VERSION) $(LDFLAGS_EXTRAS) $(LDFLAGS_STRIP_SYMBOLS)
|
||||||
|
|
||||||
|
# Create a `.make` directory for tracking targets which don't generate a single file output. This should be ignored by git.
|
||||||
|
# For targets which either don't generate a single file output, or the output file is committed, we use a "sentinel"
|
||||||
|
# file within `.make/` to track the staleness of the target and only rebuild when needed.
|
||||||
|
# For each phony target, we create an internal target with the same name, but prefixed with `.make/` where the work is performed.
|
||||||
|
# At the end of each internal target we run `@touch $@` to update the file which is the name of the target.
|
||||||
|
|
||||||
|
# Ensure all directories exist before evaluating targets to avoid issues with `touch` creating directories.
|
||||||
|
_ := $(shell mkdir -p .make bin .pulumi/bin)
|
||||||
|
|
||||||
|
# Build the provider and all SDKs and install ready for testing
|
||||||
|
build: install_plugins provider build_sdks install_sdks
|
||||||
|
# Keep aliases for old targets to ensure backwards compatibility
|
||||||
|
development: build
|
||||||
|
only_build: build
|
||||||
|
# Prepare the workspace for building the provider and SDKs
|
||||||
|
# Importantly this is run by CI ahead of restoring the bin directory and resuming SDK builds
|
||||||
|
prepare_local_workspace: install_plugins upstream
|
||||||
|
# Creates all generated files which need to be committed
|
||||||
|
generate: generate_sdks schema
|
||||||
|
generate_sdks: generate_dotnet generate_go generate_nodejs generate_python
|
||||||
|
build_sdks: build_dotnet build_go build_nodejs build_python
|
||||||
|
install_sdks: install_dotnet_sdk install_go_sdk install_nodejs_sdk install_python_sdk
|
||||||
|
.PHONY: development only_build build generate generate_sdks build_sdks install_sdks
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "Usage: make [target]"
|
||||||
|
@echo ""
|
||||||
|
@echo "Main Targets"
|
||||||
|
@echo " build (default) Build the provider and all SDKs and install for testing"
|
||||||
|
@echo " generate Generate all SDKs, documentation and schema"
|
||||||
|
@echo " provider Build the local provider binary"
|
||||||
|
@echo " lint_provider<.fix> Run the linter on the provider (& optionally fix)"
|
||||||
|
@echo " test_provider Run the provider tests"
|
||||||
|
@echo " test Run the example tests (must run 'build' first)"
|
||||||
|
@echo " clean Clean up generated files"
|
||||||
|
@echo ""
|
||||||
|
@echo "More Precise Targets"
|
||||||
|
@echo " schema Generate the schema"
|
||||||
|
@echo " generate_sdks Generate all SDKs"
|
||||||
|
@echo " build_sdks Build all SDKs"
|
||||||
|
@echo " install_sdks Install all SDKs"
|
||||||
|
@echo " provider_dist Build and package the provider for all platforms"
|
||||||
|
@echo ""
|
||||||
|
@echo "Tool Targets"
|
||||||
|
@echo " ci-mgmt Re-generate CI configuration from .ci-mgmt.yaml"
|
||||||
|
@echo " debug_tfgen Start a debug server for tfgen"
|
||||||
|
@echo ""
|
||||||
|
@echo "Internal Targets (automatically run as dependencies of other targets)"
|
||||||
|
@echo " prepare_local_workspace Prepare for building"
|
||||||
|
@echo " install_plugins Install plugin dependencies"
|
||||||
|
@echo " upstream Initialize the upstream submodule, if present"
|
||||||
|
@echo ""
|
||||||
|
@echo "Language-Specific Targets"
|
||||||
|
@echo " generate_[language] Generate the SDK files ready for committing"
|
||||||
|
@echo " build_[language] Build the SDK to check correctness"
|
||||||
|
@echo " install_[language]_sdk Install the SDK ready for testing"
|
||||||
|
@echo ""
|
||||||
|
@echo " [language] = dotnet go nodejs python"
|
||||||
|
@echo ""
|
||||||
|
.PHONY: help
|
||||||
|
|
||||||
|
GEN_PULUMI_HOME := $(WORKING_DIR)/.pulumi
|
||||||
|
GEN_PULUMI_CONVERT_EXAMPLES_CACHE_DIR := $(GEN_PULUMI_HOME)/examples-cache
|
||||||
|
GEN_ENVS := PULUMI_HOME=$(GEN_PULUMI_HOME) PULUMI_CONVERT_EXAMPLES_CACHE_DIR=$(GEN_PULUMI_CONVERT_EXAMPLES_CACHE_DIR) PULUMI_CONVERT=$(PULUMI_CONVERT) PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION=$(PULUMI_CONVERT)
|
||||||
|
|
||||||
|
generate_dotnet: .make/generate_dotnet
|
||||||
|
build_dotnet: .make/build_dotnet
|
||||||
|
.make/generate_dotnet: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH)
|
||||||
|
.make/generate_dotnet: .make/install_plugins bin/$(CODEGEN)
|
||||||
|
$(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) dotnet --out sdk/dotnet/
|
||||||
|
cd sdk/dotnet/ && \
|
||||||
|
printf "module fake_dotnet_module // Exclude this directory from Go tools\n\ngo 1.17\n" > go.mod && \
|
||||||
|
echo "$(PROVIDER_VERSION)" >version.txt
|
||||||
|
@touch $@
|
||||||
|
.make/build_dotnet: .make/generate_dotnet
|
||||||
|
cd sdk/dotnet/ && dotnet build
|
||||||
|
@touch $@
|
||||||
|
.PHONY: generate_dotnet build_dotnet
|
||||||
|
|
||||||
|
generate_go: .make/generate_go
|
||||||
|
build_go: .make/build_go
|
||||||
|
.make/generate_go: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH)
|
||||||
|
.make/generate_go: .make/install_plugins bin/$(CODEGEN)
|
||||||
|
$(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) go --out sdk/go/
|
||||||
|
@touch $@
|
||||||
|
.make/build_go: .make/generate_go
|
||||||
|
cd sdk && go list "$$(grep -e "^module" go.mod | cut -d ' ' -f 2)/go/..." | xargs -I {} bash -c 'go build {} && go clean -i {}'
|
||||||
|
@touch $@
|
||||||
|
.PHONY: generate_go build_go
|
||||||
|
|
||||||
|
generate_java: .make/generate_java
|
||||||
|
build_java: .make/build_java
|
||||||
|
.make/generate_java: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH)
|
||||||
|
.make/generate_java: PACKAGE_VERSION := $(PROVIDER_VERSION)
|
||||||
|
.make/generate_java: .make/install_plugins bin/pulumi-java-gen .make/schema
|
||||||
|
PULUMI_HOME=$(GEN_PULUMI_HOME) PULUMI_CONVERT_EXAMPLES_CACHE_DIR=$(GEN_PULUMI_CONVERT_EXAMPLES_CACHE_DIR) bin/$(JAVA_GEN) generate --schema provider/cmd/$(PROVIDER)/schema.json --out sdk/java --build gradle-nexus
|
||||||
|
printf "module fake_java_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/java/go.mod
|
||||||
|
@touch $@
|
||||||
|
.make/build_java: PACKAGE_VERSION := $(PROVIDER_VERSION)
|
||||||
|
.make/build_java: .make/generate_java
|
||||||
|
cd sdk/java/ && \
|
||||||
|
gradle --console=plain build && \
|
||||||
|
gradle --console=plain javadoc
|
||||||
|
@touch $@
|
||||||
|
.PHONY: generate_java build_java
|
||||||
|
|
||||||
|
generate_nodejs: .make/generate_nodejs
|
||||||
|
build_nodejs: .make/build_nodejs
|
||||||
|
.make/generate_nodejs: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH)
|
||||||
|
.make/generate_nodejs: .make/install_plugins bin/$(CODEGEN)
|
||||||
|
$(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) nodejs --out sdk/nodejs/
|
||||||
|
printf "module fake_nodejs_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/nodejs/go.mod
|
||||||
|
@touch $@
|
||||||
|
.make/build_nodejs: .make/generate_nodejs
|
||||||
|
cd sdk/nodejs/ && \
|
||||||
|
yarn install && \
|
||||||
|
yarn run tsc && \
|
||||||
|
cp ../../README.md ../../LICENSE* package.json yarn.lock ./bin/
|
||||||
|
@touch $@
|
||||||
|
.PHONY: generate_nodejs build_nodejs
|
||||||
|
|
||||||
|
generate_python: .make/generate_python
|
||||||
|
build_python: .make/build_python
|
||||||
|
.make/generate_python: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH)
|
||||||
|
.make/generate_python: .make/install_plugins bin/$(CODEGEN)
|
||||||
|
$(GEN_ENVS) $(WORKING_DIR)/bin/$(CODEGEN) python --out sdk/python/
|
||||||
|
printf "module fake_python_module // Exclude this directory from Go tools\n\ngo 1.17\n" > sdk/python/go.mod
|
||||||
|
cp README.md sdk/python/
|
||||||
|
@touch $@
|
||||||
|
.make/build_python: .make/generate_python
|
||||||
|
cd sdk/python/ && \
|
||||||
|
rm -rf ./bin/ ../python.bin/ && cp -R . ../python.bin && mv ../python.bin ./bin && \
|
||||||
|
rm ./bin/go.mod && \
|
||||||
|
python3 -m venv venv && \
|
||||||
|
./venv/bin/python -m pip install build==1.2.1 && \
|
||||||
|
cd ./bin && \
|
||||||
|
../venv/bin/python -m build .
|
||||||
|
@touch $@
|
||||||
|
.PHONY: generate_python build_python
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf sdk/{dotnet,nodejs,go,python}
|
||||||
|
rm -rf bin/*
|
||||||
|
rm -rf .make/*
|
||||||
|
if dotnet nuget list source | grep "$(WORKING_DIR)/nuget"; then \
|
||||||
|
dotnet nuget remove source "$(WORKING_DIR)/nuget" \
|
||||||
|
; fi
|
||||||
|
.PHONY: clean
|
||||||
|
|
||||||
|
install_dotnet_sdk: .make/install_dotnet_sdk
|
||||||
|
.make/install_dotnet_sdk: .make/build_dotnet
|
||||||
|
mkdir -p nuget
|
||||||
|
find sdk/dotnet/bin -name '*.nupkg' -print -exec cp -p "{}" ${WORKING_DIR}/nuget \;
|
||||||
|
if ! dotnet nuget list source | grep "${WORKING_DIR}/nuget"; then \
|
||||||
|
dotnet nuget add source "${WORKING_DIR}/nuget" --name "${WORKING_DIR}/nuget" \
|
||||||
|
; fi
|
||||||
|
@touch $@
|
||||||
|
install_go_sdk:
|
||||||
|
install_java_sdk:
|
||||||
|
install_nodejs_sdk: .make/install_nodejs_sdk
|
||||||
|
.make/install_nodejs_sdk: .make/build_nodejs
|
||||||
|
yarn link --cwd $(WORKING_DIR)/sdk/nodejs/bin
|
||||||
|
@touch $@
|
||||||
|
install_python_sdk:
|
||||||
|
.PHONY: install_dotnet_sdk install_go_sdk install_java_sdk install_nodejs_sdk install_python_sdk
|
||||||
|
|
||||||
|
lint_provider: upstream
|
||||||
|
cd provider && golangci-lint run --path-prefix provider -c ../.golangci.yml
|
||||||
|
# `lint_provider.fix` is a utility target meant to be run manually
|
||||||
|
# that will run the linter and fix errors when possible.
|
||||||
|
lint_provider.fix: upstream
|
||||||
|
cd provider && golangci-lint run --path-prefix provider -c ../.golangci.yml --fix
|
||||||
|
.PHONY: lint_provider lint_provider.fix
|
||||||
|
build_provider_cmd = cd provider && GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 go build $(PULUMI_PROVIDER_BUILD_PARALLELISM) -o "$(3)" -ldflags "$(LDFLAGS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(PROVIDER)
|
||||||
|
|
||||||
|
provider: bin/$(PROVIDER)
|
||||||
|
|
||||||
|
# `make provider_no_deps` builds the provider binary directly, without ensuring that
|
||||||
|
# `cmd/pulumi-resource-xyz/schema.json` is valid and up to date.
|
||||||
|
# To create a release ready binary, you should use `make provider`.
|
||||||
|
provider_no_deps:
|
||||||
|
$(call build_provider_cmd,$(shell go env GOOS),$(shell go env GOARCH),$(WORKING_DIR)/bin/$(PROVIDER))
|
||||||
|
bin/$(PROVIDER): .make/schema
|
||||||
|
$(call build_provider_cmd,$(shell go env GOOS),$(shell go env GOARCH),$(WORKING_DIR)/bin/$(PROVIDER))
|
||||||
|
.PHONY: provider provider_no_deps
|
||||||
|
|
||||||
|
test: export PATH := $(WORKING_DIR)/bin:$(PATH)
|
||||||
|
test:
|
||||||
|
cd examples && go test -v -tags=all -parallel $(TESTPARALLELISM) -timeout 2h $(value GOTESTARGS)
|
||||||
|
.PHONY: test
|
||||||
|
test_provider_cmd = cd provider && go test -v -short \
|
||||||
|
-coverprofile="coverage.txt" \
|
||||||
|
-coverpkg="./...,github.com/hashicorp/terraform-provider-..." \
|
||||||
|
-parallel $(TESTPARALLELISM) \
|
||||||
|
./...
|
||||||
|
test_provider:
|
||||||
|
$(call test_provider_cmd)
|
||||||
|
.PHONY: test_provider
|
||||||
|
|
||||||
|
tfgen: schema
|
||||||
|
schema: .make/schema
|
||||||
|
# This does actually have dependencies, but we're keeping it around for backwards compatibility for now
|
||||||
|
tfgen_no_deps: .make/schema
|
||||||
|
.make/schema: export PULUMI_HOME := $(WORKING_DIR)/.pulumi
|
||||||
|
.make/schema: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH)
|
||||||
|
.make/schema: export PULUMI_CONVERT := $(PULUMI_CONVERT)
|
||||||
|
.make/schema: export PULUMI_CONVERT_EXAMPLES_CACHE_DIR := $(WORKING_DIR)/.pulumi/examples-cache
|
||||||
|
.make/schema: export PULUMI_DISABLE_AUTOMATIC_PLUGIN_ACQUISITION := $(PULUMI_CONVERT)
|
||||||
|
.make/schema: export PULUMI_MISSING_DOCS_ERROR := $(PULUMI_MISSING_DOCS_ERROR)
|
||||||
|
.make/schema: bin/$(CODEGEN) .make/install_plugins .make/upstream
|
||||||
|
$(WORKING_DIR)/bin/$(CODEGEN) schema --out provider/cmd/$(PROVIDER)
|
||||||
|
(cd provider && VERSION=$(PROVIDER_VERSION) go generate cmd/$(PROVIDER)/main.go)
|
||||||
|
@touch $@
|
||||||
|
tfgen_build_only: bin/$(CODEGEN)
|
||||||
|
bin/$(CODEGEN): provider/*.go provider/go.* .make/upstream
|
||||||
|
(cd provider && go build $(PULUMI_PROVIDER_BUILD_PARALLELISM) -o $(WORKING_DIR)/bin/$(CODEGEN) -ldflags "$(LDFLAGS_PROJ_VERSION) $(LDFLAGS_EXTRAS)" $(PROJECT)/$(PROVIDER_PATH)/cmd/$(CODEGEN))
|
||||||
|
.PHONY: tfgen schema tfgen_no_deps tfgen_build_only
|
||||||
|
|
||||||
|
# Apply patches to the upstream submodule, if it exists
|
||||||
|
upstream: .make/upstream
|
||||||
|
# Re-run if the upstream commit or the patches change.
|
||||||
|
.make/upstream: $(wildcard patches/*) $(shell ./scripts/upstream.sh file_target)
|
||||||
|
./scripts/upstream.sh init
|
||||||
|
@touch $@
|
||||||
|
.PHONY: upstream
|
||||||
|
|
||||||
|
bin/pulumi-java-gen: PULUMI_JAVA_VERSION := $(shell cat .pulumi-java-gen.version)
|
||||||
|
bin/pulumi-java-gen: PLAT := $(shell go version | sed -En "s/go version go.* (.*)\/(.*)/\1-\2/p")
|
||||||
|
bin/pulumi-java-gen: PULUMI_JAVA_URL := "https://github.com/pulumi/pulumi-java/releases/download/v$(PULUMI_JAVA_VERSION)/pulumi-language-java-v$(PULUMI_JAVA_VERSION)-$(PLAT).tar.gz"
|
||||||
|
bin/pulumi-java-gen:
|
||||||
|
wget -q -O - "$(PULUMI_JAVA_URL)" | tar -xzf - -C $(WORKING_DIR)/bin pulumi-java-gen
|
||||||
|
@touch bin/pulumi-language-java
|
||||||
|
|
||||||
|
# To make an immediately observable change to .ci-mgmt.yaml:
|
||||||
|
#
|
||||||
|
# - Edit .ci-mgmt.yaml
|
||||||
|
# - Run make ci-mgmt to apply the change locally.
|
||||||
|
#
|
||||||
|
ci-mgmt: .ci-mgmt.yaml
|
||||||
|
go run github.com/pulumi/ci-mgmt/provider-ci@master generate
|
||||||
|
.PHONY: ci-mgmt
|
||||||
|
|
||||||
|
# Start debug server for tfgen
|
||||||
|
debug_tfgen:
|
||||||
|
dlv --listen=:2345 --headless=true --api-version=2 exec $(WORKING_DIR)/bin/$(CODEGEN) -- schema --out provider/cmd/$(PROVIDER)
|
||||||
|
.PHONY: debug_tfgen
|
||||||
|
|
||||||
|
include scripts/plugins.mk
|
||||||
|
include scripts/crossbuild.mk
|
||||||
|
|
||||||
|
# Permit providers to extend the Makefile with provider-specific Make includes.
|
||||||
|
include $(wildcard .mk/*.mk)
|
||||||
63
README.md
Normal file
63
README.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# Terraform Bridge Provider Boilerplate
|
||||||
|
|
||||||
|
This repository is the template for authoring a Pulumi package from an existing Terraform provider as part of the guide for [authoring and publishing Pulumi packages](https://www.pulumi.com/docs/iac/packages-and-automation/pulumi-packages/authoring/).
|
||||||
|
|
||||||
|
This repository is initially set up as a fictitious provider named "xyz" to demonstrate a resource, a data source and configuration derived from the [github.com/pulumi/terraform-provider-xyz provider](https://github.com/pulumi/terraform-provider-xyz).
|
||||||
|
|
||||||
|
Read the [setup instructions](SETUP.md) for step-by-step instructions on how to bridge a new provider and refer to our complete docs [guide for authoring and publishing a Pulumi Package](https://www.pulumi.com/docs/iac/packages-and-automation/pulumi-packages/authoring/).
|
||||||
|
|
||||||
|
# Xyz Resource Provider
|
||||||
|
|
||||||
|
The Xyz Resource Provider lets you manage [Xyz](http://example.com) resources.
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
This package is available for several languages/platforms:
|
||||||
|
|
||||||
|
### Node.js (JavaScript/TypeScript)
|
||||||
|
|
||||||
|
To use from JavaScript or TypeScript in Node.js, install using either `npm`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install @pulumi/xyz
|
||||||
|
```
|
||||||
|
|
||||||
|
or `yarn`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn add @pulumi/xyz
|
||||||
|
```
|
||||||
|
|
||||||
|
### Python
|
||||||
|
|
||||||
|
To use from Python, install using `pip`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install pulumi_xyz
|
||||||
|
```
|
||||||
|
|
||||||
|
### Go
|
||||||
|
|
||||||
|
To use from Go, use `go get` to grab the latest version of the library:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get github.com/pulumi/pulumi-xyz/sdk/go/...
|
||||||
|
```
|
||||||
|
|
||||||
|
### .NET
|
||||||
|
|
||||||
|
To use from .NET, install using `dotnet add package`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet add package Pulumi.Xyz
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The following configuration points are available for the `xyz` provider:
|
||||||
|
|
||||||
|
- `xyz:region` (environment: `XYZ_REGION`) - the region in which to deploy resources
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
For detailed reference documentation, please visit [the Pulumi registry](https://www.pulumi.com/registry/packages/xyz/api-docs/).
|
||||||
326
SETUP.md
Normal file
326
SETUP.md
Normal file
@@ -0,0 +1,326 @@
|
|||||||
|
# Terraform Bridge Provider Boilerplate
|
||||||
|
|
||||||
|
This repository is the template for authoring a Pulumi package from an existing Terraform provider as part of the guide for [authoring and publishing Pulumi packages](https://www.pulumi.com/docs/iac/packages-and-automation/pulumi-packages/authoring/).
|
||||||
|
|
||||||
|
This repository is initially set up as a fictitious provider named "xyz" to demonstrate a resource, a data source and configuration derived from the [github.com/pulumi/terraform-provider-xyz provider](https://github.com/pulumi/terraform-provider-xyz).
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
Ensure the following tools are installed and present in your `$PATH`:
|
||||||
|
|
||||||
|
- [`pulumictl`](https://github.com/pulumi/pulumictl#installation)
|
||||||
|
- [Go](https://golang.org/dl/) or 1.latest
|
||||||
|
- [`golangci-lint`](https://golangci-lint.run/welcome/install/)
|
||||||
|
- [NodeJS](https://nodejs.org/en/) Active or maintenance version ([Node.js Releases](https://nodejs.org/en/about/previous-releases)). We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage NodeJS installations.
|
||||||
|
- [Yarn](https://yarnpkg.com/)
|
||||||
|
- [TypeScript](https://www.typescriptlang.org/)
|
||||||
|
- [Python](https://www.python.org/downloads/) (called as `python3`). For recent versions of MacOS, the system-installed version is fine.
|
||||||
|
- [.NET](https://dotnet.microsoft.com/download)
|
||||||
|
|
||||||
|
## Creating the Repository
|
||||||
|
|
||||||
|
Pulumi offers this repository as a [GitHub template repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template) for convenience. From this repository:
|
||||||
|
|
||||||
|
1. Click "Use this template".
|
||||||
|
1. Follow the new repository options:
|
||||||
|
- Owner: select your GitHub organization or username
|
||||||
|
- Repository name: A name prefixed with `pulumi-` as is the standard convention for Pulumi providers
|
||||||
|
- Description: E.g. "Pulumi provider for ..."
|
||||||
|
- Repository type: This must be Public to be published to the Pulumi registry
|
||||||
|
1. Clone your new repository ready for development.
|
||||||
|
|
||||||
|
## Initializing the Provider
|
||||||
|
|
||||||
|
From the templated repository run the init program and follow the prompts to replace the name "xyz" with the name of your provider:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> This program can also be run non-interactively, passing the options via arguments. Run `./setup.sh -h` for the usage instructions.
|
||||||
|
|
||||||
|
Pulumi provider repositories have the following general structure:
|
||||||
|
|
||||||
|
- `examples/` sample code which may optionally be included as integration tests to be run as part of a CI/CD pipeline
|
||||||
|
- `provider/` Go code used to create the provider as well as generate the SDKs in the various languages that Pulumi supports
|
||||||
|
- `provider/cmd/pulumi-tfgen-xyz` executable program to generate the Pulumi resource schema
|
||||||
|
- `provider/cmd/pulumi-resource-xyz` provider plugin executable
|
||||||
|
- `provider/resources.go` Terraform-to-Pulumi mappings and configuration
|
||||||
|
- `sdk/` generated SDKs for each language in a separate subfolder
|
||||||
|
|
||||||
|
### Review & Customise Your Provider
|
||||||
|
|
||||||
|
1. Review the updated `README.md` to include the following:
|
||||||
|
- Short introductory paragraph describing the type of resources the provider manages.
|
||||||
|
- In the "Installing" section, correct package names for the various SDK libraries in the languages Pulumi supports.
|
||||||
|
- In the "Configuration" section, any configurable options for the provider. These may include, but are not limited to, environment variables or options that can be set via [`pulumi config set`](https://www.pulumi.com/docs/reference/cli/pulumi_config_set/).
|
||||||
|
- In the "Reference" section, provide a link to the to-be-published documentation.
|
||||||
|
|
||||||
|
1. Update the `DisplayName`, `Publisher`, and `Homepage` values in `provider/resources.go`.
|
||||||
|
|
||||||
|
1. Verify the upstream Terraform provider module import in the `provider/go.mod` and `provider/resources.go` are correct.
|
||||||
|
- If the name of the desired Pulumi provider differs from the name of the Terraform provider, you will need to carefully distinguish between the references - see <https://github.com/pulumi/pulumi-azure> for an example.
|
||||||
|
|
||||||
|
1. Verify and download dependencies in the `provider/go.mod`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd provider && go mod tidy)
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Generate the provider's schema:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make tfgen
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Take note of warnings & errors in the output when generating the schema.
|
||||||
|
|
||||||
|
## Build the Provider and SDKs
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Most providers can use [automatic token mapping](https://github.com/pulumi/pulumi-terraform-bridge/blob/master/docs/guides/automatic-token-mapping.md) which generates the `bridge-metadata.json` file. If you have warnings about unmapped resources in the step above, refer to the section on [Manual Mappings](#manual-mappings).
|
||||||
|
> If you need to customise the behaviour of the provider configuration, refer to the section [Customise Provider Configuration](#customise-provider-configuration).
|
||||||
|
|
||||||
|
1. Build the provider binary and ensure there are no warnings about unmapped resources and no warnings about unmapped data sources:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make provider
|
||||||
|
```
|
||||||
|
|
||||||
|
You may see warnings about documentation and examples, including "unexpected code snippets". These can be safely ignored for now. Pulumi will add additional documentation on mapping docs in a future revision of this guide.
|
||||||
|
|
||||||
|
1. Build the SDKs in the various languages Pulumi supports:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make build_sdks
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Ensure the Golang SDK is a proper go module:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd sdk && go mod tidy && cd -
|
||||||
|
```
|
||||||
|
|
||||||
|
This will pull in the correct dependencies in `sdk/go.mod` as well as setting the dependency tree in `sdk/go.sum`.
|
||||||
|
|
||||||
|
1. Finally, ensure the provider code conforms to Go standards:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make lint_provider
|
||||||
|
```
|
||||||
|
|
||||||
|
Some issues found by the linter can be fixed automatically by running `make lint_provider.fix`.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> If you make revisions to code in `resources.go`, you must re-run the `make tfgen` target to regenerate the schema.
|
||||||
|
|
||||||
|
## Sample Program
|
||||||
|
|
||||||
|
In this section, we will create a Pulumi program in TypeScript that utilizes the provider we created to ensure everything is working properly.
|
||||||
|
|
||||||
|
1. Create an account with the provider's service and generate any necessary credentials, e.g. API keys.
|
||||||
|
- Email: <bot@pulumi.com>
|
||||||
|
- Password: (Create a random password in 1Password with the maximum length and complexity allowed by the provider.)
|
||||||
|
- Ensure all secrets (passwords, generated API keys) are stored in Pulumi's 1Password vault.
|
||||||
|
|
||||||
|
1. Copy the `pulumi-resource-xyz` binary generated by `make provider` and place it in your `$PATH` (`$GOPATH/bin` is a convenient choice), e.g.:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp bin/pulumi-resource-xyz $GOPATH/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Tell Yarn to use your local copy of the SDK:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make install_nodejs_sdk
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Create a new Pulumi program in the `examples/` directory, e.g.:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir examples/my-example/ts # Change "my-example" to something more meaningful.
|
||||||
|
cd examples/my-example/ts
|
||||||
|
pulumi new typescript
|
||||||
|
# (Go through the prompts with the default values)
|
||||||
|
npm install
|
||||||
|
yarn link @pulumi/xyz
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Create a minimal program for the provider, i.e. one that creates the smallest-footprint resource. Place this code in `index.ts`.
|
||||||
|
1. Configure any necessary environment variables for authentication, e.g `$XYZ_USERNAME`, `$XYZ_TOKEN`, in your local environment.
|
||||||
|
1. Ensure the program runs successfully via `pulumi up`.
|
||||||
|
1. Once the program completes successfully, verify the resource was created in the provider's UI.
|
||||||
|
1. Destroy any resources created by the program via `pulumi destroy`.
|
||||||
|
|
||||||
|
## End-to-end Testing
|
||||||
|
|
||||||
|
Integration tests are Go tests residing in `examples/*_test.go`. Each test executes a program from a subdirectory within `examples/`. All tests are initially marked to be skipped as the example `xyz` provider is not fully implemented and will fail with "not implemented".
|
||||||
|
|
||||||
|
1. Update an example to update to use a resource generated from your provider SDK (e.g. update the code in `index.ts` of `examples/basic-ts`)
|
||||||
|
|
||||||
|
1. Locate the Go test for the example (e.g. `examples/basic-ts` is tested by `TestBasicTs` in `examples/examples_nodejs_test.go`)
|
||||||
|
|
||||||
|
1. Remove the "skip" directive on the first line: `t.Skip(...)`
|
||||||
|
|
||||||
|
1. Run the tests:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make test
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also run each test file separately via test tags:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd examples && go test -v -tags=nodejs)
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Repeat the process for each language and add new examples and tests as needed.
|
||||||
|
|
||||||
|
## Configure GitHub Actions CI
|
||||||
|
|
||||||
|
This template utilizes Pulumi's [ci-mgmt templates](https://github.com/pulumi/ci-mgmt/) to automatically generate CI workflows and other build tooling.
|
||||||
|
|
||||||
|
This is configured via the [`.ci-mgmt.yaml`](.ci-mgmt.yaml) file and can be re-generated by running `make ci-mgmt` which also updates to the latest version of the tool.
|
||||||
|
|
||||||
|
The default configuration is designed for third-party use and will need to be adjusted for Pulumi internal providers.
|
||||||
|
|
||||||
|
### CI Management
|
||||||
|
|
||||||
|
When you have set up your provider with this template, your `.github/workflows` folder will contain a `resync-build.yml` Workflow
|
||||||
|
which runs a once-a week cronjob to upgrade the workflow files to match the latest process for Pulumi providers.
|
||||||
|
|
||||||
|
The Workflow will open a pull request so you can review the changes, make adjustments to your `.ci-mgmt.yaml` config file, and merge.
|
||||||
|
|
||||||
|
We recommend setting `PULUMI_PROVIDER_AUTOMATION_TOKEN` to a token with `pull-requests: write` permissions on your repository so that acceptance tests run on these automated pull requests.
|
||||||
|
|
||||||
|
Documentation for the settings available in `.ci-mgmt.yaml` is a work in progress, but the [source code comments](https://github.com/pulumi/ci-mgmt/blob/master/provider-ci/internal/pkg/config.go)
|
||||||
|
or [default config descriptions](https://github.com/pulumi/ci-mgmt/blob/master/provider-ci/internal/pkg/templates/defaults.config.yaml) may be useful.
|
||||||
|
|
||||||
|
## Final Steps
|
||||||
|
|
||||||
|
1. Ensure all required configurations (API keys, etc.) are documented in README-PROVIDER.md.
|
||||||
|
|
||||||
|
1. Delete the boilerplate's `SETUP.md` and `setup.sh` files.
|
||||||
|
|
||||||
|
1. Register your provider in the Pulumi Registry. See [Publishing a Community Package on the Registry](https://github.com/pulumi/registry#publishing-a-community-package-on-the-registry).
|
||||||
|
|
||||||
|
Now you are ready to use the provider, cut releases, and have some well-deserved :ice_cream:!
|
||||||
|
|
||||||
|
## Manual Mappings
|
||||||
|
|
||||||
|
In this section we will add the mappings that allow the interoperation between the Pulumi provider and the Terraform provider. Terraform resources map to an identically named concept in Pulumi. Terraform data sources map to plain old functions in your supported programming language of choice. Pulumi also allows provider functions and resources to be grouped into _namespaces_ to improve the cohesion of a provider's code, thereby making it easier for developers to use. If your provider has a large number of resources, consider using namespaces to improve usability.
|
||||||
|
|
||||||
|
The following instructions all pertain to `provider/resources.go`, in the section of the code where we construct a `tfbridge.ProviderInfo` object:
|
||||||
|
|
||||||
|
1. **Add resource mappings:** For each resource in the provider, add an entry in the `Resources` property of the `tfbridge.ProviderInfo`, e.g.:
|
||||||
|
|
||||||
|
```go
|
||||||
|
// Most providers will have all resources (and data sources) in the main module.
|
||||||
|
// Note the mapping from snake_case HCL naming conventions to UpperCamelCase Pulumi SDK naming conventions.
|
||||||
|
// The name of the provider is omitted from the mapped name due to the presence of namespaces in all supported Pulumi languages.
|
||||||
|
"xyz_something": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "Something")},
|
||||||
|
"xyz_something_else": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "SomethingElse")},
|
||||||
|
```
|
||||||
|
|
||||||
|
1. **Add CSharpName (if necessary):** Dotnet does not allow for fields named the same as the enclosing type, which sometimes results in errors during the dotnet SDK build.
|
||||||
|
If you see something like
|
||||||
|
|
||||||
|
```text
|
||||||
|
error CS0542: 'ApiKey': member names cannot be the same as their enclosing type [/Users/guin/go/src/github.com/pulumi/pulumi-artifactory/sdk/dotnet/Pulumi.Artifactory.csproj]
|
||||||
|
```
|
||||||
|
|
||||||
|
you'll want to give your Resource a CSharpName, which can have any value that makes sense:
|
||||||
|
|
||||||
|
```go
|
||||||
|
"xyz_something": {
|
||||||
|
Tok: tfbridge.MakeResource(mainPkg, mainMod, "Something"),
|
||||||
|
Fields: map[string]*tfbridge.SchemaInfo{
|
||||||
|
"something": {
|
||||||
|
CSharpName: "SomethingField",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
|
[See the underlying terraform-bridge code here.](https://github.com/pulumi/pulumi-terraform-bridge/blob/master/pkg/tfbridge/info.go#L168)
|
||||||
|
1. **Add data source mappings:** For each data source in the provider, add an entry in the `DataSources` property of the `tfbridge.ProviderInfo`, e.g.:
|
||||||
|
|
||||||
|
```go
|
||||||
|
// Note the 'get' prefix for data sources
|
||||||
|
"xyz_something": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getSomething")},
|
||||||
|
"xyz_something_else": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getSomethingElse")},
|
||||||
|
```
|
||||||
|
|
||||||
|
1. **Add documentation mapping (sometimes needed):** If the upstream provider's repo is not a part of the `terraform-providers` GitHub organization, specify the `GitHubOrg` property of `tfbridge.ProviderInfo` to ensure that documentation is picked up by the codegen process, and that attribution for the upstream provider is correct, e.g.:
|
||||||
|
|
||||||
|
```go
|
||||||
|
GitHubOrg: "my-gh-org",
|
||||||
|
```
|
||||||
|
|
||||||
|
## Customise Provider Configuration
|
||||||
|
|
||||||
|
Pulumi's Terraform bridge automatically detects configuration options for the upstream provider. However, in rare cases these settings may need to be overridden, e.g. if we want to change an environment variable default from `API_KEY` to `XYZ_API_KEY`. Examples of common uses cases:
|
||||||
|
|
||||||
|
```go
|
||||||
|
"additional_required_parameter": {},
|
||||||
|
"additional_optional_string_parameter": {
|
||||||
|
Default: &tfbridge.DefaultInfo{
|
||||||
|
Value: "default_value",
|
||||||
|
},
|
||||||
|
"additional_optional_boolean_parameter": {
|
||||||
|
Default: &tfbridge.DefaultInfo{
|
||||||
|
Value: true,
|
||||||
|
},
|
||||||
|
// Renamed environment variables can be accounted for like so:
|
||||||
|
"apikey": {
|
||||||
|
Default: &tfbridge.DefaultInfo{
|
||||||
|
EnvVars: []string{"XYZ_API_KEY"},
|
||||||
|
},
|
||||||
|
```
|
||||||
|
|
||||||
|
## The Shim Pattern
|
||||||
|
|
||||||
|
If you receive the following error: `use of internal package github.com/example/terraform-provider-example/internal/provider not allowed`, you need to use
|
||||||
|
the shim model below, and replace the example item:
|
||||||
|
<!-- markdownlint-disable MD010 -->
|
||||||
|
```bash
|
||||||
|
|
||||||
|
mkdir -p provider/shim
|
||||||
|
cat <<-EOF> provider/shim/go.mod
|
||||||
|
module github.com/example/terraform-provider-example/shim
|
||||||
|
|
||||||
|
go 1.18
|
||||||
|
|
||||||
|
require github.com/hashicorp/terraform-plugin-sdk/v2 v2.22.0
|
||||||
|
require github.com/example/terraform-provider-example v1.0.0
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<-EOF> provider/shim/shim.go
|
||||||
|
package shim
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
|
||||||
|
"github.com/example/terraform-provider-example/internal/provider"
|
||||||
|
)
|
||||||
|
|
||||||
|
// fix provider.Provider here to match whats in internal/provider
|
||||||
|
func Provider() *schema.Provider {
|
||||||
|
return provider.Provider()
|
||||||
|
}
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cd provider/shim/ && go mod tidy && cd ../../
|
||||||
|
|
||||||
|
cat <<EOF>> provider/go.mod
|
||||||
|
replace github.com/example/terraform-provider-example/shim => ./shim
|
||||||
|
require github.com/example/terraform-provider-example/shim v0.0.0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cd provider && go mod tidy
|
||||||
|
|
||||||
|
```
|
||||||
|
<!-- markdownlint-enable MD010 -->
|
||||||
22
devbox.json
Normal file
22
devbox.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"packages": [
|
||||||
|
"yarn@latest",
|
||||||
|
"pulumictl@latest",
|
||||||
|
"go@1.21.",
|
||||||
|
"nodejs@20.",
|
||||||
|
"python3@3.11.8",
|
||||||
|
"dotnet-sdk@8.0.",
|
||||||
|
"gradle_7@7.6",
|
||||||
|
"curl@8"
|
||||||
|
],
|
||||||
|
"shell": {
|
||||||
|
"init_hook": [
|
||||||
|
"export PATH=\"$(pwd)/bin/:$PATH\""
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"test": [
|
||||||
|
"echo \"Error: no test specified\" && exit 1"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
devbox.lock
Normal file
1
devbox.lock
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
4
examples/.gitignore
vendored
Normal file
4
examples/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
.pulumi/
|
||||||
|
**/bin/
|
||||||
|
node_modules/
|
||||||
|
|
||||||
3
examples/basic-py/Pulumi.yaml
Normal file
3
examples/basic-py/Pulumi.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
name: basic-py
|
||||||
|
runtime: python
|
||||||
|
description: A basic python program for integration testing
|
||||||
18
examples/basic-py/__main__.py
Normal file
18
examples/basic-py/__main__.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Copyright 2024, Pulumi Corporation.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
import pulumi
|
||||||
|
import pulumi_xyz
|
||||||
|
|
||||||
|
resource = pulumi_xyz.Resource("Resource", sample_attribute = "attr")
|
||||||
2
examples/basic-py/requirements.txt
Normal file
2
examples/basic-py/requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
pulumi>=3.0.0,<4.0.0
|
||||||
|
pulumi-xyz>=1.0.0,<2.0.0
|
||||||
2
examples/basic-ts/.gitignore
vendored
Normal file
2
examples/basic-ts/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/bin/
|
||||||
|
/node_modules/
|
||||||
3
examples/basic-ts/Pulumi.yaml
Normal file
3
examples/basic-ts/Pulumi.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
name: basic-ts
|
||||||
|
runtime: nodejs
|
||||||
|
description: A basic typescript program for integration testing
|
||||||
6
examples/basic-ts/index.ts
Normal file
6
examples/basic-ts/index.ts
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import * as pulumi from "@pulumi/pulumi";
|
||||||
|
import * as xyz from "@pulumi/xyz";
|
||||||
|
|
||||||
|
const resource = new xyz.Resource("Resource", { sampleAttribute: "attr" });
|
||||||
|
|
||||||
|
export const sampleAttribute = resource.sampleAttribute;
|
||||||
10
examples/basic-ts/package.json
Normal file
10
examples/basic-ts/package.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"name": "basic",
|
||||||
|
"main": "index.ts",
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^18"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@pulumi/pulumi": "^3.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
18
examples/basic-ts/tsconfig.json
Normal file
18
examples/basic-ts/tsconfig.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"strict": true,
|
||||||
|
"outDir": "bin",
|
||||||
|
"target": "es2016",
|
||||||
|
"module": "commonjs",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"sourceMap": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"pretty": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"noImplicitReturns": true,
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
5
examples/examples_dotnet_test.go
Normal file
5
examples/examples_dotnet_test.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
// Copyright 2024, Pulumi Corporation. All rights reserved.
|
||||||
|
//go:build dotnet || all
|
||||||
|
// +build dotnet all
|
||||||
|
|
||||||
|
package examples
|
||||||
5
examples/examples_go_test.go
Normal file
5
examples/examples_go_test.go
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
// Copyright 2024, Pulumi Corporation. All rights reserved.
|
||||||
|
//go:build go || all
|
||||||
|
// +build go all
|
||||||
|
|
||||||
|
package examples
|
||||||
22
examples/examples_nodejs_test.go
Normal file
22
examples/examples_nodejs_test.go
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
// Copyright 2024, Pulumi Corporation. All rights reserved.
|
||||||
|
//go:build nodejs || all
|
||||||
|
// +build nodejs all
|
||||||
|
|
||||||
|
package examples
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi/pkg/v3/testing/integration"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBasicTs(t *testing.T) {
|
||||||
|
t.Skip("Skipping until the provider has been implemented")
|
||||||
|
|
||||||
|
opts := getJSBaseOptions(t).With(integration.ProgramTestOptions{
|
||||||
|
Dir: filepath.Join(getCwd(t), "basic-ts"),
|
||||||
|
})
|
||||||
|
|
||||||
|
integration.ProgramTest(t, &opts)
|
||||||
|
}
|
||||||
23
examples/examples_py_test.go
Normal file
23
examples/examples_py_test.go
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// Copyright 2024, Pulumi Corporation. All rights reserved.
|
||||||
|
//go:build python || all
|
||||||
|
// +build python all
|
||||||
|
|
||||||
|
package examples
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi/pkg/v3/testing/integration"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBasicPy(t *testing.T) {
|
||||||
|
t.Skip("Skipping until the provider has been implemented")
|
||||||
|
|
||||||
|
test := getPythonBaseOptions(t).
|
||||||
|
With(integration.ProgramTestOptions{
|
||||||
|
Dir: filepath.Join(getCwd(t), "basic-py"),
|
||||||
|
})
|
||||||
|
|
||||||
|
integration.ProgramTest(t, &test)
|
||||||
|
}
|
||||||
98
examples/examples_test.go
Normal file
98
examples/examples_test.go
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
// Copyright 2024, Pulumi Corporation. All rights reserved.
|
||||||
|
package examples
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi/pkg/v3/testing/integration"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getJSBaseOptions(t *testing.T) integration.ProgramTestOptions {
|
||||||
|
t.Helper()
|
||||||
|
base := getBaseOptions(t)
|
||||||
|
baseJS := base.With(integration.ProgramTestOptions{
|
||||||
|
Dependencies: []string{
|
||||||
|
"@pulumi/xyz",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return baseJS
|
||||||
|
}
|
||||||
|
|
||||||
|
func getPythonBaseOptions(t *testing.T) integration.ProgramTestOptions {
|
||||||
|
t.Helper()
|
||||||
|
base := getBaseOptions(t)
|
||||||
|
basePython := base.With(integration.ProgramTestOptions{
|
||||||
|
Dependencies: []string{
|
||||||
|
filepath.Join("..", "sdk", "python", "bin"),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return basePython
|
||||||
|
}
|
||||||
|
|
||||||
|
func getGoBaseOptions(t *testing.T) integration.ProgramTestOptions {
|
||||||
|
t.Helper()
|
||||||
|
goDepRoot := os.Getenv("PULUMI_GO_DEP_ROOT")
|
||||||
|
if goDepRoot == "" {
|
||||||
|
var err error
|
||||||
|
goDepRoot, err = filepath.Abs("../..")
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
rootSdkPath, err := filepath.Abs("../sdk")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
base := getBaseOptions(t)
|
||||||
|
baseJS := base.With(integration.ProgramTestOptions{
|
||||||
|
Dependencies: []string{
|
||||||
|
fmt.Sprintf("github.com/pulumi/pulumi-xyz/sdk=%s", rootSdkPath),
|
||||||
|
},
|
||||||
|
Env: []string{
|
||||||
|
fmt.Sprintf("PULUMI_GO_DEP_ROOT=%s", goDepRoot),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return baseJS
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCSBaseOptions(t *testing.T) integration.ProgramTestOptions {
|
||||||
|
t.Helper()
|
||||||
|
base := getBaseOptions(t)
|
||||||
|
baseJS := base.With(integration.ProgramTestOptions{
|
||||||
|
Dependencies: []string{
|
||||||
|
"Pulumi.Xyz",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return baseJS
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCwd(t *testing.T) string {
|
||||||
|
cwd, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
return cwd
|
||||||
|
}
|
||||||
|
|
||||||
|
func getBaseOptions(t *testing.T) integration.ProgramTestOptions {
|
||||||
|
t.Helper()
|
||||||
|
binPath, err := filepath.Abs("../bin")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
fmt.Printf("Using binPath %s\n", binPath)
|
||||||
|
return integration.ProgramTestOptions{
|
||||||
|
LocalProviders: []integration.LocalDependency{
|
||||||
|
{
|
||||||
|
Package: "xyz",
|
||||||
|
Path: binPath,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
181
examples/go.mod
Normal file
181
examples/go.mod
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
module github.com/pulumi/pulumi-xyz/examples
|
||||||
|
|
||||||
|
go 1.22
|
||||||
|
|
||||||
|
toolchain go1.22.11
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/pulumi/pulumi/pkg/v3 v3.160.0
|
||||||
|
github.com/stretchr/testify v1.10.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
cloud.google.com/go v0.112.1 // indirect
|
||||||
|
cloud.google.com/go/compute/metadata v0.5.0 // indirect
|
||||||
|
cloud.google.com/go/iam v1.1.6 // indirect
|
||||||
|
cloud.google.com/go/kms v1.15.7 // indirect
|
||||||
|
cloud.google.com/go/logging v1.9.0 // indirect
|
||||||
|
cloud.google.com/go/longrunning v0.5.5 // indirect
|
||||||
|
cloud.google.com/go/storage v1.39.1 // indirect
|
||||||
|
dario.cat/mergo v1.0.0 // indirect
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect
|
||||||
|
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
|
||||||
|
github.com/BurntSushi/toml v1.2.1 // indirect
|
||||||
|
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||||
|
github.com/ProtonMail/go-crypto v1.1.3 // indirect
|
||||||
|
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
|
||||||
|
github.com/agext/levenshtein v1.2.3 // indirect
|
||||||
|
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
|
||||||
|
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
|
||||||
|
github.com/atotto/clipboard v0.1.4 // indirect
|
||||||
|
github.com/aws/aws-sdk-go v1.50.36 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/kms v1.30.1 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect
|
||||||
|
github.com/aws/smithy-go v1.20.2 // indirect
|
||||||
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||||
|
github.com/blang/semver v3.5.1+incompatible // indirect
|
||||||
|
github.com/cenkalti/backoff/v3 v3.2.2 // indirect
|
||||||
|
github.com/charmbracelet/bubbles v0.16.1 // indirect
|
||||||
|
github.com/charmbracelet/bubbletea v0.25.0 // indirect
|
||||||
|
github.com/charmbracelet/lipgloss v0.7.1 // indirect
|
||||||
|
github.com/cheggaaa/pb v1.0.29 // indirect
|
||||||
|
github.com/cloudflare/circl v1.3.7 // indirect
|
||||||
|
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
|
||||||
|
github.com/cyphar/filepath-securejoin v0.3.6 // indirect
|
||||||
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
|
github.com/deckarep/golang-set/v2 v2.5.0 // indirect
|
||||||
|
github.com/djherbis/times v1.5.0 // indirect
|
||||||
|
github.com/edsrzf/mmap-go v1.1.0 // indirect
|
||||||
|
github.com/emirpasic/gods v1.18.1 // indirect
|
||||||
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||||
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||||
|
github.com/go-git/go-billy/v5 v5.6.1 // indirect
|
||||||
|
github.com/go-git/go-git/v5 v5.13.1 // indirect
|
||||||
|
github.com/go-jose/go-jose/v3 v3.0.4 // indirect
|
||||||
|
github.com/go-logr/logr v1.4.1 // indirect
|
||||||
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
|
github.com/gofrs/uuid v4.2.0+incompatible // indirect
|
||||||
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
|
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
|
||||||
|
github.com/golang/glog v1.2.4 // indirect
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
|
github.com/golang/protobuf v1.5.4 // indirect
|
||||||
|
github.com/google/go-querystring v1.1.0 // indirect
|
||||||
|
github.com/google/s2a-go v0.1.7 // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/google/wire v0.6.0 // indirect
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
|
||||||
|
github.com/googleapis/gax-go/v2 v2.12.2 // indirect
|
||||||
|
github.com/gorilla/mux v1.8.0 // indirect
|
||||||
|
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
|
||||||
|
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||||
|
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
|
||||||
|
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
|
||||||
|
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect
|
||||||
|
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
|
||||||
|
github.com/hashicorp/go-sockaddr v1.0.6 // indirect
|
||||||
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
|
github.com/hashicorp/hcl/v2 v2.22.0 // indirect
|
||||||
|
github.com/hashicorp/vault/api v1.12.0 // indirect
|
||||||
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
||||||
|
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
github.com/kevinburke/ssh_config v1.2.0 // indirect
|
||||||
|
github.com/kylelemons/godebug v1.1.0 // indirect
|
||||||
|
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
|
github.com/mattn/go-localereader v0.0.1 // indirect
|
||||||
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
|
github.com/mitchellh/copystructure v1.2.0 // indirect
|
||||||
|
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||||
|
github.com/mitchellh/go-ps v1.0.0 // indirect
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||||
|
github.com/mitchellh/reflectwalk v1.0.2 // indirect
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
||||||
|
github.com/muesli/cancelreader v0.2.2 // indirect
|
||||||
|
github.com/muesli/reflow v0.3.0 // indirect
|
||||||
|
github.com/muesli/termenv v0.15.2 // indirect
|
||||||
|
github.com/natefinch/atomic v1.0.1 // indirect
|
||||||
|
github.com/opentracing/basictracer-go v1.1.0 // indirect
|
||||||
|
github.com/opentracing/opentracing-go v1.2.0 // indirect
|
||||||
|
github.com/pgavlin/fx v0.1.6 // indirect
|
||||||
|
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect
|
||||||
|
github.com/pjbgf/sha1cd v0.3.0 // indirect
|
||||||
|
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/pkg/term v1.1.0 // indirect
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
|
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
|
||||||
|
github.com/pulumi/esc v0.10.0 // indirect
|
||||||
|
github.com/pulumi/pulumi/sdk/v3 v3.160.0 // indirect
|
||||||
|
github.com/rivo/uniseg v0.4.4 // indirect
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0 // indirect
|
||||||
|
github.com/ryanuber/go-glob v1.0.0 // indirect
|
||||||
|
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect
|
||||||
|
github.com/segmentio/asm v1.1.3 // indirect
|
||||||
|
github.com/segmentio/encoding v0.3.5 // indirect
|
||||||
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||||
|
github.com/skeema/knownhosts v1.3.0 // indirect
|
||||||
|
github.com/spf13/cobra v1.8.0 // indirect
|
||||||
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
|
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
|
||||||
|
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
|
||||||
|
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
|
||||||
|
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||||
|
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
|
||||||
|
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
|
||||||
|
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
|
||||||
|
github.com/zclconf/go-cty v1.13.2 // indirect
|
||||||
|
go.opencensus.io v0.24.0 // indirect
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
|
||||||
|
go.opentelemetry.io/otel v1.24.0 // indirect
|
||||||
|
go.opentelemetry.io/otel/metric v1.24.0 // indirect
|
||||||
|
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||||
|
go.uber.org/atomic v1.9.0 // indirect
|
||||||
|
gocloud.dev v0.37.0 // indirect
|
||||||
|
gocloud.dev/secrets/hashivault v0.37.0 // indirect
|
||||||
|
golang.org/x/crypto v0.33.0 // indirect
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
||||||
|
golang.org/x/mod v0.19.0 // indirect
|
||||||
|
golang.org/x/net v0.35.0 // indirect
|
||||||
|
golang.org/x/oauth2 v0.22.0 // indirect
|
||||||
|
golang.org/x/sync v0.11.0 // indirect
|
||||||
|
golang.org/x/sys v0.30.0 // indirect
|
||||||
|
golang.org/x/term v0.29.0 // indirect
|
||||||
|
golang.org/x/text v0.22.0 // indirect
|
||||||
|
golang.org/x/time v0.5.0 // indirect
|
||||||
|
golang.org/x/tools v0.23.0 // indirect
|
||||||
|
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
|
||||||
|
google.golang.org/api v0.169.0 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect
|
||||||
|
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
|
||||||
|
google.golang.org/grpc v1.67.1 // indirect
|
||||||
|
google.golang.org/protobuf v1.35.1 // indirect
|
||||||
|
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
lukechampine.com/frand v1.4.2 // indirect
|
||||||
|
)
|
||||||
602
examples/go.sum
Normal file
602
examples/go.sum
Normal file
@@ -0,0 +1,602 @@
|
|||||||
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=
|
||||||
|
cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4=
|
||||||
|
cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
|
||||||
|
cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
|
||||||
|
cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc=
|
||||||
|
cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI=
|
||||||
|
cloud.google.com/go/kms v1.15.7 h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM=
|
||||||
|
cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI=
|
||||||
|
cloud.google.com/go/logging v1.9.0 h1:iEIOXFO9EmSiTjDmfpbRjOxECO7R8C7b8IXUGOj7xZw=
|
||||||
|
cloud.google.com/go/logging v1.9.0/go.mod h1:1Io0vnZv4onoUnsVUQY3HZ3Igb1nBchky0A0y7BBBhE=
|
||||||
|
cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg=
|
||||||
|
cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s=
|
||||||
|
cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dVtY=
|
||||||
|
cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o=
|
||||||
|
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
|
||||||
|
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA=
|
||||||
|
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
|
||||||
|
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
|
||||||
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
|
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
||||||
|
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
|
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
|
||||||
|
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
|
||||||
|
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
|
||||||
|
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
|
||||||
|
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
|
||||||
|
github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
|
||||||
|
github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
|
||||||
|
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
|
||||||
|
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
|
||||||
|
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
|
||||||
|
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
|
||||||
|
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
||||||
|
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
|
||||||
|
github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
|
||||||
|
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
|
||||||
|
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
|
||||||
|
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
|
||||||
|
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
|
||||||
|
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
|
||||||
|
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
||||||
|
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||||
|
github.com/aws/aws-sdk-go v1.50.36 h1:PjWXHwZPuTLMR1NIb8nEjLucZBMzmf84TLoLbD8BZqk=
|
||||||
|
github.com/aws/aws-sdk-go v1.50.36/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
|
||||||
|
github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA=
|
||||||
|
github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM=
|
||||||
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to=
|
||||||
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg=
|
||||||
|
github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA=
|
||||||
|
github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE=
|
||||||
|
github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs=
|
||||||
|
github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo=
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4=
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg=
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 h1:7Zwtt/lP3KNRkeZre7soMELMGNoBrutx8nobg1jKWmo=
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15/go.mod h1:436h2adoHb57yd+8W+gYPrrA9U/R/SuAuOO42Ushzhw=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 h1:81KE7vaZzrl7yHBYHVEzYB8sypz11NMOZ40YlWvPxsU=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5/go.mod h1:LIt2rg7Mcgn09Ygbdh/RdIm0rQ+3BNkbP1gyVMFtRK0=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/iam v1.31.4 h1:eVm30ZIDv//r6Aogat9I88b5YX1xASSLcEDqHYRPVl0=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/iam v1.31.4/go.mod h1:aXWImQV0uTW35LM0A/T4wEg6R1/ReXUu4SM6/lUHYK0=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 h1:ZMeFZ5yk+Ek+jNr1+uwCd2tG89t6oTS5yVWpa6yy2es=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7/go.mod h1:mxV05U+4JiHqIpGqqYXOHLPKUC6bDXC44bsUhNjOEwY=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 h1:f9RyWNtS8oH7cZlbn+/JNPpjUk5+5fLd5lM9M0i49Ys=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5/go.mod h1:h5CoMZV2VF297/VLhRhO1WF+XYWOzXo+4HsObA4HjBQ=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/kms v1.30.1 h1:SBn4I0fJXF9FYOVRSVMWuhvEKoAHDikjGpS3wlmw5DE=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/kms v1.30.1/go.mod h1:2snWQJQUKsbN66vAawJuOGX7dr37pfOq9hb0tZDGIqQ=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 h1:6cnno47Me9bRykw9AEv9zkXE+5or7jz8TsskTTccbgc=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1/go.mod h1:qmdkIIAC+GCLASF7R2whgNrJADz0QZPX+Seiw/i4S3o=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw=
|
||||||
|
github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q=
|
||||||
|
github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E=
|
||||||
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
||||||
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
|
||||||
|
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
|
||||||
|
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
|
github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M=
|
||||||
|
github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
|
||||||
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
|
github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY=
|
||||||
|
github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc=
|
||||||
|
github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM=
|
||||||
|
github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg=
|
||||||
|
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
|
||||||
|
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
|
||||||
|
github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo=
|
||||||
|
github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30=
|
||||||
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
|
||||||
|
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
|
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY=
|
||||||
|
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
|
github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
|
||||||
|
github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJzQ7y/sA=
|
||||||
|
github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
|
||||||
|
github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU=
|
||||||
|
github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0=
|
||||||
|
github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
|
||||||
|
github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
|
||||||
|
github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ=
|
||||||
|
github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64=
|
||||||
|
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||||
|
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||||
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
|
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||||
|
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
||||||
|
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
|
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
|
||||||
|
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
|
||||||
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
||||||
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
||||||
|
github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA=
|
||||||
|
github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE=
|
||||||
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
||||||
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
||||||
|
github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M=
|
||||||
|
github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc=
|
||||||
|
github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY=
|
||||||
|
github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
|
||||||
|
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||||
|
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
|
||||||
|
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||||
|
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||||
|
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||||
|
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
|
||||||
|
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||||
|
github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0=
|
||||||
|
github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||||
|
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||||
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
|
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
|
||||||
|
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
|
||||||
|
github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
|
||||||
|
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
|
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||||
|
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||||
|
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||||
|
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||||
|
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||||
|
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
||||||
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
|
||||||
|
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
||||||
|
github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE=
|
||||||
|
github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk=
|
||||||
|
github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=
|
||||||
|
github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=
|
||||||
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
|
||||||
|
github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
|
||||||
|
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
|
||||||
|
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
|
||||||
|
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
|
||||||
|
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI=
|
||||||
|
github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA=
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc=
|
||||||
|
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
|
||||||
|
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
||||||
|
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
|
||||||
|
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
|
||||||
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
|
||||||
|
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
|
||||||
|
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
|
||||||
|
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
|
||||||
|
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
|
||||||
|
github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
|
||||||
|
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
|
||||||
|
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc=
|
||||||
|
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0=
|
||||||
|
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=
|
||||||
|
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=
|
||||||
|
github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I=
|
||||||
|
github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=
|
||||||
|
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||||
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
|
github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M=
|
||||||
|
github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA=
|
||||||
|
github.com/hashicorp/vault/api v1.12.0 h1:meCpJSesvzQyao8FCOgk2fGdoADAnbDu2WPJN1lDLJ4=
|
||||||
|
github.com/hashicorp/vault/api v1.12.0/go.mod h1:si+lJCYO7oGkIoNPAN8j3azBLTn9SjMGS+jFaHd1Cck=
|
||||||
|
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||||
|
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
|
||||||
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
|
||||||
|
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
|
||||||
|
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||||
|
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
|
||||||
|
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
|
||||||
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
|
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
|
||||||
|
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
|
||||||
|
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||||
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||||
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||||
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||||
|
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||||
|
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
|
||||||
|
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||||
|
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||||
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
|
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||||
|
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
|
||||||
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
|
||||||
|
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
|
||||||
|
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
|
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||||
|
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||||
|
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
|
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
|
||||||
|
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
|
||||||
|
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||||
|
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
|
github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
|
||||||
|
github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||||
|
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
|
||||||
|
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
|
||||||
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
|
||||||
|
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
|
||||||
|
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
|
||||||
|
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
|
||||||
|
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
|
||||||
|
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
|
||||||
|
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
|
||||||
|
github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A=
|
||||||
|
github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM=
|
||||||
|
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
||||||
|
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
|
||||||
|
github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0=
|
||||||
|
github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc=
|
||||||
|
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||||
|
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
|
||||||
|
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
||||||
|
github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU=
|
||||||
|
github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M=
|
||||||
|
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 h1:LoCV5cscNVWyK5ChN/uCoIFJz8jZD63VQiGJIRgr6uo=
|
||||||
|
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386/go.mod h1:MRxHTJrf9FhdfNQ8Hdeh9gmHevC9RJE/fu8M3JIGjoE=
|
||||||
|
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
|
||||||
|
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
|
||||||
|
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
|
||||||
|
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
|
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
|
||||||
|
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
|
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0=
|
||||||
|
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
|
||||||
|
github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE=
|
||||||
|
github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c=
|
||||||
|
github.com/pulumi/pulumi/pkg/v3 v3.160.0 h1:xYgx7SXZGbYsC2EDPcbpaSS49fnRc3kjkeKurS/K7s4=
|
||||||
|
github.com/pulumi/pulumi/pkg/v3 v3.160.0/go.mod h1:VlI9vlaNGjahgN556rRdIT20MrqQ7C1YYhy1RCWPob8=
|
||||||
|
github.com/pulumi/pulumi/sdk/v3 v3.160.0 h1:OxeATnIEqWyu3KpTeLUmyJdZaSEE6yX7ECvfGhByb9w=
|
||||||
|
github.com/pulumi/pulumi/sdk/v3 v3.160.0/go.mod h1:YEbbl0N7eVsgfsL7h5215dDf8GBSe4AnRon7Ya/KIVc=
|
||||||
|
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
|
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
|
||||||
|
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
|
github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
|
||||||
|
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
|
||||||
|
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=
|
||||||
|
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
|
||||||
|
github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc=
|
||||||
|
github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg=
|
||||||
|
github.com/segmentio/encoding v0.3.5 h1:UZEiaZ55nlXGDL92scoVuw00RmiRCazIEmvPSbSvt8Y=
|
||||||
|
github.com/segmentio/encoding v0.3.5/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM=
|
||||||
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||||
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||||
|
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
|
github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
|
||||||
|
github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
|
||||||
|
github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
|
||||||
|
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
|
||||||
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
||||||
|
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||||
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||||
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
|
github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=
|
||||||
|
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
|
||||||
|
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
|
||||||
|
github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
|
||||||
|
github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=
|
||||||
|
github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
|
||||||
|
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
||||||
|
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
|
||||||
|
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
|
||||||
|
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
|
||||||
|
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
|
||||||
|
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
|
||||||
|
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
|
||||||
|
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||||
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
|
github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0=
|
||||||
|
github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0=
|
||||||
|
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
||||||
|
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
|
||||||
|
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
|
||||||
|
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
|
||||||
|
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
|
||||||
|
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
|
||||||
|
go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw=
|
||||||
|
go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc=
|
||||||
|
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
|
||||||
|
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
|
||||||
|
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
|
||||||
|
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||||
|
gocloud.dev v0.37.0 h1:XF1rN6R0qZI/9DYjN16Uy0durAmSlf58DHOcb28GPro=
|
||||||
|
gocloud.dev v0.37.0/go.mod h1:7/O4kqdInCNsc6LqgmuFnS0GRew4XNNYWpA44yQnwco=
|
||||||
|
gocloud.dev/secrets/hashivault v0.37.0 h1:5ehGtUBP29DFAgAs6bPw7fVSgqQ3TxaoK2xVcLp1x+c=
|
||||||
|
gocloud.dev/secrets/hashivault v0.37.0/go.mod h1:4ClUWjBfP8wLdGts56acjHz3mWLuATMoH9vi74FjIv8=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
|
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||||
|
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
||||||
|
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||||
|
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
|
||||||
|
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
|
||||||
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
||||||
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
|
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
|
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||||
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
|
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
|
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
|
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
|
||||||
|
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
|
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||||
|
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||||
|
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
|
||||||
|
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
|
||||||
|
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
|
||||||
|
golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
|
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||||
|
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20211110154304-99a53858aa08/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
||||||
|
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
|
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||||
|
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
|
||||||
|
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
|
||||||
|
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||||
|
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
|
||||||
|
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||||
|
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||||
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
|
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
||||||
|
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
||||||
|
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
|
||||||
|
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
|
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||||
|
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||||
|
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
|
||||||
|
golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
|
||||||
|
golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
|
||||||
|
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
|
||||||
|
google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY=
|
||||||
|
google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg=
|
||||||
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
|
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 h1:ImUcDPHjTrAqNhlOkSocDLfG9rrNHH7w7uoKWPaWZ8s=
|
||||||
|
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7/go.mod h1:/3XmxOjePkvmKrHuBy4zNFw7IzxJXtAgdpXi8Ll990U=
|
||||||
|
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
|
||||||
|
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
|
||||||
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
|
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||||
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
|
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
|
||||||
|
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
|
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||||
|
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||||
|
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
|
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
|
||||||
|
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
|
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
|
||||||
|
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw=
|
||||||
|
lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s=
|
||||||
|
pgregory.net/rapid v0.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ=
|
||||||
|
pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
|
||||||
1
provider/cmd/pulumi-resource-xyz/.gitignore
vendored
Normal file
1
provider/cmd/pulumi-resource-xyz/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
schema.go
|
||||||
0
provider/cmd/pulumi-resource-xyz/Pulumi.yaml
Normal file
0
provider/cmd/pulumi-resource-xyz/Pulumi.yaml
Normal file
17
provider/cmd/pulumi-resource-xyz/bridge-metadata.json
Normal file
17
provider/cmd/pulumi-resource-xyz/bridge-metadata.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"auto-aliasing": {
|
||||||
|
"resources": {
|
||||||
|
"xyz_resource": {
|
||||||
|
"current": "xyz:index/resource:Resource",
|
||||||
|
"majorVersion": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"datasources": {
|
||||||
|
"xyz_data_source": {
|
||||||
|
"current": "xyz:index/getDataSource:getDataSource",
|
||||||
|
"majorVersion": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"auto-settings": {}
|
||||||
|
}
|
||||||
32
provider/cmd/pulumi-resource-xyz/main.go
Normal file
32
provider/cmd/pulumi-resource-xyz/main.go
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// Copyright 2016-2018, Pulumi Corporation.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "embed"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge"
|
||||||
|
|
||||||
|
xyz "github.com/pulumi/pulumi-xyz/provider"
|
||||||
|
"github.com/pulumi/pulumi-xyz/provider/pkg/version"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed schema.json
|
||||||
|
var pulumiSchema []byte
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Modify the path to point to the new provider
|
||||||
|
tfbridge.Main("xyz", version.Version, xyz.Provider(), pulumiSchema)
|
||||||
|
}
|
||||||
146
provider/cmd/pulumi-resource-xyz/schema.json
Normal file
146
provider/cmd/pulumi-resource-xyz/schema.json
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
{
|
||||||
|
"name": "xyz",
|
||||||
|
"description": "A Pulumi package for creating and managing xyz cloud resources.",
|
||||||
|
"keywords": [
|
||||||
|
"xyz",
|
||||||
|
"category/cloud"
|
||||||
|
],
|
||||||
|
"homepage": "https://www.pulumi.com",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"attribution": "This Pulumi package is based on the [`xyz` Terraform Provider](https://github.com/terraform-providers/terraform-provider-xyz).",
|
||||||
|
"repository": "https://github.com/pulumi/pulumi-xyz",
|
||||||
|
"publisher": "Pulumi",
|
||||||
|
"meta": {
|
||||||
|
"moduleFormat": "(.*)(?:/[^/]*)"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"csharp": {
|
||||||
|
"packageReferences": {
|
||||||
|
"Pulumi": "3.*"
|
||||||
|
},
|
||||||
|
"compatibility": "tfbridge20",
|
||||||
|
"respectSchemaVersion": true
|
||||||
|
},
|
||||||
|
"go": {
|
||||||
|
"importBasePath": "github.com/pulumi/pulumi-xyz/sdk/go/xyz",
|
||||||
|
"generateResourceContainerTypes": true,
|
||||||
|
"generateExtraInputTypes": true,
|
||||||
|
"respectSchemaVersion": true
|
||||||
|
},
|
||||||
|
"nodejs": {
|
||||||
|
"packageDescription": "A Pulumi package for creating and managing xyz cloud resources.",
|
||||||
|
"readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-xyz)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-xyz` repo](https://github.com/pulumi/pulumi-xyz/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-xyz` repo](https://github.com/terraform-providers/terraform-provider-xyz/issues).",
|
||||||
|
"compatibility": "tfbridge20",
|
||||||
|
"disableUnionOutputTypes": true,
|
||||||
|
"respectSchemaVersion": true
|
||||||
|
},
|
||||||
|
"python": {
|
||||||
|
"readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-xyz)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-xyz` repo](https://github.com/pulumi/pulumi-xyz/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-xyz` repo](https://github.com/terraform-providers/terraform-provider-xyz/issues).",
|
||||||
|
"compatibility": "tfbridge20",
|
||||||
|
"respectSchemaVersion": true,
|
||||||
|
"pyproject": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"variables": {
|
||||||
|
"region": {
|
||||||
|
"type": "string",
|
||||||
|
"$ref": "#/types/xyz:region/region:Region",
|
||||||
|
"description": "A region which should be used.\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"types": {
|
||||||
|
"xyz:region/region:Region": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
{
|
||||||
|
"name": "here",
|
||||||
|
"value": "HERE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "overThere",
|
||||||
|
"value": "OVER_THERE"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"provider": {
|
||||||
|
"description": "The provider type for the xyz package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n",
|
||||||
|
"properties": {
|
||||||
|
"region": {
|
||||||
|
"type": "string",
|
||||||
|
"$ref": "#/types/xyz:region/region:Region",
|
||||||
|
"description": "A region which should be used.\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inputProperties": {
|
||||||
|
"region": {
|
||||||
|
"type": "string",
|
||||||
|
"$ref": "#/types/xyz:region/region:Region",
|
||||||
|
"description": "A region which should be used.\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"xyz:index/resource:Resource": {
|
||||||
|
"properties": {
|
||||||
|
"sampleAttribute": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Sample attribute.\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inputProperties": {
|
||||||
|
"sampleAttribute": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Sample attribute.\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stateInputs": {
|
||||||
|
"description": "Input properties used for looking up and filtering Resource resources.\n",
|
||||||
|
"properties": {
|
||||||
|
"sampleAttribute": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Sample attribute.\n"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"functions": {
|
||||||
|
"xyz:index/getDataSource:getDataSource": {
|
||||||
|
"inputs": {
|
||||||
|
"description": "A collection of arguments for invoking getDataSource.\n",
|
||||||
|
"properties": {
|
||||||
|
"sampleAttribute": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"sampleAttribute"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"outputs": {
|
||||||
|
"description": "A collection of values returned by getDataSource.\n",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"description": "The provider-assigned unique ID for this managed resource.\n",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"sampleAttribute": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"sampleAttribute",
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
provider/cmd/pulumi-tfgen-xyz/main.go
Normal file
27
provider/cmd/pulumi-tfgen-xyz/main.go
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2016-2018, Pulumi Corporation.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfgen"
|
||||||
|
|
||||||
|
xyz "github.com/pulumi/pulumi-xyz/provider"
|
||||||
|
"github.com/pulumi/pulumi-xyz/provider/pkg/version"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Modify the path to point to the new provider
|
||||||
|
tfgen.Main("xyz", version.Version, xyz.Provider())
|
||||||
|
}
|
||||||
186
provider/go.mod
Normal file
186
provider/go.mod
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
module github.com/pulumi/pulumi-xyz/provider
|
||||||
|
|
||||||
|
go 1.22.7
|
||||||
|
|
||||||
|
toolchain go1.23.0
|
||||||
|
|
||||||
|
replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20250221232320-8d4cfd37a3cd
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/pulumi/pulumi-terraform-bridge/v3 v3.106.0
|
||||||
|
github.com/pulumi/pulumi/pkg/v3 v3.160.0
|
||||||
|
github.com/pulumi/terraform-provider-xyz v0.0.3
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
cloud.google.com/go v0.112.1 // indirect
|
||||||
|
cloud.google.com/go/compute/metadata v0.5.2 // indirect
|
||||||
|
cloud.google.com/go/iam v1.1.6 // indirect
|
||||||
|
cloud.google.com/go/storage v1.39.1 // indirect
|
||||||
|
dario.cat/mergo v1.0.0 // indirect
|
||||||
|
github.com/BurntSushi/toml v1.2.1 // indirect
|
||||||
|
github.com/Masterminds/goutils v1.1.1 // indirect
|
||||||
|
github.com/Masterminds/semver v1.5.0 // indirect
|
||||||
|
github.com/Masterminds/semver/v3 v3.2.0 // indirect
|
||||||
|
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
|
||||||
|
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||||
|
github.com/ProtonMail/go-crypto v1.1.5 // indirect
|
||||||
|
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
|
||||||
|
github.com/agext/levenshtein v1.2.3 // indirect
|
||||||
|
github.com/apparentlymart/go-cidr v1.1.0 // indirect
|
||||||
|
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
|
||||||
|
github.com/armon/go-radix v1.0.0 // indirect
|
||||||
|
github.com/atotto/clipboard v0.1.4 // indirect
|
||||||
|
github.com/aws/aws-sdk-go v1.50.36 // indirect
|
||||||
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||||
|
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
||||||
|
github.com/bgentry/speakeasy v0.1.0 // indirect
|
||||||
|
github.com/blang/semver v3.5.1+incompatible // indirect
|
||||||
|
github.com/charmbracelet/bubbles v0.16.1 // indirect
|
||||||
|
github.com/charmbracelet/bubbletea v0.25.0 // indirect
|
||||||
|
github.com/charmbracelet/lipgloss v0.7.1 // indirect
|
||||||
|
github.com/cheggaaa/pb v1.0.29 // indirect
|
||||||
|
github.com/cloudflare/circl v1.3.7 // indirect
|
||||||
|
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
|
||||||
|
github.com/cyphar/filepath-securejoin v0.3.6 // indirect
|
||||||
|
github.com/deckarep/golang-set/v2 v2.5.0 // indirect
|
||||||
|
github.com/djherbis/times v1.5.0 // indirect
|
||||||
|
github.com/edsrzf/mmap-go v1.1.0 // indirect
|
||||||
|
github.com/emirpasic/gods v1.18.1 // indirect
|
||||||
|
github.com/ettle/strcase v0.1.1 // indirect
|
||||||
|
github.com/fatih/color v1.17.0 // indirect
|
||||||
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||||
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||||
|
github.com/go-git/go-billy/v5 v5.6.2 // indirect
|
||||||
|
github.com/go-git/go-git/v5 v5.13.2 // indirect
|
||||||
|
github.com/go-logr/logr v1.4.2 // indirect
|
||||||
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
|
github.com/golang/glog v1.2.4 // indirect
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
|
github.com/golang/protobuf v1.5.4 // indirect
|
||||||
|
github.com/google/go-cmp v0.6.0 // indirect
|
||||||
|
github.com/google/s2a-go v0.1.7 // indirect
|
||||||
|
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
|
||||||
|
github.com/googleapis/gax-go/v2 v2.12.2 // indirect
|
||||||
|
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
|
||||||
|
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||||
|
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||||
|
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
|
||||||
|
github.com/hashicorp/go-getter v1.7.5 // indirect
|
||||||
|
github.com/hashicorp/go-hclog v1.6.3 // indirect
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||||
|
github.com/hashicorp/go-safetemp v1.0.0 // indirect
|
||||||
|
github.com/hashicorp/go-uuid v1.0.3 // indirect
|
||||||
|
github.com/hashicorp/go-version v1.7.0 // indirect
|
||||||
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
|
github.com/hashicorp/hcl/v2 v2.23.0 // indirect
|
||||||
|
github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect
|
||||||
|
github.com/hashicorp/logutils v1.0.0 // indirect
|
||||||
|
github.com/hashicorp/terraform-plugin-go v0.26.0 // indirect
|
||||||
|
github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect
|
||||||
|
github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 // indirect
|
||||||
|
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
|
||||||
|
github.com/huandu/xstrings v1.3.3 // indirect
|
||||||
|
github.com/iancoleman/strcase v0.3.0 // indirect
|
||||||
|
github.com/imdario/mergo v0.3.15 // indirect
|
||||||
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
||||||
|
github.com/jmespath/go-jmespath v0.4.0 // indirect
|
||||||
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
github.com/kevinburke/ssh_config v1.2.0 // indirect
|
||||||
|
github.com/klauspost/compress v1.16.7 // indirect
|
||||||
|
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||||
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
|
github.com/mattn/go-localereader v0.0.1 // indirect
|
||||||
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
|
github.com/mitchellh/cli v1.1.5 // indirect
|
||||||
|
github.com/mitchellh/copystructure v1.2.0 // indirect
|
||||||
|
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||||
|
github.com/mitchellh/go-ps v1.0.0 // indirect
|
||||||
|
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
||||||
|
github.com/mitchellh/hashstructure v1.0.0 // indirect
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||||
|
github.com/mitchellh/reflectwalk v1.0.2 // indirect
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
||||||
|
github.com/muesli/cancelreader v0.2.2 // indirect
|
||||||
|
github.com/muesli/reflow v0.3.0 // indirect
|
||||||
|
github.com/muesli/termenv v0.15.2 // indirect
|
||||||
|
github.com/natefinch/atomic v1.0.1 // indirect
|
||||||
|
github.com/olekukonko/tablewriter v0.0.5 // indirect
|
||||||
|
github.com/opentracing/basictracer-go v1.1.0 // indirect
|
||||||
|
github.com/opentracing/opentracing-go v1.2.0 // indirect
|
||||||
|
github.com/pgavlin/fx v0.1.6 // indirect
|
||||||
|
github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect
|
||||||
|
github.com/pjbgf/sha1cd v0.3.2 // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/pkg/term v1.1.0 // indirect
|
||||||
|
github.com/posener/complete v1.2.3 // indirect
|
||||||
|
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
|
||||||
|
github.com/pulumi/esc v0.10.0 // indirect
|
||||||
|
github.com/pulumi/inflector v0.1.1 // indirect
|
||||||
|
github.com/pulumi/pulumi-java/pkg v1.8.0 // indirect
|
||||||
|
github.com/pulumi/pulumi-yaml v1.15.1 // indirect
|
||||||
|
github.com/pulumi/pulumi/sdk/v3 v3.160.0 // indirect
|
||||||
|
github.com/pulumi/schema-tools v0.1.2 // indirect
|
||||||
|
github.com/pulumi/terraform-diff-reader v0.0.2 // indirect
|
||||||
|
github.com/rivo/uniseg v0.4.4 // indirect
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0 // indirect
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||||
|
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect
|
||||||
|
github.com/segmentio/asm v1.1.3 // indirect
|
||||||
|
github.com/segmentio/encoding v0.3.5 // indirect
|
||||||
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||||
|
github.com/shopspring/decimal v1.3.1 // indirect
|
||||||
|
github.com/skeema/knownhosts v1.3.0 // indirect
|
||||||
|
github.com/spf13/afero v1.10.0 // indirect
|
||||||
|
github.com/spf13/cast v1.5.0 // indirect
|
||||||
|
github.com/spf13/cobra v1.9.1 // indirect
|
||||||
|
github.com/spf13/pflag v1.0.6 // indirect
|
||||||
|
github.com/teekennedy/goldmark-markdown v0.3.0 // indirect
|
||||||
|
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
|
||||||
|
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
|
||||||
|
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
|
||||||
|
github.com/ulikunitz/xz v0.5.10 // indirect
|
||||||
|
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
|
||||||
|
github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
|
||||||
|
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
|
||||||
|
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||||
|
github.com/yuin/goldmark v1.7.7 // indirect
|
||||||
|
github.com/zclconf/go-cty v1.16.2 // indirect
|
||||||
|
go.opencensus.io v0.24.0 // indirect
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
|
||||||
|
go.opentelemetry.io/otel v1.31.0 // indirect
|
||||||
|
go.opentelemetry.io/otel/metric v1.31.0 // indirect
|
||||||
|
go.opentelemetry.io/otel/trace v1.31.0 // indirect
|
||||||
|
go.uber.org/atomic v1.9.0 // indirect
|
||||||
|
golang.org/x/crypto v0.33.0 // indirect
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
||||||
|
golang.org/x/mod v0.22.0 // indirect
|
||||||
|
golang.org/x/net v0.35.0 // indirect
|
||||||
|
golang.org/x/oauth2 v0.23.0 // indirect
|
||||||
|
golang.org/x/sync v0.11.0 // indirect
|
||||||
|
golang.org/x/sys v0.30.0 // indirect
|
||||||
|
golang.org/x/term v0.29.0 // indirect
|
||||||
|
golang.org/x/text v0.22.0 // indirect
|
||||||
|
golang.org/x/time v0.5.0 // indirect
|
||||||
|
golang.org/x/tools v0.23.0 // indirect
|
||||||
|
google.golang.org/api v0.169.0 // indirect
|
||||||
|
google.golang.org/appengine v1.6.8 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect
|
||||||
|
google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53 // indirect
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
|
||||||
|
google.golang.org/grpc v1.69.4 // indirect
|
||||||
|
google.golang.org/protobuf v1.36.3 // indirect
|
||||||
|
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
lukechampine.com/frand v1.4.2 // indirect
|
||||||
|
)
|
||||||
3451
provider/go.sum
Normal file
3451
provider/go.sum
Normal file
File diff suppressed because it is too large
Load Diff
18
provider/pkg/version/version.go
Normal file
18
provider/pkg/version/version.go
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
// Copyright 2016-2018, Pulumi Corporation.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package version
|
||||||
|
|
||||||
|
// Version is initialized by the Go linker to contain the semver of this build.
|
||||||
|
var Version string
|
||||||
206
provider/resources.go
Normal file
206
provider/resources.go
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
// Copyright 2016-2024, Pulumi Corporation.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package xyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"path"
|
||||||
|
|
||||||
|
// Allow embedding bridge-metadata.json in the provider.
|
||||||
|
_ "embed"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge"
|
||||||
|
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/tokens"
|
||||||
|
shimv2 "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2"
|
||||||
|
"github.com/pulumi/pulumi/pkg/v3/codegen/schema"
|
||||||
|
xyz "github.com/pulumi/terraform-provider-xyz/provider" // Import the upstream provider
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi-xyz/provider/pkg/version"
|
||||||
|
)
|
||||||
|
|
||||||
|
// all of the token components used below.
|
||||||
|
const (
|
||||||
|
// This variable controls the default name of the package in the package
|
||||||
|
// registries for nodejs and python:
|
||||||
|
mainPkg = "xyz"
|
||||||
|
// modules:
|
||||||
|
mainMod = "index" // the xyz module
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed cmd/pulumi-resource-xyz/bridge-metadata.json
|
||||||
|
var metadata []byte
|
||||||
|
|
||||||
|
// Provider returns additional overlaid schema and metadata associated with the provider.
|
||||||
|
func Provider() tfbridge.ProviderInfo {
|
||||||
|
// Create a Pulumi provider mapping
|
||||||
|
prov := tfbridge.ProviderInfo{
|
||||||
|
// Instantiate the Terraform provider
|
||||||
|
//
|
||||||
|
// The [pulumi-terraform-bridge](https://github.com/pulumi/pulumi-terraform-bridge) supports 3
|
||||||
|
// types of Terraform providers:
|
||||||
|
//
|
||||||
|
// 1. Providers written with the terraform-plugin-sdk/v1:
|
||||||
|
//
|
||||||
|
// If the provider you are bridging is written with the terraform-plugin-sdk/v1, then you
|
||||||
|
// will need to adapt the boilerplate:
|
||||||
|
//
|
||||||
|
// - Change the import "shimv2" to "shimv1" and change the associated import to
|
||||||
|
// "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v1".
|
||||||
|
//
|
||||||
|
// You can then proceed as normal.
|
||||||
|
//
|
||||||
|
// 2. Providers written with terraform-plugin-sdk/v2:
|
||||||
|
//
|
||||||
|
// This boilerplate is already geared towards providers written with the
|
||||||
|
// terraform-plugin-sdk/v2, since it is the most common provider framework used. No
|
||||||
|
// adaptions are needed.
|
||||||
|
//
|
||||||
|
// 3. Providers written with terraform-plugin-framework:
|
||||||
|
//
|
||||||
|
// If the provider you are bridging is written with the terraform-plugin-framework, then
|
||||||
|
// you will need to adapt the boilerplate:
|
||||||
|
//
|
||||||
|
// - Remove the `shimv2` import and add:
|
||||||
|
//
|
||||||
|
// pfbridge "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge"
|
||||||
|
//
|
||||||
|
// - Replace `shimv2.NewProvider` with `pfbridge.ShimProvider`.
|
||||||
|
//
|
||||||
|
// - In provider/cmd/pulumi-tfgen-xyz/main.go, replace the
|
||||||
|
// "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfgen" import with
|
||||||
|
// "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfgen". Remove the `version.Version`
|
||||||
|
// argument to `tfgen.Main`.
|
||||||
|
//
|
||||||
|
// - In provider/cmd/pulumi-resource-xyz/main.go, replace the
|
||||||
|
// "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" import with
|
||||||
|
// "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge". Replace the arguments to the
|
||||||
|
// `tfbridge.Main` so it looks like this:
|
||||||
|
//
|
||||||
|
// tfbridge.Main(context.Background(), "xyz", xyz.Provider(),
|
||||||
|
// tfbridge.ProviderMetadata{PulumiSchema: pulumiSchema})
|
||||||
|
//
|
||||||
|
// Detailed instructions can be found at
|
||||||
|
// https://pulumi-developer-docs.readthedocs.io/projects/pulumi-terraform-bridge/en/latest/docs/guides/new-pf-provider.html
|
||||||
|
// After that, you can proceed as normal.
|
||||||
|
//
|
||||||
|
// This is where you give the bridge a handle to the upstream terraform provider. SDKv2
|
||||||
|
// convention is to have a function at "github.com/pulumi/terraform-provider-xyz/provider".New
|
||||||
|
// which takes a version and produces a factory function. The provider you are bridging may
|
||||||
|
// not do that. You will need to find the function (generally called in upstream's main.go)
|
||||||
|
// that produces a:
|
||||||
|
//
|
||||||
|
// - *"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema".Provider (for SDKv2)
|
||||||
|
// - *"github.com/hashicorp/terraform-plugin-sdk/v1/helper/schema".Provider (for SDKv1)
|
||||||
|
// - "github.com/hashicorp/terraform-plugin-framework/provider".Provider (for plugin-framework)
|
||||||
|
//
|
||||||
|
//nolint:lll
|
||||||
|
P: shimv2.NewProvider(xyz.New(version.Version)()),
|
||||||
|
|
||||||
|
Name: "xyz",
|
||||||
|
Version: version.Version,
|
||||||
|
// DisplayName is a way to be able to change the casing of the provider name when being
|
||||||
|
// displayed on the Pulumi registry
|
||||||
|
DisplayName: "",
|
||||||
|
// Change this to your personal name (or a company name) that you would like to be shown in
|
||||||
|
// the Pulumi Registry if this package is published there.
|
||||||
|
Publisher: "Pulumi",
|
||||||
|
// LogoURL is optional but useful to help identify your package in the Pulumi Registry
|
||||||
|
// if this package is published there.
|
||||||
|
//
|
||||||
|
// You may host a logo on a domain you control or add an PNG logo (100x100) for your package
|
||||||
|
// in your repository and use the raw content URL for that file as your logo URL.
|
||||||
|
LogoURL: "",
|
||||||
|
// PluginDownloadURL is an optional URL used to download the Provider
|
||||||
|
// for use in Pulumi programs
|
||||||
|
// e.g. https://github.com/org/pulumi-provider-name/releases/download/v${VERSION}/
|
||||||
|
PluginDownloadURL: "",
|
||||||
|
Description: "A Pulumi package for creating and managing xyz cloud resources.",
|
||||||
|
// category/cloud tag helps with categorizing the package in the Pulumi Registry.
|
||||||
|
// For all available categories, see `Keywords` in
|
||||||
|
// https://www.pulumi.com/docs/guides/pulumi-packages/schema/#package.
|
||||||
|
Keywords: []string{"xyz", "category/cloud"},
|
||||||
|
License: "Apache-2.0",
|
||||||
|
Homepage: "https://www.pulumi.com",
|
||||||
|
Repository: "https://github.com/pulumi/pulumi-xyz",
|
||||||
|
// The GitHub Org for the provider - defaults to `terraform-providers`. Note that this should
|
||||||
|
// match the TF provider module's require directive, not any replace directives.
|
||||||
|
GitHubOrg: "",
|
||||||
|
MetadataInfo: tfbridge.NewProviderMetadata(metadata),
|
||||||
|
Config: map[string]*tfbridge.SchemaInfo{
|
||||||
|
// Add any required configuration here, or remove the example below if
|
||||||
|
// no additional points are required.
|
||||||
|
"region": {
|
||||||
|
Type: "xyz:region/region:Region",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// If extra types are needed for configuration, they can be added here.
|
||||||
|
ExtraTypes: map[string]schema.ComplexTypeSpec{
|
||||||
|
"xyz:region/region:Region": {
|
||||||
|
ObjectTypeSpec: schema.ObjectTypeSpec{
|
||||||
|
Type: "string",
|
||||||
|
},
|
||||||
|
Enum: []schema.EnumValueSpec{
|
||||||
|
{Name: "here", Value: "HERE"},
|
||||||
|
{Name: "overThere", Value: "OVER_THERE"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
JavaScript: &tfbridge.JavaScriptInfo{
|
||||||
|
// RespectSchemaVersion ensures the SDK is generated linking to the correct version of the provider.
|
||||||
|
RespectSchemaVersion: true,
|
||||||
|
},
|
||||||
|
Python: &tfbridge.PythonInfo{
|
||||||
|
// RespectSchemaVersion ensures the SDK is generated linking to the correct version of the provider.
|
||||||
|
RespectSchemaVersion: true,
|
||||||
|
// Enable modern PyProject support in the generated Python SDK.
|
||||||
|
PyProject: struct{ Enabled bool }{true},
|
||||||
|
},
|
||||||
|
Golang: &tfbridge.GolangInfo{
|
||||||
|
// Set where the SDK is going to be published to.
|
||||||
|
ImportBasePath: path.Join(
|
||||||
|
"github.com/pulumi/pulumi-xyz/sdk/",
|
||||||
|
tfbridge.GetModuleMajorVersion(version.Version),
|
||||||
|
"go",
|
||||||
|
mainPkg,
|
||||||
|
),
|
||||||
|
// Opt in to all available code generation features.
|
||||||
|
GenerateResourceContainerTypes: true,
|
||||||
|
GenerateExtraInputTypes: true,
|
||||||
|
// RespectSchemaVersion ensures the SDK is generated linking to the correct version of the provider.
|
||||||
|
RespectSchemaVersion: true,
|
||||||
|
},
|
||||||
|
CSharp: &tfbridge.CSharpInfo{
|
||||||
|
// RespectSchemaVersion ensures the SDK is generated linking to the correct version of the provider.
|
||||||
|
RespectSchemaVersion: true,
|
||||||
|
// Use a wildcard import so NuGet will prefer the latest possible version.
|
||||||
|
PackageReferences: map[string]string{
|
||||||
|
"Pulumi": "3.*",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// MustComputeTokens maps all resources and datasources from the upstream provider into Pulumi.
|
||||||
|
//
|
||||||
|
// tokens.SingleModule puts every upstream item into your provider's main module.
|
||||||
|
//
|
||||||
|
// You shouldn't need to override anything, but if you do, use the [tfbridge.ProviderInfo.Resources]
|
||||||
|
// and [tfbridge.ProviderInfo.DataSources].
|
||||||
|
prov.MustComputeTokens(tokens.SingleModule("xyz_", mainMod,
|
||||||
|
tokens.MakeStandard(mainPkg)))
|
||||||
|
|
||||||
|
prov.MustApplyAutoAliases()
|
||||||
|
prov.SetAutonaming(255, "-")
|
||||||
|
|
||||||
|
return prov
|
||||||
|
}
|
||||||
80
scripts/crossbuild.mk
Normal file
80
scripts/crossbuild.mk
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# Provider cross-platform build & packaging
|
||||||
|
|
||||||
|
# Set these variables to enable signing of the windows binary
|
||||||
|
AZURE_SIGNING_CLIENT_ID ?=
|
||||||
|
AZURE_SIGNING_CLIENT_SECRET ?=
|
||||||
|
AZURE_SIGNING_TENANT_ID ?=
|
||||||
|
AZURE_SIGNING_KEY_VAULT_URI ?=
|
||||||
|
SKIP_SIGNING ?=
|
||||||
|
|
||||||
|
# These targets assume that the schema-embed.json exists - it's generated by tfgen.
|
||||||
|
# We disable CGO to ensure that the binary is statically linked.
|
||||||
|
bin/linux-amd64/$(PROVIDER): GOOS := linux
|
||||||
|
bin/linux-amd64/$(PROVIDER): GOARCH := amd64
|
||||||
|
bin/linux-arm64/$(PROVIDER): GOOS := linux
|
||||||
|
bin/linux-arm64/$(PROVIDER): GOARCH := arm64
|
||||||
|
bin/darwin-amd64/$(PROVIDER): GOOS := darwin
|
||||||
|
bin/darwin-amd64/$(PROVIDER): GOARCH := amd64
|
||||||
|
bin/darwin-arm64/$(PROVIDER): GOOS := darwin
|
||||||
|
bin/darwin-arm64/$(PROVIDER): GOARCH := arm64
|
||||||
|
bin/windows-amd64/$(PROVIDER).exe: GOOS := windows
|
||||||
|
bin/windows-amd64/$(PROVIDER).exe: GOARCH := amd64
|
||||||
|
bin/%/$(PROVIDER) bin/%/$(PROVIDER).exe: bin/jsign-6.0.jar
|
||||||
|
$(call build_provider_cmd,$(GOOS),$(GOARCH),$(WORKING_DIR)/$@)
|
||||||
|
|
||||||
|
@# Only sign windows binary if fully configured.
|
||||||
|
@# Test variables set by joining with | between and looking for || showing at least one variable is empty.
|
||||||
|
@# Move the binary to a temporary location and sign it there to avoid the target being up-to-date if signing fails.
|
||||||
|
@set -e; \
|
||||||
|
if [[ "${GOOS}-${GOARCH}" = "windows-amd64" && "${SKIP_SIGNING}" != "true" ]]; then \
|
||||||
|
if [[ "|${AZURE_SIGNING_CLIENT_ID}|${AZURE_SIGNING_CLIENT_SECRET}|${AZURE_SIGNING_TENANT_ID}|${AZURE_SIGNING_KEY_VAULT_URI}|" == *"||"* ]]; then \
|
||||||
|
echo "Can't sign windows binaries as required configuration not set: AZURE_SIGNING_CLIENT_ID, AZURE_SIGNING_CLIENT_SECRET, AZURE_SIGNING_TENANT_ID, AZURE_SIGNING_KEY_VAULT_URI"; \
|
||||||
|
echo "To rebuild with signing delete the unsigned $@ and rebuild with the fixed configuration"; \
|
||||||
|
if [[ "${CI}" == "true" ]]; then exit 1; fi; \
|
||||||
|
else \
|
||||||
|
mv $@ $@.unsigned; \
|
||||||
|
az login --service-principal \
|
||||||
|
--username "${AZURE_SIGNING_CLIENT_ID}" \
|
||||||
|
--password "${AZURE_SIGNING_CLIENT_SECRET}" \
|
||||||
|
--tenant "${AZURE_SIGNING_TENANT_ID}" \
|
||||||
|
--output none; \
|
||||||
|
ACCESS_TOKEN=$$(az account get-access-token --resource "https://vault.azure.net" | jq -r .accessToken); \
|
||||||
|
java -jar bin/jsign-6.0.jar \
|
||||||
|
--storetype AZUREKEYVAULT \
|
||||||
|
--keystore "PulumiCodeSigning" \
|
||||||
|
--url "${AZURE_SIGNING_KEY_VAULT_URI}" \
|
||||||
|
--storepass "$${ACCESS_TOKEN}" \
|
||||||
|
$@.unsigned; \
|
||||||
|
mv $@.unsigned $@; \
|
||||||
|
az logout; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
bin/jsign-6.0.jar:
|
||||||
|
wget https://github.com/ebourg/jsign/releases/download/6.0/jsign-6.0.jar --output-document=bin/jsign-6.0.jar
|
||||||
|
|
||||||
|
provider-linux-amd64: bin/linux-amd64/$(PROVIDER)
|
||||||
|
provider-linux-arm64: bin/linux-arm64/$(PROVIDER)
|
||||||
|
provider-darwin-amd64: bin/darwin-amd64/$(PROVIDER)
|
||||||
|
provider-darwin-arm64: bin/darwin-arm64/$(PROVIDER)
|
||||||
|
provider-windows-amd64: bin/windows-amd64/$(PROVIDER).exe
|
||||||
|
.PHONY: provider-linux-amd64 provider-linux-arm64 provider-darwin-amd64 provider-darwin-arm64 provider-windows-amd64
|
||||||
|
|
||||||
|
bin/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-amd64.tar.gz: bin/linux-amd64/$(PROVIDER)
|
||||||
|
bin/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-arm64.tar.gz: bin/linux-arm64/$(PROVIDER)
|
||||||
|
bin/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-amd64.tar.gz: bin/darwin-amd64/$(PROVIDER)
|
||||||
|
bin/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-arm64.tar.gz: bin/darwin-arm64/$(PROVIDER)
|
||||||
|
bin/$(PROVIDER)-v$(PROVIDER_VERSION)-windows-amd64.tar.gz: bin/windows-amd64/$(PROVIDER).exe
|
||||||
|
bin/$(PROVIDER)-v$(PROVIDER_VERSION)-%.tar.gz:
|
||||||
|
@mkdir -p dist
|
||||||
|
@# $< is the last dependency (the binary path from above) e.g. bin/linux-amd64/pulumi-resource-xyz
|
||||||
|
@# $@ is the current target e.g. bin/pulumi-resource-xyz-v1.2.3-linux-amd64.tar.gz
|
||||||
|
tar --gzip -cf $@ README.md LICENSE -C $$(dirname $<) .
|
||||||
|
|
||||||
|
provider_dist-linux-amd64: bin/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-amd64.tar.gz
|
||||||
|
provider_dist-linux-arm64: bin/$(PROVIDER)-v$(PROVIDER_VERSION)-linux-arm64.tar.gz
|
||||||
|
provider_dist-darwin-amd64: bin/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-amd64.tar.gz
|
||||||
|
provider_dist-darwin-arm64: bin/$(PROVIDER)-v$(PROVIDER_VERSION)-darwin-arm64.tar.gz
|
||||||
|
provider_dist-windows-amd64: bin/$(PROVIDER)-v$(PROVIDER_VERSION)-windows-amd64.tar.gz
|
||||||
|
provider_dist: provider_dist-linux-amd64 provider_dist-linux-arm64 provider_dist-darwin-amd64 provider_dist-darwin-arm64 provider_dist-windows-amd64
|
||||||
|
.PHONY: provider_dist-linux-amd64 provider_dist-linux-arm64 provider_dist-darwin-amd64 provider_dist-darwin-arm64 provider_dist-windows-amd64 provider_dist
|
||||||
27
scripts/plugins.mk
Normal file
27
scripts/plugins.mk
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Install Pulumi and plugins required at build time.
|
||||||
|
install_plugins: .make/install_plugins
|
||||||
|
.make/install_plugins: export PULUMI_HOME := $(WORKING_DIR)/.pulumi
|
||||||
|
.make/install_plugins: export PATH := $(WORKING_DIR)/.pulumi/bin:$(PATH)
|
||||||
|
.make/install_plugins: .pulumi/bin/pulumi
|
||||||
|
.pulumi/bin/pulumi plugin install converter terraform 1.0.16
|
||||||
|
@touch $@
|
||||||
|
.PHONY: install_plugins
|
||||||
|
|
||||||
|
# Because some codegen depends on the version of the CLI used, we install a local CLI
|
||||||
|
# version pinned to the same version as the provider `go.mod`.
|
||||||
|
#
|
||||||
|
# This logic compares the version of .pulumi/bin/pulumi already installed. If it matches
|
||||||
|
# the desired version, we just print. Otherwise we (re)install pulumi at the desired
|
||||||
|
# version.
|
||||||
|
.pulumi/bin/pulumi: .pulumi/version
|
||||||
|
@if [ -x .pulumi/bin/pulumi ] && [ "v$$(cat .pulumi/version)" = "$$(.pulumi/bin/pulumi version)" ]; then \
|
||||||
|
echo "pulumi/bin/pulumi version: v$$(cat .pulumi/version)"; \
|
||||||
|
touch $@; \
|
||||||
|
else \
|
||||||
|
curl -fsSL https://get.pulumi.com | \
|
||||||
|
HOME=$(WORKING_DIR) sh -s -- --version "$$(cat .pulumi/version)"; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Compute the version of Pulumi to use by inspecting the Go dependencies of the provider.
|
||||||
|
.pulumi/version: provider/go.mod
|
||||||
|
(cd provider && go list -f "{{slice .Version 1}}" -m github.com/pulumi/pulumi/pkg/v3) | tee $@
|
||||||
405
scripts/upstream.sh
Executable file
405
scripts/upstream.sh
Executable file
@@ -0,0 +1,405 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# WARNING: This file is autogenerated - changes will be overwritten when regenerated by https://github.com/pulumi/ci-mgmt
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
original_exec="$0"
|
||||||
|
original_cmd="$1"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
NAME
|
||||||
|
upstream.sh - Manages applying patches to the upstream submodule.
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
${original_exec} <init|checkout|rebase|check_in|help> [options]
|
||||||
|
|
||||||
|
COMMANDS
|
||||||
|
init [-f] Initialize the upstream submodule and applies the
|
||||||
|
patches to the working directory.
|
||||||
|
checkout [-f] Create a branch in the upstream repository with the
|
||||||
|
patches applied as commits.
|
||||||
|
rebase [-o] [-i] Rebase the checked out patches.
|
||||||
|
check_in Write checkedout commits back to patches, add upstream
|
||||||
|
and patches changes to the git staging area and exit
|
||||||
|
checkout mode.
|
||||||
|
file_target Print a file path to depend on in make.
|
||||||
|
help Print this help message, plus examples.
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-f Force the command to run even if the upstream submodule is modified
|
||||||
|
-o The new base commit to rebase the patches on top of
|
||||||
|
-i Run the rebase command interactively
|
||||||
|
-h Print this help message, plus examples
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
extended_docs() {
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
We want to maintain changes to the upstream repository in a way that is easy
|
||||||
|
to manage and track. Rather than creating a fork of the upstream repository,
|
||||||
|
we maintain a set of patches (in the 'patches' directory) that we can apply
|
||||||
|
directly to the upstream code in the 'upstream' submodule. Our patches are
|
||||||
|
never pushed to the remote upstream repository.
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
Discard all changes in upstream and reapply patches to the working directory:
|
||||||
|
${original_exec} init -f
|
||||||
|
|
||||||
|
Moving the patches to a new base commit:
|
||||||
|
${original_exec} checkout
|
||||||
|
${original_exec} rebase -o <new_base_commit>
|
||||||
|
${original_exec} check_in
|
||||||
|
|
||||||
|
Interactively edit the patches:
|
||||||
|
${original_exec} checkout
|
||||||
|
${original_exec} rebase -i
|
||||||
|
${original_exec} check_in
|
||||||
|
|
||||||
|
Add a new patch:
|
||||||
|
${original_exec} checkout
|
||||||
|
# Make changes to the upstream repository
|
||||||
|
git commit -am "Add new feature"
|
||||||
|
${original_exec} check_in
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_upstream_exists() {
|
||||||
|
if [[ ! -d upstream ]]; then
|
||||||
|
echo "No 'upstream' directory detected. Aborting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_not_checked_out() {
|
||||||
|
current_branch=$(cd upstream && git --no-pager rev-parse --abbrev-ref HEAD)
|
||||||
|
if [[ "${current_branch}" == "pulumi/patch-checkout" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Error: 'upstream' submodule checked out on the 'pulumi/patch-checkout' branch.
|
||||||
|
This was likely caused by running a 'checkout' command but not running
|
||||||
|
'check_in' afterwards.
|
||||||
|
|
||||||
|
To turn the commits in the 'pulumi/patch-checkout' branch back into patches, run:
|
||||||
|
${original_exec} check_in
|
||||||
|
|
||||||
|
To disgard changes in the 'pulumi/patch-checkout' branch, use the 'force' flag (-f):
|
||||||
|
${original_exec} ${original_cmd} -f
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_is_checked_out() {
|
||||||
|
current_branch=$(cd upstream && git --no-pager rev-parse --abbrev-ref HEAD)
|
||||||
|
if [[ "${current_branch}" != "pulumi/patch-checkout" ]]; then
|
||||||
|
echo "Expected upstream to be checked out on the 'pulumi/patch-checkout' branch, but ${current_branch} is checked out."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_no_rebase_in_progress() {
|
||||||
|
# Use git to resolve the possible location of files indicating a rebase might be in progress.
|
||||||
|
rebase_merge_dir=$(cd upstream && git rev-parse --git-path rebase-merge)
|
||||||
|
rebase_apply_dir=$(cd upstream && git rev-parse --git-path rebase-apply)
|
||||||
|
|
||||||
|
if [[ -d "${rebase_merge_dir}" ]] || [[ -d "${rebase_apply_dir}" ]]; then
|
||||||
|
echo "rebase still in progress in './upstream'. Please resolve the rebase in"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
err_failed_to_apply() {
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Failed to apply $1.
|
||||||
|
|
||||||
|
Hint: to avoid conflicts when updating the upstream submodule, use the
|
||||||
|
following commands:
|
||||||
|
|
||||||
|
1. '${original_exec} checkout' to create a branch with the patches applied as commits
|
||||||
|
2. '${original_exec} rebase -o <new_base_commit>' to rebase the patches on top of the
|
||||||
|
new upstream commit. Resolve any conflicts and continue the rebase to completion.
|
||||||
|
3. '${original_exec} check_in' to create an updated set of patches from the commits
|
||||||
|
|
||||||
|
Reset the upstream submodule to the previous known good upstream commit before
|
||||||
|
trying again. This can be done with:
|
||||||
|
|
||||||
|
(cd upstream && git reset --hard <last_known_good_commit>)
|
||||||
|
git add upstream
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
apply_patches() {
|
||||||
|
# Iterating over the patches folder in sorted order,
|
||||||
|
# apply the patch using a 3-way merge strategy. This mirrors the default behavior of 'git merge'
|
||||||
|
cd upstream
|
||||||
|
# Allow directory to be empty
|
||||||
|
shopt -s nullglob
|
||||||
|
for patch in ../patches/*.patch; do
|
||||||
|
if ! git apply --3way "${patch}" --allow-empty; then
|
||||||
|
err_failed_to_apply "$(basename "${patch}")"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
shopt -u nullglob
|
||||||
|
}
|
||||||
|
|
||||||
|
clean_rebases() {
|
||||||
|
# Clean up any previous in-progress rebases.
|
||||||
|
cd upstream
|
||||||
|
rebase_merge_dir=$(git rev-parse --git-path rebase-merge)
|
||||||
|
rebase_apply_dir=$(git rev-parse --git-path rebase-apply)
|
||||||
|
rm -rf "${rebase_merge_dir}"
|
||||||
|
rm -rf "${rebase_apply_dir}"
|
||||||
|
cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
clean_branches() {
|
||||||
|
cd upstream
|
||||||
|
if git show-ref --verify --quiet refs/heads/pulumi/patch-checkout; then
|
||||||
|
git branch -D pulumi/patch-checkout
|
||||||
|
fi
|
||||||
|
if git show-ref --verify --quiet refs/heads/pulumi/checkout-base; then
|
||||||
|
git branch -D pulumi/checkout-base
|
||||||
|
fi
|
||||||
|
if git show-ref --verify --quiet refs/heads/pulumi/original-base; then
|
||||||
|
git branch -D pulumi/original-base
|
||||||
|
fi
|
||||||
|
cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
init() {
|
||||||
|
# Parse additional flags
|
||||||
|
while getopts "f" flag; do
|
||||||
|
case "${flag}" in
|
||||||
|
f) force="true";;
|
||||||
|
*) echo "Unexpected option ${flag}"; exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ! -d upstream ]]; then
|
||||||
|
echo "No 'upstream' directory detected. Skipping init."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${force}" != "true" ]]; then
|
||||||
|
assert_not_checked_out
|
||||||
|
assert_no_rebase_in_progress
|
||||||
|
fi
|
||||||
|
|
||||||
|
git submodule update --force --init
|
||||||
|
cd upstream && git clean -fxd && cd ..
|
||||||
|
|
||||||
|
if [[ "${force}" == "true" ]]; then
|
||||||
|
clean_rebases
|
||||||
|
clean_branches
|
||||||
|
fi
|
||||||
|
apply_patches
|
||||||
|
}
|
||||||
|
|
||||||
|
checkout() {
|
||||||
|
# Parse additional flags
|
||||||
|
while getopts "f" flag; do
|
||||||
|
case "${flag}" in
|
||||||
|
f) force="true";;
|
||||||
|
*) echo "Unexpected option ${flag}"; exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
assert_upstream_exists
|
||||||
|
|
||||||
|
if [[ "${force}" != "true" ]]; then
|
||||||
|
assert_not_checked_out
|
||||||
|
assert_no_rebase_in_progress
|
||||||
|
fi
|
||||||
|
|
||||||
|
git submodule update --force --init
|
||||||
|
if [[ "${force}" == "true" ]]; then
|
||||||
|
clean_rebases
|
||||||
|
clean_branches
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd upstream
|
||||||
|
git fetch --all
|
||||||
|
|
||||||
|
# Set the 'pulumi/checkout-base' branch to the current commit of the upstream repository
|
||||||
|
# This is used to track the base commit of the patches
|
||||||
|
# If rebasing, then this must be moved to the new base commit.
|
||||||
|
git branch -f pulumi/checkout-base
|
||||||
|
# Create a new branch 'pulumi/patch-checkout' which will contain the commits for each patch
|
||||||
|
git checkout -B pulumi/patch-checkout
|
||||||
|
|
||||||
|
# Allow directory to be empty
|
||||||
|
shopt -s nullglob
|
||||||
|
for patch in ../patches/*.patch; do
|
||||||
|
if ! git am --3way "${patch}"; then
|
||||||
|
err_failed_to_apply "$(basename "${patch}")"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
shopt -u nullglob
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
The patches have been checked out as commits in the './upstream' repository.
|
||||||
|
The 'pulumi/patch-checkout' branch is pointing to the last patch.
|
||||||
|
The 'pulumi/checkout-base' branch is pointing to the base commit of the patches.
|
||||||
|
|
||||||
|
To interactively edit the commits:
|
||||||
|
${original_exec} rebase -i
|
||||||
|
|
||||||
|
To change the base of the patches:
|
||||||
|
${original_exec} rebase -o <new_base_commit>
|
||||||
|
|
||||||
|
Once you have finished editing the commits, run
|
||||||
|
${original_exec} check_in
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
rebase() {
|
||||||
|
# Parse additional flags
|
||||||
|
onto="pulumi/checkout-base"
|
||||||
|
interactive="false"
|
||||||
|
while getopts "io:" flag; do
|
||||||
|
case "${flag}" in
|
||||||
|
i) interactive="true";;
|
||||||
|
o) onto="${OPTARG}";;
|
||||||
|
*) echo "Unexpected option ${flag}"; exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
assert_is_checked_out
|
||||||
|
|
||||||
|
cd upstream
|
||||||
|
# Fetch the latest changes from the upstream repository
|
||||||
|
git fetch --all
|
||||||
|
# Set the "pulumi/original-base" branch to the current base commit of the patches
|
||||||
|
git branch -f pulumi/original-base pulumi/checkout-base
|
||||||
|
# Set the "pulumi/patch-checkout" branch to track the "pulumi/original-base" branch
|
||||||
|
git branch --set-upstream-to=pulumi/original-base pulumi/patch-checkout
|
||||||
|
# Set the "pulumi/checkout-base" branch to the new base commit ready for formatting the patches after
|
||||||
|
git branch -f pulumi/checkout-base "${onto}"
|
||||||
|
# Rebase the 'pulumi/patch-checkout' branch on top of the new base commit
|
||||||
|
interactive_flag=""
|
||||||
|
if [[ "${interactive}" == "true" ]]; then
|
||||||
|
interactive_flag="--interactive"
|
||||||
|
fi
|
||||||
|
if ! git rebase --onto "${onto}" ${interactive_flag}; then
|
||||||
|
echo "Rebase failed. Please resolve the conflicts and run 'git rebase --continue' in the upstream directory. Once the rebase is complete, run '${original_exec} check_in' to write to commits back to patches."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
export_patches() {
|
||||||
|
# Remove all existing patches before creating the new ones in case they've been renamed or removed.
|
||||||
|
rm -f patches/*.patch
|
||||||
|
|
||||||
|
# Extract patches from the commits in the 'pulumi/patch-checkout' branch into the 'patches' directory.
|
||||||
|
# Use the 'pulumi/checkout-base' branch to determine the base commit of the patches.
|
||||||
|
(cd upstream && git format-patch pulumi/checkout-base -o ../patches --zero-commit --no-signature --no-stat --no-numbered)
|
||||||
|
}
|
||||||
|
|
||||||
|
format_patches() {
|
||||||
|
assert_upstream_exists
|
||||||
|
assert_is_checked_out
|
||||||
|
assert_no_rebase_in_progress
|
||||||
|
|
||||||
|
export_patches
|
||||||
|
cat <<EOF
|
||||||
|
Patches have been created in the 'patches' directory. If you've made changes to
|
||||||
|
the base, ensure you add 'upstream' to the git stage before running 'init -f'
|
||||||
|
to exit the checkout mode.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
check_in() {
|
||||||
|
assert_upstream_exists
|
||||||
|
assert_is_checked_out
|
||||||
|
assert_no_rebase_in_progress
|
||||||
|
|
||||||
|
export_patches
|
||||||
|
# Check out the new base of the patches
|
||||||
|
(cd upstream && git checkout pulumi/checkout-base)
|
||||||
|
|
||||||
|
# Add the patches and upstream changes to the git staging area
|
||||||
|
git add patches upstream
|
||||||
|
# Exit the checkout mode and re-initialize the upstream submodule
|
||||||
|
git submodule update --force --init
|
||||||
|
apply_patches
|
||||||
|
cat <<EOF
|
||||||
|
Changes to patches and upstream have been staged, exited checkout mode and
|
||||||
|
re-initializing using updated patches and updated upstream base.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# file_target prints a file path to depend on in make to trigger an init when required.
|
||||||
|
# Also updates the file timestamp if the submodule needs updating.
|
||||||
|
file_target() {
|
||||||
|
path=.git/modules/upstream/HEAD
|
||||||
|
# Don't print a file if it doesn't exist - it's probably not initialized yet.
|
||||||
|
if [[ ! -f "${path}" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# If the submodule is changed, touch the file to trigger a re-init.
|
||||||
|
desired_commit=$(git ls-tree HEAD upstream | cut -d ' ' -f3 | cut -f1 || true)
|
||||||
|
current_commit=$(cat "${path}")
|
||||||
|
if [[ "${desired_commit}" != "${current_commit}" ]]; then
|
||||||
|
touch "${path}"
|
||||||
|
fi
|
||||||
|
echo "${path}"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -z ${original_cmd} ]]; then
|
||||||
|
echo "Error: command is required."
|
||||||
|
echo
|
||||||
|
usage
|
||||||
|
extended_docs
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Check for help flag and short-circuit to print usage.
|
||||||
|
for arg in "$@"; do
|
||||||
|
case ${arg} in
|
||||||
|
"help"|"-h"|"--help")
|
||||||
|
usage
|
||||||
|
extended_docs
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove the command argument from the list of arguments to pass to the command.
|
||||||
|
shift
|
||||||
|
case ${original_cmd} in
|
||||||
|
init)
|
||||||
|
init "$@"
|
||||||
|
;;
|
||||||
|
checkout|check_out)
|
||||||
|
checkout "$@"
|
||||||
|
;;
|
||||||
|
rebase)
|
||||||
|
rebase "$@"
|
||||||
|
;;
|
||||||
|
format_patches)
|
||||||
|
format_patches "$@"
|
||||||
|
;;
|
||||||
|
check_in|checkin)
|
||||||
|
check_in "$@"
|
||||||
|
;;
|
||||||
|
file_target)
|
||||||
|
file_target "$@"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: unknown command \"${original_cmd}\"."
|
||||||
|
echo
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
3
sdk/.gitignore
generated
vendored
Normal file
3
sdk/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/nodejs/bin/
|
||||||
|
/nodejs/node_modules/
|
||||||
|
/python/bin/
|
||||||
46
sdk/dotnet/Config/Config.cs
generated
Normal file
46
sdk/dotnet/Config/Config.cs
generated
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
||||||
|
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Immutable;
|
||||||
|
|
||||||
|
namespace Pulumi.Xyz
|
||||||
|
{
|
||||||
|
public static class Config
|
||||||
|
{
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "IDE1006", Justification =
|
||||||
|
"Double underscore prefix used to avoid conflicts with variable names.")]
|
||||||
|
private sealed class __Value<T>
|
||||||
|
{
|
||||||
|
private readonly Func<T> _getter;
|
||||||
|
private T _value = default!;
|
||||||
|
private bool _set;
|
||||||
|
|
||||||
|
public __Value(Func<T> getter)
|
||||||
|
{
|
||||||
|
_getter = getter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T Get() => _set ? _value : _getter();
|
||||||
|
|
||||||
|
public void Set(T value)
|
||||||
|
{
|
||||||
|
_value = value;
|
||||||
|
_set = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static readonly global::Pulumi.Config __config = new global::Pulumi.Config("xyz");
|
||||||
|
|
||||||
|
private static readonly __Value<Pulumi.Xyz.Region.Region?> _region = new __Value<Pulumi.Xyz.Region.Region?>(() => __config.GetObject<Pulumi.Xyz.Region.Region>("region"));
|
||||||
|
/// <summary>
|
||||||
|
/// A region which should be used.
|
||||||
|
/// </summary>
|
||||||
|
public static Pulumi.Xyz.Region.Region? Region
|
||||||
|
{
|
||||||
|
get => _region.Get();
|
||||||
|
set => _region.Set(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
1
sdk/dotnet/Config/README.md
generated
Normal file
1
sdk/dotnet/Config/README.md
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
A Pulumi package for creating and managing xyz cloud resources.
|
||||||
67
sdk/dotnet/GetDataSource.cs
generated
Normal file
67
sdk/dotnet/GetDataSource.cs
generated
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
||||||
|
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Immutable;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Pulumi.Serialization;
|
||||||
|
|
||||||
|
namespace Pulumi.Xyz
|
||||||
|
{
|
||||||
|
public static class GetDataSource
|
||||||
|
{
|
||||||
|
public static Task<GetDataSourceResult> InvokeAsync(GetDataSourceArgs args, InvokeOptions? options = null)
|
||||||
|
=> global::Pulumi.Deployment.Instance.InvokeAsync<GetDataSourceResult>("xyz:index/getDataSource:getDataSource", args ?? new GetDataSourceArgs(), options.WithDefaults());
|
||||||
|
|
||||||
|
public static Output<GetDataSourceResult> Invoke(GetDataSourceInvokeArgs args, InvokeOptions? options = null)
|
||||||
|
=> global::Pulumi.Deployment.Instance.Invoke<GetDataSourceResult>("xyz:index/getDataSource:getDataSource", args ?? new GetDataSourceInvokeArgs(), options.WithDefaults());
|
||||||
|
|
||||||
|
public static Output<GetDataSourceResult> Invoke(GetDataSourceInvokeArgs args, InvokeOutputOptions options)
|
||||||
|
=> global::Pulumi.Deployment.Instance.Invoke<GetDataSourceResult>("xyz:index/getDataSource:getDataSource", args ?? new GetDataSourceInvokeArgs(), options.WithDefaults());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public sealed class GetDataSourceArgs : global::Pulumi.InvokeArgs
|
||||||
|
{
|
||||||
|
[Input("sampleAttribute", required: true)]
|
||||||
|
public string SampleAttribute { get; set; } = null!;
|
||||||
|
|
||||||
|
public GetDataSourceArgs()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public static new GetDataSourceArgs Empty => new GetDataSourceArgs();
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class GetDataSourceInvokeArgs : global::Pulumi.InvokeArgs
|
||||||
|
{
|
||||||
|
[Input("sampleAttribute", required: true)]
|
||||||
|
public Input<string> SampleAttribute { get; set; } = null!;
|
||||||
|
|
||||||
|
public GetDataSourceInvokeArgs()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public static new GetDataSourceInvokeArgs Empty => new GetDataSourceInvokeArgs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[OutputType]
|
||||||
|
public sealed class GetDataSourceResult
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The provider-assigned unique ID for this managed resource.
|
||||||
|
/// </summary>
|
||||||
|
public readonly string Id;
|
||||||
|
public readonly string SampleAttribute;
|
||||||
|
|
||||||
|
[OutputConstructor]
|
||||||
|
private GetDataSourceResult(
|
||||||
|
string id,
|
||||||
|
|
||||||
|
string sampleAttribute)
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
SampleAttribute = sampleAttribute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
59
sdk/dotnet/Provider.cs
generated
Normal file
59
sdk/dotnet/Provider.cs
generated
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
||||||
|
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Immutable;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Pulumi.Serialization;
|
||||||
|
|
||||||
|
namespace Pulumi.Xyz
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The provider type for the xyz package. By default, resources use package-wide configuration
|
||||||
|
/// settings, however an explicit `Provider` instance may be created and passed during resource
|
||||||
|
/// construction to achieve fine-grained programmatic control over provider settings. See the
|
||||||
|
/// [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.
|
||||||
|
/// </summary>
|
||||||
|
[XyzResourceType("pulumi:providers:xyz")]
|
||||||
|
public partial class Provider : global::Pulumi.ProviderResource
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Create a Provider resource with the given unique name, arguments, and options.
|
||||||
|
/// </summary>
|
||||||
|
///
|
||||||
|
/// <param name="name">The unique name of the resource</param>
|
||||||
|
/// <param name="args">The arguments used to populate this resource's properties</param>
|
||||||
|
/// <param name="options">A bag of options that control this resource's behavior</param>
|
||||||
|
public Provider(string name, ProviderArgs? args = null, CustomResourceOptions? options = null)
|
||||||
|
: base("xyz", name, args ?? new ProviderArgs(), MakeResourceOptions(options, ""))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
|
||||||
|
{
|
||||||
|
var defaultOptions = new CustomResourceOptions
|
||||||
|
{
|
||||||
|
Version = Utilities.Version,
|
||||||
|
};
|
||||||
|
var merged = CustomResourceOptions.Merge(defaultOptions, options);
|
||||||
|
// Override the ID if one was specified for consistency with other language SDKs.
|
||||||
|
merged.Id = id ?? merged.Id;
|
||||||
|
return merged;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class ProviderArgs : global::Pulumi.ResourceArgs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A region which should be used.
|
||||||
|
/// </summary>
|
||||||
|
[Input("region", json: true)]
|
||||||
|
public Input<Pulumi.Xyz.Region.Region>? Region { get; set; }
|
||||||
|
|
||||||
|
public ProviderArgs()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public static new ProviderArgs Empty => new ProviderArgs();
|
||||||
|
}
|
||||||
|
}
|
||||||
61
sdk/dotnet/Pulumi.Xyz.csproj
generated
Normal file
61
sdk/dotnet/Pulumi.Xyz.csproj
generated
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||||
|
<Authors>Pulumi</Authors>
|
||||||
|
<Company>Pulumi</Company>
|
||||||
|
<Description>A Pulumi package for creating and managing xyz cloud resources.</Description>
|
||||||
|
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
|
||||||
|
<PackageProjectUrl>https://www.pulumi.com</PackageProjectUrl>
|
||||||
|
<RepositoryUrl>https://github.com/pulumi/pulumi-xyz</RepositoryUrl>
|
||||||
|
<PackageIcon>logo.png</PackageIcon>
|
||||||
|
<Version>1.0.0-alpha.0+dev</Version>
|
||||||
|
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
|
<NoWarn>1701;1702;1591</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
|
||||||
|
<EmbedUntrackedSources>true</EmbedUntrackedSources>
|
||||||
|
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
|
||||||
|
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="version.txt" />
|
||||||
|
<None Include="version.txt" Pack="True" PackagePath="content" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="pulumi-plugin.json" />
|
||||||
|
<None Include="pulumi-plugin.json" Pack="True" PackagePath="content" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Pulumi" Version="3.*" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="logo.png">
|
||||||
|
<Pack>True</Pack>
|
||||||
|
<PackagePath></PackagePath>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
0
sdk/dotnet/Pulumi.yaml
generated
Normal file
0
sdk/dotnet/Pulumi.yaml
generated
Normal file
1
sdk/dotnet/README.md
generated
Normal file
1
sdk/dotnet/README.md
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
A Pulumi package for creating and managing xyz cloud resources.
|
||||||
37
sdk/dotnet/Region/Enums.cs
generated
Normal file
37
sdk/dotnet/Region/Enums.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
||||||
|
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using Pulumi;
|
||||||
|
|
||||||
|
namespace Pulumi.Xyz.Region
|
||||||
|
{
|
||||||
|
[EnumType]
|
||||||
|
public readonly struct Region : IEquatable<Region>
|
||||||
|
{
|
||||||
|
private readonly string _value;
|
||||||
|
|
||||||
|
private Region(string value)
|
||||||
|
{
|
||||||
|
_value = value ?? throw new ArgumentNullException(nameof(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Region Here { get; } = new Region("HERE");
|
||||||
|
public static Region OverThere { get; } = new Region("OVER_THERE");
|
||||||
|
|
||||||
|
public static bool operator ==(Region left, Region right) => left.Equals(right);
|
||||||
|
public static bool operator !=(Region left, Region right) => !left.Equals(right);
|
||||||
|
|
||||||
|
public static explicit operator string(Region value) => value._value;
|
||||||
|
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public override bool Equals(object? obj) => obj is Region other && Equals(other);
|
||||||
|
public bool Equals(Region other) => string.Equals(_value, other._value, StringComparison.Ordinal);
|
||||||
|
|
||||||
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||||
|
public override int GetHashCode() => _value?.GetHashCode() ?? 0;
|
||||||
|
|
||||||
|
public override string ToString() => _value;
|
||||||
|
}
|
||||||
|
}
|
||||||
1
sdk/dotnet/Region/README.md
generated
Normal file
1
sdk/dotnet/Region/README.md
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
A Pulumi package for creating and managing xyz cloud resources.
|
||||||
92
sdk/dotnet/Resource.cs
generated
Normal file
92
sdk/dotnet/Resource.cs
generated
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
||||||
|
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Immutable;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Pulumi.Serialization;
|
||||||
|
|
||||||
|
namespace Pulumi.Xyz
|
||||||
|
{
|
||||||
|
[XyzResourceType("xyz:index/resource:Resource")]
|
||||||
|
public partial class Resource : global::Pulumi.CustomResource
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Sample attribute.
|
||||||
|
/// </summary>
|
||||||
|
[Output("sampleAttribute")]
|
||||||
|
public Output<string?> SampleAttribute { get; private set; } = null!;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a Resource resource with the given unique name, arguments, and options.
|
||||||
|
/// </summary>
|
||||||
|
///
|
||||||
|
/// <param name="name">The unique name of the resource</param>
|
||||||
|
/// <param name="args">The arguments used to populate this resource's properties</param>
|
||||||
|
/// <param name="options">A bag of options that control this resource's behavior</param>
|
||||||
|
public Resource(string name, ResourceArgs? args = null, CustomResourceOptions? options = null)
|
||||||
|
: base("xyz:index/resource:Resource", name, args ?? new ResourceArgs(), MakeResourceOptions(options, ""))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private Resource(string name, Input<string> id, ResourceState? state = null, CustomResourceOptions? options = null)
|
||||||
|
: base("xyz:index/resource:Resource", name, state, MakeResourceOptions(options, id))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
|
||||||
|
{
|
||||||
|
var defaultOptions = new CustomResourceOptions
|
||||||
|
{
|
||||||
|
Version = Utilities.Version,
|
||||||
|
};
|
||||||
|
var merged = CustomResourceOptions.Merge(defaultOptions, options);
|
||||||
|
// Override the ID if one was specified for consistency with other language SDKs.
|
||||||
|
merged.Id = id ?? merged.Id;
|
||||||
|
return merged;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Get an existing Resource resource's state with the given name, ID, and optional extra
|
||||||
|
/// properties used to qualify the lookup.
|
||||||
|
/// </summary>
|
||||||
|
///
|
||||||
|
/// <param name="name">The unique name of the resulting resource.</param>
|
||||||
|
/// <param name="id">The unique provider ID of the resource to lookup.</param>
|
||||||
|
/// <param name="state">Any extra arguments used during the lookup.</param>
|
||||||
|
/// <param name="options">A bag of options that control this resource's behavior</param>
|
||||||
|
public static Resource Get(string name, Input<string> id, ResourceState? state = null, CustomResourceOptions? options = null)
|
||||||
|
{
|
||||||
|
return new Resource(name, id, state, options);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class ResourceArgs : global::Pulumi.ResourceArgs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Sample attribute.
|
||||||
|
/// </summary>
|
||||||
|
[Input("sampleAttribute")]
|
||||||
|
public Input<string>? SampleAttribute { get; set; }
|
||||||
|
|
||||||
|
public ResourceArgs()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public static new ResourceArgs Empty => new ResourceArgs();
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class ResourceState : global::Pulumi.ResourceArgs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Sample attribute.
|
||||||
|
/// </summary>
|
||||||
|
[Input("sampleAttribute")]
|
||||||
|
public Input<string>? SampleAttribute { get; set; }
|
||||||
|
|
||||||
|
public ResourceState()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public static new ResourceState Empty => new ResourceState();
|
||||||
|
}
|
||||||
|
}
|
||||||
90
sdk/dotnet/Utilities.cs
generated
Normal file
90
sdk/dotnet/Utilities.cs
generated
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
||||||
|
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
namespace Pulumi.Xyz
|
||||||
|
{
|
||||||
|
static class Utilities
|
||||||
|
{
|
||||||
|
public static string? GetEnv(params string[] names)
|
||||||
|
{
|
||||||
|
foreach (var n in names)
|
||||||
|
{
|
||||||
|
var value = global::System.Environment.GetEnvironmentVariable(n);
|
||||||
|
if (value != null)
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
static string[] trueValues = { "1", "t", "T", "true", "TRUE", "True" };
|
||||||
|
static string[] falseValues = { "0", "f", "F", "false", "FALSE", "False" };
|
||||||
|
public static bool? GetEnvBoolean(params string[] names)
|
||||||
|
{
|
||||||
|
var s = GetEnv(names);
|
||||||
|
if (s != null)
|
||||||
|
{
|
||||||
|
if (global::System.Array.IndexOf(trueValues, s) != -1)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (global::System.Array.IndexOf(falseValues, s) != -1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int? GetEnvInt32(params string[] names) => int.TryParse(GetEnv(names), out int v) ? (int?)v : null;
|
||||||
|
|
||||||
|
public static double? GetEnvDouble(params string[] names) => double.TryParse(GetEnv(names), out double v) ? (double?)v : null;
|
||||||
|
|
||||||
|
[global::System.Obsolete("Please use WithDefaults instead")]
|
||||||
|
public static global::Pulumi.InvokeOptions WithVersion(this global::Pulumi.InvokeOptions? options)
|
||||||
|
{
|
||||||
|
var dst = options ?? new global::Pulumi.InvokeOptions{};
|
||||||
|
dst.Version = options?.Version ?? Version;
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static global::Pulumi.InvokeOptions WithDefaults(this global::Pulumi.InvokeOptions? src)
|
||||||
|
{
|
||||||
|
var dst = src ?? new global::Pulumi.InvokeOptions{};
|
||||||
|
dst.Version = src?.Version ?? Version;
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static global::Pulumi.InvokeOutputOptions WithDefaults(this global::Pulumi.InvokeOutputOptions? src)
|
||||||
|
{
|
||||||
|
var dst = src ?? new global::Pulumi.InvokeOutputOptions{};
|
||||||
|
dst.Version = src?.Version ?? Version;
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly static string version;
|
||||||
|
public static string Version => version;
|
||||||
|
|
||||||
|
static Utilities()
|
||||||
|
{
|
||||||
|
var assembly = global::System.Reflection.IntrospectionExtensions.GetTypeInfo(typeof(Utilities)).Assembly;
|
||||||
|
using var stream = assembly.GetManifestResourceStream("Pulumi.Xyz.version.txt");
|
||||||
|
using var reader = new global::System.IO.StreamReader(stream ?? throw new global::System.NotSupportedException("Missing embedded version.txt file"));
|
||||||
|
version = reader.ReadToEnd().Trim();
|
||||||
|
var parts = version.Split("\n");
|
||||||
|
if (parts.Length == 2)
|
||||||
|
{
|
||||||
|
// The first part is the provider name.
|
||||||
|
version = parts[1].Trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class XyzResourceTypeAttribute : global::Pulumi.ResourceTypeAttribute
|
||||||
|
{
|
||||||
|
public XyzResourceTypeAttribute(string type) : base(type, Utilities.Version)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
sdk/dotnet/go.mod
generated
Normal file
3
sdk/dotnet/go.mod
generated
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module fake_dotnet_module // Exclude this directory from Go tools
|
||||||
|
|
||||||
|
go 1.17
|
||||||
BIN
sdk/dotnet/logo.png
generated
Normal file
BIN
sdk/dotnet/logo.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.7 KiB |
5
sdk/dotnet/pulumi-plugin.json
generated
Normal file
5
sdk/dotnet/pulumi-plugin.json
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"resource": true,
|
||||||
|
"name": "xyz",
|
||||||
|
"version": "1.0.0-alpha.0+dev"
|
||||||
|
}
|
||||||
93
sdk/go.mod
generated
Normal file
93
sdk/go.mod
generated
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
module github.com/pulumi/pulumi-xyz/sdk
|
||||||
|
|
||||||
|
go 1.22
|
||||||
|
|
||||||
|
toolchain go1.22.11
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/blang/semver v3.5.1+incompatible
|
||||||
|
github.com/pulumi/pulumi/sdk/v3 v3.160.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
dario.cat/mergo v1.0.0 // indirect
|
||||||
|
github.com/BurntSushi/toml v1.2.1 // indirect
|
||||||
|
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||||
|
github.com/ProtonMail/go-crypto v1.1.3 // indirect
|
||||||
|
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
|
||||||
|
github.com/agext/levenshtein v1.2.3 // indirect
|
||||||
|
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
|
||||||
|
github.com/atotto/clipboard v0.1.4 // indirect
|
||||||
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||||
|
github.com/charmbracelet/bubbles v0.16.1 // indirect
|
||||||
|
github.com/charmbracelet/bubbletea v0.25.0 // indirect
|
||||||
|
github.com/charmbracelet/lipgloss v0.7.1 // indirect
|
||||||
|
github.com/cheggaaa/pb v1.0.29 // indirect
|
||||||
|
github.com/cloudflare/circl v1.3.7 // indirect
|
||||||
|
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
|
||||||
|
github.com/cyphar/filepath-securejoin v0.3.6 // indirect
|
||||||
|
github.com/djherbis/times v1.5.0 // indirect
|
||||||
|
github.com/emirpasic/gods v1.18.1 // indirect
|
||||||
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||||
|
github.com/go-git/go-billy/v5 v5.6.1 // indirect
|
||||||
|
github.com/go-git/go-git/v5 v5.13.1 // indirect
|
||||||
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
|
github.com/golang/glog v1.2.4 // indirect
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
|
||||||
|
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||||
|
github.com/hashicorp/hcl/v2 v2.17.0 // indirect
|
||||||
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
||||||
|
github.com/kevinburke/ssh_config v1.2.0 // indirect
|
||||||
|
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
|
github.com/mattn/go-localereader v0.0.1 // indirect
|
||||||
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
|
github.com/mitchellh/go-ps v1.0.0 // indirect
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
||||||
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
||||||
|
github.com/muesli/cancelreader v0.2.2 // indirect
|
||||||
|
github.com/muesli/reflow v0.3.0 // indirect
|
||||||
|
github.com/muesli/termenv v0.15.2 // indirect
|
||||||
|
github.com/opentracing/basictracer-go v1.1.0 // indirect
|
||||||
|
github.com/opentracing/opentracing-go v1.2.0 // indirect
|
||||||
|
github.com/pgavlin/fx v0.1.6 // indirect
|
||||||
|
github.com/pjbgf/sha1cd v0.3.0 // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/pkg/term v1.1.0 // indirect
|
||||||
|
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect
|
||||||
|
github.com/pulumi/esc v0.9.1 // indirect
|
||||||
|
github.com/rivo/uniseg v0.4.4 // indirect
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0 // indirect
|
||||||
|
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect
|
||||||
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
|
||||||
|
github.com/skeema/knownhosts v1.3.0 // indirect
|
||||||
|
github.com/spf13/cast v1.4.1 // indirect
|
||||||
|
github.com/spf13/cobra v1.7.0 // indirect
|
||||||
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
|
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
|
||||||
|
github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect
|
||||||
|
github.com/uber/jaeger-lib v2.4.1+incompatible // indirect
|
||||||
|
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||||
|
github.com/zclconf/go-cty v1.13.2 // indirect
|
||||||
|
go.uber.org/atomic v1.9.0 // indirect
|
||||||
|
golang.org/x/crypto v0.33.0 // indirect
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
|
||||||
|
golang.org/x/mod v0.19.0 // indirect
|
||||||
|
golang.org/x/net v0.35.0 // indirect
|
||||||
|
golang.org/x/sync v0.11.0 // indirect
|
||||||
|
golang.org/x/sys v0.30.0 // indirect
|
||||||
|
golang.org/x/term v0.29.0 // indirect
|
||||||
|
golang.org/x/text v0.22.0 // indirect
|
||||||
|
golang.org/x/tools v0.23.0 // indirect
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
|
||||||
|
google.golang.org/grpc v1.63.2 // indirect
|
||||||
|
google.golang.org/protobuf v1.34.2 // indirect
|
||||||
|
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
lukechampine.com/frand v1.4.2 // indirect
|
||||||
|
)
|
||||||
283
sdk/go.sum
generated
Normal file
283
sdk/go.sum
generated
Normal file
@@ -0,0 +1,283 @@
|
|||||||
|
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
|
||||||
|
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
||||||
|
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
||||||
|
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
|
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
|
||||||
|
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
|
||||||
|
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
|
||||||
|
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
|
||||||
|
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
|
||||||
|
github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
|
||||||
|
github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
|
||||||
|
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY=
|
||||||
|
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA=
|
||||||
|
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
|
||||||
|
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
|
||||||
|
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
|
||||||
|
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
|
||||||
|
github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
|
||||||
|
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
|
||||||
|
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
|
||||||
|
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
|
||||||
|
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
||||||
|
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||||
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
||||||
|
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
|
||||||
|
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
|
||||||
|
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
|
github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY=
|
||||||
|
github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc=
|
||||||
|
github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM=
|
||||||
|
github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg=
|
||||||
|
github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E=
|
||||||
|
github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c=
|
||||||
|
github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo=
|
||||||
|
github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30=
|
||||||
|
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
|
||||||
|
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
|
||||||
|
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY=
|
||||||
|
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
|
||||||
|
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
|
github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
|
||||||
|
github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU=
|
||||||
|
github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0=
|
||||||
|
github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ=
|
||||||
|
github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64=
|
||||||
|
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||||
|
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
||||||
|
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||||
|
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
||||||
|
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||||
|
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
|
||||||
|
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
|
||||||
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
||||||
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
||||||
|
github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA=
|
||||||
|
github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE=
|
||||||
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
||||||
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
||||||
|
github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M=
|
||||||
|
github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc=
|
||||||
|
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||||
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
|
github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc=
|
||||||
|
github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
|
||||||
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||||
|
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
|
||||||
|
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
|
||||||
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
|
||||||
|
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
||||||
|
github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY=
|
||||||
|
github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4=
|
||||||
|
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||||
|
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
|
||||||
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
|
||||||
|
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
|
||||||
|
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
|
||||||
|
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||||
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||||
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||||
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
|
||||||
|
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||||
|
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||||
|
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
||||||
|
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||||
|
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||||
|
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
|
||||||
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
|
||||||
|
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
|
||||||
|
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
|
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||||
|
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||||
|
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||||
|
github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
|
||||||
|
github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
|
||||||
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
|
||||||
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
|
||||||
|
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
|
||||||
|
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
|
||||||
|
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
|
||||||
|
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
|
||||||
|
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
|
||||||
|
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
|
||||||
|
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
||||||
|
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
|
||||||
|
github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0=
|
||||||
|
github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc=
|
||||||
|
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||||
|
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
|
||||||
|
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
||||||
|
github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU=
|
||||||
|
github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M=
|
||||||
|
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
|
||||||
|
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
|
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
|
||||||
|
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0=
|
||||||
|
github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE=
|
||||||
|
github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs=
|
||||||
|
github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c=
|
||||||
|
github.com/pulumi/pulumi/sdk/v3 v3.160.0 h1:OxeATnIEqWyu3KpTeLUmyJdZaSEE6yX7ECvfGhByb9w=
|
||||||
|
github.com/pulumi/pulumi/sdk/v3 v3.160.0/go.mod h1:YEbbl0N7eVsgfsL7h5215dDf8GBSe4AnRon7Ya/KIVc=
|
||||||
|
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
|
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
|
||||||
|
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||||
|
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||||
|
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||||
|
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=
|
||||||
|
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE=
|
||||||
|
github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
|
||||||
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||||
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||||
|
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
|
github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
|
||||||
|
github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
|
||||||
|
github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
|
||||||
|
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||||
|
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
|
||||||
|
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
|
||||||
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
|
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
|
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||||
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||||
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
|
github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=
|
||||||
|
github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8=
|
||||||
|
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
|
||||||
|
github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
|
||||||
|
github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg=
|
||||||
|
github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
|
||||||
|
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
|
||||||
|
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
|
||||||
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0=
|
||||||
|
github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0=
|
||||||
|
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
|
||||||
|
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
|
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
|
||||||
|
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
||||||
|
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||||
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
|
||||||
|
golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||||
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
|
||||||
|
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
|
||||||
|
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
||||||
|
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
|
||||||
|
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
||||||
|
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
|
||||||
|
golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY=
|
||||||
|
google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
|
||||||
|
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
|
||||||
|
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
||||||
|
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
|
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
|
||||||
|
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw=
|
||||||
|
lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s=
|
||||||
|
pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA=
|
||||||
|
pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
|
||||||
0
sdk/go/Pulumi.yaml
generated
Normal file
0
sdk/go/Pulumi.yaml
generated
Normal file
17
sdk/go/xyz/config/config.go
generated
Normal file
17
sdk/go/xyz/config/config.go
generated
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/pulumi/pulumi-xyz/sdk/go/xyz/internal"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = internal.GetEnvOrDefault
|
||||||
|
|
||||||
|
// A region which should be used.
|
||||||
|
func GetRegion(ctx *pulumi.Context) string {
|
||||||
|
return config.Get(ctx, "xyz:region")
|
||||||
|
}
|
||||||
2
sdk/go/xyz/doc.go
generated
Normal file
2
sdk/go/xyz/doc.go
generated
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
// A Pulumi package for creating and managing xyz cloud resources.
|
||||||
|
package xyz
|
||||||
80
sdk/go/xyz/getDataSource.go
generated
Normal file
80
sdk/go/xyz/getDataSource.go
generated
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package xyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi-xyz/sdk/go/xyz/internal"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetDataSource(ctx *pulumi.Context, args *GetDataSourceArgs, opts ...pulumi.InvokeOption) (*GetDataSourceResult, error) {
|
||||||
|
opts = internal.PkgInvokeDefaultOpts(opts)
|
||||||
|
var rv GetDataSourceResult
|
||||||
|
err := ctx.Invoke("xyz:index/getDataSource:getDataSource", args, &rv, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &rv, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// A collection of arguments for invoking getDataSource.
|
||||||
|
type GetDataSourceArgs struct {
|
||||||
|
SampleAttribute string `pulumi:"sampleAttribute"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// A collection of values returned by getDataSource.
|
||||||
|
type GetDataSourceResult struct {
|
||||||
|
// The provider-assigned unique ID for this managed resource.
|
||||||
|
Id string `pulumi:"id"`
|
||||||
|
SampleAttribute string `pulumi:"sampleAttribute"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetDataSourceOutput(ctx *pulumi.Context, args GetDataSourceOutputArgs, opts ...pulumi.InvokeOption) GetDataSourceResultOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx.Context(), args).
|
||||||
|
ApplyT(func(v interface{}) (GetDataSourceResultOutput, error) {
|
||||||
|
args := v.(GetDataSourceArgs)
|
||||||
|
options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)}
|
||||||
|
return ctx.InvokeOutput("xyz:index/getDataSource:getDataSource", args, GetDataSourceResultOutput{}, options).(GetDataSourceResultOutput), nil
|
||||||
|
}).(GetDataSourceResultOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
// A collection of arguments for invoking getDataSource.
|
||||||
|
type GetDataSourceOutputArgs struct {
|
||||||
|
SampleAttribute pulumi.StringInput `pulumi:"sampleAttribute"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (GetDataSourceOutputArgs) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*GetDataSourceArgs)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
// A collection of values returned by getDataSource.
|
||||||
|
type GetDataSourceResultOutput struct{ *pulumi.OutputState }
|
||||||
|
|
||||||
|
func (GetDataSourceResultOutput) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*GetDataSourceResult)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o GetDataSourceResultOutput) ToGetDataSourceResultOutput() GetDataSourceResultOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o GetDataSourceResultOutput) ToGetDataSourceResultOutputWithContext(ctx context.Context) GetDataSourceResultOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
// The provider-assigned unique ID for this managed resource.
|
||||||
|
func (o GetDataSourceResultOutput) Id() pulumi.StringOutput {
|
||||||
|
return o.ApplyT(func(v GetDataSourceResult) string { return v.Id }).(pulumi.StringOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o GetDataSourceResultOutput) SampleAttribute() pulumi.StringOutput {
|
||||||
|
return o.ApplyT(func(v GetDataSourceResult) string { return v.SampleAttribute }).(pulumi.StringOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
pulumi.RegisterOutputType(GetDataSourceResultOutput{})
|
||||||
|
}
|
||||||
66
sdk/go/xyz/init.go
generated
Normal file
66
sdk/go/xyz/init.go
generated
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package xyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/blang/semver"
|
||||||
|
"github.com/pulumi/pulumi-xyz/sdk/go/xyz/internal"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
||||||
|
)
|
||||||
|
|
||||||
|
type module struct {
|
||||||
|
version semver.Version
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *module) Version() semver.Version {
|
||||||
|
return m.version
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) {
|
||||||
|
switch typ {
|
||||||
|
case "xyz:index/resource:Resource":
|
||||||
|
r = &Resource{}
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unknown resource type: %s", typ)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type pkg struct {
|
||||||
|
version semver.Version
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *pkg) Version() semver.Version {
|
||||||
|
return p.version
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *pkg) ConstructProvider(ctx *pulumi.Context, name, typ, urn string) (pulumi.ProviderResource, error) {
|
||||||
|
if typ != "pulumi:providers:xyz" {
|
||||||
|
return nil, fmt.Errorf("unknown provider type: %s", typ)
|
||||||
|
}
|
||||||
|
|
||||||
|
r := &Provider{}
|
||||||
|
err := ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn))
|
||||||
|
return r, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
version, err := internal.PkgVersion()
|
||||||
|
if err != nil {
|
||||||
|
version = semver.Version{Major: 1}
|
||||||
|
}
|
||||||
|
pulumi.RegisterResourceModule(
|
||||||
|
"xyz",
|
||||||
|
"index/resource",
|
||||||
|
&module{version},
|
||||||
|
)
|
||||||
|
pulumi.RegisterResourcePackage(
|
||||||
|
"xyz",
|
||||||
|
&pkg{version},
|
||||||
|
)
|
||||||
|
}
|
||||||
184
sdk/go/xyz/internal/pulumiUtilities.go
generated
Normal file
184
sdk/go/xyz/internal/pulumiUtilities.go
generated
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"reflect"
|
||||||
|
"regexp"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/blang/semver"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
||||||
|
)
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/internals"
|
||||||
|
)
|
||||||
|
|
||||||
|
type envParser func(v string) interface{}
|
||||||
|
|
||||||
|
func ParseEnvBool(v string) interface{} {
|
||||||
|
b, err := strconv.ParseBool(v)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseEnvInt(v string) interface{} {
|
||||||
|
i, err := strconv.ParseInt(v, 0, 0)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return int(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseEnvFloat(v string) interface{} {
|
||||||
|
f, err := strconv.ParseFloat(v, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseEnvStringArray(v string) interface{} {
|
||||||
|
var result pulumi.StringArray
|
||||||
|
for _, item := range strings.Split(v, ";") {
|
||||||
|
result = append(result, pulumi.String(item))
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} {
|
||||||
|
for _, v := range vars {
|
||||||
|
if value, ok := os.LookupEnv(v); ok {
|
||||||
|
if parser != nil {
|
||||||
|
return parser(value)
|
||||||
|
}
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return def
|
||||||
|
}
|
||||||
|
|
||||||
|
// PkgVersion uses reflection to determine the version of the current package.
|
||||||
|
// If a version cannot be determined, v1 will be assumed. The second return
|
||||||
|
// value is always nil.
|
||||||
|
func PkgVersion() (semver.Version, error) {
|
||||||
|
// emptyVersion defaults to v0.0.0
|
||||||
|
if !SdkVersion.Equals(semver.Version{}) {
|
||||||
|
return SdkVersion, nil
|
||||||
|
}
|
||||||
|
type sentinal struct{}
|
||||||
|
pkgPath := reflect.TypeOf(sentinal{}).PkgPath()
|
||||||
|
re := regexp.MustCompile("^.*/pulumi-xyz/sdk(/v\\d+)?")
|
||||||
|
if match := re.FindStringSubmatch(pkgPath); match != nil {
|
||||||
|
vStr := match[1]
|
||||||
|
if len(vStr) == 0 { // If the version capture group was empty, default to v1.
|
||||||
|
return semver.Version{Major: 1}, nil
|
||||||
|
}
|
||||||
|
return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil
|
||||||
|
}
|
||||||
|
return semver.Version{Major: 1}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// isZero is a null safe check for if a value is it's types zero value.
|
||||||
|
func IsZero(v interface{}) bool {
|
||||||
|
if v == nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return reflect.ValueOf(v).IsZero()
|
||||||
|
}
|
||||||
|
|
||||||
|
func CallPlain(
|
||||||
|
ctx *pulumi.Context,
|
||||||
|
tok string,
|
||||||
|
args pulumi.Input,
|
||||||
|
output pulumi.Output,
|
||||||
|
self pulumi.Resource,
|
||||||
|
property string,
|
||||||
|
resultPtr reflect.Value,
|
||||||
|
errorPtr *error,
|
||||||
|
opts ...pulumi.InvokeOption,
|
||||||
|
) {
|
||||||
|
res, err := callPlainInner(ctx, tok, args, output, self, opts...)
|
||||||
|
if err != nil {
|
||||||
|
*errorPtr = err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
v := reflect.ValueOf(res)
|
||||||
|
|
||||||
|
// extract res.property field if asked to do so
|
||||||
|
if property != "" {
|
||||||
|
v = v.FieldByName("Res")
|
||||||
|
}
|
||||||
|
|
||||||
|
// return by setting the result pointer; this style of returns shortens the generated code without generics
|
||||||
|
resultPtr.Elem().Set(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func callPlainInner(
|
||||||
|
ctx *pulumi.Context,
|
||||||
|
tok string,
|
||||||
|
args pulumi.Input,
|
||||||
|
output pulumi.Output,
|
||||||
|
self pulumi.Resource,
|
||||||
|
opts ...pulumi.InvokeOption,
|
||||||
|
) (any, error) {
|
||||||
|
o, err := ctx.Call(tok, args, output, self, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
outputData, err := internals.UnsafeAwaitOutput(ctx.Context(), o)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency.
|
||||||
|
known := outputData.Known
|
||||||
|
value := outputData.Value
|
||||||
|
secret := outputData.Secret
|
||||||
|
|
||||||
|
problem := ""
|
||||||
|
if !known {
|
||||||
|
problem = "an unknown value"
|
||||||
|
} else if secret {
|
||||||
|
problem = "a secret value"
|
||||||
|
}
|
||||||
|
|
||||||
|
if problem != "" {
|
||||||
|
return nil, fmt.Errorf("Plain resource method %q incorrectly returned %s. "+
|
||||||
|
"This is an error in the provider, please report this to the provider developer.",
|
||||||
|
tok, problem)
|
||||||
|
}
|
||||||
|
|
||||||
|
return value, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource.
|
||||||
|
func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption {
|
||||||
|
defaults := []pulumi.ResourceOption{}
|
||||||
|
|
||||||
|
version := semver.MustParse("1.0.0-alpha.0+dev")
|
||||||
|
if !version.Equals(semver.Version{}) {
|
||||||
|
defaults = append(defaults, pulumi.Version(version.String()))
|
||||||
|
}
|
||||||
|
return append(defaults, opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke.
|
||||||
|
func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption {
|
||||||
|
defaults := []pulumi.InvokeOption{}
|
||||||
|
|
||||||
|
version := semver.MustParse("1.0.0-alpha.0+dev")
|
||||||
|
if !version.Equals(semver.Version{}) {
|
||||||
|
defaults = append(defaults, pulumi.Version(version.String()))
|
||||||
|
}
|
||||||
|
return append(defaults, opts...)
|
||||||
|
}
|
||||||
11
sdk/go/xyz/internal/pulumiVersion.go
generated
Normal file
11
sdk/go/xyz/internal/pulumiVersion.go
generated
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/blang/semver"
|
||||||
|
)
|
||||||
|
|
||||||
|
var SdkVersion semver.Version = semver.Version{}
|
||||||
|
var pluginDownloadURL string = ""
|
||||||
90
sdk/go/xyz/provider.go
generated
Normal file
90
sdk/go/xyz/provider.go
generated
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package xyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi-xyz/sdk/go/xyz/internal"
|
||||||
|
"github.com/pulumi/pulumi-xyz/sdk/go/xyz/region"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
||||||
|
)
|
||||||
|
|
||||||
|
// The provider type for the xyz package. By default, resources use package-wide configuration
|
||||||
|
// settings, however an explicit `Provider` instance may be created and passed during resource
|
||||||
|
// construction to achieve fine-grained programmatic control over provider settings. See the
|
||||||
|
// [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.
|
||||||
|
type Provider struct {
|
||||||
|
pulumi.ProviderResourceState
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewProvider registers a new resource with the given unique name, arguments, and options.
|
||||||
|
func NewProvider(ctx *pulumi.Context,
|
||||||
|
name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) {
|
||||||
|
if args == nil {
|
||||||
|
args = &ProviderArgs{}
|
||||||
|
}
|
||||||
|
|
||||||
|
opts = internal.PkgResourceDefaultOpts(opts)
|
||||||
|
var resource Provider
|
||||||
|
err := ctx.RegisterResource("pulumi:providers:xyz", name, args, &resource, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &resource, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type providerArgs struct {
|
||||||
|
// A region which should be used.
|
||||||
|
Region *region.Region `pulumi:"region"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// The set of arguments for constructing a Provider resource.
|
||||||
|
type ProviderArgs struct {
|
||||||
|
// A region which should be used.
|
||||||
|
Region region.RegionPtrInput
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ProviderArgs) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*providerArgs)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProviderInput interface {
|
||||||
|
pulumi.Input
|
||||||
|
|
||||||
|
ToProviderOutput() ProviderOutput
|
||||||
|
ToProviderOutputWithContext(ctx context.Context) ProviderOutput
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Provider) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((**Provider)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Provider) ToProviderOutput() ProviderOutput {
|
||||||
|
return i.ToProviderOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Provider) ToProviderOutputWithContext(ctx context.Context) ProviderOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx, i).(ProviderOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProviderOutput struct{ *pulumi.OutputState }
|
||||||
|
|
||||||
|
func (ProviderOutput) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((**Provider)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ProviderOutput) ToProviderOutput() ProviderOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
pulumi.RegisterInputType(reflect.TypeOf((*ProviderInput)(nil)).Elem(), &Provider{})
|
||||||
|
pulumi.RegisterOutputType(ProviderOutput{})
|
||||||
|
}
|
||||||
5
sdk/go/xyz/pulumi-plugin.json
generated
Normal file
5
sdk/go/xyz/pulumi-plugin.json
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"resource": true,
|
||||||
|
"name": "xyz",
|
||||||
|
"version": "1.0.0-alpha.0+dev"
|
||||||
|
}
|
||||||
183
sdk/go/xyz/region/pulumiEnums.go
generated
Normal file
183
sdk/go/xyz/region/pulumiEnums.go
generated
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package region
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Region string
|
||||||
|
|
||||||
|
const (
|
||||||
|
RegionHere = Region("HERE")
|
||||||
|
RegionOverThere = Region("OVER_THERE")
|
||||||
|
)
|
||||||
|
|
||||||
|
func (Region) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*Region)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToRegionOutput() RegionOutput {
|
||||||
|
return pulumi.ToOutput(e).(RegionOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToRegionOutputWithContext(ctx context.Context) RegionOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx, e).(RegionOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToRegionPtrOutput() RegionPtrOutput {
|
||||||
|
return e.ToRegionPtrOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToRegionPtrOutputWithContext(ctx context.Context) RegionPtrOutput {
|
||||||
|
return Region(e).ToRegionOutputWithContext(ctx).ToRegionPtrOutputWithContext(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToStringOutput() pulumi.StringOutput {
|
||||||
|
return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToStringPtrOutput() pulumi.StringPtrOutput {
|
||||||
|
return pulumi.String(e).ToStringPtrOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e Region) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput {
|
||||||
|
return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
type RegionOutput struct{ *pulumi.OutputState }
|
||||||
|
|
||||||
|
func (RegionOutput) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*Region)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToRegionOutput() RegionOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToRegionOutputWithContext(ctx context.Context) RegionOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToRegionPtrOutput() RegionPtrOutput {
|
||||||
|
return o.ToRegionPtrOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToRegionPtrOutputWithContext(ctx context.Context) RegionPtrOutput {
|
||||||
|
return o.ApplyTWithContext(ctx, func(_ context.Context, v Region) *Region {
|
||||||
|
return &v
|
||||||
|
}).(RegionPtrOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToStringOutput() pulumi.StringOutput {
|
||||||
|
return o.ToStringOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput {
|
||||||
|
return o.ApplyTWithContext(ctx, func(_ context.Context, e Region) string {
|
||||||
|
return string(e)
|
||||||
|
}).(pulumi.StringOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToStringPtrOutput() pulumi.StringPtrOutput {
|
||||||
|
return o.ToStringPtrOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput {
|
||||||
|
return o.ApplyTWithContext(ctx, func(_ context.Context, e Region) *string {
|
||||||
|
v := string(e)
|
||||||
|
return &v
|
||||||
|
}).(pulumi.StringPtrOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
type RegionPtrOutput struct{ *pulumi.OutputState }
|
||||||
|
|
||||||
|
func (RegionPtrOutput) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((**Region)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionPtrOutput) ToRegionPtrOutput() RegionPtrOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionPtrOutput) ToRegionPtrOutputWithContext(ctx context.Context) RegionPtrOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionPtrOutput) Elem() RegionOutput {
|
||||||
|
return o.ApplyT(func(v *Region) Region {
|
||||||
|
if v != nil {
|
||||||
|
return *v
|
||||||
|
}
|
||||||
|
var ret Region
|
||||||
|
return ret
|
||||||
|
}).(RegionOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput {
|
||||||
|
return o.ToStringPtrOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o RegionPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput {
|
||||||
|
return o.ApplyTWithContext(ctx, func(_ context.Context, e *Region) *string {
|
||||||
|
if e == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
v := string(*e)
|
||||||
|
return &v
|
||||||
|
}).(pulumi.StringPtrOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegionInput is an input type that accepts values of the Region enum
|
||||||
|
// A concrete instance of `RegionInput` can be one of the following:
|
||||||
|
//
|
||||||
|
// RegionHere
|
||||||
|
// RegionOverThere
|
||||||
|
type RegionInput interface {
|
||||||
|
pulumi.Input
|
||||||
|
|
||||||
|
ToRegionOutput() RegionOutput
|
||||||
|
ToRegionOutputWithContext(context.Context) RegionOutput
|
||||||
|
}
|
||||||
|
|
||||||
|
var regionPtrType = reflect.TypeOf((**Region)(nil)).Elem()
|
||||||
|
|
||||||
|
type RegionPtrInput interface {
|
||||||
|
pulumi.Input
|
||||||
|
|
||||||
|
ToRegionPtrOutput() RegionPtrOutput
|
||||||
|
ToRegionPtrOutputWithContext(context.Context) RegionPtrOutput
|
||||||
|
}
|
||||||
|
|
||||||
|
type regionPtr string
|
||||||
|
|
||||||
|
func RegionPtr(v string) RegionPtrInput {
|
||||||
|
return (*regionPtr)(&v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*regionPtr) ElementType() reflect.Type {
|
||||||
|
return regionPtrType
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *regionPtr) ToRegionPtrOutput() RegionPtrOutput {
|
||||||
|
return pulumi.ToOutput(in).(RegionPtrOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (in *regionPtr) ToRegionPtrOutputWithContext(ctx context.Context) RegionPtrOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx, in).(RegionPtrOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
pulumi.RegisterInputType(reflect.TypeOf((*RegionInput)(nil)).Elem(), Region("HERE"))
|
||||||
|
pulumi.RegisterInputType(reflect.TypeOf((*RegionPtrInput)(nil)).Elem(), Region("HERE"))
|
||||||
|
pulumi.RegisterOutputType(RegionOutput{})
|
||||||
|
pulumi.RegisterOutputType(RegionPtrOutput{})
|
||||||
|
}
|
||||||
214
sdk/go/xyz/resource.go
generated
Normal file
214
sdk/go/xyz/resource.go
generated
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
|
||||||
|
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
|
||||||
|
|
||||||
|
package xyz
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/pulumi/pulumi-xyz/sdk/go/xyz/internal"
|
||||||
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Resource struct {
|
||||||
|
pulumi.CustomResourceState
|
||||||
|
|
||||||
|
// Sample attribute.
|
||||||
|
SampleAttribute pulumi.StringPtrOutput `pulumi:"sampleAttribute"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewResource registers a new resource with the given unique name, arguments, and options.
|
||||||
|
func NewResource(ctx *pulumi.Context,
|
||||||
|
name string, args *ResourceArgs, opts ...pulumi.ResourceOption) (*Resource, error) {
|
||||||
|
if args == nil {
|
||||||
|
args = &ResourceArgs{}
|
||||||
|
}
|
||||||
|
|
||||||
|
opts = internal.PkgResourceDefaultOpts(opts)
|
||||||
|
var resource Resource
|
||||||
|
err := ctx.RegisterResource("xyz:index/resource:Resource", name, args, &resource, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &resource, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetResource gets an existing Resource resource's state with the given name, ID, and optional
|
||||||
|
// state properties that are used to uniquely qualify the lookup (nil if not required).
|
||||||
|
func GetResource(ctx *pulumi.Context,
|
||||||
|
name string, id pulumi.IDInput, state *ResourceState, opts ...pulumi.ResourceOption) (*Resource, error) {
|
||||||
|
var resource Resource
|
||||||
|
err := ctx.ReadResource("xyz:index/resource:Resource", name, id, state, &resource, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &resource, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Input properties used for looking up and filtering Resource resources.
|
||||||
|
type resourceState struct {
|
||||||
|
// Sample attribute.
|
||||||
|
SampleAttribute *string `pulumi:"sampleAttribute"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResourceState struct {
|
||||||
|
// Sample attribute.
|
||||||
|
SampleAttribute pulumi.StringPtrInput
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ResourceState) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*resourceState)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
type resourceArgs struct {
|
||||||
|
// Sample attribute.
|
||||||
|
SampleAttribute *string `pulumi:"sampleAttribute"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// The set of arguments for constructing a Resource resource.
|
||||||
|
type ResourceArgs struct {
|
||||||
|
// Sample attribute.
|
||||||
|
SampleAttribute pulumi.StringPtrInput
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ResourceArgs) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*resourceArgs)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResourceInput interface {
|
||||||
|
pulumi.Input
|
||||||
|
|
||||||
|
ToResourceOutput() ResourceOutput
|
||||||
|
ToResourceOutputWithContext(ctx context.Context) ResourceOutput
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Resource) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((**Resource)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Resource) ToResourceOutput() ResourceOutput {
|
||||||
|
return i.ToResourceOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *Resource) ToResourceOutputWithContext(ctx context.Context) ResourceOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx, i).(ResourceOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResourceArrayInput is an input type that accepts ResourceArray and ResourceArrayOutput values.
|
||||||
|
// You can construct a concrete instance of `ResourceArrayInput` via:
|
||||||
|
//
|
||||||
|
// ResourceArray{ ResourceArgs{...} }
|
||||||
|
type ResourceArrayInput interface {
|
||||||
|
pulumi.Input
|
||||||
|
|
||||||
|
ToResourceArrayOutput() ResourceArrayOutput
|
||||||
|
ToResourceArrayOutputWithContext(context.Context) ResourceArrayOutput
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResourceArray []ResourceInput
|
||||||
|
|
||||||
|
func (ResourceArray) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*[]*Resource)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i ResourceArray) ToResourceArrayOutput() ResourceArrayOutput {
|
||||||
|
return i.ToResourceArrayOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i ResourceArray) ToResourceArrayOutputWithContext(ctx context.Context) ResourceArrayOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx, i).(ResourceArrayOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResourceMapInput is an input type that accepts ResourceMap and ResourceMapOutput values.
|
||||||
|
// You can construct a concrete instance of `ResourceMapInput` via:
|
||||||
|
//
|
||||||
|
// ResourceMap{ "key": ResourceArgs{...} }
|
||||||
|
type ResourceMapInput interface {
|
||||||
|
pulumi.Input
|
||||||
|
|
||||||
|
ToResourceMapOutput() ResourceMapOutput
|
||||||
|
ToResourceMapOutputWithContext(context.Context) ResourceMapOutput
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResourceMap map[string]ResourceInput
|
||||||
|
|
||||||
|
func (ResourceMap) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*map[string]*Resource)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i ResourceMap) ToResourceMapOutput() ResourceMapOutput {
|
||||||
|
return i.ToResourceMapOutputWithContext(context.Background())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i ResourceMap) ToResourceMapOutputWithContext(ctx context.Context) ResourceMapOutput {
|
||||||
|
return pulumi.ToOutputWithContext(ctx, i).(ResourceMapOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResourceOutput struct{ *pulumi.OutputState }
|
||||||
|
|
||||||
|
func (ResourceOutput) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((**Resource)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceOutput) ToResourceOutput() ResourceOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceOutput) ToResourceOutputWithContext(ctx context.Context) ResourceOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sample attribute.
|
||||||
|
func (o ResourceOutput) SampleAttribute() pulumi.StringPtrOutput {
|
||||||
|
return o.ApplyT(func(v *Resource) pulumi.StringPtrOutput { return v.SampleAttribute }).(pulumi.StringPtrOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResourceArrayOutput struct{ *pulumi.OutputState }
|
||||||
|
|
||||||
|
func (ResourceArrayOutput) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*[]*Resource)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceArrayOutput) ToResourceArrayOutput() ResourceArrayOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceArrayOutput) ToResourceArrayOutputWithContext(ctx context.Context) ResourceArrayOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceArrayOutput) Index(i pulumi.IntInput) ResourceOutput {
|
||||||
|
return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Resource {
|
||||||
|
return vs[0].([]*Resource)[vs[1].(int)]
|
||||||
|
}).(ResourceOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ResourceMapOutput struct{ *pulumi.OutputState }
|
||||||
|
|
||||||
|
func (ResourceMapOutput) ElementType() reflect.Type {
|
||||||
|
return reflect.TypeOf((*map[string]*Resource)(nil)).Elem()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceMapOutput) ToResourceMapOutput() ResourceMapOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceMapOutput) ToResourceMapOutputWithContext(ctx context.Context) ResourceMapOutput {
|
||||||
|
return o
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ResourceMapOutput) MapIndex(k pulumi.StringInput) ResourceOutput {
|
||||||
|
return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Resource {
|
||||||
|
return vs[0].(map[string]*Resource)[vs[1].(string)]
|
||||||
|
}).(ResourceOutput)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
pulumi.RegisterInputType(reflect.TypeOf((*ResourceInput)(nil)).Elem(), &Resource{})
|
||||||
|
pulumi.RegisterInputType(reflect.TypeOf((*ResourceArrayInput)(nil)).Elem(), ResourceArray{})
|
||||||
|
pulumi.RegisterInputType(reflect.TypeOf((*ResourceMapInput)(nil)).Elem(), ResourceMap{})
|
||||||
|
pulumi.RegisterOutputType(ResourceOutput{})
|
||||||
|
pulumi.RegisterOutputType(ResourceArrayOutput{})
|
||||||
|
pulumi.RegisterOutputType(ResourceMapOutput{})
|
||||||
|
}
|
||||||
0
sdk/nodejs/Pulumi.yaml
generated
Normal file
0
sdk/nodejs/Pulumi.yaml
generated
Normal file
4
sdk/nodejs/README.md
generated
Normal file
4
sdk/nodejs/README.md
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
> This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-xyz)
|
||||||
|
> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,
|
||||||
|
> first check the [`pulumi-xyz` repo](https://github.com/pulumi/pulumi-xyz/issues); however, if that doesn't turn up anything,
|
||||||
|
> please consult the source [`terraform-provider-xyz` repo](https://github.com/terraform-providers/terraform-provider-xyz/issues).
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user