From 7021975230c2eab065389e5e5bb2483241fd41c8 Mon Sep 17 00:00:00 2001 From: Kai-Chu Chung Date: Wed, 6 Sep 2023 23:27:57 +0800 Subject: [PATCH] refactor(template): import partials template --- _example/.github/workflows/release.yml | 42 ++++--- .../.github/workflows/release_auto_update.yml | 42 ++++--- cmd/githubAction.go | 3 + generator/githubactions.go | 9 ++ template/bindata.go | 115 ++++++++++++++---- template/template.go | 14 +++ template/tmpl/partials/step_build_pack.tmpl | 17 +++ template/tmpl/partials/step_build_sign.tmpl | 50 ++++++++ template/tmpl/partials/step_install.tmpl | 10 ++ template/tmpl/release.yml.tmpl | 92 +------------- 10 files changed, 251 insertions(+), 143 deletions(-) create mode 100644 template/tmpl/partials/step_build_pack.tmpl create mode 100644 template/tmpl/partials/step_build_sign.tmpl create mode 100644 template/tmpl/partials/step_install.tmpl diff --git a/_example/.github/workflows/release.yml b/_example/.github/workflows/release.yml index 67c04bf..f302630 100755 --- a/_example/.github/workflows/release.yml +++ b/_example/.github/workflows/release.yml @@ -13,19 +13,35 @@ jobs: runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v2 + - name: Parse Event + run: | + echo "tag=$(jq -r '.release.tag_name' "${GITHUB_EVENT_PATH}" | sed s/^v//)" >> $GITHUB_ENV - name: Install Go if: success() uses: actions/setup-go@v2 with: go-version: ${{ matrix.go-version }} - name: Run unit tests - go test -v -race -cover -coverprofile coverage.txt -covermode=atomic ./... + run: go test -v -race -cover -coverprofile coverage.txt -covermode=atomic ./... - name: update codecov run: | - CODECOV_TOKEN="${{ secrets.CODECOV_TOKEN }}" bash <(curl -s https://codecov.io/bash) - - name: Parse Event + CODECOV_TOKEN="${{ secrets.CODECOV_TOKEN }}" bash <(curl -s https://codecov.io/bash) + - name: Build and pack run: | - echo "tag=$(jq -r '.release.tag_name' "${GITHUB_EVENT_PATH}" | sed s/^v//)" >> $GITHUB_ENV + # build package + GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=false" -o exe_amd64 + GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=false" -o exe_arm64 + lipo -create -output .workflow/exe exe_amd64 exe_arm64 + rm exe_amd64 + rm exe_arm64 + + # pack + cd .workflow + plutil -replace version -string "${{ env.tag }}" info.plist + zip -r ../"AkTest-${{ env.tag }}.alfredworkflow_" . + cd .. + + echo "artifact=$(echo "AkTest-${{ env.tag }}.alfredworkflow_")" >> $GITHUB_ENV - name: Import Code-Signing Certificates uses: Apple-Actions/import-codesign-certs@v1 with: @@ -37,14 +53,6 @@ jobs: run: | brew tap mitchellh/gon brew install mitchellh/gon/gon - - name: Build and pack - run: | - # build package - GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=false" -o exe_amd64 - GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=false" -o exe_arm64 - lipo -create -output .workflow/exe exe_amd64 exe_arm64 - rm exe_amd64 - rm exe_arm64 - name: code sign and notarize env: AC_USERNAME: "${{ secrets.AC_USERNAME }}" @@ -61,16 +69,16 @@ jobs: } EOF gon -log-level=debug -log-json ./gon.json - + # pack alfredworkflow cd .workflow plutil -replace version -string "${{ env.tag }}" info.plist zip -r ../"AkTest-${{ env.tag }}.alfredworkflow_" . cd .. - + # zip alfredworkflow as zip archive for notarize zip -r "AkTest-${{ env.tag }}.alfredworkflow.zip" "AkTest-${{ env.tag }}.alfredworkflow_" - + # gon notarize cat <> notarize.json { @@ -82,8 +90,8 @@ jobs: } EOF gon -log-level=debug -log-json ./notarize.json - - echo "artifact=$(echo "AkTest-${{ env.tag }}.alfredworkflow_")" >> $GITHUB_ENV + + echo "artifact=$(echo "AkTest-${{ env.tag }}.alfredworkflow_")" >> $GITHUB_ENV - uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ github.event.release.upload_url }} diff --git a/_example/.github/workflows/release_auto_update.yml b/_example/.github/workflows/release_auto_update.yml index 403c7ad..944386c 100755 --- a/_example/.github/workflows/release_auto_update.yml +++ b/_example/.github/workflows/release_auto_update.yml @@ -13,19 +13,35 @@ jobs: runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v2 + - name: Parse Event + run: | + echo "tag=$(jq -r '.release.tag_name' "${GITHUB_EVENT_PATH}" | sed s/^v//)" >> $GITHUB_ENV - name: Install Go if: success() uses: actions/setup-go@v2 with: go-version: ${{ matrix.go-version }} - name: Run unit tests - go test -v -race -cover -coverprofile coverage.txt -covermode=atomic ./... + run: go test -v -race -cover -coverprofile coverage.txt -covermode=atomic ./... - name: update codecov run: | - CODECOV_TOKEN="${{ secrets.CODECOV_TOKEN }}" bash <(curl -s https://codecov.io/bash) - - name: Parse Event + CODECOV_TOKEN="${{ secrets.CODECOV_TOKEN }}" bash <(curl -s https://codecov.io/bash) + - name: Build and pack run: | - echo "tag=$(jq -r '.release.tag_name' "${GITHUB_EVENT_PATH}" | sed s/^v//)" >> $GITHUB_ENV + # build package + GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=true" -o exe_amd64 + GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=true" -o exe_arm64 + lipo -create -output .workflow/exe exe_amd64 exe_arm64 + rm exe_amd64 + rm exe_arm64 + + # pack + cd .workflow + plutil -replace version -string "${{ env.tag }}" info.plist + zip -r ../"AkTest_auto_update-${{ env.tag }}.alfredworkflow" . + cd .. + + echo "artifact=$(echo "AkTest_auto_update-${{ env.tag }}.alfredworkflow")" >> $GITHUB_ENV - name: Import Code-Signing Certificates uses: Apple-Actions/import-codesign-certs@v1 with: @@ -37,14 +53,6 @@ jobs: run: | brew tap mitchellh/gon brew install mitchellh/gon/gon - - name: Build and pack - run: | - # build package - GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=true" -o exe_amd64 - GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X github.com/xxx/ak-test/cmd.EnabledAutoUpdate=true" -o exe_arm64 - lipo -create -output .workflow/exe exe_amd64 exe_arm64 - rm exe_amd64 - rm exe_arm64 - name: code sign and notarize env: AC_USERNAME: "${{ secrets.AC_USERNAME }}" @@ -61,16 +69,16 @@ jobs: } EOF gon -log-level=debug -log-json ./gon.json - + # pack alfredworkflow cd .workflow plutil -replace version -string "${{ env.tag }}" info.plist zip -r ../"AkTest_auto_update-${{ env.tag }}.alfredworkflow" . cd .. - + # zip alfredworkflow as zip archive for notarize zip -r "AkTest_auto_update-${{ env.tag }}.alfredworkflow.zip" "AkTest_auto_update-${{ env.tag }}.alfredworkflow" - + # gon notarize cat <> notarize.json { @@ -82,8 +90,8 @@ jobs: } EOF gon -log-level=debug -log-json ./notarize.json - - echo "artifact=$(echo "AkTest_auto_update-${{ env.tag }}.alfredworkflow")" >> $GITHUB_ENV + + echo "artifact=$(echo "AkTest_auto_update-${{ env.tag }}.alfredworkflow")" >> $GITHUB_ENV - uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ github.event.release.upload_url }} diff --git a/cmd/githubAction.go b/cmd/githubAction.go index 7c68e52..0a3825b 100644 --- a/cmd/githubAction.go +++ b/cmd/githubAction.go @@ -18,10 +18,12 @@ var githubActionCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { s, _ := cmd.Flags().GetBool("sign") c, _ := cmd.Flags().GetBool("codecov") + g, _ := cmd.Flags().GetBool("golang") if err := generator.NewGithubActionGenerator( generator.WithEnabled_Code_Sign_Notarize(s), generator.WithEnabled_Codecov(c), + generator.WithEnabled_Golang(g), ).Generate(); err != nil { logrus.Fatal(err) } @@ -32,4 +34,5 @@ func init() { addCmd.AddCommand(githubActionCmd) githubActionCmd.PersistentFlags().BoolP("sign", "s", false, "enable code sign and notarize") githubActionCmd.PersistentFlags().BoolP("codecov", "c", false, "enable codecov") + githubActionCmd.PersistentFlags().BoolP("golang", "g", false, "enable goland") } diff --git a/generator/githubactions.go b/generator/githubactions.go index da17695..358426f 100644 --- a/generator/githubactions.go +++ b/generator/githubactions.go @@ -18,6 +18,7 @@ import ( type GithubActionGenerator struct { Enabled_Code_Sign_Notarize bool Enabled_Codecov bool + Enabled_Golang bool } func WithEnabled_Code_Sign_Notarize(enabled bool) func(*GithubActionGenerator) { @@ -32,6 +33,12 @@ func WithEnabled_Codecov(enabled bool) func(*GithubActionGenerator) { } } +func WithEnabled_Golang(enabled bool) func(*GithubActionGenerator) { + return func(g *GithubActionGenerator) { + g.Enabled_Golang = enabled + } +} + func (gg *GithubActionGenerator) Generate() error { te := template.NewEngine() defaultFs := fs.Get() @@ -48,6 +55,7 @@ func (gg *GithubActionGenerator) Generate() error { "ReleaseName": "Release", "EnabledCodeSign": gg.Enabled_Code_Sign_Notarize, "EnabledCodecov": gg.Enabled_Codecov, + "EnabledGolang": gg.Enabled_Golang, "WorkflowName": strings.ReplaceAll(viper.GetString("workflow.name"), " ", ""), "Ldflags": fmt.Sprintf("-X %s/cmd.EnabledAutoUpdate=false", viper.GetString("go_mod_package")), "BundleID": viper.GetString("workflow.bundle_id"), @@ -71,6 +79,7 @@ func (gg *GithubActionGenerator) Generate() error { "ReleaseName": "Release_auto_update", "EnabledCodeSign": gg.Enabled_Code_Sign_Notarize, "EnabledCodecov": gg.Enabled_Codecov, + "EnabledGolang": gg.Enabled_Golang, "WorkflowName": fmt.Sprintf("%s_auto_update", strings.ReplaceAll(viper.GetString("workflow.name"), " ", "")), "Ldflags": fmt.Sprintf("-X %s/cmd.EnabledAutoUpdate=true", viper.GetString("go_mod_package")), "BundleID": viper.GetString("workflow.bundle_id"), diff --git a/template/bindata.go b/template/bindata.go index f9527ea..0e906c1 100644 --- a/template/bindata.go +++ b/template/bindata.go @@ -8,7 +8,10 @@ // tmpl/dotenv.tmpl (157B) // tmpl/info.plist.tmpl (808B) // tmpl/makefile.tmpl (982B) -// tmpl/release.yml.tmpl (4.315kB) +// tmpl/partials/step_build_pack.tmpl (873B) +// tmpl/partials/step_build_sign.tmpl (2.112kB) +// tmpl/partials/step_install.tmpl (455B) +// tmpl/release.yml.tmpl (709B) // icons/update-available.png (3.856kB) package template @@ -238,7 +241,67 @@ func tmplMakefileTmpl() (*asset, error) { return a, nil } -var _tmplReleaseYmlTmpl = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\xdd\x6e\xdb\x38\x13\xbd\xcf\x53\x0c\xd4\x00\x4d\x81\x8f\xf4\x97\x20\x28\x0a\xa3\x29\xea\x38\x6a\x12\xb4\x1b\x1b\x71\x9a\x5e\x04\x5d\x97\x96\xc6\x32\x5b\x9a\x64\x49\xca\x4e\xab\xfa\xdd\x17\xd4\x9f\x25\xdb\xd9\x62\x8b\x00\xbb\x58\xac\x6f\x2c\x71\x0e\x67\x0e\x87\x33\x87\xa2\x64\x73\xec\x42\x96\xd1\x6b\x14\xc8\x2c\x5e\xb1\x39\xae\x56\x7b\x4a\x76\xf7\x00\x4c\x31\xe6\x1f\x01\xdc\x37\x8d\xb6\x78\x04\x20\xa0\xd3\x89\xe0\x76\x86\xf1\xde\xde\x67\x35\xc9\x0d\x93\x94\x8b\xb8\x40\x58\x67\x98\xc3\xe4\x5b\x85\x9f\x33\x67\xf8\x7d\xf5\x06\x90\x28\xb2\x40\x63\xb9\x92\x5d\xb8\x3b\xa4\x47\xff\xa7\xf7\x1f\x6b\xa3\x16\xcc\x4d\x95\x99\x77\xe1\x6e\xce\xa2\xc1\x88\x08\xe6\xd0\xba\x02\x60\x52\x69\x89\x9f\x96\x65\x9f\xf6\xb3\xac\xf4\x4c\xab\x39\xb0\x5a\x7d\x5a\xad\x4a\x0e\xa8\x1b\x84\x53\x8b\xb6\x0b\x2c\x72\x5c\x49\xdb\x89\x66\x18\x7d\x51\xa9\x7b\xbd\x38\xaa\x11\x45\x2e\x2e\xa5\x75\x4c\x08\x38\x57\x35\x21\x3e\xed\x82\x4d\xa3\x08\xad\x3d\x78\x56\x8f\xb6\x1d\x5a\x74\xa9\x26\x89\x5a\x3b\x04\x58\x72\x37\x5b\xaf\xb9\xbd\xea\x36\xfd\xb5\xa5\xb1\x80\x35\xa7\xeb\x54\x42\x2a\xb9\x03\x9f\x07\x5b\x7b\x34\xa9\xec\x42\xa2\xf2\x51\x20\x0b\x20\x86\x45\x08\x24\x52\x0b\x34\xe5\x9f\x36\x6a\xca\x05\x42\xfe\xc2\x12\xa4\xee\xde\x95\xa6\xb9\x8a\xf1\x84\x39\x35\xe7\x11\xd0\x0e\xa5\x34\xcb\xf8\x14\xf0\x2b\xd0\x50\xb2\x89\xc0\xb8\xaf\x62\x8c\xd4\x02\x9c\x49\x71\x8b\x52\xaa\x63\xe6\xbc\xdf\x1c\xd3\xa6\xf4\xa3\xb1\xe6\xfe\xe0\x2c\xec\x0f\x6e\xc7\x37\x83\xb7\xe1\xd5\x49\x50\x2e\xdb\x62\x64\xd0\x59\xda\xb2\x16\x4b\x0f\x60\xc2\xec\x0c\x5e\x1e\x44\xa9\x11\x40\x2c\xcc\x9c\xd3\xb6\xdb\xe9\x94\xa1\x28\x57\x1d\x8f\x78\x96\x65\x28\xe3\x2d\x5e\x43\x66\x2c\x42\xb8\x40\xe9\x1e\x26\x85\xd1\x4c\x41\xe0\x58\x72\xb2\x7f\xf0\xf9\x2b\x10\x03\x4f\x69\x59\xec\xd4\xb1\x64\xec\x5d\x3d\x85\x60\x3f\x3b\xbf\xbc\xb9\x78\x7f\x3a\x0e\x6f\xc3\xab\x9b\xf1\xb0\x77\x73\xb1\x0a\xe0\x07\x58\x8c\xc1\x76\x7e\x5f\x74\x3a\xcf\x02\x78\xf5\x0a\xf6\x2b\xd8\xd5\xed\xae\x1c\x8e\x78\x22\x61\xca\x84\xdd\xce\xe2\xa9\x6f\x19\x60\x32\x06\xcd\xa2\x2f\x0f\x13\x7e\x52\x34\x57\x8e\x62\x09\x36\x2c\xe7\x83\xc1\xe8\x24\x66\x66\xc9\x25\x9c\x0f\x7a\xd7\xfd\x8b\x13\x36\x8f\x9f\x1f\xfb\xba\x28\xe6\x10\x11\x4f\x05\x4b\x2c\x04\xc4\x02\x59\xe6\x0c\xe9\xbb\x62\x6c\xb5\xf2\xbd\x5f\xbf\x94\x29\x0d\x80\x28\xc0\x7b\x1c\xe7\x9e\x7e\x12\xcc\xcc\x1f\x2b\x98\xf7\xd4\x08\x26\xb8\x56\x40\x22\x83\xbe\xce\x88\x4a\x9d\x4e\x1d\xd0\xa5\x32\x5f\xa6\x42\x2d\x3b\x78\x8f\x6b\x8e\x3b\x1d\x98\x39\xec\x5c\x45\x3d\x9e\xe3\x5b\x59\x6e\xed\x02\x40\x14\xaf\x03\x36\x86\xb5\x48\x1d\x17\x40\x0c\x6a\xe1\x3b\xae\x6a\x5d\x62\x9d\xe1\x32\x81\xaa\xca\x51\x2e\x7c\x39\x55\x75\xcd\xe5\x54\x51\x2d\xb8\x75\x0d\x5f\xdf\xb9\xf6\xf5\x47\x69\x27\xc8\x32\xfa\xa1\x0c\x56\xc8\x30\xd9\xe5\x87\x32\x31\x35\x18\x57\xb4\xca\x49\xcc\xa8\x54\xc6\xe1\xbd\xf3\x81\xe8\xc6\x12\xe8\xde\x56\xed\x33\xe3\xf8\x94\x45\xee\x64\xff\xa0\x18\x78\xac\xe0\x3b\x3a\x02\x77\x55\xfe\xe5\x5c\x2b\xe3\xc0\xf7\x07\xf1\x0d\xe2\xf3\xd6\x47\xcf\x8a\x47\x5e\xee\x37\x64\xb6\xa7\xb5\x40\xd2\x2b\xc5\x96\xe7\x93\x89\x57\x04\xcb\x13\x49\x22\x34\xce\xbe\x5e\x1c\x3e\xa8\xbc\x4f\xe0\x66\x86\x10\x35\xfc\x03\x97\xc0\x60\xf8\xb6\x3f\x3a\x3c\x82\x5c\x22\x51\x7a\x7f\x31\x30\x0b\xcc\x6b\x10\x3e\x3f\x86\x62\x43\x9b\x5b\x7f\x78\x44\x3c\x9a\x14\x80\x2e\x6c\x2a\x5a\x6f\x38\x7c\x17\x8e\xcf\xc2\xdb\xf0\xdd\x60\x18\x5e\x8f\xfb\xe1\xf5\xcd\xe5\x9b\xcb\x7e\xef\x26\x1c\x0f\x0f\x8f\xc6\xa7\xbd\x51\xf8\xfc\xb8\x2c\x89\x2d\x86\x9a\x59\xbb\x54\x26\xf6\xab\x8e\xc1\x29\x28\x56\x0a\x6e\x86\x4d\xae\x74\x83\x51\x35\xed\x2f\xd2\xe9\x8d\x46\x1f\x06\xd7\x67\x6d\x32\x9b\xe7\x60\xa2\x24\x2c\x38\x83\x0b\x35\xc7\x53\x83\x4b\x98\x2a\x93\xcb\x3e\xd8\x72\xdb\xbc\x7c\x31\xad\x41\x2a\xc7\x0c\xff\xce\xfc\x1e\x3d\x2c\x65\x13\xef\xc3\x31\x0d\x73\xee\xa2\x19\x0a\x31\xeb\x24\x0d\x7c\x09\xe0\x65\xf4\x16\xa8\x01\xfc\x4f\x40\xff\x31\x02\xda\xde\x90\xba\x32\xf2\x4d\x29\x4b\x62\x9d\x6f\x94\x8b\x66\x5f\xf6\xfa\xe3\xf7\xa3\xf0\xfa\xaa\xf7\x5b\xb8\xa3\x76\xd7\xc6\xed\x7e\xe9\xf5\xeb\xfa\xdd\x39\x73\x77\x71\xef\xac\x0c\x5f\xe1\x35\xed\xa6\x74\x32\x07\x2f\x5f\x86\x83\x37\x5e\xd1\x12\x25\xe9\x67\xdb\x2a\xd4\xac\xf1\xec\x7f\x81\x55\xa9\x89\x30\x80\x2e\xdc\x05\xad\x3c\x07\x1f\xff\xb7\x89\x9d\xa4\x32\x16\x38\xe6\xb1\x87\x7b\xf5\x3d\xcd\x07\x2e\xcf\x56\xab\x60\x0b\xec\x89\x05\xd0\xdd\x0c\x98\xdb\x98\xd6\xc2\x4b\x1a\x57\x72\xcc\x63\x94\x8e\xbb\x6f\x95\xcf\xde\xda\x76\x59\x9a\xda\x59\xf4\xbf\xd5\xde\xee\xe7\x70\xf0\xa6\xf5\xed\x2a\x81\x08\x95\x10\x81\x0b\x14\x27\x31\x4e\xd2\xa4\x18\xf0\x59\x01\xda\xa9\x13\xb4\x75\xa0\x42\xfb\xd0\xf8\x97\x9f\xaf\x4f\xf2\x90\x6d\x27\xfe\x4c\xc9\x47\x4d\x34\xe3\x0b\xcc\x25\x74\xab\x35\x6a\xae\xbf\x46\x94\x7e\xe7\x3a\x78\xbc\x73\x7c\x6f\xab\x45\x76\x10\x6e\x75\x48\x65\xff\x69\x9b\x54\xc0\xa0\x0b\x77\x3b\x4b\x5a\x33\x37\x0b\xaa\xae\x1e\x7e\x38\xf3\x8c\x3b\xbf\x9e\x94\xcd\x76\x82\x76\xff\xfd\xb4\xfd\x72\xbc\x75\x4c\x0b\x4f\x39\xff\x90\xdf\x6c\xa1\x8f\x8f\xd3\x43\xed\x14\xfe\xbd\x1f\x6d\xad\xbb\x55\xf1\x11\x66\x67\x2a\x51\x2f\x8e\x0e\x8f\x5f\x74\xca\x6b\x2f\x49\xb5\x50\x2c\x26\xe5\xe5\x89\x30\x6b\xd1\xfd\xd9\x87\x58\x81\x1f\xa7\x46\xd4\x57\xe0\x84\xbb\x59\x3a\xa1\xe8\xaf\x6c\xf5\x2d\x6c\x8d\x6b\x5d\x88\xfd\x2f\x8f\x31\xf6\x35\xd2\x6d\x29\x41\x95\x9d\x4a\xf1\xff\x08\x00\x00\xff\xff\x6c\x0e\x08\x84\xdb\x10\x00\x00" +var _tmplPartialsStep_build_packTmpl = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x53\x3d\x6f\xdb\x30\x10\xdd\xf3\x2b\x1e\x54\x0f\xed\x40\x66\x29\x3a\x04\x70\x80\x26\x30\x9c\x02\x45\x0c\x34\xfd\x18\x9d\x8b\x78\x52\x89\x50\x24\x41\x51\xb1\x51\x96\xff\xbd\x90\xac\xd8\x4a\x6a\x20\x8b\xb9\xe9\x89\xef\xe3\xa4\x77\xe8\x8f\x80\xa5\x86\x2f\x80\xab\x4e\x1b\x05\xb2\x0a\x9e\xca\xc7\x33\x8c\x27\x74\xf6\x02\x7f\x53\xd2\x15\xe4\xc2\xd2\x83\x61\xb5\x74\x86\x6c\x9d\xf3\xfe\x0e\xf0\x0e\x0f\x03\xbd\xa7\x52\xcd\x93\x37\xcb\xd5\xea\x6e\xae\x28\x6c\xb4\xc5\x72\xf5\xf9\xdb\xf5\xcd\x9c\x1a\xf5\xe9\x23\x6a\x37\x72\x84\x51\x95\xa1\xba\x45\x21\x5a\x88\xcd\xce\xea\xeb\x0e\xcb\x19\x29\x1d\x1e\x52\x62\xab\x72\x2e\x20\x1c\x78\xcb\xeb\x41\xe9\x0d\xb3\xd0\x9c\xca\xac\x57\x9a\x98\x19\xed\x1d\x44\x19\x98\x22\x43\xb8\x2e\xfa\x2e\x42\x6e\x5c\x78\xac\x8c\xdb\x9c\xf3\x96\x0f\x19\x8f\x0a\x84\x06\x47\xa7\xd8\xe3\xaf\xee\x8f\x81\x5e\x7c\xf6\x17\xff\x0a\x28\xd5\x21\xc1\x04\xf6\xa6\x8b\xda\x40\x04\xf6\x86\x4a\xc6\x13\x87\x56\x3b\x0b\xd1\xc6\xa0\x6d\x8d\x22\xa5\xfb\x59\x4a\x60\xfb\x24\x23\xd5\xc8\xf9\xbe\x1f\x5c\xdb\xca\x49\x6f\x74\x1b\x27\x5a\x7f\xb4\x87\x08\x90\xf2\xbc\x48\x49\xfe\x1a\xcd\x6e\xa9\xe1\x9c\xc5\x31\x1d\x49\xa6\x0a\xac\x9e\x63\x8d\x24\x0a\xae\xb3\x6a\xb1\x8d\xbd\x91\x7c\x35\x82\x3c\x9b\x00\x5c\xfe\x76\x28\x28\x44\x5d\x51\x19\xe7\xb3\xf7\x3b\xe0\x54\xe6\x1f\x0a\x5c\x5e\x62\xb6\xfc\xf2\xfd\xe6\xc7\xd5\x7a\x71\xfb\x73\xe8\x44\xbf\x07\xcf\x7d\xbf\x76\x8a\xef\x74\x6d\xff\x5f\x80\x94\x22\x37\xde\xf4\x05\x28\xda\xc8\x7e\x3d\x94\x6c\xdd\xea\xda\x16\x90\xfb\x0a\xfd\x0b\x00\x00\xff\xff\x56\xf0\xa6\x5a\x69\x03\x00\x00" + +func tmplPartialsStep_build_packTmplBytes() ([]byte, error) { + return bindataRead( + _tmplPartialsStep_build_packTmpl, + "tmpl/partials/step_build_pack.tmpl", + ) +} + +func tmplPartialsStep_build_packTmpl() (*asset, error) { + bytes, err := tmplPartialsStep_build_packTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "tmpl/partials/step_build_pack.tmpl", size: 873, mode: os.FileMode(0644), modTime: time.Unix(1693830574, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0x38, 0xdd, 0x70, 0xaa, 0xe7, 0x1, 0x24, 0x5, 0x78, 0xbf, 0x23, 0x2b, 0xc5, 0x3f, 0x1c, 0x66, 0x6f, 0xa9, 0x74, 0xdd, 0xed, 0xe6, 0xf, 0x95, 0x4, 0x1b, 0x54, 0x54, 0x4, 0x75, 0x76}} + return a, nil +} + +var _tmplPartialsStep_build_signTmpl = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x55\xd1\x6e\xea\x38\x10\x7d\xef\x57\x8c\x72\xfb\xb0\x2b\x6d\x82\xa8\xae\xee\x43\x74\x5b\x6d\x80\x74\x8b\xb6\x5b\x10\xd0\xf6\xa1\xaa\x52\x93\x0c\x89\xb7\xc6\xb6\x6c\x03\xdd\xb2\xf9\xf7\x95\x43\x48\x13\x48\x55\x6d\x55\x3f\x19\xcf\x99\xf1\x99\x33\x3e\x01\xec\x72\x81\x93\x25\xfa\x30\x5c\x4a\xa1\x0c\xf4\x45\x82\xee\x94\xa6\x9c\xf2\x14\xfa\xa8\x0c\x5d\xd0\x98\x18\xd4\x27\x50\xae\x95\x46\xed\x43\x20\x25\x43\x37\x88\x0d\x15\x5c\x77\x68\x91\xec\xc6\x22\x41\x4d\x53\xee\xc6\xa8\x8c\xfe\x7d\xdd\xad\x92\x36\xd4\x64\x7e\xf5\x0b\xe0\x1b\xcc\x32\x84\xb8\x56\x1f\x28\x07\x02\xe3\x3f\xfb\xd3\xee\x19\x2c\x28\x43\x40\x6e\xeb\x25\x40\x34\x10\x98\x13\x8d\x3f\xbe\x83\x36\x8a\xf2\xb4\x56\x48\x76\xcf\x5c\x8b\x76\x77\x00\x1f\x9c\xed\xf6\xe9\x74\xbb\x05\x8d\xb1\x42\xa3\xbd\x60\x3c\xbe\x0e\xa3\x41\x78\x17\x5e\x8f\xc6\xe1\x24\xea\x87\x93\xd9\xf0\x72\xd8\x0f\x66\x61\x34\xee\x9e\x45\xbd\x60\x1a\xfe\xf8\x0e\x79\xfe\x94\xe7\xce\x11\x43\x49\xb4\xde\x08\x95\xd8\xae\x13\x30\x02\x76\x9d\x82\xc9\xb0\xce\xd5\x3b\x60\xb4\x4f\xfb\x9f\x74\x82\xe9\xf4\x7e\x34\x19\x34\xc9\x54\x03\xe2\xda\x10\xc6\x20\x15\x1c\xd6\x94\xc0\x95\x58\x62\x4f\xe1\x06\x16\x42\x81\x55\x0a\x74\x39\x36\xc2\x13\x20\x52\x02\x17\x86\x28\xfa\x4a\xec\x8c\x2a\x82\x6a\xc5\x7d\xf8\xb7\xc6\x77\x6e\x6b\x18\x22\x61\x49\x4d\x9c\x21\x63\x59\x27\xad\xe1\x4b\x00\x2d\x6f\x6f\x80\x6a\xc0\x3d\xcb\x8a\x48\xc1\xa2\x64\x80\x55\x35\xe4\xeb\xfa\x33\x08\xfa\xd1\xed\x34\x9c\xdc\x04\x7f\x85\x2d\x52\xbd\x05\x8f\xc7\x13\xf4\x2b\xb9\x5a\x33\xdb\xb5\x6c\x69\xff\x5b\x21\x68\x45\xbb\x16\x89\x89\x81\x9f\x3f\xc3\xd1\x25\x5c\x5c\x58\x90\xf7\xb7\x6e\xe8\xb2\xad\xed\xed\x72\xb4\x58\xa9\x18\x1d\xf0\xe1\xc1\xf1\x36\x42\x3d\x2f\x98\xd8\x74\xf0\x05\x9d\xc7\xdf\x0e\xb1\xf3\x15\x4f\x18\x46\x34\xb1\x70\x67\xbb\xf5\x7a\xc5\xc1\x70\x90\xe7\xce\x11\xd8\x12\x73\xc0\x3f\xbc\xb0\x88\x11\x29\x99\x75\x10\x15\x3c\xa2\x09\x72\x43\xcd\x3f\xfb\x9a\xc1\x5b\x6c\x58\x86\x9a\x2a\xda\x95\x9f\xb4\xef\xc3\xd1\x65\xed\x97\x15\xc9\x65\x22\x75\x19\xae\x91\x9d\x27\x38\x5f\xa5\xbb\x03\xab\x0a\x78\x9d\x16\x81\x1a\x2a\x4b\x12\x3f\x03\x61\x0b\x85\xc9\x5e\x9a\xba\xd6\x09\x78\x2d\xc7\x92\xad\x0c\x65\xe0\x2a\x94\x8c\xc4\x08\x6b\x54\x9a\x5a\x26\xbb\xef\x40\x35\x78\xe4\x6b\xcf\x90\xb4\x1c\x36\x50\xbe\x10\x9e\x64\x54\x9b\x5a\xad\x57\x2a\xc1\x55\xe0\x79\x1d\x2b\xcd\x7d\x79\xd9\x0d\x59\x62\x9e\xbb\x6d\x75\xbc\x26\xdb\x32\x89\x28\xb1\xe2\x49\xf8\x62\xec\x45\xde\x41\x0b\xde\x7b\xdd\xdb\xcb\x9b\xe5\xec\x67\xad\x38\x55\x71\x46\xd7\x58\xb8\xf8\xc8\x2e\x15\xeb\xcf\x51\xf6\x5e\xa9\x74\x3e\x99\xdb\xd2\xee\x49\x6b\x6b\xf6\x65\xb4\x10\x6f\xb8\x67\x1f\xff\xd0\x42\x7b\xa0\xe3\xc3\x43\xeb\x73\x97\xc4\x64\xce\xde\xf1\xe3\xfb\x81\x65\xde\xf9\xbc\x38\x87\x56\x83\xa6\x37\x3f\xb4\x66\x81\xd7\x86\x48\x66\x29\x2f\x08\xd3\x78\x68\xaf\xc7\xaf\xf1\xd7\x7b\x12\xd6\xb6\x18\x67\x02\x1c\x62\xff\x53\x49\x6c\xce\x4f\x7f\xd9\x1d\x7c\xd5\xf8\x7f\x75\xec\x28\x4f\xff\x18\xce\xae\x6e\x7b\x51\x78\x73\xf7\x5f\x00\x00\x00\xff\xff\xbc\x65\x4e\x2a\x40\x08\x00\x00" + +func tmplPartialsStep_build_signTmplBytes() ([]byte, error) { + return bindataRead( + _tmplPartialsStep_build_signTmpl, + "tmpl/partials/step_build_sign.tmpl", + ) +} + +func tmplPartialsStep_build_signTmpl() (*asset, error) { + bytes, err := tmplPartialsStep_build_signTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "tmpl/partials/step_build_sign.tmpl", size: 2112, mode: os.FileMode(0644), modTime: time.Unix(1693829860, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0x9a, 0x61, 0xa3, 0xf1, 0xdf, 0xd7, 0x97, 0xed, 0x60, 0x1d, 0x40, 0xdb, 0x56, 0xb1, 0xee, 0xc3, 0x2b, 0x17, 0x98, 0xb7, 0x34, 0x9c, 0xf8, 0xc7, 0xc9, 0x1a, 0x20, 0x8b, 0xed, 0x5, 0x67}} + return a, nil +} + +var _tmplPartialsStep_installTmpl = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x4f\x4d\x6b\xe3\x30\x10\xbd\xef\xaf\x78\x84\x3d\x24\x07\xcb\xb0\x47\xb1\x81\x42\x1a\x4a\x29\x34\x50\x4a\xaf\x8d\x22\x4f\x1c\x81\x2d\xb9\x9a\x91\x1b\x50\xfd\xdf\x4b\x52\xd7\x69\xe8\x5c\xc4\xcc\x7b\x7a\x1f\x38\x4d\x01\x6f\x5a\xd2\xb8\xf7\x2c\xa6\x69\x70\x17\xfe\x60\x1c\xb7\xd7\xe0\x64\x2d\x31\xcf\x17\xd3\x35\x31\xb1\x86\xb1\xe2\x82\xe7\x92\x49\x52\x57\xd4\xe1\xa6\xff\x37\x31\xde\x9d\x1c\xf4\xb4\x01\x75\x28\x7a\x8a\xec\x82\xd7\xc8\x79\xfb\x37\x67\xb4\x46\xa2\x3b\xaa\x0b\x82\x61\xd8\x0e\xc3\xf8\xe9\x3b\xd3\x53\xf2\x48\xde\x09\x84\x58\x78\x52\x8c\xc9\x6b\xd4\xe1\x7c\x45\xd1\xa3\x88\xc6\x12\x0a\x1b\x7a\x8a\xe3\xd3\xc5\xb0\x77\x0d\xe1\xbc\x98\x9a\x94\x1c\x65\x84\xda\x50\xd1\xd2\x48\x68\x9d\x85\x2a\x95\x52\x39\xbb\x3d\xe8\x0d\x6a\xed\xcd\xae\xa1\x6a\x15\x2a\xb2\xa1\x87\xc4\x44\xbf\x22\xa5\xae\x32\x72\xd2\x3d\x73\xae\x23\x7d\xfc\xe8\xbc\xda\xdc\xae\x57\x9b\x97\xd7\xe7\xcd\xc3\xfa\x71\x39\x1b\x6b\x33\xd9\x48\xc2\xea\x0a\xfd\xaa\x3e\xc3\xce\xf0\x01\xff\xe7\x36\xc5\x06\x05\xe3\x20\xd2\xb1\x2e\xcb\xd1\x4a\xb9\x50\x9e\x18\x8b\x9c\xc9\x57\xc3\x70\xb1\xfa\x0c\x00\x00\xff\xff\xf7\xb4\x97\x3e\xc7\x01\x00\x00" + +func tmplPartialsStep_installTmplBytes() ([]byte, error) { + return bindataRead( + _tmplPartialsStep_installTmpl, + "tmpl/partials/step_install.tmpl", + ) +} + +func tmplPartialsStep_installTmpl() (*asset, error) { + bytes, err := tmplPartialsStep_installTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "tmpl/partials/step_install.tmpl", size: 455, mode: os.FileMode(0644), modTime: time.Unix(1693827920, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5c, 0xb8, 0xe, 0xeb, 0x21, 0x74, 0xd2, 0xc, 0xfe, 0x83, 0xb3, 0x7f, 0x93, 0x97, 0xf2, 0xd5, 0x8e, 0xef, 0xca, 0xca, 0xde, 0x6, 0x23, 0xb8, 0x9d, 0x91, 0x50, 0x5f, 0x57, 0xd6, 0x72, 0x55}} + return a, nil +} + +var _tmplReleaseYmlTmpl = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x91\xcf\x6e\x9c\x30\x10\x87\xef\x3c\xc5\x08\xad\x94\xf6\x80\xe9\xae\x7a\x88\x90\x1a\xa5\x95\x56\x49\x2f\xdb\xa8\xdd\xe6\x12\xa5\x64\x80\x59\x70\x62\x6c\x6a\x0f\x34\x91\xc3\xbb\x57\xfc\x59\xba\x6a\xcb\xc9\xc0\x37\x33\xfe\x7d\xa3\xb1\xa6\x04\xbc\x17\x5f\x49\x11\x3a\xda\x61\x4d\x7d\x1f\x18\x9d\x04\x00\x76\xfa\x36\x1c\x01\xf8\xa5\x21\x37\x1d\x01\x22\x68\xda\x4c\x49\x57\x51\x11\x04\x8f\x26\x1b\x7f\x64\xad\x54\xc5\x44\x38\xb6\xc8\x54\xbe\x1c\xf9\x1a\xd9\xca\xe7\xc4\x7b\x79\x00\xb1\xd5\x98\x29\x2a\xae\x8c\x42\x5d\xf6\xfd\x8c\x00\x94\x26\xea\xc8\x3a\x69\x74\x02\x77\x6b\xb1\x79\x27\x9e\xef\xbd\x27\x5d\x9c\x30\x8d\x42\x3e\x18\x5b\x27\x70\x57\x63\xfe\xe5\x5b\xa4\x90\xc9\xf1\xfd\x08\xd8\x56\xbb\x68\xa8\xf6\xfe\x61\xe5\xfd\x3c\x55\x1c\x6b\xa0\xef\x1f\xe6\x56\x8e\xa9\x39\x09\xd3\x3a\x72\x09\x60\xce\xd2\x68\x17\xe7\x15\xe5\x4f\xa6\xe5\xcb\x6e\xb3\x10\x93\xa7\x1b\xb4\x8e\x60\xdb\x91\xe6\xe5\x46\xb6\xd5\x09\xbc\x2e\xaf\x00\x94\x57\x06\x42\xc6\xf2\xc3\xea\xcd\xe3\x4f\x88\x2c\x9c\x89\xd9\xa4\x60\x2c\xd3\xa1\xd5\x19\x84\x2b\x7f\xf5\x79\x7f\xfd\xfd\x53\xba\xbd\xdd\xee\xf6\xe9\xcd\xc7\xfd\x75\x1f\xc2\x2b\x38\x2a\xc0\xc5\x3f\xba\x38\x7e\x1b\xc2\xc5\x05\xac\x8e\xd8\xee\xf6\xff\xfa\xbc\x67\xaa\x87\x8c\x04\xe1\x90\x2b\x95\xda\x31\x2a\x15\x82\xe8\xfb\xa3\xbf\x7f\xa0\x71\x59\x69\x83\xf9\xd3\xc8\xfd\xa5\xc2\x55\xa6\x34\xe7\x9b\xf5\xfb\xf3\x78\xb6\x12\xb5\x8d\x32\x58\x44\x73\x92\x08\x9d\x23\xbe\xec\xd6\x4b\xf0\x5f\x92\xab\xe4\x44\xc3\xc4\xa7\xad\x55\xcb\x3e\x4a\xc9\x55\x9b\x09\x1a\xfc\x2d\x4a\xfe\x70\x27\xfb\x99\x9e\x71\x46\xda\x20\x57\x09\x84\x73\x0f\xd2\x9d\x40\xcb\xf2\x80\x39\x4f\x05\x61\xf0\x3b\x00\x00\xff\xff\x3d\xed\x9f\x37\xc5\x02\x00\x00" func tmplReleaseYmlTmplBytes() ([]byte, error) { return bindataRead( @@ -253,8 +316,8 @@ func tmplReleaseYmlTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "tmpl/release.yml.tmpl", size: 4315, mode: os.FileMode(0644), modTime: time.Unix(1693719903, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc4, 0x9a, 0x35, 0x2e, 0x66, 0x33, 0xff, 0x46, 0x82, 0x32, 0xf0, 0x1b, 0x54, 0xaf, 0xf4, 0x78, 0x3a, 0x9a, 0x7c, 0x80, 0xb, 0xb7, 0xce, 0x26, 0x4a, 0x8c, 0xfb, 0xc8, 0x53, 0xbf, 0xf3, 0x5f}} + info := bindataFileInfo{name: "tmpl/release.yml.tmpl", size: 709, mode: os.FileMode(0644), modTime: time.Unix(1693830287, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x46, 0xcf, 0x58, 0xfb, 0xc1, 0x65, 0x94, 0x3f, 0xb3, 0x73, 0xcd, 0x48, 0x3a, 0x20, 0x57, 0x1d, 0x20, 0x87, 0x9, 0x1c, 0x8, 0x16, 0xdd, 0xa5, 0x48, 0xfd, 0xfd, 0x35, 0x44, 0x7f, 0xa6}} return a, nil } @@ -369,16 +432,19 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "tmpl/.gitignore.tmpl": tmplGitignoreTmpl, - "tmpl/ak.json.tmpl": tmplAkJsonTmpl, - "tmpl/cmd.main.tmpl": tmplCmdMainTmpl, - "tmpl/cmd.root.tmpl": tmplCmdRootTmpl, - "tmpl/cmd.update.tmpl": tmplCmdUpdateTmpl, - "tmpl/dotenv.tmpl": tmplDotenvTmpl, - "tmpl/info.plist.tmpl": tmplInfoPlistTmpl, - "tmpl/makefile.tmpl": tmplMakefileTmpl, - "tmpl/release.yml.tmpl": tmplReleaseYmlTmpl, - "icons/update-available.png": iconsUpdateAvailablePng, + "tmpl/.gitignore.tmpl": tmplGitignoreTmpl, + "tmpl/ak.json.tmpl": tmplAkJsonTmpl, + "tmpl/cmd.main.tmpl": tmplCmdMainTmpl, + "tmpl/cmd.root.tmpl": tmplCmdRootTmpl, + "tmpl/cmd.update.tmpl": tmplCmdUpdateTmpl, + "tmpl/dotenv.tmpl": tmplDotenvTmpl, + "tmpl/info.plist.tmpl": tmplInfoPlistTmpl, + "tmpl/makefile.tmpl": tmplMakefileTmpl, + "tmpl/partials/step_build_pack.tmpl": tmplPartialsStep_build_packTmpl, + "tmpl/partials/step_build_sign.tmpl": tmplPartialsStep_build_signTmpl, + "tmpl/partials/step_install.tmpl": tmplPartialsStep_installTmpl, + "tmpl/release.yml.tmpl": tmplReleaseYmlTmpl, + "icons/update-available.png": iconsUpdateAvailablePng, } // AssetDebug is true if the assets were built with the debug flag enabled. @@ -431,14 +497,19 @@ var _bintree = &bintree{nil, map[string]*bintree{ "update-available.png": {iconsUpdateAvailablePng, map[string]*bintree{}}, }}, "tmpl": {nil, map[string]*bintree{ - ".gitignore.tmpl": {tmplGitignoreTmpl, map[string]*bintree{}}, - "ak.json.tmpl": {tmplAkJsonTmpl, map[string]*bintree{}}, - "cmd.main.tmpl": {tmplCmdMainTmpl, map[string]*bintree{}}, - "cmd.root.tmpl": {tmplCmdRootTmpl, map[string]*bintree{}}, - "cmd.update.tmpl": {tmplCmdUpdateTmpl, map[string]*bintree{}}, - "dotenv.tmpl": {tmplDotenvTmpl, map[string]*bintree{}}, - "info.plist.tmpl": {tmplInfoPlistTmpl, map[string]*bintree{}}, - "makefile.tmpl": {tmplMakefileTmpl, map[string]*bintree{}}, + ".gitignore.tmpl": {tmplGitignoreTmpl, map[string]*bintree{}}, + "ak.json.tmpl": {tmplAkJsonTmpl, map[string]*bintree{}}, + "cmd.main.tmpl": {tmplCmdMainTmpl, map[string]*bintree{}}, + "cmd.root.tmpl": {tmplCmdRootTmpl, map[string]*bintree{}}, + "cmd.update.tmpl": {tmplCmdUpdateTmpl, map[string]*bintree{}}, + "dotenv.tmpl": {tmplDotenvTmpl, map[string]*bintree{}}, + "info.plist.tmpl": {tmplInfoPlistTmpl, map[string]*bintree{}}, + "makefile.tmpl": {tmplMakefileTmpl, map[string]*bintree{}}, + "partials": {nil, map[string]*bintree{ + "step_build_pack.tmpl": {tmplPartialsStep_build_packTmpl, map[string]*bintree{}}, + "step_build_sign.tmpl": {tmplPartialsStep_build_signTmpl, map[string]*bintree{}}, + "step_install.tmpl": {tmplPartialsStep_installTmpl, map[string]*bintree{}}, + }}, "release.yml.tmpl": {tmplReleaseYmlTmpl, map[string]*bintree{}}, }}, }} diff --git a/template/template.go b/template/template.go index 5e939dc..739920f 100644 --- a/template/template.go +++ b/template/template.go @@ -5,6 +5,7 @@ import ( "fmt" "path/filepath" "reflect" + "strings" "text/template" changecase "github.com/ku/go-change-case" @@ -58,6 +59,19 @@ func NewEngine() Engine { func (e *DefaultEngine) init() { e.t = template.New("default") e.t.Funcs(funcMap()) + for n, v := range _bintree.Children["tmpl"].Children["partials"].Children { + a, _ := v.Func() + _, err := e.t.Parse( + fmt.Sprintf( + "{{define \"%s\"}} %s {{end}}", + strings.Replace(n, ".tmpl", "", 1), + string(a.bytes), + ), + ) + if err != nil { + logrus.Panic(err) + } + } } func (e *DefaultEngine) Execute(name string, model interface{}) (string, error) { diff --git a/template/tmpl/partials/step_build_pack.tmpl b/template/tmpl/partials/step_build_pack.tmpl new file mode 100644 index 0000000..156384a --- /dev/null +++ b/template/tmpl/partials/step_build_pack.tmpl @@ -0,0 +1,17 @@ + - name: Build and pack + run: |{{if .EnabledGolang}} + # build package + GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w{{if .Ldflags}} {{.Ldflags}}{{end}}" -o exe_amd64 + GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w{{if .Ldflags}} {{.Ldflags}}{{end}}" -o exe_arm64 + lipo -create -output .workflow/exe exe_amd64 exe_arm64 + rm exe_amd64 + rm exe_arm64 + {{end}} + # pack + cd .workflow + plutil -replace version -string "{{`${{ env.tag }}`}}" info.plist + zip -r ../"{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}" . + cd .. + + echo "artifact=$(echo "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}")" >> $GITHUB_ENV{{if and .EnabledCodeSign .EnabledGolang}} +{{template "step_build_sign" .}}{{end}} \ No newline at end of file diff --git a/template/tmpl/partials/step_build_sign.tmpl b/template/tmpl/partials/step_build_sign.tmpl new file mode 100644 index 0000000..8e9dff4 --- /dev/null +++ b/template/tmpl/partials/step_build_sign.tmpl @@ -0,0 +1,50 @@ + - name: Import Code-Signing Certificates + uses: Apple-Actions/import-codesign-certs@v1 + with: + # The certificates in a PKCS12 file encoded as a base64 string + p12-file-base64: "{{`${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}`}}" + # The password used to import the PKCS12 file. + p12-password: "{{`${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}`}}" + - name: Install gon via HomeBrew for code signing and app notarization + run: | + brew tap mitchellh/gon + brew install mitchellh/gon/gon + - name: code sign and notarize + env: + AC_USERNAME: "{{`${{ secrets.AC_USERNAME }}`}}" + AC_PASSWORD: "{{`${{ secrets.AC_PASSWORD }}`}}" + run: | + # gon code sign + cat <> gon.json + { + "source" : [".workflow/exe"], + "bundle_id" : "{{.BundleID}}", + "sign" :{ + "application_identity" : "{{.ApplicationIdentity}}" + } + } + EOF + gon -log-level=debug -log-json ./gon.json + + # pack alfredworkflow + cd .workflow + plutil -replace version -string "{{`${{ env.tag }}`}}" info.plist + zip -r ../"{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}" . + cd .. + + # zip alfredworkflow as zip archive for notarize + zip -r "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow.zip" "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}" + + # gon notarize + cat <> notarize.json + { + "notarize": [{ + "path": "{{`${PWD}`}}/{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow.zip", + "bundle_id": "{{.BundleID}}", + "staple": false + }] + } + EOF + gon -log-level=debug -log-json ./notarize.json + + echo "artifact=$(echo "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}")" >> $GITHUB_ENV \ No newline at end of file diff --git a/template/tmpl/partials/step_install.tmpl b/template/tmpl/partials/step_install.tmpl new file mode 100644 index 0000000..380e8ef --- /dev/null +++ b/template/tmpl/partials/step_install.tmpl @@ -0,0 +1,10 @@ + - name: Install Go + if: success() + uses: actions/setup-go@v2 + with: + go-version: {{`${{ matrix.go-version }}`}} + - name: Run unit tests + run: go test -v -race -cover -coverprofile coverage.txt -covermode=atomic ./...{{if eq .EnabledCodecov true}} + - name: update codecov + run: | + CODECOV_TOKEN="{{`${{ secrets.CODECOV_TOKEN }}`}}" bash <(curl -s https://codecov.io/bash){{end}} \ No newline at end of file diff --git a/template/tmpl/release.yml.tmpl b/template/tmpl/release.yml.tmpl index bc0de54..8b3623f 100644 --- a/template/tmpl/release.yml.tmpl +++ b/template/tmpl/release.yml.tmpl @@ -7,99 +7,17 @@ on: jobs: build: strategy: - matrix: - go-version: [1.20.x] + matrix:{{if .EnabledGolang}} + go-version: [1.20.x]{{end}} platform: [macOS-latest] runs-on: {{`${{ matrix.platform }}`}} steps: - uses: actions/checkout@v2 - - name: Install Go - if: success() - uses: actions/setup-go@v2 - with: - go-version: {{`${{ matrix.go-version }}`}} - - name: Run unit tests - run: go test -v -race -cover -coverprofile coverage.txt -covermode=atomic ./...{{if eq .EnabledCodecov true}} - - name: update codecov - run: | - CODECOV_TOKEN="{{`${{ secrets.CODECOV_TOKEN }}`}}" bash <(curl -s https://codecov.io/bash){{end}} - name: Parse Event run: | - echo "tag=$(jq -r '.release.tag_name' "${GITHUB_EVENT_PATH}" | sed s/^v//)" >> $GITHUB_ENV{{if eq .EnabledCodeSign false}} - - name: Build and pack - run: | - # build package - GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w{{if .Ldflags}} {{.Ldflags}}{{end}}" -o exe_amd64 - GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w{{if .Ldflags}} {{.Ldflags}}{{end}}" -o exe_arm64 - lipo -create -output .workflow/exe exe_amd64 exe_arm64 - rm exe_amd64 - rm exe_arm64 - - # pack - cd .workflow - plutil -replace version -string "{{`${{ env.tag }}`}}" info.plist - zip -r ../"{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}" . - cd .. - - echo "artifact=$(echo "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}")" >> $GITHUB_ENV{{else}} - - name: Import Code-Signing Certificates - uses: Apple-Actions/import-codesign-certs@v1 - with: - # The certificates in a PKCS12 file encoded as a base64 string - p12-file-base64: "{{`${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}`}}" - # The password used to import the PKCS12 file. - p12-password: "{{`${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}`}}" - - name: Install gon via HomeBrew for code signing and app notarization - run: | - brew tap mitchellh/gon - brew install mitchellh/gon/gon - - name: Build and pack - run: | - # build package - GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w{{if .Ldflags}} {{.Ldflags}}{{end}}" -o exe_amd64 - GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w{{if .Ldflags}} {{.Ldflags}}{{end}}" -o exe_arm64 - lipo -create -output .workflow/exe exe_amd64 exe_arm64 - rm exe_amd64 - rm exe_arm64 - - name: code sign and notarize - env: - AC_USERNAME: "{{`${{ secrets.AC_USERNAME }}`}}" - AC_PASSWORD: "{{`${{ secrets.AC_PASSWORD }}`}}" - run: | - # gon code sign - cat <> gon.json - { - "source" : [".workflow/exe"], - "bundle_id" : "{{.BundleID}}", - "sign" :{ - "application_identity" : "{{.ApplicationIdentity}}" - } - } - EOF - gon -log-level=debug -log-json ./gon.json - - # pack alfredworkflow - cd .workflow - plutil -replace version -string "{{`${{ env.tag }}`}}" info.plist - zip -r ../"{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}" . - cd .. - - # zip alfredworkflow as zip archive for notarize - zip -r "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow.zip" "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}" - - # gon notarize - cat <> notarize.json - { - "notarize": [{ - "path": "{{`${PWD}`}}/{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow.zip", - "bundle_id": "{{.BundleID}}", - "staple": false - }] - } - EOF - gon -log-level=debug -log-json ./notarize.json - - echo "artifact=$(echo "{{.WorkflowName}}-{{`${{ env.tag }}`}}.alfredworkflow{{.WorkaroundExt}}")" >> $GITHUB_ENV{{end}} + echo "tag=$(jq -r '.release.tag_name' "${GITHUB_EVENT_PATH}" | sed s/^v//)" >> $GITHUB_ENV{{if .EnabledGolang}} +{{template "step_install" .}}{{end}} +{{template "step_build_pack" .}} - uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: {{`${{ github.event.release.upload_url }}`}}