From 1b1e9311912ed360fbe70692c9de23479bfaa08f Mon Sep 17 00:00:00 2001 From: Thomas Neil James Shadwell Date: Sun, 27 Oct 2024 14:29:51 -0700 Subject: [PATCH] Crane provider for pulumi --- MODULE.bazel.lock | 56 +-- gazelle_python.yaml | 7 +- go/gazelle/ts/config/config.go | 4 + .../.devcontainer.json | 68 ++++ .../.github/actions/setup-tools/action.yml | 81 ++++ .../.github/workflows/makefile.yaml | 59 +++ .../.gitignore | 13 + .../.gitmodules | 3 + .../pulumi-component-provider-crane/LICENSE | 202 ++++++++++ .../pulumi-component-provider-crane/Makefile | 169 +++++++++ .../pulumi-component-provider-crane/README.md | 117 ++++++ .../deployment-templates/.goreleaser.yml | 29 ++ .../deployment-templates/README-DEPLOYMENT.md | 28 ++ .../deployment-templates/release.yml | 143 +++++++ .../examples/dotnet/.gitignore | 353 ++++++++++++++++++ .../examples/dotnet/Program.cs | 21 ++ .../examples/dotnet/Pulumi.yaml | 6 + .../dotnet/provider-xyz-native.csproj | 14 + .../examples/go/Pulumi.yaml | 6 + .../examples/go/go.mod | 7 + .../examples/go/main.go | 21 ++ .../examples/nodejs/.gitignore | 2 + .../examples/nodejs/Pulumi.yaml | 6 + .../examples/nodejs/index.ts | 7 + .../examples/nodejs/package.json | 11 + .../examples/python/.gitignore | 2 + .../examples/python/Pulumi.yaml | 6 + .../examples/python/__main__.py | 7 + .../examples/python/requirements.txt | 2 + .../examples/yaml/Pulumi.yaml | 20 + .../examples/yaml/README.md | 15 + .../provider/cmd/pulumi-resource-xyz/main.go | 24 ++ .../provider/go.mod | 105 ++++++ .../provider/go.sum | 338 +++++++++++++++++ .../provider/provider.go | 48 +++ .../provider/randomComponent.go | 71 ++++ .../provider/randomResource.go | 70 ++++ .../provider/randomResource_test.go | 38 ++ .../sdk/.gitignore | 1 + .../sdk/dotnet/Config/Config.cs | 43 +++ .../sdk/dotnet/Config/README.md | 0 .../sdk/dotnet/Provider.cs | 50 +++ .../sdk/dotnet/Pulumi.Xyz.csproj | 60 +++ .../sdk/dotnet/README.md | 0 .../sdk/dotnet/Random.cs | 74 ++++ .../sdk/dotnet/RandomComponent.cs | 57 +++ .../sdk/dotnet/Utilities.cs | 83 ++++ .../sdk/dotnet/logo.png | Bin 0 -> 7934 bytes .../sdk/dotnet/pulumi-plugin.json | 4 + .../sdk/dotnet/version.txt | 1 + .../sdk/go.mod | 57 +++ .../sdk/go.sum | 309 +++++++++++++++ .../sdk/go/xyz/config/config.go | 16 + .../sdk/go/xyz/doc.go | 2 + .../sdk/go/xyz/init.go | 68 ++++ .../sdk/go/xyz/internal/pulumiUtilities.go | 184 +++++++++ .../sdk/go/xyz/internal/pulumiVersion.go | 11 + .../sdk/go/xyz/provider.go | 83 ++++ .../sdk/go/xyz/pulumi-plugin.json | 4 + .../sdk/go/xyz/random.go | 121 ++++++ .../sdk/go/xyz/randomComponent.go | 98 +++++ .../sdk/nodejs/README.md | 0 .../sdk/nodejs/config/index.ts | 5 + .../sdk/nodejs/config/vars.ts | 17 + .../sdk/nodejs/index.ts | 53 +++ .../sdk/nodejs/package.json | 18 + .../sdk/nodejs/provider.ts | 46 +++ .../sdk/nodejs/random.ts | 67 ++++ .../sdk/nodejs/randomComponent.ts | 55 +++ .../sdk/nodejs/tsconfig.json | 24 ++ .../sdk/nodejs/utilities.ts | 95 +++++ .../sdk/python/README.md | 117 ++++++ .../sdk/python/pulumi_xyz/README.md | 0 .../sdk/python/pulumi_xyz/__init__.py | 43 +++ .../sdk/python/pulumi_xyz/_utilities.py | 327 ++++++++++++++++ .../sdk/python/pulumi_xyz/config/__init__.py | 8 + .../sdk/python/pulumi_xyz/config/__init__.pyi | 13 + .../sdk/python/pulumi_xyz/config/vars.py | 21 ++ .../sdk/python/pulumi_xyz/provider.py | 85 +++++ .../sdk/python/pulumi_xyz/pulumi-plugin.json | 4 + .../sdk/python/pulumi_xyz/py.typed | 0 .../sdk/python/pulumi_xyz/random.py | 117 ++++++ .../sdk/python/pulumi_xyz/random_component.py | 100 +++++ .../sdk/python/setup.py | 37 ++ .../tests/go.mod | 87 +++++ .../tests/go.sum | 301 +++++++++++++++ .../tests/provider_test.go | 56 +++ requirements.in | 1 + requirements.txt | 87 ++++- ts/math/physics.ts | 0 90 files changed, 5259 insertions(+), 30 deletions(-) create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/.devcontainer.json create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/.github/actions/setup-tools/action.yml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/.github/workflows/makefile.yaml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/.gitignore create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/.gitmodules create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/LICENSE create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/Makefile create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/README.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/.goreleaser.yml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/README-DEPLOYMENT.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/release.yml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/.gitignore create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Program.cs create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Pulumi.yaml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/provider-xyz-native.csproj create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/go/Pulumi.yaml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/go/go.mod create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/go/main.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/.gitignore create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/Pulumi.yaml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/index.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/package.json create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/python/.gitignore create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/python/Pulumi.yaml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/python/__main__.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/python/requirements.txt create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/Pulumi.yaml create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/README.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/provider/cmd/pulumi-resource-xyz/main.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/provider/go.mod create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/provider/go.sum create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/provider/provider.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/provider/randomComponent.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource_test.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/.gitignore create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Config/Config.cs create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Config/README.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Provider.cs create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Pulumi.Xyz.csproj create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/README.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Random.cs create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/RandomComponent.cs create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Utilities.cs create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/logo.png create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/pulumi-plugin.json create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/version.txt create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.mod create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.sum create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/config/config.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/doc.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/init.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiUtilities.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiVersion.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/provider.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/pulumi-plugin.json create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/random.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/randomComponent.go create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/README.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/index.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/vars.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/index.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/package.json create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/provider.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/random.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/randomComponent.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/tsconfig.json create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/utilities.ts create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/README.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/README.md create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/__init__.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/_utilities.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.pyi create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/vars.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/provider.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/pulumi-plugin.json create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/py.typed create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random_component.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/setup.py create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/tests/go.mod create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/tests/go.sum create mode 100644 go/pulumi/plugin/pulumi-component-provider-crane/tests/provider_test.go create mode 100644 ts/math/physics.ts diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 778c2db3dd..62c96a1f6c 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -665,12 +665,36 @@ }, "@@aspect_rules_js~//npm:extensions.bzl%pnpm": { "general": { - "bzlTransitiveDigest": "TDj8q/EZQFsq9EVTq4OydotQcRyat8YwmPZMHhY/C0A=", - "usagesDigest": "8RuvKNH1Sq54X1N0lrv6KByZBjwnt8MVN0hh9qKx8FY=", + "bzlTransitiveDigest": "nPvqs5bw2cFAlYqYsDaQWb9OqebcJgu0o9gj9/qSzIE=", + "usagesDigest": "Q4/pB1GY3fTCrR4t6+vYezCUNSTQlCg9iyGgKXuarVU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { + "pnpm__links": { + "bzlFile": "@@aspect_rules_js~//npm/private:npm_import.bzl", + "ruleClassName": "npm_import_links", + "attributes": { + "package": "pnpm", + "version": "8.6.7", + "dev": false, + "root_package": "", + "link_packages": {}, + "deps": {}, + "transitive_closure": {}, + "lifecycle_build_target": false, + "lifecycle_hooks_env": [], + "lifecycle_hooks_execution_requirements": [ + "no-sandbox" + ], + "lifecycle_hooks_use_default_shell_env": false, + "bins": {}, + "package_visibility": [ + "//visibility:public" + ], + "replace_package": "" + } + }, "pnpm": { "bzlFile": "@@aspect_rules_js~//npm/private:npm_import.bzl", "ruleClassName": "npm_import_rule", @@ -698,30 +722,6 @@ "extract_full_archive": true, "system_tar": "auto" } - }, - "pnpm__links": { - "bzlFile": "@@aspect_rules_js~//npm/private:npm_import.bzl", - "ruleClassName": "npm_import_links", - "attributes": { - "package": "pnpm", - "version": "8.6.7", - "dev": false, - "root_package": "", - "link_packages": {}, - "deps": {}, - "transitive_closure": {}, - "lifecycle_build_target": false, - "lifecycle_hooks_env": [], - "lifecycle_hooks_execution_requirements": [ - "no-sandbox" - ], - "lifecycle_hooks_use_default_shell_env": false, - "bins": {}, - "package_visibility": [ - "//visibility:public" - ], - "replace_package": "" - } } }, "recordedRepoMappingEntries": [ @@ -1170,8 +1170,8 @@ }, "@@protobuf~//:non_module_deps.bzl%non_module_deps": { "general": { - "bzlTransitiveDigest": "n42CE1R95fa5ddK2PVwgWYAZfG476FzMuRvz0zo5gs8=", - "usagesDigest": "1JwsUDre7ljlZoaD2WfcvUlKnXUonmxIKAVBQ82j6Ig=", + "bzlTransitiveDigest": "jsbfONl9OksDWiAs7KDFK5chH/tYI3DngdM30NKdk5Y=", + "usagesDigest": "eVrT3hFCIZNRuTKpfWDzSIwTi2p6U6PWbt+tNWl/Tqk=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, diff --git a/gazelle_python.yaml b/gazelle_python.yaml index 013dd96608..c1f55b0c4e 100644 --- a/gazelle_python.yaml +++ b/gazelle_python.yaml @@ -28,9 +28,12 @@ manifest: debugpy: debugpy decorator: decorator defusedxml: defusedxml + dill: dill executing: executing fastjsonschema: fastjsonschema fqdn: fqdn + google.protobuf: protobuf + grpc: grpcio h11: h11 httpcore: httpcore httpx: httpx @@ -89,6 +92,7 @@ manifest: prompt_toolkit: prompt_toolkit psutil: psutil ptyprocess: ptyprocess + pulumi: pulumi pure_eval: pure_eval pyasn1: pyasn1 pycparser: pycparser @@ -102,6 +106,7 @@ manifest: rpds: rpds_py ruff: ruff sectxt: sectxt + semver: semver send2trash: Send2Trash setuptools: setuptools six: six @@ -127,4 +132,4 @@ manifest: zmq: pyzmq pip_repository: name: pip -integrity: de74cb8d88e7a1426926ab078f9c4470c1aba063a4007a6d16b85da7b452a5f8 +integrity: 9d5434ffde76a680356d7c89f0ba9e39e6ebd45383cb7720751945b4c8dead86 diff --git a/go/gazelle/ts/config/config.go b/go/gazelle/ts/config/config.go index aaf266dc7e..466ee7a723 100644 --- a/go/gazelle/ts/config/config.go +++ b/go/gazelle/ts/config/config.go @@ -309,6 +309,10 @@ func generateRule(fileName string, args language.GenerateArgs) (res *GenerateRul r.SetAttr("src", fileName) + if args.File == nil { + return nil, nil + } + res = &GenerateRuleResult{ rule: r, imports: NewDepSet(args.File.Pkg, conf.Extends.Strings()...), diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/.devcontainer.json b/go/pulumi/plugin/pulumi-component-provider-crane/.devcontainer.json new file mode 100644 index 0000000000..6a46e604a4 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/.devcontainer.json @@ -0,0 +1,68 @@ +// Reference: +// - https://containers.dev/features +// - https://containers.dev/implementors/features +// - https://code.visualstudio.com/docs/getstarted/settings +{ + "name": "pulumi", + "image": "ghcr.io/pulumi/devcontainer", + "customizations": { + "vscode": { + "settings": [ + "go.testTags", "all", + "go.buildTags", "all", + "editor.minimap.enabled", false, + "explorer.openEditors.visible", 1, + "editor.quickSuggestionsDelay", 0, + "editor.suggestSelection", "first", + "editor.snippetSuggestions", "top", + "editor.gotoLocation.multipleReferences", "goto", + "editor.gotoLocation.multipleDefinitions", "goto", + "editor.gotoLocation.multipleDeclarations", "goto", + "editor.gotoLocation.multipleImplementations", "goto", + "editor.gotoLocation.multipleTypeDefinitions", "goto", + "editor.terminal.integrated.shell.linux", "/usr/bin/zsh", + "files.trimTrailingWhitespace", true, + "files.trimFinalNewlines", true + ], + "extensions": [ + "golang.go", + "vscodevim.vim", + "github.copilot", + "ms-python.python", + "jetpack-io.devbox", + "redhat.vscode-yaml", + "esbenp.prettier-vscode", + "ms-vscode.makefile-tools", + "ms-azuretools.vscode-docker", + "github.vscode-pull-request-github", + "ms-vscode-remote.remote-containers", + "visualstudioexptteam.vscodeintellicode", + "bierner.markdown-preview-github-styles" + ] + } + }, + "features": { + "ghcr.io/devcontainers/features/common-utils:2": { + "installZsh": true, + "configureZshAsDefaultShell": true, + "installOhMyZsh": true, + "installOhMyZshConfig": true, + "upgradePackages": true, + "nonFreePackages": true, + "username": "vscode", + "userUid": "automatic", + "userGid": "automatic" + }, + "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { + "moby": false, + "installDockerBuildx": true, + "version": "latest", + "dockerDashComposeVersion": "v2" + } + }, + "postCreateCommand": "git submodule update --init --recursive", + "remoteUser": "vscode", + "forwardPorts": [1313], + "runArgs": ["--network=host"] +} + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/.github/actions/setup-tools/action.yml b/go/pulumi/plugin/pulumi-component-provider-crane/.github/actions/setup-tools/action.yml new file mode 100644 index 0000000000..642d1d223f --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/.github/actions/setup-tools/action.yml @@ -0,0 +1,81 @@ +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 + +runs: + using: "composite" + steps: + - name: Install Go + if: inputs.tools == 'all' || contains(inputs.tools, 'go') + uses: actions/setup-go@v5 + with: + go-version: "1.21.x" + cache-dependency-path: | + provider/*.sum + upstream/*.sum + sdk/*.sum + + - name: Install pulumictl + if: inputs.tools == 'all' || contains(inputs.tools, 'pulumictl') + uses: jaxxstorm/action-install-gh-release@v1.11.0 + with: + tag: v0.0.46 + repo: pulumi/pulumictl + + - name: Install Pulumi CLI + if: inputs.tools == 'all' || contains(inputs.tools, 'pulumicli') + uses: pulumi/actions@v5 + with: + pulumi-version: "dev" + + - name: Install Schema Tools + if: inputs.tools == 'all' || contains(inputs.tools, 'schema-tools') + uses: jaxxstorm/action-install-gh-release@v1.11.0 + with: + repo: pulumi/schema-tools + + - name: Setup Node + if: inputs.tools == 'all' || contains(inputs.tools, 'nodejs') + uses: actions/setup-node@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@v4 + with: + dotnet-version: 6.0.x + + - name: Setup Python + if: inputs.tools == 'all' || contains(inputs.tools, 'python') + uses: actions/setup-python@v5 + with: + python-version: 3.11.8 + + - name: Setup Java + if: inputs.tools == 'all' || contains(inputs.tools, 'java') + uses: actions/setup-java@v4 + with: + cache: gradle + distribution: temurin + java-version: 11 + + - name: Setup Gradle + if: inputs.tools == 'all' || contains(inputs.tools, 'java') + uses: gradle/gradle-build-action@v3 + with: + gradle-version: 7.6 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/.github/workflows/makefile.yaml b/go/pulumi/plugin/pulumi-component-provider-crane/.github/workflows/makefile.yaml new file mode 100644 index 0000000000..82f2c50a48 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/.github/workflows/makefile.yaml @@ -0,0 +1,59 @@ +name: Makefile + +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + branches: + - main + schedule: + - cron: "0 0 * * *" + +jobs: + build: + runs-on: ubuntu-latest + container: + image: docker://ghcr.io/pulumi/devcontainer:latest + options: --user root + permissions: + contents: read + packages: read + actions: read + steps: + - name: Checkout repository + uses: actions/checkout@v4 + id: git + with: + submodules: "recursive" + - name: Unshallow clone for tags + id: tags + run: | + sudo chown -R $(whoami) /__w/pulumi-provider-boilerplate/pulumi-provider-boilerplate + git config --global --add safe.directory /__w/pulumi-provider-boilerplate/pulumi-provider-boilerplate + git fetch --prune --unshallow --tags + - name: Setup tools + uses: ./.github/actions/setup-tools + with: + tools: go, pulumicli, pulumictl, nodejs, python, dotnet + - name: Build + id: build + run: | + make build + - name: Install + id: install + run: | + set -ex + make install + - name: PulumiUp + id: up + run: make up + - name: PulumiDown + id: down + run: make down + - name: Generate multi-language examples from yaml IaC program + id: examples + run: | + set -ex + make gen_examples diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/.gitignore b/go/pulumi/plugin/pulumi-component-provider-crane/.gitignore new file mode 100644 index 0000000000..25d02d34ac --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/.gitignore @@ -0,0 +1,13 @@ +/vendor/ +**/bin/ +**/obj/ +**/node_modules/ +**/.vs +**/.idea +**/.ionide +.pulumi +Pulumi.*.yaml +yarn.lock +ci-scripts +/nuget/ +provider/**/schema-embed.json diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/.gitmodules b/go/pulumi/plugin/pulumi-component-provider-crane/.gitmodules new file mode 100644 index 0000000000..ce62d1caf5 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/.gitmodules @@ -0,0 +1,3 @@ +[submodule ".devcontainer"] + path = third_party/pulumi-component-provider-boilerplate/.devcontainer + url = https://github.com/pulumi/devcontainer diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/LICENSE b/go/pulumi/plugin/pulumi-component-provider-crane/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/Makefile b/go/pulumi/plugin/pulumi-component-provider-crane/Makefile new file mode 100644 index 0000000000..3a49d6028c --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/Makefile @@ -0,0 +1,169 @@ +PROJECT_NAME := Pulumi Xyz Resource Provider + +PACK := xyz +PACKDIR := sdk +PROJECT := github.com/pulumi/pulumi-xyz +NODE_MODULE_NAME := @abc/xyz +NUGET_PKG_NAME := Abc.Xyz + +PROVIDER := pulumi-resource-${PACK} +VERSION ?= $(shell pulumictl get version) +PROVIDER_PATH := provider +VERSION_PATH := ${PROVIDER_PATH}.Version + +GOPATH := $(shell go env GOPATH) + +WORKING_DIR := $(shell pwd) +EXAMPLES_DIR := ${WORKING_DIR}/examples/yaml +TESTPARALLELISM := 4 + +OS := $(shell uname) +SHELL := /bin/bash + +prepare:: + @if test -z "${NAME}"; then echo "NAME not set"; exit 1; fi + @if test -z "${REPOSITORY}"; then echo "REPOSITORY not set"; exit 1; fi + @if test -z "${ORG}"; then echo "ORG not set"; exit 1; fi + @if test ! -d "provider/cmd/pulumi-resource-xyz"; then "Project already prepared"; exit 1; fi # SED_SKIP + + mv "provider/cmd/pulumi-resource-xyz" provider/cmd/pulumi-resource-${NAME} # SED_SKIP + + if [[ "${OS}" != "Darwin" ]]; then \ + find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '/SED_SKIP/!s,github.com/pulumi/pulumi-[x]yz,${REPOSITORY},g' {} \; &> /dev/null; \ + find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '/SED_SKIP/!s/[xX]yz/${NAME}/g' {} \; &> /dev/null; \ + find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '/SED_SKIP/!s/[aA]bc/${ORG}/g' {} \; &> /dev/null; \ + fi + + # In MacOS the -i parameter needs an empty string to execute in place. + if [[ "${OS}" == "Darwin" ]]; then \ + find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '' '/SED_SKIP/!s,github.com/pulumi/pulumi-[x]yz,${REPOSITORY},g' {} \; &> /dev/null; \ + find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '' '/SED_SKIP/!s/[xX]yz/${NAME}/g' {} \; &> /dev/null; \ + find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '' '/SED_SKIP/!s/[aA]bc/${ORG}/g' {} \; &> /dev/null; \ + fi + +ensure:: + cd provider && go mod tidy + cd sdk && go mod tidy + cd tests && go mod tidy + +provider:: + (cd provider && go build -o $(WORKING_DIR)/bin/${PROVIDER} -ldflags "-X ${PROJECT}/${VERSION_PATH}=${VERSION}" $(PROJECT)/${PROVIDER_PATH}/cmd/$(PROVIDER)) + +provider_debug:: + (cd provider && go build -o $(WORKING_DIR)/bin/${PROVIDER} -gcflags="all=-N -l" -ldflags "-X ${PROJECT}/${VERSION_PATH}=${VERSION}" $(PROJECT)/${PROVIDER_PATH}/cmd/$(PROVIDER)) + +test_provider:: + cd tests && go test -short -v -count=1 -cover -timeout 2h -parallel ${TESTPARALLELISM} ./... + +dotnet_sdk:: DOTNET_VERSION := $(shell pulumictl get version --language dotnet) +dotnet_sdk:: + rm -rf sdk/dotnet + pulumi package gen-sdk $(WORKING_DIR)/bin/$(PROVIDER) --language dotnet + cd ${PACKDIR}/dotnet/&& \ + echo "${DOTNET_VERSION}" >version.txt && \ + dotnet build /p:Version=${DOTNET_VERSION} + +go_sdk:: $(WORKING_DIR)/bin/$(PROVIDER) + rm -rf sdk/go + pulumi package gen-sdk $(WORKING_DIR)/bin/$(PROVIDER) --language go + +nodejs_sdk:: VERSION := $(shell pulumictl get version --language javascript) +nodejs_sdk:: + rm -rf sdk/nodejs + pulumi package gen-sdk $(WORKING_DIR)/bin/$(PROVIDER) --language nodejs + cd ${PACKDIR}/nodejs/ && \ + yarn install && \ + yarn run tsc && \ + cp ../../README.md ../../LICENSE package.json yarn.lock bin/ && \ + sed -i.bak 's/$${VERSION}/$(VERSION)/g' bin/package.json && \ + rm ./bin/package.json.bak + +python_sdk:: PYPI_VERSION := $(shell pulumictl get version --language python) +python_sdk:: + rm -rf sdk/python + pulumi package gen-sdk $(WORKING_DIR)/bin/$(PROVIDER) --language python + cp README.md ${PACKDIR}/python/ + cd ${PACKDIR}/python/ && \ + python3 setup.py clean --all 2>/dev/null && \ + rm -rf ./bin/ ../python.bin/ && cp -R . ../python.bin && mv ../python.bin ./bin && \ + sed -i.bak -e 's/^VERSION = .*/VERSION = "$(PYPI_VERSION)"/g' -e 's/^PLUGIN_VERSION = .*/PLUGIN_VERSION = "$(VERSION)"/g' ./bin/setup.py && \ + rm ./bin/setup.py.bak && \ + cd ./bin && python3 setup.py build sdist + +gen_examples: gen_go_example \ + gen_nodejs_example \ + gen_python_example \ + gen_dotnet_example + +gen_%_example: + rm -rf ${WORKING_DIR}/examples/$* + pulumi convert \ + --cwd ${WORKING_DIR}/examples/yaml \ + --logtostderr \ + --generate-only \ + --non-interactive \ + --language $* \ + --out ${WORKING_DIR}/examples/$* + +define pulumi_login + export PULUMI_CONFIG_PASSPHRASE=asdfqwerty1234; \ + pulumi login --local; +endef + +up:: + $(call pulumi_login) \ + cd ${EXAMPLES_DIR} && \ + pulumi stack init dev && \ + pulumi stack select dev && \ + pulumi config set name dev && \ + pulumi up -y + +down:: + $(call pulumi_login) \ + cd ${EXAMPLES_DIR} && \ + pulumi stack select dev && \ + pulumi destroy -y && \ + pulumi stack rm dev -y + +devcontainer:: + git submodule update --init --recursive .devcontainer + git submodule update --remote --merge .devcontainer + cp -f .devcontainer/devcontainer.json .devcontainer.json + +.PHONY: build + +build:: provider dotnet_sdk go_sdk nodejs_sdk python_sdk + +# Required for the codegen action that runs in pulumi/pulumi +only_build:: build + +lint:: + for DIR in "provider" "sdk" "tests" ; do \ + pushd $$DIR && golangci-lint run -c ../.golangci.yml --timeout 10m && popd ; \ + done + +install:: install_nodejs_sdk install_dotnet_sdk + cp $(WORKING_DIR)/bin/${PROVIDER} ${GOPATH}/bin + +GO_TEST := go test -v -count=1 -cover -timeout 2h -parallel ${TESTPARALLELISM} + +test_all:: test_provider + cd tests/sdk/nodejs && $(GO_TEST) ./... + cd tests/sdk/python && $(GO_TEST) ./... + cd tests/sdk/dotnet && $(GO_TEST) ./... + cd tests/sdk/go && $(GO_TEST) ./... + +install_dotnet_sdk:: + rm -rf $(WORKING_DIR)/nuget/$(NUGET_PKG_NAME).*.nupkg + mkdir -p $(WORKING_DIR)/nuget + find . -name '*.nupkg' -print -exec cp -p {} ${WORKING_DIR}/nuget \; + +install_python_sdk:: + #target intentionally blank + +install_go_sdk:: + #target intentionally blank + +install_nodejs_sdk:: + -yarn unlink --cwd $(WORKING_DIR)/sdk/nodejs/bin + yarn link --cwd $(WORKING_DIR)/sdk/nodejs/bin diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/README.md b/go/pulumi/plugin/pulumi-component-provider-crane/README.md new file mode 100644 index 0000000000..f876198f0a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/README.md @@ -0,0 +1,117 @@ +# Pulumi Native Provider Boilerplate + +This repository is a boilerplate showing how to create and locally test a native Pulumi provider. + +## Authoring a Pulumi Native Provider + +This boilerplate creates a working Pulumi-owned provider named `xyz`. +It implements a random number generator that you can [build and test out for yourself](#test-against-the-example) and then replace the Random code with code specific to your provider. + + +### Prerequisites + +Prerequisites for this repository are already satisfied by the [Pulumi Devcontainer](https://github.com/pulumi/devcontainer) if you are using Github Codespaces, or VSCode. + +If you are not using VSCode, you will need to ensure the following tools are installed and present in your `$PATH`: + +* [`pulumictl`](https://github.com/pulumi/pulumictl#installation) +* [Go 1.21](https://golang.org/dl/) or 1.latest +* [NodeJS](https://nodejs.org/en/) 14.x. 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) + + +### Build & test the boilerplate XYZ provider + +1. Create a new Github CodeSpaces environment using this repository. +1. Open a terminal in the CodeSpaces environment. +1. Run `make build install` to build and install the provider. +1. Run `make gen_examples` to generate the example programs in `examples/` off of the source `examples/yaml` example program. +1. Run `make up` to run the example program in `examples/yaml`. +1. Run `make down` to tear down the example program. + +### Creating a new provider 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. Set the following options: + * Owner: pulumi + * Repository name: pulumi-xyz-native (replace "xyz" with the name of your provider) + * Description: Pulumi provider for xyz + * Repository type: Public +1. Clone the generated repository. + +From the templated repository: + +1. Run the following command to update files to use the name of your provider (third-party: use your GitHub organization/username): + + ```bash + make prepare NAME=foo REPOSITORY=github.com/pulumi/pulumi-foo ORG=myorg + ``` + + This will do the following: + - rename folders in `provider/cmd` to `pulumi-resource-{NAME}` + - replace dependencies in `provider/go.mod` to reflect your repository name + - find and replace all instances of the boilerplate `xyz` with the `NAME` of your provider. + - find and replace all instances of the boilerplate `abc` with the `ORG` of your provider. + - replace all instances of the `github.com/pulumi/pulumi-xyz` repository with the `REPOSITORY` location + +#### Build the provider and install the plugin + + ```bash + $ make build install + ``` + +This will: + +1. Create the SDK codegen binary and place it in a `./bin` folder (gitignored) +2. Create the provider binary and place it in the `./bin` folder (gitignored) +3. Generate the dotnet, Go, Node, and Python SDKs and place them in the `./sdk` folder +4. Install the provider on your machine. + +#### Test against the example + +```bash +$ cd examples/simple +$ yarn link @pulumi/xyz +$ yarn install +$ pulumi stack init test +$ pulumi up +``` + +Now that you have completed all of the above steps, you have a working provider that generates a random string for you. + +#### A brief repository overview + +You now have: + +1. A `provider/` folder containing the building and implementation logic + 1. `cmd/pulumi-resource-xyz/main.go` - holds the provider's sample implementation logic. +2. `deployment-templates` - a set of files to help you around deployment and publication +3. `sdk` - holds the generated code libraries created by `pulumi-gen-xyz/main.go` +4. `examples` a folder of Pulumi programs to try locally and/or use in CI. +5. A `Makefile` and this `README`. + +#### Additional Details + +This repository depends on the pulumi-go-provider library. For more details on building providers, please check +the [Pulumi Go Provider docs](https://github.com/pulumi/pulumi-go-provider). + +### Build Examples + +Create an example program using the resources defined in your provider, and place it in the `examples/` folder. + +You can now repeat the steps for [build, install, and test](#test-against-the-example). + +## Configuring CI and releases + +1. Follow the instructions laid out in the [deployment templates](./deployment-templates/README-DEPLOYMENT.md). + +## References + +Other resources/examples for implementing providers: +* [Pulumi Command provider](https://github.com/pulumi/pulumi-command/blob/master/provider/pkg/provider/provider.go) +* [Pulumi Go Provider repository](https://github.com/pulumi/pulumi-go-provider) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/.goreleaser.yml b/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/.goreleaser.yml new file mode 100644 index 0000000000..5e320e96bb --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/.goreleaser.yml @@ -0,0 +1,29 @@ +archives: + - id: archive + name_template: '{{ .Binary }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}' +before: + hooks: + - make gen +builds: + - binary: pulumi-resource-xyz + dir: provider + env: + - CGO_ENABLED=0 + goarch: + - amd64 + - arm64 + goos: + - darwin + - windows + - linux + ldflags: + # The line below MUST align with the module in current provider/go.mod + - -X github.com/your-org-name/pulumi-xyz/provider/Version={{.Tag }} + main: ./cmd/pulumi-resource-xyz/ +changelog: + skip: true +release: + disable: false + prerelease: auto +snapshot: + name_template: '{{ .Tag }}-SNAPSHOT' diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/README-DEPLOYMENT.md b/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/README-DEPLOYMENT.md new file mode 100644 index 0000000000..9e5d5d5313 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/README-DEPLOYMENT.md @@ -0,0 +1,28 @@ +# Configure + +1. Create a directory at the root of your repo called .github/workflows + +1. Place the release.yml from this directory there + +1. Place the .goreleaser.yml from this directory at the root of your repo + +1. Obtain needed accounts and tokens from the language specific package managers you will use + +1. Add any needed tokens to the actions secrets for your repository or organization + +1. Customize the release.yml with the correct tokens using the format: + + `${{ secrets.MyTokenName }}` + +1. Customize .goreleaser.yml for your provider, replacing any instances of 'xyz' with your provider's name, and paying special attention that the ldlflags are set to match your provider/go.mod exactly: + + `-X github.com/pulumi/pulumi-aws/provider/v5/pkg/version.Version={{.Tag}}` + +1. Delete this directory if desired + + +# Deploy + +1. Push a tag to your repo in the format "v0.0.0" to initiate a release + +1. IMPORTANT: also add a tag in the format "sdk/v0.0.0" for the Go SDK diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/release.yml b/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/release.yml new file mode 100644 index 0000000000..f7e2a02d3a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/deployment-templates/release.yml @@ -0,0 +1,143 @@ +name: release +on: + push: + tags: + - v*.*.* + - '!v*.*.*-**' +env: + PROVIDER: "YOUR PROVIDER NAME HERE eg: xyz" + # THIS GITHUB_TOKEN IS A REQUIREMENT TO BE ABLE TO WRITE TO GH RELEASES + GITHUB_TOKEN: ${{ YOUR GITHUB TOKEN HERE }} + # IF YOU NEED TO PUBLISH A NPM PACKAGE THEN ENSURE A NPM_TOKEN SECRET IS SET + # AND PUBLISH_NPM: TRUE. IF YOU WANT TO PUBLISH TO A PRIVATE NPM REGISTRY + # THEN ENSURE THE NPM_REGISTRY_URL IS CHANGED + NODE_AUTH_TOKEN: ${{ YOUR NPM TOKEN HERE }} + NPM_TOKEN: ${{ YOUR NPM TOKEN HERE }} + PUBLISH_NPM: true + NPM_REGISTRY_URL: https://registry.npmjs.org + # IF YOU NEED TO PUBLISH A NUGET PACKAGE THEN ENSURE AN NUGET_PUBLISH_KEY + # SECRET IS SET AND PUBLISH_NUGET: TRUE. IF YOU WANT TO PUBLISH TO AN ALTERNATIVE + # NPM REGISTRY THEN ENSURE THE NPM_REGISTRY_URL IS CHANGED + NUGET_PUBLISH_KEY: ${{ YOUR NUGET PUBLISH KEY HERE }} + NUGET_FEED_URL: https://api.nuget.org/v3/index.json + PUBLISH_NUGET: true + # IF YOU NEED TO PUBLISH A PYPI PACKAGE THEN ENSURE AN PYPI_API_TOKEN + # SECRET IS SET AND PUBLISH_PYPI: TRUE. IF YOU WANT TO PUBLISH TO AN ALTERNATIVE + # PYPI REGISTRY THEN ENSURE THE PYPI_REPOSITORY_URL IS SET. IF YOU ARE USING AN API_TOKEN THEN + # YOU DO NOT NEED TO CHANGE THE PYPI_USERNAME (__token__) , IF YOU ARE USING PASSWORD AUTHENTICATION THEN YOU WILL + # NEED TO CHANGE TO USE THE CORRECT PASSWORD + PYPI_PASSWORD: ${{ YOUR PYPI PASSWORD HERE }} + PYPI_USERNAME: "YOUR PYPI USERNAME HERE" + PYPI_REPOSITORY_URL: "" + PUBLISH_PYPI: true +jobs: + publish_binary: + name: publish + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + - name: Unshallow clone for tags + run: git fetch --prune --unshallow --tags + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{matrix.goversion}} + - name: Install pulumictl + uses: jaxxstorm/action-install-gh-release@v1.5.0 + with: + repo: pulumi/pulumictl + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + args: -p 3 release --rm-dist + version: latest + strategy: + fail-fast: true + matrix: + goversion: + - 1.17.x + publish_sdk: + name: Publish SDKs + runs-on: ubuntu-latest + needs: publish_binary + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + - name: Unshallow clone for tags + run: git fetch --prune --unshallow --tags + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.goversion }} + - name: Install pulumictl + uses: jaxxstorm/action-install-gh-release@v1.5.0 + with: + repo: pulumi/pulumictl + - name: Install Pulumi CLI + uses: pulumi/action-install-pulumi-cli@v2.0.0 + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: ${{matrix.nodeversion}} + registry-url: ${{env.NPM_REGISTRY_URL}} + - name: Setup DotNet + uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{matrix.dotnetversion}} + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: ${{matrix.pythonversion}} + - name: Generate SDK + run: make ${{ matrix.language }}_sdk + - name: Check worktree clean + run: | + git update-index -q --refresh + if ! git diff-files --quiet; then + >&2 echo "error: working tree is not clean, aborting!" + git status + git diff + exit 1 + fi + - name: Compress SDK folder + run: tar -zcf sdk/${{ matrix.language }}.tar.gz -C sdk/${{ matrix.language }} . + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.language }}-sdk.tar.gz + path: ${{ github.workspace}}/sdk/${{ matrix.language }}.tar.gz + - if: ${{ matrix.language == 'python' && env.PUBLISH_PYPI == 'true' }} + name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: ${{ env.PYPI_USERNAME }} + password: ${{ env.PYPI_PASSWORD }} + packages-dir: ${{github.workspace}}/sdk/python/bin/dist + - if: ${{ matrix.language == 'nodejs' && env.PUBLISH_NPM == 'true' }} + uses: JS-DevTools/npm-publish@v1 + with: + access: "public" + token: ${{ env.NPM_TOKEN }} + package: ${{github.workspace}}/sdk/nodejs/bin/package.json + - if: ${{ matrix.language == 'dotnet' && env.PUBLISH_NUGET == 'true' }} + name: publish nuget package + run: | + dotnet nuget push ${{github.workspace}}/sdk/dotnet/bin/Debug/*.nupkg -s ${{ env.NUGET_FEED_URL }} -k ${{ env.NUGET_PUBLISH_KEY }} + echo "done publishing packages" + strategy: + fail-fast: true + matrix: + dotnetversion: + - 3.1.301 + goversion: + - 1.18.x + language: + - nodejs + - python + - dotnet + - go + nodeversion: + - 14.x + pythonversion: + - "3.9" diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/.gitignore b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/.gitignore new file mode 100644 index 0000000000..e645270662 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/.gitignore @@ -0,0 +1,353 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Program.cs b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Program.cs new file mode 100644 index 0000000000..3b7565d162 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Program.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using System.Linq; +using Pulumi; +using Xyz = Pulumi.Xyz; + +return await Deployment.RunAsync(() => +{ + var myRandomResource = new Xyz.Random("myRandomResource", new() + { + Length = 24, + }); + + return new Dictionary + { + ["output"] = + { + { "value", myRandomResource.Result }, + }, + }; +}); + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Pulumi.yaml b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Pulumi.yaml new file mode 100644 index 0000000000..8ec18140d3 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/Pulumi.yaml @@ -0,0 +1,6 @@ +name: provider-xyz-native +runtime: dotnet +plugins: + providers: + - name: xyz + path: ../../bin diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/provider-xyz-native.csproj b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/provider-xyz-native.csproj new file mode 100644 index 0000000000..7201ba89c8 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/dotnet/provider-xyz-native.csproj @@ -0,0 +1,14 @@ + + + + Exe + net6.0 + enable + + + + + + + + \ No newline at end of file diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/Pulumi.yaml b/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/Pulumi.yaml new file mode 100644 index 0000000000..66f6183bb9 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/Pulumi.yaml @@ -0,0 +1,6 @@ +name: provider-xyz-native +runtime: go +plugins: + providers: + - name: xyz + path: ../../bin diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/go.mod b/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/go.mod new file mode 100644 index 0000000000..723aae8f29 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/go.mod @@ -0,0 +1,7 @@ +module provider-xyz-native + +go 1.20 + +require ( + github.com/pulumi/pulumi/sdk/v3 v3.30.0 +) \ No newline at end of file diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/main.go b/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/main.go new file mode 100644 index 0000000000..8833de40b9 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/go/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "github.com/pulumi/pulumi-xyz/sdk/go/xyz" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func main() { + pulumi.Run(func(ctx *pulumi.Context) error { + myRandomResource, err := xyz.NewRandom(ctx, "myRandomResource", &xyz.RandomArgs{ + Length: pulumi.Int(24), + }) + if err != nil { + return err + } + ctx.Export("output", map[string]interface{}{ + "value": myRandomResource.Result, + }) + return nil + }) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/.gitignore b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/.gitignore new file mode 100644 index 0000000000..dc902b57ae --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/node_modules/ \ No newline at end of file diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/Pulumi.yaml b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/Pulumi.yaml new file mode 100644 index 0000000000..901c0007ba --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/Pulumi.yaml @@ -0,0 +1,6 @@ +name: provider-xyz-native +runtime: nodejs +plugins: + providers: + - name: xyz + path: ../../bin diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/index.ts b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/index.ts new file mode 100644 index 0000000000..4fc98a874a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/index.ts @@ -0,0 +1,7 @@ +import * as pulumi from "@pulumi/pulumi"; +import * as xyz from "@pulumi/xyz"; + +const myRandomResource = new xyz.Random("myRandomResource", {length: 24}); +export const output = { + value: myRandomResource.result, +}; diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/package.json b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/package.json new file mode 100644 index 0000000000..8c0491dcad --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/nodejs/package.json @@ -0,0 +1,11 @@ +{ + "name": "provider-xyz-native", + "devDependencies": { + "@types/node": "^14" + }, + "dependencies": { + "typescript": "^4.0.0", + "@pulumi/pulumi": "^3.0.0", + "@pulumi/xyz": "0.0.1-alpha.1699945013+97b0e04c" + } +} \ No newline at end of file diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/.gitignore b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/.gitignore new file mode 100644 index 0000000000..b664ab4e4b --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/.gitignore @@ -0,0 +1,2 @@ +*.pyc +venv/ \ No newline at end of file diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/Pulumi.yaml b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/Pulumi.yaml new file mode 100644 index 0000000000..074e6c27af --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/Pulumi.yaml @@ -0,0 +1,6 @@ +name: provider-xyz-native +runtime: python +plugins: + providers: + - name: xyz + path: ../../bin diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/__main__.py b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/__main__.py new file mode 100644 index 0000000000..880fc71e22 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/__main__.py @@ -0,0 +1,7 @@ +import pulumi +import pulumi_xyz as xyz + +my_random_resource = xyz.Random("myRandomResource", length=24) +pulumi.export("output", { + "value": my_random_resource.result, +}) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/requirements.txt b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/requirements.txt new file mode 100644 index 0000000000..32f5fd5cd1 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/python/requirements.txt @@ -0,0 +1,2 @@ +pulumi>=3.0.0,<4.0.0 +pulumi-xyz==0.0.1-alpha.1699945013+97b0e04c diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/Pulumi.yaml b/go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/Pulumi.yaml new file mode 100644 index 0000000000..020a1be7d8 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/Pulumi.yaml @@ -0,0 +1,20 @@ +name: provider-xyz-native +runtime: yaml +plugins: + providers: + - name: xyz + path: ../../bin + +resources: + myRandomResource: + type: xyz:Random + properties: + length: 24 + myRandomComponent: + type: xyz:RandomComponent + properties: + length: 24 + +outputs: + output: + value: ${myRandomResource.result} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/README.md b/go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/README.md new file mode 100644 index 0000000000..99a99c1a97 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/examples/yaml/README.md @@ -0,0 +1,15 @@ +# YAML Example Program + +Test Pulumi program written in YAML for testing this provider locally. + +Edit this yaml program to test features of your provider locally. You can run this program using the following command: + +```bash +pulumi login +pulumi stack init local +pulumi up +``` + +Note that unlike the rest of the auto-generated examples in the ./examples directory, this example is not automatically generated. It is intended to be a place for you to test your provider locally. + +The remaining examples are language specific examples derived from the `make gen_examples` command supported in this provider's Makefile. These examples are automatically generated and should not be edited directly. To regenerate these examples, run `make gen_examples` in the root of this provider's repository. diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/provider/cmd/pulumi-resource-xyz/main.go b/go/pulumi/plugin/pulumi-component-provider-crane/provider/cmd/pulumi-resource-xyz/main.go new file mode 100644 index 0000000000..ae6f13d327 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/provider/cmd/pulumi-resource-xyz/main.go @@ -0,0 +1,24 @@ +// Copyright 2016-2023, 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 ( + p "github.com/pulumi/pulumi-go-provider" + + xyz "github.com/pulumi/pulumi-xyz/provider" +) + +// Serve the provider against Pulumi's Provider protocol. +func main() { p.RunProvider(xyz.Name, xyz.Version, xyz.Provider()) } diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/provider/go.mod b/go/pulumi/plugin/pulumi-component-provider-crane/provider/go.mod new file mode 100644 index 0000000000..7475f6ca2f --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/provider/go.mod @@ -0,0 +1,105 @@ +module github.com/pulumi/pulumi-xyz/provider + +go 1.22 + +toolchain go1.23.2 + +require ( + github.com/blang/semver v3.5.1+incompatible + github.com/pulumi/pulumi-go-provider v0.23.0 + github.com/pulumi/pulumi-random/sdk/v4 v4.16.7 + github.com/pulumi/pulumi/sdk/v3 v3.136.1 + github.com/stretchr/testify v1.9.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.0.0 // indirect + github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v15 v15.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.2.4 // indirect + github.com/davecgh/go-spew v1.1.1 // 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/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect + github.com/go-git/go-git/v5 v5.12.0 // indirect + github.com/gofrs/uuid v4.3.1+incompatible // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.2.0 // 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.18.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/mitchellh/mapstructure v1.5.0 // 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/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/pkg/v3 v3.134.0 // 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.3.1 // indirect + github.com/segmentio/asm v1.2.0 // indirect + github.com/segmentio/encoding v0.3.6 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/skeema/knownhosts v1.2.2 // 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/zclconf/go-cty v1.14.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.22.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect + google.golang.org/grpc v1.63.2 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/frand v1.4.2 // indirect +) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/provider/go.sum b/go/pulumi/plugin/pulumi-component-provider-crane/provider/go.sum new file mode 100644 index 0000000000..3f9b3f9703 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/provider/go.sum @@ -0,0 +1,338 @@ +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.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +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/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/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/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +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.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +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.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +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/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 v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +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.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= +github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +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.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +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.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/gofrs/uuid v4.3.1+incompatible h1:0/KbAdpx3UXAx1kEOWHJeOkpbgRFGHVgv+CFIY7dBJI= +github.com/gofrs/uuid v4.3.1+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/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/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.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= +github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +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.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/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/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.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +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/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.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE= +github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c= +github.com/pulumi/pulumi-go-provider v0.23.0 h1:cJCORjoxnnU4/K2Hnxb8wG540N/DlvxwOkDM1CiyQo4= +github.com/pulumi/pulumi-go-provider v0.23.0/go.mod h1:F8liLNHpntb2FkIl8GeVHuC1OWo4dDxIelz1/D8Obkw= +github.com/pulumi/pulumi-random/sdk/v4 v4.16.5 h1:oLZfC9rSzNPVwnBUk4QYhzrIx1aOP7F1c+8GJxG1Cjc= +github.com/pulumi/pulumi-random/sdk/v4 v4.16.5/go.mod h1:LRqz/w38vCKtWQyRCUtJvqVL7Anpo4xHD5hnQaF8k0Y= +github.com/pulumi/pulumi-random/sdk/v4 v4.16.7 h1:39rhOe/PTUGMYia8pR5T2wbxxMt2pwrlonf0ncYKSzE= +github.com/pulumi/pulumi-random/sdk/v4 v4.16.7/go.mod h1:cxxDhJzUPt/YElfvlWa15Q4NGF6XXS8kUs4OQsCxSBk= +github.com/pulumi/pulumi/pkg/v3 v3.134.0 h1:EaUwz7GMv38SlKqRt+KfzMh9+sYyAZQJvXeBpQfE1ZI= +github.com/pulumi/pulumi/pkg/v3 v3.134.0/go.mod h1:zYNlBVHCvl3r+43iEwQX11BfEC+Dln7UOX8rvwuf1Co= +github.com/pulumi/pulumi/sdk/v3 v3.134.1 h1:v1zd0d+B9gpUhsdJ483YUMHwHXqDvXvZ+mh/A4HhPWg= +github.com/pulumi/pulumi/sdk/v3 v3.134.1/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= +github.com/pulumi/pulumi/sdk/v3 v3.136.1 h1:VJWTgdBrLvvzIkMbGq/epNEfT65P9gTvw14UF/I7hTI= +github.com/pulumi/pulumi/sdk/v3 v3.136.1/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= +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.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= +github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/segmentio/encoding v0.3.6 h1:E6lVLyDPseWEulBmCmAKPanDd3jiyGDo5gMcugCRwZQ= +github.com/segmentio/encoding v0.3.6/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.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= +github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +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.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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= +github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +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.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +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.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.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-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.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +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.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.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-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.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.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.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +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.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +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.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.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +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-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +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.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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 v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/provider/provider.go b/go/pulumi/plugin/pulumi-component-provider-crane/provider/provider.go new file mode 100644 index 0000000000..8e1454986a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/provider/provider.go @@ -0,0 +1,48 @@ +// Copyright 2016-2023, 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 provider + +import ( + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" + "github.com/pulumi/pulumi/sdk/v3/go/common/tokens" +) + +// Version is initialized by the Go linker to contain the semver of this build. +var Version string + +const Name string = "xyz" + +func Provider() p.Provider { + // We tell the provider what resources it needs to support. + // In this case, a single resource and component + return infer.Provider(infer.Options{ + Resources: []infer.InferredResource{ + infer.Resource[Random, RandomArgs, RandomState](), + }, + Components: []infer.InferredComponent{ + infer.Component[*RandomComponent, RandomComponentArgs, *RandomComponentState](), + }, + Config: infer.Config[Config](), + ModuleMap: map[tokens.ModuleName]tokens.ModuleName{ + "provider": "index", + }, + }) +} + +// Define some provider-level configuration +type Config struct { + Scream *bool `pulumi:"itsasecret,optional"` +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomComponent.go b/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomComponent.go new file mode 100644 index 0000000000..d039a6439c --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomComponent.go @@ -0,0 +1,71 @@ +// Copyright 2016-2023, 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 provider + +import ( + "github.com/pulumi/pulumi-go-provider/infer" + "github.com/pulumi/pulumi-random/sdk/v4/go/random" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Similar to resources, components have a controlling struct. +// Components only have a `Construct` method, which is mandatory. +// The Construct method is responsible for creating the component by composing together other resources. +type RandomComponent struct{} + +// Similar to resources, components have an input struct, defining what arguments it accepts. +type RandomComponentArgs struct { + Length pulumi.IntInput `pulumi:"length"` +} + +// Components also have a state, describing the fields that exist on the created component. +type RandomComponentState struct { + pulumi.ResourceState // Component state needs this for tracking nested resource states. + RandomComponentArgs // Include all the input fields in the state. + Password pulumi.StringOutput `pulumi:"password"` +} + +func (r *RandomComponent) Construct(ctx *pulumi.Context, name, typ string, args RandomComponentArgs, opts pulumi.ResourceOption) (*RandomComponentState, error) { + // Initialize the component state. + comp := &RandomComponentState{ + RandomComponentArgs: args, + } + // Register the component resource to which we will attach all other resources. + err := ctx.RegisterComponentResource(typ, name, comp, opts) + if err != nil { + return nil, err + } + + // Construct the arguments for the sub-resource. + pArgs := &random.RandomPasswordArgs{ + Length: args.Length, + } + + // We can access provider configuration too if needed. + config := infer.GetConfig[Config](ctx.Context()) + if config.Scream != nil { + pArgs.Lower = pulumi.BoolPtr(*config.Scream) + } + + // Create the sub-resource. Ensure that the sub-resource is parented to the component resource. + password, err := random.NewRandomPassword(ctx, name+"-password", pArgs, pulumi.Parent(comp)) + if err != nil { + return nil, err + } + + // Update the state of the component with output from the sub-resource. + comp.Password = password.Result + return comp, nil +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource.go b/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource.go new file mode 100644 index 0000000000..8c106c561e --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource.go @@ -0,0 +1,70 @@ +// Copyright 2016-2023, 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 provider + +import ( + "context" + "math/rand" + "time" +) + +// Each resource has a controlling struct. +// Resource behavior is determined by implementing methods on the controlling struct. +// The `Create` method is mandatory, but other methods are optional. +// - Check: Remap inputs before they are typed. +// - Diff: Change how instances of a resource are compared. +// - Update: Mutate a resource in place. +// - Read: Get the state of a resource from the backing provider. +// - Delete: Custom logic when the resource is deleted. +// - Annotate: Describe fields and set defaults for a resource. +// - WireDependencies: Control how outputs and secrets flows through values. +type Random struct{} + +// Each resource has an input struct, defining what arguments it accepts. +type RandomArgs struct { + // Fields projected into Pulumi must be public and hava a `pulumi:"..."` tag. + // The pulumi tag doesn't need to match the field name, but it's generally a + // good idea. + Length int `pulumi:"length"` +} + +// Each resource has a state, describing the fields that exist on the created resource. +type RandomState struct { + // It is generally a good idea to embed args in outputs, but it isn't strictly necessary. + RandomArgs + // Here we define a required output called result. + Result string `pulumi:"result"` +} + +// All resources must implement Create at a minimum. +func (Random) Create(ctx context.Context, name string, input RandomArgs, preview bool) (string, RandomState, error) { + state := RandomState{RandomArgs: input} + if preview { + return name, state, nil + } + state.Result = makeRandom(input.Length) + return name, state, nil +} + +func makeRandom(length int) string { + seededRand := rand.New(rand.NewSource(time.Now().UnixNano())) + charset := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") // SED_SKIP + + result := make([]rune, length) + for i := range result { + result[i] = charset[seededRand.Intn(len(charset))] + } + return string(result) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource_test.go b/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource_test.go new file mode 100644 index 0000000000..fb2ecff43c --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/provider/randomResource_test.go @@ -0,0 +1,38 @@ +package provider + +import ( + "testing" + + "github.com/blang/semver" + integration "github.com/pulumi/pulumi-go-provider/integration" + presource "github.com/pulumi/pulumi/sdk/v3/go/common/resource" + "github.com/stretchr/testify/assert" +) + +func TestRandomResource(t *testing.T) { + server := integration.NewServer("xyz", semver.Version{Minor: 1}, Provider()) + integration.LifeCycleTest{ + Resource: "xyz:index:Random", + Create: integration.Operation{ + Inputs: presource.NewPropertyMapFromMap(map[string]interface{}{ + "length": 24, + }), + Hook: func(inputs, output presource.PropertyMap) { + t.Logf("Outputs: %v", output) + result := output["result"].StringValue() + assert.Len(t, result, 24) + }, + }, + Updates: []integration.Operation{ + { + Inputs: presource.NewPropertyMapFromMap(map[string]interface{}{ + "length": 10, + }), + Hook: func(inputs, output presource.PropertyMap) { + result := output["result"].StringValue() + assert.Len(t, result, 10) + }, + }, + }, + }.Run(t, server) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/.gitignore b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/.gitignore new file mode 100644 index 0000000000..92f6a7ce88 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/.gitignore @@ -0,0 +1 @@ +schema/ diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Config/Config.cs b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Config/Config.cs new file mode 100644 index 0000000000..9eb51a3510 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Config/Config.cs @@ -0,0 +1,43 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** 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 + { + private readonly Func _getter; + private T _value = default!; + private bool _set; + + public __Value(Func 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 _itsasecret = new __Value(() => __config.GetBoolean("itsasecret")); + public static bool? Itsasecret + { + get => _itsasecret.Get(); + set => _itsasecret.Set(value); + } + + } +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Config/README.md b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Config/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Provider.cs b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Provider.cs new file mode 100644 index 0000000000..f359f15cdd --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Provider.cs @@ -0,0 +1,50 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** 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("pulumi:providers:xyz")] + public partial class Provider : global::Pulumi.ProviderResource + { + /// + /// Create a Provider resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + 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? 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 + { + [Input("itsasecret", json: true)] + public Input? Itsasecret { get; set; } + + public ProviderArgs() + { + } + public static new ProviderArgs Empty => new ProviderArgs(); + } +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Pulumi.Xyz.csproj b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Pulumi.Xyz.csproj new file mode 100644 index 0000000000..ee67108465 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Pulumi.Xyz.csproj @@ -0,0 +1,60 @@ + + + + true + Pulumi Corp. + Pulumi Corp. + + + + + logo.png + + net6.0 + enable + + + + true + 1701;1702;1591 + + + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + true + true + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + True + + + + + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/README.md b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Random.cs b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Random.cs new file mode 100644 index 0000000000..f5b09d72af --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Random.cs @@ -0,0 +1,74 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** 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:Random")] + public partial class Random : global::Pulumi.CustomResource + { + [Output("length")] + public Output Length { get; private set; } = null!; + + [Output("result")] + public Output Result { get; private set; } = null!; + + + /// + /// Create a Random resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public Random(string name, RandomArgs args, CustomResourceOptions? options = null) + : base("xyz:index:Random", name, args ?? new RandomArgs(), MakeResourceOptions(options, "")) + { + } + + private Random(string name, Input id, CustomResourceOptions? options = null) + : base("xyz:index:Random", name, null, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? 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; + } + /// + /// Get an existing Random resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// A bag of options that control this resource's behavior + public static Random Get(string name, Input id, CustomResourceOptions? options = null) + { + return new Random(name, id, options); + } + } + + public sealed class RandomArgs : global::Pulumi.ResourceArgs + { + [Input("length", required: true)] + public Input Length { get; set; } = null!; + + public RandomArgs() + { + } + public static new RandomArgs Empty => new RandomArgs(); + } +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/RandomComponent.cs b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/RandomComponent.cs new file mode 100644 index 0000000000..b1a0bddfea --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/RandomComponent.cs @@ -0,0 +1,57 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** 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:RandomComponent")] + public partial class RandomComponent : global::Pulumi.ComponentResource + { + [Output("length")] + public Output Length { get; private set; } = null!; + + [Output("password")] + public Output Password { get; private set; } = null!; + + + /// + /// Create a RandomComponent resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public RandomComponent(string name, RandomComponentArgs args, ComponentResourceOptions? options = null) + : base("xyz:index:RandomComponent", name, args ?? new RandomComponentArgs(), MakeResourceOptions(options, ""), remote: true) + { + } + + private static ComponentResourceOptions MakeResourceOptions(ComponentResourceOptions? options, Input? id) + { + var defaultOptions = new ComponentResourceOptions + { + Version = Utilities.Version, + }; + var merged = ComponentResourceOptions.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 RandomComponentArgs : global::Pulumi.ResourceArgs + { + [Input("length", required: true)] + public Input Length { get; set; } = null!; + + public RandomComponentArgs() + { + } + public static new RandomComponentArgs Empty => new RandomComponentArgs(); + } +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Utilities.cs b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Utilities.cs new file mode 100644 index 0000000000..2eeaa8fcf7 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/Utilities.cs @@ -0,0 +1,83 @@ +// *** WARNING: this file was generated by pulumi. *** +// *** 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; + } + + 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) + { + } + } +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/logo.png b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..181f421e9156e1acb8f0c478a0f184a64b31bc6c GIT binary patch literal 7934 zcmVNNV?z!iDFG5ai9xnY=*#%Wqnkq`+%lx0p1W+WvA_5inJiGyb4gT-zu7M>N8eN1u_D^NM8}?H}fd`G`VY2&@eaUd zw+S~V;JFvC)J>(Q0J;cXW#^?b$i?e{pu4IqQ4`#PoLsy<)J?qu{7i=wfxb#wR3SnGia$0EEB;~&mjT>cCU3q!c>z_@SV09x0x_3E{MCj$N78UtD_r5< zb=lPO+$GeicumM$p62Hnr4h-$r@)mMwX8wk%2Mu~x_C``BFK%`nr?AKo3|B30#OU) zUH`cuf7o~qv{aTa#Z4HT;NO4Lz#wUZujOsf*VAr@Pffhve|~t(QTVn!PXy!}?#}k= z1Of*E`BE(a%~pJy`o=D*3r}@k*ra13j14XgUAFH#o1G>Xl-DkQ$5tI9F3L zM-f&P!PJ41U*80aSQD@Kd_97pnG6_tG^uyHna8FdZ72E7I0qSk*Bx^Q;lTx4)6G`I zn?)lJL89;h*f`y7qvSzeTjIR-5`P_oY+=n`!uSqb(+?qQ!WH;AjXr|GZkZb1VH1Xs zuTLR+!WB4$QD5v@xEjN_cqQUOhG(wiO|`M~S|&br!?3yZ8uBN`r4;kqFpTi){wWy7 zsCXYO9iGWz#N7**=qA7Oyc@F3gQZu&1wERfb;C2^*Zt^&&kxtZAV$Tjv-z>MF9mRB zAmb>RdIuPXF2PYSE(>)qgfa0x__tR_p{qu;scIuni;G_pqjGmld-%u^2M_e%C>X++ zcoDnjCO2`lszOH5F3Oep6l@RtNkK=z5XQty*mXu8QaUR`R*_{IqA?+u0u>H}AqtSQ zgPha@83p~4{5{_+Jx4H?HjwJN&VN@?W}h=ESFWzRr&`1RfFaC@x65v{xX@&|X=hW6 zsbFBG%iMjaPi+~S1TiLFzo|Mab71Y!K$)IgDAiVAKtEnXO_!l-z~%nhe;W&8hIiPy z!3#kkIhk@EGR~&z=d15>_NJTng_CpFsKP> zA8D5d;Nj73HuB*6DPP39tfnaoi%nYMJ-}nOge#;n!D5sO@NH=d2SZ3+3!1Lm@I*+P@0SkCmkJV1BH}52aSf(u=?8*L z_%<{>5D?TU{z$JR5RrFGJO&IKl1R(n0~joWh(?3wiQw$BpYLkA=Pj^!7mpWP>!yuT zr1uvjC=iS$VUi+2z>(oqe*Opa!|PcXoyw$Rj+l>#Lk?)H6coIyy;eYPz_0jpG?Dr& zu4_$yQ3Y6aHT-1|9xj^}>joUGvQVqRky2%diTFy8cuN4?H2J)rcsUGI_&FcZ+c2UO zzRZE5_^f*>JB}h$xu*(fC5xrR+^Z}kGO{n82r?OBuwt^91v8IsAs25Od~+0#DT^}L zBULkxZXp-%GiXNIlm{KHjgfaFk;S_@KtkGpM5Ey<^#(`cuGq=iTzYLT%VXu;BH(7E z1yVC1M7taQK-XuKg883+*`?Bg=p~JiV_Q}YN!W?dC>jwX*l3H-vAHuPYoqVJAy9rZ=0!WCF6yd&5?`i4mxPC;^%vnXKfvXOFB@Ds=g zPYE}^T^8cH6+{sJQaNZXVOxYO){|+ z>I-;sGWEvv0od$1bCfJ#R=6I;cHg&k)s-F>k6qz{Y~&hlWJq@sc`YFIt1EB#_>wM$7I5Zv$`A?d+Umr`rck#s?}e8F0KsJ_?g|F#sb zs|yXV1OiT^Sw55LX2__&L=*8tNGs|}b-~r!BR10o+J=_FvrV2nOX2|NwU4Hv^aFqC*Db#Sy--?NsBsy=rV z{9(_`69{n`dW?QQsjS*Qe<)1KAcWc;mefI_FIWVVZGz8VwjXc2z?Hl z*6yOC9D6HHOzyPDwMnmbTn_$qy<4W4!}8JJdcC#f!nXfA62kiX|1s6^?-)efD%gWu zmo9{Ta3tRbUbrpUT)4T9)kxgDH!w$;ki)z8IoWcZi!sXz@kTd#OVs^F@Zt-OYTCnA z=!Yp?gFjg3H{9*(^_8i}`SpkX&p68Y?j5iOU3>rbWavX!B6XFyu4A=%g*Pm!5CfS2 zk&%08x5WLMNQzQVW??VNWVD#6Ko=mQ<*PWT3Nu5FS``Br@^jMt)*@y8yqq6o@o}xT z3=t_f-c<&BM2fmXB=MGhTNg`CYv+Jbj0K{k2u?vSLHN$6a#O@<_Z7E7j68-4P-8KE z1*q#0?v0GDl5m#x86ijwO#iQLbtm8t`PoiYzb7cWO#5pJBSNZC<(DT@XvyNo>I z&Wn|TS+mffe^j@X>Jo3KHKImcA+mU-^5ANH8Z3aMUXJqkBs?Z0)sWmi3)9WAHOtos zDY`@0v767xuaC{u!#iFHR=knCMimv{OSgQ&fY=?F`1~zi_)~m^OH96 z5KyVi_&o%8>B8CD6TgQT#2y3EsxV20+a(G0U&1~%7}GC9a-`-jVQj3N-vk#cbD`b{ z=;sYa(?gEzs~axGHV%v}UP&J~|E+<^{FlOiZ{@_ROtitezl3Q&1Pa+?gI>AVU~nQ> z(^|hCr;OL6qXA47aKqK^8(;`cPWVE5f}0w9u<9@26cl=9b!O(okoi%V2Ws@L2AF~P zQ}uM5Ja;!8PY;(q`Ec1KGP8gytcMma5=C0vMS^qS`xEEqz%Wu(K#iA@%5nEY1C_!& zuHW@86N3l@N}oP^d#dAhgG5H(OIJQvOkBXc16G=!&ratR;pE!8zZ?Zah>JLZJC;CI zp(O}EJR@#DrdFn4+fj0))iNZ9CtTjTPGqs4m~Vq8V67#ENJelNt}V_cj#5VaCH%=; z7~yh&)xOzwXinVtN@i1vb6l=ay^)k~g+xt9q=e=wb+pqegxD_~%4W|&k@MeckTAPu z#LAE%Sl-0m$<6%EeEz^Nu&z9N!&3<7IE4aaIAN%2wxo3Av%_J{ctqNZDdIo zko1_X88HI77v=HWt|q?TL4S%l@{g0q{ZQ-Uoi5Jy!-(CJl+lJ4E=+P19+BKN?BDZ* zyB*K^pAbXWggZqkoyg*C=J3BXduHvW3l!~BkwphiAFPtnC#5bM@~`njX~{)>@)x(K zraCEywZf=ZnMC13S3aomM@Ef>xfpm5(B4b_J72RBv8DM3;y}g*BY%LHJ15bJHZ<^9 zV$&GdOBZ6*ZaGf{cMDdyE_*WAS>65m!OlOEyuNfzM0@u3JA;;mizxLSQIa>43D*Q zqG`npFD|8F=Rg4}4yhwVy6C+j9JrfA1AG*$i`Nv=eC}v1A8Xcj!&tmE7Vk2|AUI&} zG^Y$#!5(Yx-=260dW1|^oF;)6xh)%{IH+g%O#@M>SL^(zjFhW!un2#y_tf}P&xlvB zJtXRnL{a43uz~eqj@p`2C#wgegdQpH7J5p&DY*Oah7m>HbyEt^QDAf@Z9l?}ly?g~ zCEg%)SO$woeRl1q_0W&6AFlI~UxDqB@~|#6-9%4`S8$1}&DaH$SsLZA5AN$9mcoD1 zy~pk7xs*W&?c1;$Z;|4<-jV}JAtCR9EAqY_M?Xjt*`mHbJ}qT8i|#%;w7XBAA1-X> zy55Y~**o#36_P?0sRuTP!Fl|oIP4*C!mkf)JyyUwWsnB4HO=?L+8`x@3O!{@=tz0;C;0SBXcBKm3{s#jKejRqgUSK; zj&;+=i&WplWOw_jR6y=tJigFyU6-PWIJ9`ZXiHu%=rjv>Y-f`J$txB+T0)BVf;7Oh z#;04~jZd$>xDa_Lv}1UuZk}ttQiclEyV@zFD71Kyyn9r(Rbfvn>Ms1v0&H#}Y-pEX z1DxPD>j`H|RlTv~J&$!9@5>@z7e1=Yt%enFs9WgQGHJxo6lF9;EIhBvwy*nGk?knF z_TKqP2hn%~dGp7)c<-gs<<{x8M54jtCAsGs>>zKIvA6?{agYV+Am{by@ZD$8@^!9~pF$dADST| zFO_*g(s2h>5QQ(@f6tzPx$>|~UE=YZFf!mcYpbsNo8!NM?MDR}IG&3UZTEphZ*9fj zR=m7}l-y1bp?t5aHU-R!w^_cKVf#=!z*_a7End3tyMR_m|M(`)VpYu7{a)mJ(3GQBs95C3LP^>M0xP zf(Um@NveP|Neefi+-~94M!c@MoghDjm|A<+&R&8y97<$n0T-baGcd4gK=MeQJC*d1 z<9yT~UgIveuJ>81&L$p=vPyN=B7tyGA1xL|U{;;#M6DABVT&M>EPAY{U z{kRZXG_C^T>jor8Q@Bw?XA9ynQHKn8Otcm+ku@&_u$Vpwl0vvj9qX`+ zM(&pLPQk?Q)w=_s;9eMlB znn&-Utn{Hto6)z4mqsWhB3^{2{RsBM^O@j3PY+-DAoc?37k8%Qhs=wBLzsC4&xx+N zu6{+*1XD&H&mskn33#v#Evq)mpk>DXcCx7mz4uENOo22A1(RNI~eLt_vg!wtC z4T=(d0n%xn79^Db-)GH>synv+1K!D*iHj%bU2X7n+Bfu|;(-A_Se*MqHfGNJs0(A9 zgqFb)VaD{^Mqb_pn?!qkvBJ8mu@u*dCMQ{>!Y~Azwxce`OkF>Fr*##jZK+I?b)yQ2 zI#tNY1X5uj@MiSNU=LENy(@cL@k(1E*s>1|@SSMvFWhpT#+yO&#%wJfm=6B-`Oia` z^o81_;Dw5{TB3))P_kM!%lRS0l_K=JVx-55SBoHq^WF$0UafVK+nJ$o+!t*v5_6ux zmLk5u_Ul04(n6RAh7zxrI#_n1;ir~tA8}4(2*s1b^6Nmb64rt>^ys@wH0$iCdm064 zl*?47JDEC`X8MBGvK7WJ0tVlfqzeqR0xHe_3c3~F6QKx$V)i0l5cFhUMI5BPT@6=L z95avR_YcerY>Jm(sqkZ4k)|2$jZd$l#Z{;K7)MIKn{7Z0?oZ61%XxEwXoAIigo5Hf zi?<;yj4a+;j#fA1MR&IxO3NT6D$+f5QR5=WmFt{qj`~?eIm6)%2{hRb6?t~5r~LHT>kO}KhH3= zwxWzA?TqG+PvhD@+H1`Wi%c#YsL0uWDDE>e1xMZC7j8VvlrH)A;WkFB-W0TVnVY29 zLmZEZ$o;&M`+_YZHp2%l<(D8vZXS&0|C!(YBerJi!q7DGZ~%@DI(SE>7bt2O5#i`i z!I}B^$Kf|hwSR>=Ei(ZK9sLgwk;vk;>4m_ntd}GG1+f~Xjz;xII12xnzfRhA_}LH1 zJDWxxoC4f|4%QnSfhC2ghJ8GG$(EH`yL8Jf#yN~7)+B{JFNE;ya`x#I40<_c(iCuW zI#)gs#K;3W2Q{ggnM$~C6%2|R7q9H5ZMg9UV`GWe^Fr9hH^H#e2B90_w8mtdeRjT^ z-`SRmfS-(&Cp(?X-|$4(Xo`O5HQg3KsP&t1TRmgXu$6v0yJBpVdEukfjs`G;QF3GXFRxNUyF8LoRWLwPz-#Z;!8Fo-xTTaa z;ewldHX}ZChdtNREJ&Gl`)?5*d9TUij7Nqy;P^H>LU6C?6>%7Z>O# z`jlVzG8jVq5I7u-m>zKC4VqBpFYmx?M>QbX=qsD^%V%#-orVNR%(uZ8aB?YxwtuQm zJ4#NUzGk8ZEVbN%;~9`9kF-KW-QJ*y7>SM(2Np|7H6E{dB zqC{aS&&(cLxDffHiV!2zggZjgheWCm5_J_<7sNh^?CfSmt{{lN1gm6TA}2(AEv2IH zQ0rsoLX7mp!I)QB;6^jmH1izFA^p+uK!+G$+vS zuPvhIg{Ff3T6Mh>UxfSb{&JMV*k@o1qGgwyTIrKI#KE%)y6ijq1=%Ha9jqOuxw!@AIP6FntffdY3&Ysju!gw#RKA1-KJw7;8{ z*fwuw=sEFn$xSv!EPJaR3hiz1*zv9^*oCx)T)bIFstyETGxtTVnbpESSgg2giYk6$D)!e^y3qNT$i$INYMd3DPGx{wwn7QRwCAWt@$DJYSa~a zQoMpjl;~?K_vHm!`$d~<2?r;mSZTtMK7(G3xKNQlIsP*g6 zkn{Fg9tD`o=>AYo6U)Inb%=;K(eRfufa)5=$2aom@mg*xp1a7q zo3(fUng2wYXuirfVg#Zg{b4r_U7n4VXa3rczSsDVsGh=-CN#9t@0{zg=JKdKH#zTq zls@?oz;Twf!ehH^s=^p+czLdi_zuLR-_^tyR|fC~g#MYZCehZUkw-W2Tu0vBc)76H zIJvs25T|#YH`lyJ6#TKy!krzy@f*e(T{jTz(#N z+h>uBcOQ0yyzN#vrI7YT5t3}V{%0^JmpC8!C-qbvQb#x^E+Q&^ljwD~A8wudL+|gF o<>ch#d-e*gdg07*qoM6N<$f=pRTKL7v# literal 0 HcmV?d00001 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/pulumi-plugin.json b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/pulumi-plugin.json new file mode 100644 index 0000000000..3baacc8f30 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/pulumi-plugin.json @@ -0,0 +1,4 @@ +{ + "resource": true, + "name": "xyz" +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/version.txt b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/version.txt new file mode 100644 index 0000000000..a23b086271 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/dotnet/version.txt @@ -0,0 +1 @@ +0.0.1-alpha.1727358454+37f940f4 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.mod b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.mod new file mode 100644 index 0000000000..9c844fcfc1 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.mod @@ -0,0 +1,57 @@ +module github.com/pulumi/pulumi-xyz/sdk + +go 1.21 + +require ( + github.com/blang/semver v3.5.1+incompatible + github.com/pulumi/pulumi/sdk/v3 v3.24.1 +) + +require ( + github.com/cheggaaa/pb v1.0.18 // indirect + github.com/djherbis/times v1.2.0 // indirect + github.com/emirpasic/gods v1.12.0 // indirect + github.com/gofrs/uuid v3.3.0+incompatible // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.1.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-multierror v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.8 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-ps v1.0.0 // indirect + github.com/opentracing/basictracer-go v1.0.0 // indirect + github.com/opentracing/opentracing-go v1.1.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.8.1 // indirect + github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94 // indirect + github.com/sergi/go-diff v1.1.0 // indirect + github.com/spf13/cobra v1.0.0 // indirect + github.com/spf13/pflag v1.0.3 // indirect + github.com/src-d/gcfg v1.4.0 // indirect + github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6 // indirect + github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 // indirect + github.com/uber/jaeger-client-go v2.22.1+incompatible // indirect + github.com/uber/jaeger-lib v2.2.0+incompatible // indirect + github.com/xanzy/ssh-agent v0.2.1 // indirect + go.uber.org/atomic v1.6.0 // indirect + golang.org/x/crypto v0.17.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.56.3 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect + gopkg.in/src-d/go-git.v4 v4.13.1 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v2 v2.2.8 // indirect + sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 // indirect +) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.sum b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.sum new file mode 100644 index 0000000000..24b7a0e489 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go.sum @@ -0,0 +1,309 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= +github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +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/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cheggaaa/pb v1.0.18 h1:G/DgkKaBP0V5lnBg/vx61nVxxAU+VqU5yMzSc0f2PPE= +github.com/cheggaaa/pb v1.0.18/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/djherbis/times v1.2.0 h1:xANXjsC/iBqbO00vkWlYwPWgBgEVU6m6AFYg0Pic+Mc= +github.com/djherbis/times v1.2.0/go.mod h1:CGMZlo255K5r4Yw0b9RRfFQpM2y7uOmxg4jm9HsaVf8= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +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 v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/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.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +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.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +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 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +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/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= +github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +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/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-runewidth v0.0.8 h1:3tS41NlGYSmhhe/8fhGRzc+z3AYCw1Fe1WAyLuujKs0= +github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +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/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +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_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/pulumi/pulumi/sdk/v3 v3.24.1 h1:Ywaih9y/zBfS8s4w6BtcsBF/rHQpGbbZ82oXwEVUfVI= +github.com/pulumi/pulumi/sdk/v3 v3.24.1/go.mod h1:WHOQB00iuHZyXhwrymxpKXhpOahSguJIpRjVokmM11w= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94 h1:G04eS0JkAIVZfaJLjla9dNxkJCPiKIGZlw9AfOhzOD0= +github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94/go.mod h1:b18R55ulyQ/h3RaWyloPyER7fWQVZvimKKhnI5OfrJQ= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= +github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +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.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6 h1:9VTskZOIRf2vKF3UL8TuWElry5pgUpV1tFSe/e/0m/E= +github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= +github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= +github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= +github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= +github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70= +github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +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.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +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/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +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-20181221193216-37e7f081c4d4/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/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190221075227-b4e8571b14e0/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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +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.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +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/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= +gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg= +gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg= +gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= +gopkg.in/src-d/go-git.v4 v4.13.1 h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE= +gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= +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.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +pgregory.net/rapid v0.4.7 h1:MTNRktPuv5FNqOO151TM9mDTa+XHcX6ypYeISDVD14g= +pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/config/config.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/config/config.go new file mode 100644 index 0000000000..9c74c7863a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/config/config.go @@ -0,0 +1,16 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package config + +import ( + "example.com/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 + +func GetItsasecret(ctx *pulumi.Context) bool { + return config.GetBool(ctx, "xyz:itsasecret") +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/doc.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/doc.go new file mode 100644 index 0000000000..5e0ed7148c --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/doc.go @@ -0,0 +1,2 @@ +// Package xyz exports types, functions, subpackages for provisioning xyz resources. +package xyz diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/init.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/init.go new file mode 100644 index 0000000000..a2c890761b --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/init.go @@ -0,0 +1,68 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package xyz + +import ( + "fmt" + + "example.com/pulumi-xyz/sdk/go/xyz/internal" + "github.com/blang/semver" + "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:Random": + r = &Random{} + case "xyz:index:RandomComponent": + r = &RandomComponent{} + 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", + &module{version}, + ) + pulumi.RegisterResourcePackage( + "xyz", + &pkg{version}, + ) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiUtilities.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiUtilities.go new file mode 100644 index 0000000000..2cc1c31ac3 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiUtilities.go @@ -0,0 +1,184 @@ +// Code generated by pulumi-language-go 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 := SdkVersion + 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 := SdkVersion + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiVersion.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiVersion.go new file mode 100644 index 0000000000..4ad7cb873e --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/internal/pulumiVersion.go @@ -0,0 +1,11 @@ +// Code generated by pulumi-language-go 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 = "" diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/provider.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/provider.go new file mode 100644 index 0000000000..47be72fd9a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/provider.go @@ -0,0 +1,83 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package xyz + +import ( + "context" + "reflect" + + "example.com/pulumi-xyz/sdk/go/xyz/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +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 { + Itsasecret *bool `pulumi:"itsasecret"` +} + +// The set of arguments for constructing a Provider resource. +type ProviderArgs struct { + Itsasecret pulumi.BoolPtrInput +} + +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{}) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/pulumi-plugin.json b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/pulumi-plugin.json new file mode 100644 index 0000000000..3baacc8f30 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/pulumi-plugin.json @@ -0,0 +1,4 @@ +{ + "resource": true, + "name": "xyz" +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/random.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/random.go new file mode 100644 index 0000000000..883d9ebf0c --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/random.go @@ -0,0 +1,121 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package xyz + +import ( + "context" + "reflect" + + "errors" + "example.com/pulumi-xyz/sdk/go/xyz/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type Random struct { + pulumi.CustomResourceState + + Length pulumi.IntOutput `pulumi:"length"` + Result pulumi.StringOutput `pulumi:"result"` +} + +// NewRandom registers a new resource with the given unique name, arguments, and options. +func NewRandom(ctx *pulumi.Context, + name string, args *RandomArgs, opts ...pulumi.ResourceOption) (*Random, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Length == nil { + return nil, errors.New("invalid value for required argument 'Length'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Random + err := ctx.RegisterResource("xyz:index:Random", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRandom gets an existing Random 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 GetRandom(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RandomState, opts ...pulumi.ResourceOption) (*Random, error) { + var resource Random + err := ctx.ReadResource("xyz:index:Random", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Random resources. +type randomState struct { +} + +type RandomState struct { +} + +func (RandomState) ElementType() reflect.Type { + return reflect.TypeOf((*randomState)(nil)).Elem() +} + +type randomArgs struct { + Length int `pulumi:"length"` +} + +// The set of arguments for constructing a Random resource. +type RandomArgs struct { + Length pulumi.IntInput +} + +func (RandomArgs) ElementType() reflect.Type { + return reflect.TypeOf((*randomArgs)(nil)).Elem() +} + +type RandomInput interface { + pulumi.Input + + ToRandomOutput() RandomOutput + ToRandomOutputWithContext(ctx context.Context) RandomOutput +} + +func (*Random) ElementType() reflect.Type { + return reflect.TypeOf((**Random)(nil)).Elem() +} + +func (i *Random) ToRandomOutput() RandomOutput { + return i.ToRandomOutputWithContext(context.Background()) +} + +func (i *Random) ToRandomOutputWithContext(ctx context.Context) RandomOutput { + return pulumi.ToOutputWithContext(ctx, i).(RandomOutput) +} + +type RandomOutput struct{ *pulumi.OutputState } + +func (RandomOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Random)(nil)).Elem() +} + +func (o RandomOutput) ToRandomOutput() RandomOutput { + return o +} + +func (o RandomOutput) ToRandomOutputWithContext(ctx context.Context) RandomOutput { + return o +} + +func (o RandomOutput) Length() pulumi.IntOutput { + return o.ApplyT(func(v *Random) pulumi.IntOutput { return v.Length }).(pulumi.IntOutput) +} + +func (o RandomOutput) Result() pulumi.StringOutput { + return o.ApplyT(func(v *Random) pulumi.StringOutput { return v.Result }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RandomInput)(nil)).Elem(), &Random{}) + pulumi.RegisterOutputType(RandomOutput{}) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/randomComponent.go b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/randomComponent.go new file mode 100644 index 0000000000..337ca26ce7 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/go/xyz/randomComponent.go @@ -0,0 +1,98 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package xyz + +import ( + "context" + "reflect" + + "errors" + "example.com/pulumi-xyz/sdk/go/xyz/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type RandomComponent struct { + pulumi.ResourceState + + Length pulumi.IntOutput `pulumi:"length"` + Password pulumi.StringOutput `pulumi:"password"` +} + +// NewRandomComponent registers a new resource with the given unique name, arguments, and options. +func NewRandomComponent(ctx *pulumi.Context, + name string, args *RandomComponentArgs, opts ...pulumi.ResourceOption) (*RandomComponent, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Length == nil { + return nil, errors.New("invalid value for required argument 'Length'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RandomComponent + err := ctx.RegisterRemoteComponentResource("xyz:index:RandomComponent", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type randomComponentArgs struct { + Length int `pulumi:"length"` +} + +// The set of arguments for constructing a RandomComponent resource. +type RandomComponentArgs struct { + Length pulumi.IntInput +} + +func (RandomComponentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*randomComponentArgs)(nil)).Elem() +} + +type RandomComponentInput interface { + pulumi.Input + + ToRandomComponentOutput() RandomComponentOutput + ToRandomComponentOutputWithContext(ctx context.Context) RandomComponentOutput +} + +func (*RandomComponent) ElementType() reflect.Type { + return reflect.TypeOf((**RandomComponent)(nil)).Elem() +} + +func (i *RandomComponent) ToRandomComponentOutput() RandomComponentOutput { + return i.ToRandomComponentOutputWithContext(context.Background()) +} + +func (i *RandomComponent) ToRandomComponentOutputWithContext(ctx context.Context) RandomComponentOutput { + return pulumi.ToOutputWithContext(ctx, i).(RandomComponentOutput) +} + +type RandomComponentOutput struct{ *pulumi.OutputState } + +func (RandomComponentOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RandomComponent)(nil)).Elem() +} + +func (o RandomComponentOutput) ToRandomComponentOutput() RandomComponentOutput { + return o +} + +func (o RandomComponentOutput) ToRandomComponentOutputWithContext(ctx context.Context) RandomComponentOutput { + return o +} + +func (o RandomComponentOutput) Length() pulumi.IntOutput { + return o.ApplyT(func(v *RandomComponent) pulumi.IntOutput { return v.Length }).(pulumi.IntOutput) +} + +func (o RandomComponentOutput) Password() pulumi.StringOutput { + return o.ApplyT(func(v *RandomComponent) pulumi.StringOutput { return v.Password }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RandomComponentInput)(nil)).Elem(), &RandomComponent{}) + pulumi.RegisterOutputType(RandomComponentOutput{}) +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/README.md b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/index.ts b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/index.ts new file mode 100644 index 0000000000..3fbadc8265 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/index.ts @@ -0,0 +1,5 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +// Export members: +export * from "./vars"; diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/vars.ts b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/vars.ts new file mode 100644 index 0000000000..96f6113ffc --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/config/vars.ts @@ -0,0 +1,17 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "../utilities"; + +declare var exports: any; +const __config = new pulumi.Config("xyz"); + +export declare const itsasecret: boolean | undefined; +Object.defineProperty(exports, "itsasecret", { + get() { + return __config.getObject("itsasecret"); + }, + enumerable: true, +}); + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/index.ts b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/index.ts new file mode 100644 index 0000000000..60f79c3a5b --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/index.ts @@ -0,0 +1,53 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +// Export members: +export { ProviderArgs } from "./provider"; +export type Provider = import("./provider").Provider; +export const Provider: typeof import("./provider").Provider = null as any; +utilities.lazyLoad(exports, ["Provider"], () => require("./provider")); + +export { RandomArgs } from "./random"; +export type Random = import("./random").Random; +export const Random: typeof import("./random").Random = null as any; +utilities.lazyLoad(exports, ["Random"], () => require("./random")); + +export { RandomComponentArgs } from "./randomComponent"; +export type RandomComponent = import("./randomComponent").RandomComponent; +export const RandomComponent: typeof import("./randomComponent").RandomComponent = null as any; +utilities.lazyLoad(exports, ["RandomComponent"], () => require("./randomComponent")); + + +// Export sub-modules: +import * as config from "./config"; + +export { + config, +}; + +const _module = { + version: utilities.getVersion(), + construct: (name: string, type: string, urn: string): pulumi.Resource => { + switch (type) { + case "xyz:index:Random": + return new Random(name, undefined, { urn }) + case "xyz:index:RandomComponent": + return new RandomComponent(name, undefined, { urn }) + default: + throw new Error(`unknown resource type ${type}`); + } + }, +}; +pulumi.runtime.registerResourceModule("xyz", "index", _module) +pulumi.runtime.registerResourcePackage("xyz", { + version: utilities.getVersion(), + constructProvider: (name: string, type: string, urn: string): pulumi.ProviderResource => { + if (type !== "pulumi:providers:xyz") { + throw new Error(`unknown provider type ${type}`); + } + return new Provider(name, undefined, { urn }); + }, +}); diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/package.json b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/package.json new file mode 100644 index 0000000000..ab20a8c4a7 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/package.json @@ -0,0 +1,18 @@ +{ + "name": "@pulumi/xyz", + "version": "${VERSION}", + "scripts": { + "build": "tsc" + }, + "dependencies": { + "@pulumi/pulumi": "^3.42.0" + }, + "devDependencies": { + "@types/node": "^14", + "typescript": "^4.3.5" + }, + "pulumi": { + "resource": true, + "name": "xyz" + } +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/provider.ts b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/provider.ts new file mode 100644 index 0000000000..96a2ee006a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/provider.ts @@ -0,0 +1,46 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class Provider extends pulumi.ProviderResource { + /** @internal */ + public static readonly __pulumiType = 'xyz'; + + /** + * Returns true if the given object is an instance of Provider. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Provider { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === "pulumi:providers:" + Provider.__pulumiType; + } + + + /** + * Create a Provider resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args?: ProviderArgs, opts?: pulumi.ResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + { + resourceInputs["itsasecret"] = pulumi.output(args ? args.itsasecret : undefined).apply(JSON.stringify); + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Provider.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * The set of arguments for constructing a Provider resource. + */ +export interface ProviderArgs { + itsasecret?: pulumi.Input; +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/random.ts b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/random.ts new file mode 100644 index 0000000000..e2bc01745b --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/random.ts @@ -0,0 +1,67 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class Random extends pulumi.CustomResource { + /** + * Get an existing Random resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, opts?: pulumi.CustomResourceOptions): Random { + return new Random(name, undefined as any, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'xyz:index:Random'; + + /** + * Returns true if the given object is an instance of Random. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is Random { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === Random.__pulumiType; + } + + public readonly length!: pulumi.Output; + public /*out*/ readonly result!: pulumi.Output; + + /** + * Create a Random resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: RandomArgs, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (!opts.id) { + if ((!args || args.length === undefined) && !opts.urn) { + throw new Error("Missing required property 'length'"); + } + resourceInputs["length"] = args ? args.length : undefined; + resourceInputs["result"] = undefined /*out*/; + } else { + resourceInputs["length"] = undefined /*out*/; + resourceInputs["result"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(Random.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * The set of arguments for constructing a Random resource. + */ +export interface RandomArgs { + length: pulumi.Input; +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/randomComponent.ts b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/randomComponent.ts new file mode 100644 index 0000000000..f7298bc79b --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/randomComponent.ts @@ -0,0 +1,55 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +export class RandomComponent extends pulumi.ComponentResource { + /** @internal */ + public static readonly __pulumiType = 'xyz:index:RandomComponent'; + + /** + * Returns true if the given object is an instance of RandomComponent. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is RandomComponent { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === RandomComponent.__pulumiType; + } + + public readonly length!: pulumi.Output; + public /*out*/ readonly password!: pulumi.Output; + + /** + * Create a RandomComponent resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: RandomComponentArgs, opts?: pulumi.ComponentResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (!opts.id) { + if ((!args || args.length === undefined) && !opts.urn) { + throw new Error("Missing required property 'length'"); + } + resourceInputs["length"] = args ? args.length : undefined; + resourceInputs["password"] = undefined /*out*/; + } else { + resourceInputs["length"] = undefined /*out*/; + resourceInputs["password"] = undefined /*out*/; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(RandomComponent.__pulumiType, name, resourceInputs, opts, true /*remote*/); + } +} + +/** + * The set of arguments for constructing a RandomComponent resource. + */ +export interface RandomComponentArgs { + length: pulumi.Input; +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/tsconfig.json b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/tsconfig.json new file mode 100644 index 0000000000..b147c6a164 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "outDir": "bin", + "target": "es2016", + "module": "commonjs", + "moduleResolution": "node", + "declaration": true, + "sourceMap": true, + "stripInternal": true, + "experimentalDecorators": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "strict": true + }, + "files": [ + "config/index.ts", + "config/vars.ts", + "index.ts", + "provider.ts", + "random.ts", + "randomComponent.ts", + "utilities.ts" + ] +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/utilities.ts b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/utilities.ts new file mode 100644 index 0000000000..fb0d823c3d --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/nodejs/utilities.ts @@ -0,0 +1,95 @@ +// *** WARNING: this file was generated by pulumi-language-nodejs. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + + +import * as runtime from "@pulumi/pulumi/runtime"; +import * as pulumi from "@pulumi/pulumi"; + +export function getEnv(...vars: string[]): string | undefined { + for (const v of vars) { + const value = process.env[v]; + if (value) { + return value; + } + } + return undefined; +} + +export function getEnvBoolean(...vars: string[]): boolean | undefined { + const s = getEnv(...vars); + if (s !== undefined) { + // NOTE: these values are taken from https://golang.org/src/strconv/atob.go?s=351:391#L1, which is what + // Terraform uses internally when parsing boolean values. + if (["1", "t", "T", "true", "TRUE", "True"].find(v => v === s) !== undefined) { + return true; + } + if (["0", "f", "F", "false", "FALSE", "False"].find(v => v === s) !== undefined) { + return false; + } + } + return undefined; +} + +export function getEnvNumber(...vars: string[]): number | undefined { + const s = getEnv(...vars); + if (s !== undefined) { + const f = parseFloat(s); + if (!isNaN(f)) { + return f; + } + } + return undefined; +} + +export function getVersion(): string { + let version = require('./package.json').version; + // Node allows for the version to be prefixed by a "v", while semver doesn't. + // If there is a v, strip it off. + if (version.indexOf('v') === 0) { + version = version.slice(1); + } + return version; +} + +/** @internal */ +export function resourceOptsDefaults(): any { + return { version: getVersion() }; +} + +/** @internal */ +export function lazyLoad(exports: any, props: string[], loadModule: any) { + for (let property of props) { + Object.defineProperty(exports, property, { + enumerable: true, + get: function() { + return loadModule()[property]; + }, + }); + } +} + +export async function callAsync( + tok: string, + props: pulumi.Inputs, + res?: pulumi.Resource, + opts?: {property?: string}, +): Promise { + const o: any = runtime.call(tok, props, res); + const value = await o.promise(true /*withUnknowns*/); + const isKnown = await o.isKnown; + const isSecret = await o.isSecret; + const problem: string|undefined = + !isKnown ? "an unknown value" + : isSecret ? "a secret value" + : undefined; + // Ingoring o.resources silently. They are typically non-empty, r.f() calls include r as a dependency. + if (problem) { + throw new Error(`Plain resource method "${tok}" incorrectly returned ${problem}. ` + + "This is an error in the provider, please report this to the provider developer."); + } + // Extract a single property if requested. + if (opts && opts.property) { + return value[opts.property]; + } + return value; +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/README.md b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/README.md new file mode 100644 index 0000000000..f876198f0a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/README.md @@ -0,0 +1,117 @@ +# Pulumi Native Provider Boilerplate + +This repository is a boilerplate showing how to create and locally test a native Pulumi provider. + +## Authoring a Pulumi Native Provider + +This boilerplate creates a working Pulumi-owned provider named `xyz`. +It implements a random number generator that you can [build and test out for yourself](#test-against-the-example) and then replace the Random code with code specific to your provider. + + +### Prerequisites + +Prerequisites for this repository are already satisfied by the [Pulumi Devcontainer](https://github.com/pulumi/devcontainer) if you are using Github Codespaces, or VSCode. + +If you are not using VSCode, you will need to ensure the following tools are installed and present in your `$PATH`: + +* [`pulumictl`](https://github.com/pulumi/pulumictl#installation) +* [Go 1.21](https://golang.org/dl/) or 1.latest +* [NodeJS](https://nodejs.org/en/) 14.x. 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) + + +### Build & test the boilerplate XYZ provider + +1. Create a new Github CodeSpaces environment using this repository. +1. Open a terminal in the CodeSpaces environment. +1. Run `make build install` to build and install the provider. +1. Run `make gen_examples` to generate the example programs in `examples/` off of the source `examples/yaml` example program. +1. Run `make up` to run the example program in `examples/yaml`. +1. Run `make down` to tear down the example program. + +### Creating a new provider 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. Set the following options: + * Owner: pulumi + * Repository name: pulumi-xyz-native (replace "xyz" with the name of your provider) + * Description: Pulumi provider for xyz + * Repository type: Public +1. Clone the generated repository. + +From the templated repository: + +1. Run the following command to update files to use the name of your provider (third-party: use your GitHub organization/username): + + ```bash + make prepare NAME=foo REPOSITORY=github.com/pulumi/pulumi-foo ORG=myorg + ``` + + This will do the following: + - rename folders in `provider/cmd` to `pulumi-resource-{NAME}` + - replace dependencies in `provider/go.mod` to reflect your repository name + - find and replace all instances of the boilerplate `xyz` with the `NAME` of your provider. + - find and replace all instances of the boilerplate `abc` with the `ORG` of your provider. + - replace all instances of the `github.com/pulumi/pulumi-xyz` repository with the `REPOSITORY` location + +#### Build the provider and install the plugin + + ```bash + $ make build install + ``` + +This will: + +1. Create the SDK codegen binary and place it in a `./bin` folder (gitignored) +2. Create the provider binary and place it in the `./bin` folder (gitignored) +3. Generate the dotnet, Go, Node, and Python SDKs and place them in the `./sdk` folder +4. Install the provider on your machine. + +#### Test against the example + +```bash +$ cd examples/simple +$ yarn link @pulumi/xyz +$ yarn install +$ pulumi stack init test +$ pulumi up +``` + +Now that you have completed all of the above steps, you have a working provider that generates a random string for you. + +#### A brief repository overview + +You now have: + +1. A `provider/` folder containing the building and implementation logic + 1. `cmd/pulumi-resource-xyz/main.go` - holds the provider's sample implementation logic. +2. `deployment-templates` - a set of files to help you around deployment and publication +3. `sdk` - holds the generated code libraries created by `pulumi-gen-xyz/main.go` +4. `examples` a folder of Pulumi programs to try locally and/or use in CI. +5. A `Makefile` and this `README`. + +#### Additional Details + +This repository depends on the pulumi-go-provider library. For more details on building providers, please check +the [Pulumi Go Provider docs](https://github.com/pulumi/pulumi-go-provider). + +### Build Examples + +Create an example program using the resources defined in your provider, and place it in the `examples/` folder. + +You can now repeat the steps for [build, install, and test](#test-against-the-example). + +## Configuring CI and releases + +1. Follow the instructions laid out in the [deployment templates](./deployment-templates/README-DEPLOYMENT.md). + +## References + +Other resources/examples for implementing providers: +* [Pulumi Command provider](https://github.com/pulumi/pulumi-command/blob/master/provider/pkg/provider/provider.go) +* [Pulumi Go Provider repository](https://github.com/pulumi/pulumi-go-provider) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/README.md b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/__init__.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/__init__.py new file mode 100644 index 0000000000..cb97a8f088 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/__init__.py @@ -0,0 +1,43 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +from . import _utilities +import typing +# Export this package's modules as members: +from .provider import * +from .random import * +from .random_component import * + +# Make subpackages available: +if typing.TYPE_CHECKING: + import pulumi_xyz.config as __config + config = __config +else: + config = _utilities.lazy_import('pulumi_xyz.config') + +_utilities.register( + resource_modules=""" +[ + { + "pkg": "xyz", + "mod": "index", + "fqn": "pulumi_xyz", + "classes": { + "xyz:index:Random": "Random", + "xyz:index:RandomComponent": "RandomComponent" + } + } +] +""", + resource_packages=""" +[ + { + "pkg": "xyz", + "token": "pulumi:providers:xyz", + "fqn": "pulumi_xyz", + "class": "Provider" + } +] +""" +) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/_utilities.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/_utilities.py new file mode 100644 index 0000000000..dcf4c01695 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/_utilities.py @@ -0,0 +1,327 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + + +import asyncio +import functools +import importlib.metadata +import importlib.util +import inspect +import json +import os +import sys +import typing +import warnings +import base64 + +import pulumi +import pulumi.runtime +from pulumi.runtime.sync_await import _sync_await +from pulumi.runtime.proto import resource_pb2 + +from semver import VersionInfo as SemverVersion +from parver import Version as PEP440Version + +C = typing.TypeVar("C", bound=typing.Callable) + + +def get_env(*args): + for v in args: + value = os.getenv(v) + if value is not None: + return value + return None + + +def get_env_bool(*args): + str = get_env(*args) + if str is not None: + # NOTE: these values are taken from https://golang.org/src/strconv/atob.go?s=351:391#L1, which is what + # Terraform uses internally when parsing boolean values. + if str in ["1", "t", "T", "true", "TRUE", "True"]: + return True + if str in ["0", "f", "F", "false", "FALSE", "False"]: + return False + return None + + +def get_env_int(*args): + str = get_env(*args) + if str is not None: + try: + return int(str) + except: + return None + return None + + +def get_env_float(*args): + str = get_env(*args) + if str is not None: + try: + return float(str) + except: + return None + return None + + +def _get_semver_version(): + # __name__ is set to the fully-qualified name of the current module, In our case, it will be + # ._utilities. is the module we want to query the version for. + root_package, *rest = __name__.split('.') + + # pkg_resources uses setuptools to inspect the set of installed packages. We use it here to ask + # for the currently installed version of the root package (i.e. us) and get its version. + + # Unfortunately, PEP440 and semver differ slightly in incompatible ways. The Pulumi engine expects + # to receive a valid semver string when receiving requests from the language host, so it's our + # responsibility as the library to convert our own PEP440 version into a valid semver string. + + pep440_version_string = importlib.metadata.version(root_package) + pep440_version = PEP440Version.parse(pep440_version_string) + (major, minor, patch) = pep440_version.release + prerelease = None + if pep440_version.pre_tag == 'a': + prerelease = f"alpha.{pep440_version.pre}" + elif pep440_version.pre_tag == 'b': + prerelease = f"beta.{pep440_version.pre}" + elif pep440_version.pre_tag == 'rc': + prerelease = f"rc.{pep440_version.pre}" + elif pep440_version.dev is not None: + prerelease = f"dev.{pep440_version.dev}" + + # The only significant difference between PEP440 and semver as it pertains to us is that PEP440 has explicit support + # for dev builds, while semver encodes them as "prerelease" versions. In order to bridge between the two, we convert + # our dev build version into a prerelease tag. This matches what all of our other packages do when constructing + # their own semver string. + return SemverVersion(major=major, minor=minor, patch=patch, prerelease=prerelease) + + +# Determine the version once and cache the value, which measurably improves program performance. +_version = _get_semver_version() +_version_str = str(_version) + +def get_resource_opts_defaults() -> pulumi.ResourceOptions: + return pulumi.ResourceOptions( + version=get_version(), + plugin_download_url=get_plugin_download_url(), + ) + +def get_invoke_opts_defaults() -> pulumi.InvokeOptions: + return pulumi.InvokeOptions( + version=get_version(), + plugin_download_url=get_plugin_download_url(), + ) + +def get_resource_args_opts(resource_args_type, resource_options_type, *args, **kwargs): + """ + Return the resource args and options given the *args and **kwargs of a resource's + __init__ method. + """ + + resource_args, opts = None, None + + # If the first item is the resource args type, save it and remove it from the args list. + if args and isinstance(args[0], resource_args_type): + resource_args, args = args[0], args[1:] + + # Now look at the first item in the args list again. + # If the first item is the resource options class, save it. + if args and isinstance(args[0], resource_options_type): + opts = args[0] + + # If resource_args is None, see if "args" is in kwargs, and, if so, if it's typed as the + # the resource args type. + if resource_args is None: + a = kwargs.get("args") + if isinstance(a, resource_args_type): + resource_args = a + + # If opts is None, look it up in kwargs. + if opts is None: + opts = kwargs.get("opts") + + return resource_args, opts + + +# Temporary: just use pulumi._utils.lazy_import once everyone upgrades. +def lazy_import(fullname): + + import pulumi._utils as u + f = getattr(u, 'lazy_import', None) + if f is None: + f = _lazy_import_temp + + return f(fullname) + + +# Copied from pulumi._utils.lazy_import, see comments there. +def _lazy_import_temp(fullname): + m = sys.modules.get(fullname, None) + if m is not None: + return m + + spec = importlib.util.find_spec(fullname) + + m = sys.modules.get(fullname, None) + if m is not None: + return m + + loader = importlib.util.LazyLoader(spec.loader) + spec.loader = loader + module = importlib.util.module_from_spec(spec) + + m = sys.modules.get(fullname, None) + if m is not None: + return m + + sys.modules[fullname] = module + loader.exec_module(module) + return module + + +class Package(pulumi.runtime.ResourcePackage): + def __init__(self, pkg_info): + super().__init__() + self.pkg_info = pkg_info + + def version(self): + return _version + + def construct_provider(self, name: str, typ: str, urn: str) -> pulumi.ProviderResource: + if typ != self.pkg_info['token']: + raise Exception(f"unknown provider type {typ}") + Provider = getattr(lazy_import(self.pkg_info['fqn']), self.pkg_info['class']) + return Provider(name, pulumi.ResourceOptions(urn=urn)) + + +class Module(pulumi.runtime.ResourceModule): + def __init__(self, mod_info): + super().__init__() + self.mod_info = mod_info + + def version(self): + return _version + + def construct(self, name: str, typ: str, urn: str) -> pulumi.Resource: + class_name = self.mod_info['classes'].get(typ, None) + + if class_name is None: + raise Exception(f"unknown resource type {typ}") + + TheClass = getattr(lazy_import(self.mod_info['fqn']), class_name) + return TheClass(name, pulumi.ResourceOptions(urn=urn)) + + +def register(resource_modules, resource_packages): + resource_modules = json.loads(resource_modules) + resource_packages = json.loads(resource_packages) + + for pkg_info in resource_packages: + pulumi.runtime.register_resource_package(pkg_info['pkg'], Package(pkg_info)) + + for mod_info in resource_modules: + pulumi.runtime.register_resource_module( + mod_info['pkg'], + mod_info['mod'], + Module(mod_info)) + + +_F = typing.TypeVar('_F', bound=typing.Callable[..., typing.Any]) + + +def lift_output_func(func: typing.Any) -> typing.Callable[[_F], _F]: + """Decorator internally used on {fn}_output lifted function versions + to implement them automatically from the un-lifted function.""" + + func_sig = inspect.signature(func) + + def lifted_func(*args, opts=None, **kwargs): + bound_args = func_sig.bind(*args, **kwargs) + # Convert tuple to list, see pulumi/pulumi#8172 + args_list = list(bound_args.args) + return pulumi.Output.from_input({ + 'args': args_list, + 'kwargs': bound_args.kwargs + }).apply(lambda resolved_args: func(*resolved_args['args'], + opts=opts, + **resolved_args['kwargs'])) + + return (lambda _: lifted_func) + + +def call_plain( + tok: str, + props: pulumi.Inputs, + res: typing.Optional[pulumi.Resource] = None, + typ: typing.Optional[type] = None, +) -> typing.Any: + """ + Wraps pulumi.runtime.plain to force the output and return it plainly. + """ + + output = pulumi.runtime.call(tok, props, res, typ) + + # Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency. + result, known, secret, _ = _sync_await(asyncio.ensure_future(_await_output(output))) + + problem = None + if not known: + problem = ' an unknown value' + elif secret: + problem = ' a secret value' + + if problem: + raise AssertionError( + f"Plain resource method '{tok}' incorrectly returned {problem}. " + + "This is an error in the provider, please report this to the provider developer." + ) + + return result + + +async def _await_output(o: pulumi.Output[typing.Any]) -> typing.Tuple[object, bool, bool, set]: + return ( + await o._future, + await o._is_known, + await o._is_secret, + await o._resources, + ) + + +# This is included to provide an upgrade path for users who are using a version +# of the Pulumi SDK (<3.121.0) that does not include the `deprecated` decorator. +def deprecated(message: str) -> typing.Callable[[C], C]: + """ + Decorator to indicate a function is deprecated. + + As well as inserting appropriate statements to indicate that the function is + deprecated, this decorator also tags the function with a special attribute + so that Pulumi code can detect that it is deprecated and react appropriately + in certain situations. + + message is the deprecation message that should be printed if the function is called. + """ + + def decorator(fn: C) -> C: + if not callable(fn): + raise TypeError("Expected fn to be callable") + + @functools.wraps(fn) + def deprecated_fn(*args, **kwargs): + warnings.warn(message) + pulumi.warn(f"{fn.__name__} is deprecated: {message}") + + return fn(*args, **kwargs) + + deprecated_fn.__dict__["_pulumi_deprecated_callable"] = fn + return typing.cast(C, deprecated_fn) + + return decorator + +def get_plugin_download_url(): + return None + +def get_version(): + return _version_str diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.py new file mode 100644 index 0000000000..b8c2b21bff --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.py @@ -0,0 +1,8 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import sys +from .vars import _ExportableConfig + +sys.modules[__name__].__class__ = _ExportableConfig diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.pyi b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.pyi new file mode 100644 index 0000000000..6ddb01a0b8 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/__init__.pyi @@ -0,0 +1,13 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from .. import _utilities + +itsasecret: Optional[bool] + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/vars.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/vars.py new file mode 100644 index 0000000000..c2662aec1c --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/config/vars.py @@ -0,0 +1,21 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from .. import _utilities + +import types + +__config__ = pulumi.Config('xyz') + + +class _ExportableConfig(types.ModuleType): + @property + def itsasecret(self) -> Optional[bool]: + return __config__.get_bool('itsasecret') + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/provider.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/provider.py new file mode 100644 index 0000000000..68673752f9 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/provider.py @@ -0,0 +1,85 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['ProviderArgs', 'Provider'] + +@pulumi.input_type +class ProviderArgs: + def __init__(__self__, *, + itsasecret: Optional[pulumi.Input[bool]] = None): + """ + The set of arguments for constructing a Provider resource. + """ + if itsasecret is not None: + pulumi.set(__self__, "itsasecret", itsasecret) + + @property + @pulumi.getter + def itsasecret(self) -> Optional[pulumi.Input[bool]]: + return pulumi.get(self, "itsasecret") + + @itsasecret.setter + def itsasecret(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "itsasecret", value) + + +class Provider(pulumi.ProviderResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + itsasecret: Optional[pulumi.Input[bool]] = None, + __props__=None): + """ + Create a Xyz resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: Optional[ProviderArgs] = None, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a Xyz resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param ProviderArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(ProviderArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + itsasecret: Optional[pulumi.Input[bool]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = ProviderArgs.__new__(ProviderArgs) + + __props__.__dict__["itsasecret"] = pulumi.Output.from_input(itsasecret).apply(pulumi.runtime.to_json) if itsasecret is not None else None + super(Provider, __self__).__init__( + 'xyz', + resource_name, + __props__, + opts) + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/pulumi-plugin.json b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/pulumi-plugin.json new file mode 100644 index 0000000000..3baacc8f30 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/pulumi-plugin.json @@ -0,0 +1,4 @@ +{ + "resource": true, + "name": "xyz" +} diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/py.typed b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/py.typed new file mode 100644 index 0000000000..e69de29bb2 diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random.py new file mode 100644 index 0000000000..bf8a5a9483 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random.py @@ -0,0 +1,117 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['RandomArgs', 'Random'] + +@pulumi.input_type +class RandomArgs: + def __init__(__self__, *, + length: pulumi.Input[int]): + """ + The set of arguments for constructing a Random resource. + """ + pulumi.set(__self__, "length", length) + + @property + @pulumi.getter + def length(self) -> pulumi.Input[int]: + return pulumi.get(self, "length") + + @length.setter + def length(self, value: pulumi.Input[int]): + pulumi.set(self, "length", value) + + +class Random(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + length: Optional[pulumi.Input[int]] = None, + __props__=None): + """ + Create a Random resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: RandomArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a Random resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param RandomArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(RandomArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + length: Optional[pulumi.Input[int]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = RandomArgs.__new__(RandomArgs) + + if length is None and not opts.urn: + raise TypeError("Missing required property 'length'") + __props__.__dict__["length"] = length + __props__.__dict__["result"] = None + super(Random, __self__).__init__( + 'xyz:index:Random', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None) -> 'Random': + """ + Get an existing Random resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = RandomArgs.__new__(RandomArgs) + + __props__.__dict__["length"] = None + __props__.__dict__["result"] = None + return Random(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter + def length(self) -> pulumi.Output[int]: + return pulumi.get(self, "length") + + @property + @pulumi.getter + def result(self) -> pulumi.Output[str]: + return pulumi.get(self, "result") + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random_component.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random_component.py new file mode 100644 index 0000000000..f80729b6e8 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/pulumi_xyz/random_component.py @@ -0,0 +1,100 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import copy +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['RandomComponentArgs', 'RandomComponent'] + +@pulumi.input_type +class RandomComponentArgs: + def __init__(__self__, *, + length: pulumi.Input[int]): + """ + The set of arguments for constructing a RandomComponent resource. + """ + pulumi.set(__self__, "length", length) + + @property + @pulumi.getter + def length(self) -> pulumi.Input[int]: + return pulumi.get(self, "length") + + @length.setter + def length(self, value: pulumi.Input[int]): + pulumi.set(self, "length", value) + + +class RandomComponent(pulumi.ComponentResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + length: Optional[pulumi.Input[int]] = None, + __props__=None): + """ + Create a RandomComponent resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: RandomComponentArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Create a RandomComponent resource with the given unique name, props, and options. + :param str resource_name: The name of the resource. + :param RandomComponentArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(RandomComponentArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + length: Optional[pulumi.Input[int]] = None, + __props__=None): + opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts) + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.id is not None: + raise ValueError('ComponentResource classes do not support opts.id') + else: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = RandomComponentArgs.__new__(RandomComponentArgs) + + if length is None and not opts.urn: + raise TypeError("Missing required property 'length'") + __props__.__dict__["length"] = length + __props__.__dict__["password"] = None + super(RandomComponent, __self__).__init__( + 'xyz:index:RandomComponent', + resource_name, + __props__, + opts, + remote=True) + + @property + @pulumi.getter + def length(self) -> pulumi.Output[int]: + return pulumi.get(self, "length") + + @property + @pulumi.getter + def password(self) -> pulumi.Output[str]: + return pulumi.get(self, "password") + diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/setup.py b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/setup.py new file mode 100644 index 0000000000..2c6131959a --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/sdk/python/setup.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# *** WARNING: this file was generated by pulumi-language-python. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import errno +from setuptools import setup, find_packages +from setuptools.command.install import install +from subprocess import check_call + + +VERSION = "0.0.0" +def readme(): + try: + with open('README.md', encoding='utf-8') as f: + return f.read() + except FileNotFoundError: + return "xyz Pulumi Package - Development Version" + + +setup(name='pulumi_xyz', + python_requires='>=3.8', + version=VERSION, + long_description=readme(), + long_description_content_type='text/markdown', + packages=find_packages(), + package_data={ + 'pulumi_xyz': [ + 'py.typed', + 'pulumi-plugin.json', + ] + }, + install_requires=[ + 'parver>=0.2.1', + 'pulumi>=3.0.0,<4.0.0', + 'semver>=2.8.1' + ], + zip_safe=False) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/tests/go.mod b/go/pulumi/plugin/pulumi-component-provider-crane/tests/go.mod new file mode 100644 index 0000000000..e012c0a018 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/tests/go.mod @@ -0,0 +1,87 @@ +module github.com/pulumi/pulumi-xyz/tests + +go 1.21 + +replace github.com/pulumi/pulumi-xyz/provider => ../provider + +require ( + github.com/blang/semver v3.5.1+incompatible + github.com/pulumi/pulumi-go-provider v0.11.1 + github.com/pulumi/pulumi-go-provider/integration v0.10.0 + github.com/pulumi/pulumi-xyz/provider v0.0.0-00010101000000-000000000000 + github.com/pulumi/pulumi/sdk/v3 v3.79.0 + github.com/stretchr/testify v1.8.4 +) + +require ( + dario.cat/mergo v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/cheggaaa/pb v1.0.29 // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/davecgh/go-spew v1.1.1 // 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/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect + github.com/go-git/go-git/v5 v5.11.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.1.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // 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.18.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/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/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/goldmark v1.1.33-0.20200616210433-b5eb04559386 // 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/pmezard/go-difflib v1.0.0 // indirect + github.com/pulumi/pulumi/pkg/v3 v3.79.0 // indirect + github.com/rivo/uniseg v0.4.4 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect + github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect + github.com/segmentio/asm v1.2.0 // indirect + github.com/segmentio/encoding v0.3.6 // indirect + github.com/sergi/go-diff v1.3.1 // indirect + github.com/skeema/knownhosts v1.2.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/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 // 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.14.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/crypto v0.17.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.13.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/grpc v1.57.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/frand v1.4.2 // indirect + sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 // indirect +) diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/tests/go.sum b/go/pulumi/plugin/pulumi-component-provider-crane/tests/go.sum new file mode 100644 index 0000000000..b61b3f2ab4 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/tests/go.sum @@ -0,0 +1,301 @@ +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +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 v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +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/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/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/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +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.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +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/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 v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +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.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +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.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +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.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/gofrs/uuid v4.3.1+incompatible h1:0/KbAdpx3UXAx1kEOWHJeOkpbgRFGHVgv+CFIY7dBJI= +github.com/gofrs/uuid v4.3.1+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/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +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.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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/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.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8= +github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= +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/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.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +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/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.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +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/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/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/pulumi-go-provider v0.11.1 h1:htCTrWwTKf3r+vgSpgQhQOCYEs14zqUeHJdcpUS8UAE= +github.com/pulumi/pulumi-go-provider v0.11.1/go.mod h1:6yOfJ+g5JkflllURGekK7lncGBaLLbSuwAfHpuTD+E4= +github.com/pulumi/pulumi-go-provider/integration v0.10.0 h1:GHesnrrvkboSjkZpC+qRwjkXBp5d+fSXqlIO92zQxvc= +github.com/pulumi/pulumi-go-provider/integration v0.10.0/go.mod h1:qAbKHpPzANFKOyjiQ0CzdgJh4DtM0gtujKhO7+l3/+w= +github.com/pulumi/pulumi/pkg/v3 v3.79.0 h1:Rzrv7pmn51D7r41ua/wtQxhSt0ZM0bx4JrXvifXmSx4= +github.com/pulumi/pulumi/pkg/v3 v3.79.0/go.mod h1:VHC3YWL53JMEbsuq6nj3M93G9TiB1L6aVxjepjnJKTY= +github.com/pulumi/pulumi/sdk/v3 v3.79.0 h1:GJ46WDwJ78jQ9qJW0nI1WdnypjCNkRQG9rVymw0go9A= +github.com/pulumi/pulumi/sdk/v3 v3.79.0/go.mod h1:FEFictCHoa8CYzKDSc0t9ErrNiaO9n7pChreLQLDH+M= +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.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +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.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= +github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/segmentio/encoding v0.3.6 h1:E6lVLyDPseWEulBmCmAKPanDd3jiyGDo5gMcugCRwZQ= +github.com/segmentio/encoding v0.3.6/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +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/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +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/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= +github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= +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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= +github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +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.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +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 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +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-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.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +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 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +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.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.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.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +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.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +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.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 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +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-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg= +google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ= +pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 h1:hfyJ5ku9yFtLVOiSxa3IN+dx5eBQT9mPmKFypAmg8XM= +sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/go/pulumi/plugin/pulumi-component-provider-crane/tests/provider_test.go b/go/pulumi/plugin/pulumi-component-provider-crane/tests/provider_test.go new file mode 100644 index 0000000000..22dd06bb91 --- /dev/null +++ b/go/pulumi/plugin/pulumi-component-provider-crane/tests/provider_test.go @@ -0,0 +1,56 @@ +// Copyright 2016-2023, 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 tests + +import ( + "testing" + + "github.com/blang/semver" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/integration" + "github.com/pulumi/pulumi/sdk/v3/go/common/resource" + "github.com/pulumi/pulumi/sdk/v3/go/common/tokens" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + xyz "github.com/pulumi/pulumi-xyz/provider" +) + +func TestRandomCreate(t *testing.T) { + prov := provider() + + response, err := prov.Create(p.CreateRequest{ + Urn: urn("Random"), + Properties: resource.PropertyMap{ + "length": resource.NewNumberProperty(12), + }, + Preview: false, + }) + + require.NoError(t, err) + result := response.Properties["result"].StringValue() + assert.Len(t, result, 12) +} + +// urn is a helper function to build an urn for running integration tests. +func urn(typ string) resource.URN { + return resource.NewURN("stack", "proj", "", + tokens.Type("test:index:"+typ), "name") +} + +// Create a test server. +func provider() integration.Server { + return integration.NewServer(xyz.Name, semver.MustParse("1.0.0"), xyz.Provider()) +} diff --git a/requirements.in b/requirements.in index 7b53fcd98b..6a6c6cd75f 100644 --- a/requirements.in +++ b/requirements.in @@ -25,3 +25,4 @@ ipykernel jupyter-console nbconvert ipywidgets +pulumi diff --git a/requirements.txt b/requirements.txt index 11b6fca06b..c7056071d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -303,7 +303,9 @@ debugpy==1.8.6 \ --hash=sha256:e4ce0570aa4aca87137890d23b86faeadf184924ad892d20c54237bcaab75d8f \ --hash=sha256:f1e60bd06bb3cc5c0e957df748d1fab501e01416c43a7bdc756d2a992ea1b881 \ --hash=sha256:f7158252803d0752ed5398d291dee4c553bb12d14547c0e1843ab74ee9c31123 - # via ipykernel + # via + # ipykernel + # pulumi decorator==5.1.1 \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -312,6 +314,10 @@ defusedxml==0.7.1 \ --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 # via nbconvert +dill==0.3.9 \ + --hash=sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a \ + --hash=sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c + # via pulumi executing==2.1.0 \ --hash=sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf \ --hash=sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab @@ -324,6 +330,63 @@ fqdn==1.5.1 \ --hash=sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f \ --hash=sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014 # via jsonschema +grpcio==1.66.2 \ + --hash=sha256:02697eb4a5cbe5a9639f57323b4c37bcb3ab2d48cec5da3dc2f13334d72790dd \ + --hash=sha256:03b0b307ba26fae695e067b94cbb014e27390f8bc5ac7a3a39b7723fed085604 \ + --hash=sha256:05bc2ceadc2529ab0b227b1310d249d95d9001cd106aa4d31e8871ad3c428d73 \ + --hash=sha256:06de8ec0bd71be123eec15b0e0d457474931c2c407869b6c349bd9bed4adbac3 \ + --hash=sha256:0be4e0490c28da5377283861bed2941d1d20ec017ca397a5df4394d1c31a9b50 \ + --hash=sha256:12fda97ffae55e6526825daf25ad0fa37483685952b5d0f910d6405c87e3adb6 \ + --hash=sha256:1caa38fb22a8578ab8393da99d4b8641e3a80abc8fd52646f1ecc92bcb8dee34 \ + --hash=sha256:2018b053aa15782db2541ca01a7edb56a0bf18c77efed975392583725974b249 \ + --hash=sha256:20657d6b8cfed7db5e11b62ff7dfe2e12064ea78e93f1434d61888834bc86d75 \ + --hash=sha256:2335c58560a9e92ac58ff2bc5649952f9b37d0735608242973c7a8b94a6437d8 \ + --hash=sha256:31fd163105464797a72d901a06472860845ac157389e10f12631025b3e4d0453 \ + --hash=sha256:38b68498ff579a3b1ee8f93a05eb48dc2595795f2f62716e797dc24774c1aaa8 \ + --hash=sha256:3b00efc473b20d8bf83e0e1ae661b98951ca56111feb9b9611df8efc4fe5d55d \ + --hash=sha256:3ed71e81782966ffead60268bbda31ea3f725ebf8aa73634d5dda44f2cf3fb9c \ + --hash=sha256:45a3d462826f4868b442a6b8fdbe8b87b45eb4f5b5308168c156b21eca43f61c \ + --hash=sha256:49f0ca7ae850f59f828a723a9064cadbed90f1ece179d375966546499b8a2c9c \ + --hash=sha256:4e504572433f4e72b12394977679161d495c4c9581ba34a88d843eaf0f2fbd39 \ + --hash=sha256:4ea1d062c9230278793820146c95d038dc0f468cbdd172eec3363e42ff1c7d01 \ + --hash=sha256:563588c587b75c34b928bc428548e5b00ea38c46972181a4d8b75ba7e3f24231 \ + --hash=sha256:6001e575b8bbd89eee11960bb640b6da6ae110cf08113a075f1e2051cc596cae \ + --hash=sha256:66a0cd8ba6512b401d7ed46bb03f4ee455839957f28b8d61e7708056a806ba6a \ + --hash=sha256:6851de821249340bdb100df5eacfecfc4e6075fa85c6df7ee0eb213170ec8e5d \ + --hash=sha256:728bdf36a186e7f51da73be7f8d09457a03061be848718d0edf000e709418987 \ + --hash=sha256:73e3b425c1e155730273f73e419de3074aa5c5e936771ee0e4af0814631fb30a \ + --hash=sha256:73fc8f8b9b5c4a03e802b3cd0c18b2b06b410d3c1dcbef989fdeb943bd44aff7 \ + --hash=sha256:78fa51ebc2d9242c0fc5db0feecc57a9943303b46664ad89921f5079e2e4ada7 \ + --hash=sha256:7b2c86457145ce14c38e5bf6bdc19ef88e66c5fee2c3d83285c5aef026ba93b3 \ + --hash=sha256:7d69ce1f324dc2d71e40c9261d3fdbe7d4c9d60f332069ff9b2a4d8a257c7b2b \ + --hash=sha256:802d84fd3d50614170649853d121baaaa305de7b65b3e01759247e768d691ddf \ + --hash=sha256:80fd702ba7e432994df208f27514280b4b5c6843e12a48759c9255679ad38db8 \ + --hash=sha256:8ac475e8da31484efa25abb774674d837b343afb78bb3bcdef10f81a93e3d6bf \ + --hash=sha256:950da58d7d80abd0ea68757769c9db0a95b31163e53e5bb60438d263f4bed7b7 \ + --hash=sha256:99a641995a6bc4287a6315989ee591ff58507aa1cbe4c2e70d88411c4dcc0839 \ + --hash=sha256:9c3a99c519f4638e700e9e3f83952e27e2ea10873eecd7935823dab0c1c9250e \ + --hash=sha256:9c509a4f78114cbc5f0740eb3d7a74985fd2eff022971bc9bc31f8bc93e66a3b \ + --hash=sha256:a18e20d8321c6400185b4263e27982488cb5cdd62da69147087a76a24ef4e7e3 \ + --hash=sha256:a917d26e0fe980b0ac7bfcc1a3c4ad6a9a4612c911d33efb55ed7833c749b0ee \ + --hash=sha256:a9539f01cb04950fd4b5ab458e64a15f84c2acc273670072abe49a3f29bbad54 \ + --hash=sha256:ad2efdbe90c73b0434cbe64ed372e12414ad03c06262279b104a029d1889d13e \ + --hash=sha256:b672abf90a964bfde2d0ecbce30f2329a47498ba75ce6f4da35a2f4532b7acbc \ + --hash=sha256:bbd27c24a4cc5e195a7f56cfd9312e366d5d61b86e36d46bbe538457ea6eb8dd \ + --hash=sha256:c400ba5675b67025c8a9f48aa846f12a39cf0c44df5cd060e23fda5b30e9359d \ + --hash=sha256:c408f5ef75cfffa113cacd8b0c0e3611cbfd47701ca3cdc090594109b9fcbaed \ + --hash=sha256:c806852deaedee9ce8280fe98955c9103f62912a5b2d5ee7e3eaa284a6d8d8e7 \ + --hash=sha256:ce89f5876662f146d4c1f695dda29d4433a5d01c8681fbd2539afff535da14d4 \ + --hash=sha256:d25a14af966438cddf498b2e338f88d1c9706f3493b1d73b93f695c99c5f0e2a \ + --hash=sha256:d8d4732cc5052e92cea2f78b233c2e2a52998ac40cd651f40e398893ad0d06ec \ + --hash=sha256:d9a9724a156c8ec6a379869b23ba3323b7ea3600851c91489b871e375f710bc8 \ + --hash=sha256:e636ce23273683b00410f1971d209bf3689238cf5538d960adc3cdfe80dd0dbd \ + --hash=sha256:e88264caad6d8d00e7913996030bac8ad5f26b7411495848cc218bd3a9040b6c \ + --hash=sha256:f145cc21836c332c67baa6fc81099d1d27e266401565bf481948010d6ea32d46 \ + --hash=sha256:fb57870449dfcfac428afbb5a877829fcb0d6db9d9baa1148705739e9083880e \ + --hash=sha256:fb70487c95786e345af5e854ffec8cb8cc781bcc5df7930c4fbb7feaa72e1cdf \ + --hash=sha256:fe96281713168a3270878255983d2cb1a97e034325c8c2c25169a69289d3ecfa \ + --hash=sha256:ff1f7882e56c40b0d33c4922c15dfa30612f05fb785074a012f7cda74d1c3679 + # via pulumi h11==0.14.0 \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -767,6 +830,19 @@ prompt-toolkit==3.0.48 \ # via # ipython # jupyter-console +protobuf==4.25.5 \ + --hash=sha256:0aebecb809cae990f8129ada5ca273d9d670b76d9bfc9b1809f0a9c02b7dbf41 \ + --hash=sha256:4be0571adcbe712b282a330c6e89eae24281344429ae95c6d85e79e84780f5ea \ + --hash=sha256:5e61fd921603f58d2f5acb2806a929b4675f8874ff5f330b7d6f7e2e784bbcd8 \ + --hash=sha256:7a183f592dc80aa7c8da7ad9e55091c4ffc9497b3054452d629bb85fa27c2a45 \ + --hash=sha256:7f8249476b4a9473645db7f8ab42b02fe1488cbe5fb72fddd445e0665afd8584 \ + --hash=sha256:919ad92d9b0310070f8356c24b855c98df2b8bd207ebc1c0c6fcc9ab1e007f3d \ + --hash=sha256:98d8d8aa50de6a2747efd9cceba361c9034050ecce3e09136f90de37ddba66e1 \ + --hash=sha256:abe32aad8561aa7cc94fc7ba4fdef646e576983edb94a73381b03c53728a626f \ + --hash=sha256:b0234dd5a03049e4ddd94b93400b67803c823cfc405689688f59b34e0742381a \ + --hash=sha256:b2fde3d805354df675ea4c7c6338c1aecd254dfc9925e88c6d31a2bcb97eb173 \ + --hash=sha256:fe14e16c22be926d3abfcb500e60cab068baf10b542b8c858fa27e098123e331 + # via pulumi psutil==6.0.0 \ --hash=sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35 \ --hash=sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0 \ @@ -792,6 +868,9 @@ ptyprocess==0.7.0 \ # via # pexpect # terminado +pulumi==3.136.1 \ + --hash=sha256:f4193733877c336332c95bd723c79faa240f2be082afbc3f4de940676d786e73 + # via -r requirements.in pure-eval==0.2.3 \ --hash=sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 \ --hash=sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42 @@ -881,6 +960,7 @@ pyyaml==6.0.1 \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f # via # jupyter-events + # pulumi # yamllint pyzmq==26.2.0 \ --hash=sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6 \ @@ -1153,6 +1233,10 @@ sectxt==0.9.3 \ --hash=sha256:2b4a819a1ee8ad4d7df1d4b15267750cf4fa7c2b727be56917b76090295b6e21 \ --hash=sha256:9cbe81d64d4c21bda27e55dcadbda38c3514f80a7e635805b9fba257f61fa5b0 # via -r requirements.in +semver==2.13.0 \ + --hash=sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4 \ + --hash=sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f + # via pulumi send2trash==1.8.3 \ --hash=sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9 \ --hash=sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf @@ -1163,6 +1247,7 @@ six==1.16.0 \ # via # asttokens # bleach + # pulumi # python-dateutil # rfc3339-validator sniffio==1.3.1 \ diff --git a/ts/math/physics.ts b/ts/math/physics.ts new file mode 100644 index 0000000000..e69de29bb2