Skip to content

The "prepare" Makefile target doesn't work as expected #342

@typez

Description

@typez

Describe what happened

Hi,

There is a "prepare" target in a Makefile. According to the README, is should perform these actions:

  • 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 provider-boilerplate 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-provider-boilerplate repository with the REPOSITORY location

And there is a code snippet from the "prepare" target which pretends to perform actions mentioned above:

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' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '' '/SED_SKIP/!s/[xX]yz/${NAME}/g' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '' '/SED_SKIP/!s/[aA]bc/${ORG}/g' {} \; ; \
else \
		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' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '/SED_SKIP/!s/[xX]yz/${NAME}/g' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '/SED_SKIP/!s/[aA]bc/${ORG}/g' {} \; ; \
fi

It just can't work as expected at least due to variables placed within single quotes (REPOSITORY and so on).

Also, regular expression looks strange. "pulumi-[x]yz' would match "pulumi-xyz". It's not clear how it's related with replacing the "github.com/pulumi/pulumi-provider-boilerplate" string.

Also, README mentions "replace all instances of the boilerplate abc with the ORG of your provider". There are no "abc" entries in the repository except this line in README.

Overall, it doesn't look like the "prepare" target acts as described in the README (and the README may needs to be updated).

Sample program

make prepare NAME=foo ORG=myorg REPOSITORY=github.com/myorg/pulumi-foo

Log output

# SED needs to not fail when encountering unicode characters
LC_CTYPE=C
LANG=C
mv "provider/cmd/pulumi-resource-provider-boilerplate" provider/cmd/pulumi-resource-foo # SED_SKIP
# In MacOS the -i parameter needs an empty  to execute in place.
if [[ "" == "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,github.com/myorg/pulumi-foo,g' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '' '/SED_SKIP/!s/[xX]yz/foo/g' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '' '/SED_SKIP/!s/[aA]bc/myorg/g' {} \; ; \
	else \
		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,github.com/myorg/pulumi-foo,g' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '/SED_SKIP/!s/[xX]yz/foo/g' {} \; ; \
		find . \( -path './.git' -o -path './sdk' \) -prune -o -not -name 'go.sum' -type f -exec sed -i '/SED_SKIP/!s/[aA]bc/myorg/g' {} \; ; \
	fi
sed: 1: "./go.mod": invalid command code .
sed: 1: "./LICENSE": invalid command code .
sed: 1: "./CODE-OF-CONDUCT.md": invalid command code .
sed: 1: "./Makefile": invalid command code .
sed: 1: "./tests/provider_test.go": invalid command code .
sed: 1: "./provider/random_resou ...": invalid command code .
sed: 1: "./provider/provider.go": invalid command code .
sed: 1: "./provider/cmd/pulumi-r ...": invalid command code .
sed: 1: "./provider/cmd/pulumi-r ...": invalid command code .
sed: 1: "./provider/random_compo ...": invalid command code .
sed: 1: "./provider/random_resou ...": invalid command code .
sed: 1: "./README.md": invalid command code .
sed: 1: "./mise.toml": invalid command code .
sed: 1: "./examples/java_test.go": invalid command code .
sed: 1: "./examples/testdata/rec ...": invalid command code .
sed: 1: "./examples/testdata/rec ...": invalid command code .
sed: 1: "./examples/nodejs/.giti ...": invalid command code .
sed: 1: "./examples/nodejs/packa ...": invalid command code .
sed: 1: "./examples/nodejs/tscon ...": invalid command code .
sed: 1: "./examples/nodejs/index.ts": invalid command code .
sed: 1: "./examples/nodejs/Pulum ...": invalid command code .
sed: 1: "./examples/go/go.mod": invalid command code .
sed: 1: "./examples/go/Pulumi.yaml": invalid command code .
sed: 1: "./examples/go/main.go": invalid command code .
sed: 1: "./examples/yaml_test.go": invalid command code .
sed: 1: "./examples/go_test.go": invalid command code .
sed: 1: "./examples/base_test.go": invalid command code .
sed: 1: "./examples/python/requi ...": invalid command code .
sed: 1: "./examples/python/.giti ...": invalid command code .
sed: 1: "./examples/python/Pulum ...": invalid command code .
sed: 1: "./examples/python/__mai ...": invalid command code .
sed: 1: "./examples/dotnet_test.go": invalid command code .
sed: 1: "./examples/dotnet/.giti ...": invalid command code .
sed: 1: "./examples/dotnet/provi ...": invalid command code .
sed: 1: "./examples/dotnet/Pulum ...": invalid command code .
sed: 1: "./examples/dotnet/Progr ...": invalid command code .
sed: 1: "./examples/nodejs_test.go": invalid command code .
sed: 1: "./examples/python_test.go": invalid command code .
sed: 1: "./examples/yaml/README.md": invalid command code .
sed: 1: "./examples/yaml/Pulumi. ...": invalid command code .
sed: 1: "./go.mod": invalid command code .
sed: 1: "./LICENSE": invalid command code .
sed: 1: "./CODE-OF-CONDUCT.md": invalid command code .
sed: 1: "./Makefile": invalid command code .
sed: 1: "./tests/provider_test.go": invalid command code .
sed: 1: "./provider/random_resou ...": invalid command code .
sed: 1: "./provider/provider.go": invalid command code .
sed: 1: "./provider/cmd/pulumi-r ...": invalid command code .
sed: 1: "./provider/cmd/pulumi-r ...": invalid command code .
sed: 1: "./provider/random_compo ...": invalid command code .
sed: 1: "./provider/random_resou ...": invalid command code .
sed: 1: "./README.md": invalid command code .
sed: 1: "./mise.toml": invalid command code .
sed: 1: "./examples/java_test.go": invalid command code .
sed: 1: "./examples/testdata/rec ...": invalid command code .
sed: 1: "./examples/testdata/rec ...": invalid command code .
sed: 1: "./examples/nodejs/.giti ...": invalid command code .
sed: 1: "./examples/nodejs/packa ...": invalid command code .
sed: 1: "./examples/nodejs/tscon ...": invalid command code .
sed: 1: "./examples/nodejs/index.ts": invalid command code .
sed: 1: "./examples/nodejs/Pulum ...": invalid command code .
sed: 1: "./examples/go/go.mod": invalid command code .
sed: 1: "./examples/go/Pulumi.yaml": invalid command code .
sed: 1: "./examples/go/main.go": invalid command code .
sed: 1: "./examples/yaml_test.go": invalid command code .
sed: 1: "./examples/go_test.go": invalid command code .
sed: 1: "./examples/base_test.go": invalid command code .
sed: 1: "./examples/python/requi ...": invalid command code .
sed: 1: "./examples/python/.giti ...": invalid command code .
sed: 1: "./examples/python/Pulum ...": invalid command code .
sed: 1: "./examples/python/__mai ...": invalid command code .
sed: 1: "./examples/dotnet_test.go": invalid command code .
sed: 1: "./examples/dotnet/.giti ...": invalid command code .
sed: 1: "./examples/dotnet/provi ...": invalid command code .
sed: 1: "./examples/dotnet/Pulum ...": invalid command code .
sed: 1: "./examples/dotnet/Progr ...": invalid command code .
sed: 1: "./examples/nodejs_test.go": invalid command code .
sed: 1: "./examples/python_test.go": invalid command code .
sed: 1: "./examples/yaml/README.md": invalid command code .
sed: 1: "./examples/yaml/Pulumi. ...": invalid command code .
sed: 1: "./go.mod": invalid command code .
sed: 1: "./LICENSE": invalid command code .
sed: 1: "./CODE-OF-CONDUCT.md": invalid command code .
sed: 1: "./Makefile": invalid command code .
sed: 1: "./tests/provider_test.go": invalid command code .
sed: 1: "./provider/random_resou ...": invalid command code .
sed: 1: "./provider/provider.go": invalid command code .
sed: 1: "./provider/cmd/pulumi-r ...": invalid command code .
sed: 1: "./provider/cmd/pulumi-r ...": invalid command code .
sed: 1: "./provider/random_compo ...": invalid command code .
sed: 1: "./provider/random_resou ...": invalid command code .
sed: 1: "./README.md": invalid command code .
sed: 1: "./mise.toml": invalid command code .
sed: 1: "./examples/java_test.go": invalid command code .
sed: 1: "./examples/testdata/rec ...": invalid command code .
sed: 1: "./examples/testdata/rec ...": invalid command code .
sed: 1: "./examples/nodejs/.giti ...": invalid command code .
sed: 1: "./examples/nodejs/packa ...": invalid command code .
sed: 1: "./examples/nodejs/tscon ...": invalid command code .
sed: 1: "./examples/nodejs/index.ts": invalid command code .
sed: 1: "./examples/nodejs/Pulum ...": invalid command code .
sed: 1: "./examples/go/go.mod": invalid command code .
sed: 1: "./examples/go/Pulumi.yaml": invalid command code .
sed: 1: "./examples/go/main.go": invalid command code .
sed: 1: "./examples/yaml_test.go": invalid command code .
sed: 1: "./examples/go_test.go": invalid command code .
sed: 1: "./examples/base_test.go": invalid command code .
sed: 1: "./examples/python/requi ...": invalid command code .
sed: 1: "./examples/python/.giti ...": invalid command code .
sed: 1: "./examples/python/Pulum ...": invalid command code .
sed: 1: "./examples/python/__mai ...": invalid command code .
sed: 1: "./examples/dotnet_test.go": invalid command code .
sed: 1: "./examples/dotnet/.giti ...": invalid command code .
sed: 1: "./examples/dotnet/provi ...": invalid command code .
sed: 1: "./examples/dotnet/Pulum ...": invalid command code .
sed: 1: "./examples/dotnet/Progr ...": invalid command code .
sed: 1: "./examples/nodejs_test.go": invalid command code .
sed: 1: "./examples/python_test.go": invalid command code .
sed: 1: "./examples/yaml/README.md": invalid command code .
sed: 1: "./examples/yaml/Pulumi. ...": invalid command code .

Affected Resource(s)

No response

Output of pulumi about

CLI
Version      3.191.0
Go Version   go1.25.0
Go Compiler  gc

Host
OS       darwin
Version  15.4.1
Arch     arm64

Backend
Name         <...>
URL            file://~
User           <...>
Organizations
Token type     personal

Additional context

No response

Contributing

Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugSome behavior is incorrect or out of spec

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions