You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	feat(schema): add command that generates jsonschema (#2589)
* feat(schema): Add command that generates the jsonschema for .goreleaser.yml files This commit adds the jsonschema/schema subcommand that generates a jsonschema doc based on the Project go struct. For the config types that alternatively allow you to specify a string via custom UnmarshalYAML function, this commit adds the JSONSchemaType function, so the type gets documented with an oneOf with string or itself. Add yaml key names for properties that are currently missing them, so alecthomas/jsonschema generates the keys with correct casing. Signed-off-by: Patrick Hahn <patricksilashahn@gmx.net> * fix: Add linguist-generated attribute to generated schema json to exclude this file from pull request size validation Signed-off-by: Patrick Hahn <patricksilashahn@gmx.net> * fix: run gofumpt Signed-off-by: Patrick Hahn <patricksilashahn@gmx.net> * chore(schema): update alecthomas/jsonschema and regenerate schema.json Signed-off-by: Patrick Hahn <patricksilashahn@gmx.net>
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -4,3 +4,5 @@ | ||||
| *.png binary | ||||
| *.jpg binary | ||||
| *.ico binary | ||||
|  | ||||
| www/docs/static/schema.json linguist-generated=true | ||||
|   | ||||
| @@ -20,13 +20,13 @@ builds: | ||||
|     - darwin | ||||
|     - windows | ||||
|   goarch: | ||||
|     - 386 | ||||
|     - "386" | ||||
|     - amd64 | ||||
|     - arm | ||||
|     - arm64 | ||||
|   goarm: | ||||
|     - 6 | ||||
|     - 7 | ||||
|     - "6" | ||||
|     - "7" | ||||
|   mod_timestamp: '{{ .CommitTimestamp }}' | ||||
|   flags: | ||||
|     - -trimpath | ||||
|   | ||||
| @@ -83,6 +83,7 @@ single .goreleaser.yml file. | ||||
| 		newCheckCmd().cmd, | ||||
| 		newInitCmd().cmd, | ||||
| 		newDocsCmd().cmd, | ||||
| 		newSchemaCmd().cmd, | ||||
| 	) | ||||
|  | ||||
| 	root.cmd = cmd | ||||
|   | ||||
							
								
								
									
										53
									
								
								cmd/schema.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								cmd/schema.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| package cmd | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
|  | ||||
| 	"github.com/alecthomas/jsonschema" | ||||
| 	"github.com/goreleaser/goreleaser/pkg/config" | ||||
| 	"github.com/spf13/cobra" | ||||
| ) | ||||
|  | ||||
| type schemaCmd struct { | ||||
| 	cmd    *cobra.Command | ||||
| 	output string | ||||
| } | ||||
|  | ||||
| func newSchemaCmd() *schemaCmd { | ||||
| 	root := &schemaCmd{} | ||||
| 	cmd := &cobra.Command{ | ||||
| 		Use:           "jsonschema", | ||||
| 		Aliases:       []string{"schema"}, | ||||
| 		Short:         "outputs goreleaser's JSON schema", | ||||
| 		SilenceUsage:  true, | ||||
| 		SilenceErrors: true, | ||||
| 		Args:          cobra.NoArgs, | ||||
| 		RunE: func(cmd *cobra.Command, args []string) error { | ||||
| 			schema := jsonschema.Reflect(&config.Project{}) | ||||
| 			schema.Description = "goreleaser configuration definition file" | ||||
| 			bts, err := json.MarshalIndent(schema, "	", "	") | ||||
| 			if err != nil { | ||||
| 				return fmt.Errorf("failed to create jsonschema: %w", err) | ||||
| 			} | ||||
| 			if root.output == "-" { | ||||
| 				fmt.Println(string(bts)) | ||||
| 				return nil | ||||
| 			} | ||||
| 			if err := os.MkdirAll(filepath.Dir(root.output), 0o755); err != nil { | ||||
| 				return fmt.Errorf("failed to write jsonschema file: %w", err) | ||||
| 			} | ||||
| 			if err := os.WriteFile(root.output, bts, 0o666); err != nil { | ||||
| 				return fmt.Errorf("failed to write jsonschema file: %w", err) | ||||
| 			} | ||||
| 			return nil | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	cmd.Flags().StringVarP(&root.output, "output", "o", "-", "where to save the json schema") | ||||
|  | ||||
| 	root.cmd = cmd | ||||
| 	return root | ||||
| } | ||||
							
								
								
									
										25
									
								
								cmd/schema_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								cmd/schema_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| package cmd | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
| ) | ||||
|  | ||||
| func TestGenerateSchema(t *testing.T) { | ||||
| 	cmd := newSchemaCmd().cmd | ||||
| 	dir := t.TempDir() | ||||
| 	destination := path.Join(dir, "schema.json") | ||||
| 	cmd.SetArgs([]string{"--output", destination}) | ||||
| 	require.NoError(t, cmd.Execute()) | ||||
|  | ||||
| 	outFile, err := os.Open(destination) | ||||
| 	require.NoError(t, err) | ||||
|  | ||||
| 	schema := map[string]interface{}{} | ||||
| 	require.NoError(t, json.NewDecoder(outFile).Decode(&schema)) | ||||
| 	require.Equal(t, "http://json-schema.org/draft-04/schema#", schema["$schema"].(string)) | ||||
| } | ||||
							
								
								
									
										52
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								go.mod
									
									
									
									
									
								
							| @@ -5,6 +5,7 @@ go 1.17 | ||||
| require ( | ||||
| 	code.gitea.io/sdk/gitea v0.15.0 | ||||
| 	github.com/Masterminds/semver/v3 v3.1.1 | ||||
| 	github.com/alecthomas/jsonschema v0.0.0-20211022214203-8b29eab41725 | ||||
| 	github.com/apex/log v1.9.0 | ||||
| 	github.com/caarlos0/ctrlc v1.0.0 | ||||
| 	github.com/caarlos0/env/v6 v6.7.0 | ||||
| @@ -29,8 +30,17 @@ require ( | ||||
| 	gopkg.in/yaml.v2 v2.4.0 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	github.com/DisgoOrg/disgohook v1.4.3 | ||||
| 	github.com/atc0005/go-teams-notify/v2 v2.6.0 | ||||
| 	github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible | ||||
| 	github.com/slack-go/slack v0.9.4 | ||||
| 	gopkg.in/mail.v2 v2.3.1 | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	cloud.google.com/go v0.94.0 // indirect | ||||
| 	cloud.google.com/go/kms v0.1.0 // indirect | ||||
| 	cloud.google.com/go/storage v1.16.1 // indirect | ||||
| 	github.com/AlekSi/pointer v1.1.0 // indirect | ||||
| 	github.com/Azure/azure-pipeline-go v0.2.3 // indirect | ||||
| @@ -46,14 +56,24 @@ require ( | ||||
| 	github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect | ||||
| 	github.com/Azure/go-autorest/logger v0.2.1 // indirect | ||||
| 	github.com/Azure/go-autorest/tracing v0.6.0 // indirect | ||||
| 	github.com/DisgoOrg/disgohook v1.4.3 | ||||
| 	github.com/DisgoOrg/log v1.1.0 // indirect | ||||
| 	github.com/DisgoOrg/restclient v1.2.7 // indirect | ||||
| 	github.com/Masterminds/goutils v1.1.1 // indirect | ||||
| 	github.com/Masterminds/semver v1.5.0 // indirect | ||||
| 	github.com/Masterminds/sprig v2.22.0+incompatible // indirect | ||||
| 	github.com/Microsoft/go-winio v0.4.16 // indirect | ||||
| 	github.com/ProtonMail/go-crypto v0.0.0-20210512092938-c05353c2d58c // indirect | ||||
| 	github.com/atc0005/go-teams-notify/v2 v2.6.0 | ||||
| 	github.com/aws/aws-sdk-go v1.40.34 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2 v1.9.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/config v1.7.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/credentials v1.4.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/kms v1.5.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sso v1.4.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sts v1.7.0 // indirect | ||||
| 	github.com/aws/smithy-go v1.8.0 // indirect | ||||
| 	github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect | ||||
| 	github.com/cavaliercoder/go-cpio v0.0.0-20180626203310-925f9528c45e // indirect | ||||
| 	github.com/cenkalti/backoff v2.1.1+incompatible // indirect | ||||
| @@ -65,8 +85,8 @@ require ( | ||||
| 	github.com/go-git/gcfg v1.5.0 // indirect | ||||
| 	github.com/go-git/go-billy/v5 v5.1.0 // indirect | ||||
| 	github.com/go-git/go-git/v5 v5.3.0 // indirect | ||||
| 	github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible | ||||
| 	github.com/gobwas/glob v0.2.3 // indirect | ||||
| 	github.com/golang-jwt/jwt/v4 v4.0.0 // indirect | ||||
| 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect | ||||
| 	github.com/golang/protobuf v1.5.2 // indirect | ||||
| 	github.com/google/go-cmp v0.5.6 // indirect | ||||
| @@ -76,10 +96,12 @@ require ( | ||||
| 	github.com/google/wire v0.5.0 // indirect | ||||
| 	github.com/googleapis/gax-go/v2 v2.1.0 // indirect | ||||
| 	github.com/goreleaser/chglog v0.1.2 // indirect | ||||
| 	github.com/gorilla/websocket v1.4.2 // indirect | ||||
| 	github.com/hashicorp/go-cleanhttp v0.5.1 // indirect | ||||
| 	github.com/hashicorp/go-retryablehttp v0.6.8 // indirect | ||||
| 	github.com/hashicorp/go-version v1.2.1 // indirect | ||||
| 	github.com/huandu/xstrings v1.3.2 // indirect | ||||
| 	github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect | ||||
| 	github.com/inconshreveable/mousetrap v1.0.0 // indirect | ||||
| 	github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect | ||||
| 	github.com/jmespath/go-jmespath v0.4.0 // indirect | ||||
| @@ -96,8 +118,8 @@ require ( | ||||
| 	github.com/sassoftware/go-rpmutils v0.0.0-20190420191620-a8f1baeba37b // indirect | ||||
| 	github.com/sergi/go-diff v1.2.0 // indirect | ||||
| 	github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect | ||||
| 	github.com/slack-go/slack v0.9.4 | ||||
| 	github.com/spf13/pflag v1.0.5 // indirect | ||||
| 	github.com/technoweenie/multipartstreamer v1.0.1 // indirect | ||||
| 	github.com/xanzy/ssh-agent v0.3.0 // indirect | ||||
| 	go.opencensus.io v0.23.0 // indirect | ||||
| 	golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect | ||||
| @@ -111,27 +133,7 @@ require ( | ||||
| 	google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2 // indirect | ||||
| 	google.golang.org/grpc v1.40.0 // indirect | ||||
| 	google.golang.org/protobuf v1.27.1 // indirect | ||||
| 	gopkg.in/mail.v2 v2.3.1 | ||||
| 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect | ||||
| 	gopkg.in/warnings.v0 v0.1.2 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect | ||||
| ) | ||||
|  | ||||
| require ( | ||||
| 	cloud.google.com/go/kms v0.1.0 // indirect | ||||
| 	github.com/DisgoOrg/log v1.1.0 // indirect | ||||
| 	github.com/DisgoOrg/restclient v1.2.7 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2 v1.9.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/config v1.7.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/credentials v1.4.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.5.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/internal/ini v1.2.2 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/kms v1.5.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sso v1.4.0 // indirect | ||||
| 	github.com/aws/aws-sdk-go-v2/service/sts v1.7.0 // indirect | ||||
| 	github.com/aws/smithy-go v1.8.0 // indirect | ||||
| 	github.com/golang-jwt/jwt/v4 v4.0.0 // indirect | ||||
| 	github.com/gorilla/websocket v1.4.2 // indirect | ||||
| 	github.com/technoweenie/multipartstreamer v1.0.1 // indirect | ||||
| 	gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect | ||||
| ) | ||||
|   | ||||
							
								
								
									
										3
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.sum
									
									
									
									
									
								
							| @@ -147,6 +147,8 @@ github.com/ProtonMail/gopenpgp/v2 v2.2.0/go.mod h1:ajUlBGvxMH1UBZnaYO3d1FSVzjiC6 | ||||
| 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/jsonschema v0.0.0-20210526225647-edb03dcab7bc/go.mod h1:/n6+1/DWPltRLWL/VKyUxg6tzsl5kHUCcraimt4vr60= | ||||
| github.com/alecthomas/jsonschema v0.0.0-20211022214203-8b29eab41725 h1:NjwIgLQlD46o79bheVG4SCdRnnOz4XtgUN1WABX5DLA= | ||||
| github.com/alecthomas/jsonschema v0.0.0-20211022214203-8b29eab41725/go.mod h1:/n6+1/DWPltRLWL/VKyUxg6tzsl5kHUCcraimt4vr60= | ||||
| 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= | ||||
| @@ -454,6 +456,7 @@ github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/J | ||||
| github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | ||||
| github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= | ||||
| github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= | ||||
| github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk= | ||||
| github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= | ||||
| github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | ||||
| github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | ||||
|   | ||||
| @@ -8,6 +8,8 @@ import ( | ||||
| 	"strings" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/alecthomas/jsonschema" | ||||
|  | ||||
| 	"github.com/apex/log" | ||||
| 	"github.com/goreleaser/nfpm/v2/files" | ||||
| 	yaml "gopkg.in/yaml.v2" | ||||
| @@ -38,8 +40,8 @@ type GiteaURLs struct { | ||||
| // Repo represents any kind of repo (github, gitlab, etc). | ||||
| // to upload releases into. | ||||
| type Repo struct { | ||||
| 	Owner string `yaml:",omitempty"` | ||||
| 	Name  string `yaml:",omitempty"` | ||||
| 	Owner string `yaml:"owner,omitempty"` | ||||
| 	Name  string `yaml:"name,omitempty"` | ||||
| } | ||||
|  | ||||
| // RepoRef represents any kind of repo which may differ | ||||
| @@ -47,16 +49,16 @@ type Repo struct { | ||||
| // also require separate authentication | ||||
| // e.g. Homebrew Tap, Scoop bucket. | ||||
| type RepoRef struct { | ||||
| 	Owner  string `yaml:",omitempty"` | ||||
| 	Name   string `yaml:",omitempty"` | ||||
| 	Token  string `yaml:",omitempty"` | ||||
| 	Branch string `yaml:",omitempty"` | ||||
| 	Owner  string `yaml:"owner,omitempty"` | ||||
| 	Name   string `yaml:"name,omitempty"` | ||||
| 	Token  string `yaml:"token,omitempty"` | ||||
| 	Branch string `yaml:"branch,omitempty"` | ||||
| } | ||||
|  | ||||
| // HomebrewDependency represents Homebrew dependency. | ||||
| type HomebrewDependency struct { | ||||
| 	Name string `yaml:",omitempty"` | ||||
| 	Type string `yaml:",omitempty"` | ||||
| 	Name string `yaml:"name,omitempty"` | ||||
| 	Type string `yaml:"type,omitempty"` | ||||
| } | ||||
|  | ||||
| // type alias to prevent stack overflowing in the custom unmarshaler. | ||||
| @@ -81,6 +83,21 @@ func (a *HomebrewDependency) UnmarshalYAML(unmarshal func(interface{}) error) er | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (a HomebrewDependency) JSONSchemaType() *jsonschema.Type { | ||||
| 	reflector := jsonschema.Reflector{ | ||||
| 		ExpandedStruct: true, | ||||
| 	} | ||||
| 	schema := reflector.Reflect(&homebrewDependency{}) | ||||
| 	return &jsonschema.Type{ | ||||
| 		OneOf: []*jsonschema.Type{ | ||||
| 			{ | ||||
| 				Type: "string", | ||||
| 			}, | ||||
| 			schema.Type, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // String of the repo, e.g. owner/name. | ||||
| func (r Repo) String() string { | ||||
| 	if r.Owner == "" && r.Name == "" { | ||||
| @@ -91,13 +108,13 @@ func (r Repo) String() string { | ||||
|  | ||||
| // GoFish contains the gofish section. | ||||
| type GoFish struct { | ||||
| 	Name                  string       `yaml:",omitempty"` | ||||
| 	Rig                   RepoRef      `yaml:",omitempty"` | ||||
| 	Name                  string       `yaml:"name,omitempty"` | ||||
| 	Rig                   RepoRef      `yaml:"rig,omitempty"` | ||||
| 	CommitAuthor          CommitAuthor `yaml:"commit_author,omitempty"` | ||||
| 	CommitMessageTemplate string       `yaml:"commit_msg_template,omitempty"` | ||||
| 	Description           string       `yaml:",omitempty"` | ||||
| 	Homepage              string       `yaml:",omitempty"` | ||||
| 	License               string       `yaml:",omitempty"` | ||||
| 	Description           string       `yaml:"description,omitempty"` | ||||
| 	Homepage              string       `yaml:"homepage,omitempty"` | ||||
| 	License               string       `yaml:"license,omitempty"` | ||||
| 	SkipUpload            string       `yaml:"skip_upload,omitempty"` | ||||
| 	URLTemplate           string       `yaml:"url_template,omitempty"` | ||||
| 	IDs                   []string     `yaml:"ids,omitempty"` | ||||
| @@ -106,21 +123,21 @@ type GoFish struct { | ||||
|  | ||||
| // Homebrew contains the brew section. | ||||
| type Homebrew struct { | ||||
| 	Name                  string               `yaml:",omitempty"` | ||||
| 	Tap                   RepoRef              `yaml:",omitempty"` | ||||
| 	Name                  string               `yaml:"name,omitempty"` | ||||
| 	Tap                   RepoRef              `yaml:"tap,omitempty"` | ||||
| 	CommitAuthor          CommitAuthor         `yaml:"commit_author,omitempty"` | ||||
| 	CommitMessageTemplate string               `yaml:"commit_msg_template,omitempty"` | ||||
| 	Folder                string               `yaml:",omitempty"` | ||||
| 	Caveats               string               `yaml:",omitempty"` | ||||
| 	Plist                 string               `yaml:",omitempty"` | ||||
| 	Install               string               `yaml:",omitempty"` | ||||
| 	Folder                string               `yaml:"folder,omitempty"` | ||||
| 	Caveats               string               `yaml:"caveats,omitempty"` | ||||
| 	Plist                 string               `yaml:"plist,omitempty"` | ||||
| 	Install               string               `yaml:"install,omitempty"` | ||||
| 	PostInstall           string               `yaml:"post_install,omitempty"` | ||||
| 	Dependencies          []HomebrewDependency `yaml:",omitempty"` | ||||
| 	Test                  string               `yaml:",omitempty"` | ||||
| 	Conflicts             []string             `yaml:",omitempty"` | ||||
| 	Description           string               `yaml:",omitempty"` | ||||
| 	Homepage              string               `yaml:",omitempty"` | ||||
| 	License               string               `yaml:",omitempty"` | ||||
| 	Dependencies          []HomebrewDependency `yaml:"dependencies,omitempty"` | ||||
| 	Test                  string               `yaml:"test,omitempty"` | ||||
| 	Conflicts             []string             `yaml:"conflicts,omitempty"` | ||||
| 	Description           string               `yaml:"description,omitempty"` | ||||
| 	Homepage              string               `yaml:"homepage,omitempty"` | ||||
| 	License               string               `yaml:"license,omitempty"` | ||||
| 	SkipUpload            string               `yaml:"skip_upload,omitempty"` | ||||
| 	DownloadStrategy      string               `yaml:"download_strategy,omitempty"` | ||||
| 	URLTemplate           string               `yaml:"url_template,omitempty"` | ||||
| @@ -132,14 +149,14 @@ type Homebrew struct { | ||||
|  | ||||
| // Scoop contains the scoop.sh section. | ||||
| type Scoop struct { | ||||
| 	Name                  string       `yaml:",omitempty"` | ||||
| 	Bucket                RepoRef      `yaml:",omitempty"` | ||||
| 	Folder                string       `yaml:",omitempty"` | ||||
| 	Name                  string       `yaml:"name,omitempty"` | ||||
| 	Bucket                RepoRef      `yaml:"bucket,omitempty"` | ||||
| 	Folder                string       `yaml:"folder,omitempty"` | ||||
| 	CommitAuthor          CommitAuthor `yaml:"commit_author,omitempty"` | ||||
| 	CommitMessageTemplate string       `yaml:"commit_msg_template,omitempty"` | ||||
| 	Homepage              string       `yaml:",omitempty"` | ||||
| 	Description           string       `yaml:",omitempty"` | ||||
| 	License               string       `yaml:",omitempty"` | ||||
| 	Homepage              string       `yaml:"homepage,omitempty"` | ||||
| 	Description           string       `yaml:"description,omitempty"` | ||||
| 	License               string       `yaml:"license,omitempty"` | ||||
| 	URLTemplate           string       `yaml:"url_template,omitempty"` | ||||
| 	Persist               []string     `yaml:"persist,omitempty"` | ||||
| 	SkipUpload            string       `yaml:"skip_upload,omitempty"` | ||||
| @@ -149,14 +166,14 @@ type Scoop struct { | ||||
|  | ||||
| // CommitAuthor is the author of a Git commit. | ||||
| type CommitAuthor struct { | ||||
| 	Name  string `yaml:",omitempty"` | ||||
| 	Email string `yaml:",omitempty"` | ||||
| 	Name  string `yaml:"name,omitempty"` | ||||
| 	Email string `yaml:"email,omitempty"` | ||||
| } | ||||
|  | ||||
| // Hooks define actions to run before and/or after something. | ||||
| type Hooks struct { | ||||
| 	Pre  string `yaml:",omitempty"` | ||||
| 	Post string `yaml:",omitempty"` | ||||
| 	Pre  string `yaml:"pre,omitempty"` | ||||
| 	Post string `yaml:"post,omitempty"` | ||||
| } | ||||
|  | ||||
| // IgnoredBuild represents a build ignored by the user. | ||||
| @@ -182,6 +199,19 @@ func (a *StringArray) UnmarshalYAML(unmarshal func(interface{}) error) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (a StringArray) JSONSchemaType() *jsonschema.Type { | ||||
| 	return &jsonschema.Type{ | ||||
| 		OneOf: []*jsonschema.Type{{ | ||||
| 			Type: "string", | ||||
| 		}, { | ||||
| 			Type: "array", | ||||
| 			Items: &jsonschema.Type{ | ||||
| 				Type: "string", | ||||
| 			}, | ||||
| 		}}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // FlagArray is a wrapper for an array of strings. | ||||
| type FlagArray []string | ||||
|  | ||||
| @@ -200,37 +230,50 @@ func (a *FlagArray) UnmarshalYAML(unmarshal func(interface{}) error) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (a FlagArray) JSONSchemaType() *jsonschema.Type { | ||||
| 	return &jsonschema.Type{ | ||||
| 		OneOf: []*jsonschema.Type{{ | ||||
| 			Type: "string", | ||||
| 		}, { | ||||
| 			Type: "array", | ||||
| 			Items: &jsonschema.Type{ | ||||
| 				Type: "string", | ||||
| 			}, | ||||
| 		}}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Build contains the build configuration section. | ||||
| type Build struct { | ||||
| 	ID              string         `yaml:",omitempty"` | ||||
| 	Goos            []string       `yaml:",omitempty"` | ||||
| 	Goarch          []string       `yaml:",omitempty"` | ||||
| 	Goarm           []string       `yaml:",omitempty"` | ||||
| 	Gomips          []string       `yaml:",omitempty"` | ||||
| 	Targets         []string       `yaml:",omitempty"` | ||||
| 	Ignore          []IgnoredBuild `yaml:",omitempty"` | ||||
| 	Dir             string         `yaml:",omitempty"` | ||||
| 	Main            string         `yaml:",omitempty"` | ||||
| 	Ldflags         StringArray    `yaml:",omitempty"` | ||||
| 	Tags            FlagArray      `yaml:",omitempty"` | ||||
| 	Flags           FlagArray      `yaml:",omitempty"` | ||||
| 	Binary          string         `yaml:",omitempty"` | ||||
| 	Hooks           HookConfig     `yaml:",omitempty"` | ||||
| 	Env             []string       `yaml:",omitempty"` | ||||
| 	Builder         string         `yaml:",omitempty"` | ||||
| 	Asmflags        StringArray    `yaml:",omitempty"` | ||||
| 	Gcflags         StringArray    `yaml:",omitempty"` | ||||
| 	ID              string         `yaml:"id,omitempty"` | ||||
| 	Goos            []string       `yaml:"goos,omitempty"` | ||||
| 	Goarch          []string       `yaml:"goarch,omitempty"` | ||||
| 	Goarm           []string       `yaml:"goarm,omitempty"` | ||||
| 	Gomips          []string       `yaml:"gomips,omitempty"` | ||||
| 	Targets         []string       `yaml:"targets,omitempty"` | ||||
| 	Ignore          []IgnoredBuild `yaml:"ignore,omitempty"` | ||||
| 	Dir             string         `yaml:"dir,omitempty"` | ||||
| 	Main            string         `yaml:"main,omitempty"` | ||||
| 	Ldflags         StringArray    `yaml:"ldflags,omitempty"` | ||||
| 	Tags            FlagArray      `yaml:"tags,omitempty"` | ||||
| 	Flags           FlagArray      `yaml:"flags,omitempty"` | ||||
| 	Binary          string         `yaml:"binary,omitempty"` | ||||
| 	Hooks           HookConfig     `yaml:"hooks,omitempty"` | ||||
| 	Env             []string       `yaml:"env,omitempty"` | ||||
| 	Builder         string         `yaml:"builder,omitempty"` | ||||
| 	Asmflags        StringArray    `yaml:"asmflags,omitempty"` | ||||
| 	Gcflags         StringArray    `yaml:"gcflags,omitempty"` | ||||
| 	ModTimestamp    string         `yaml:"mod_timestamp,omitempty"` | ||||
| 	Skip            bool           `yaml:",omitempty"` | ||||
| 	GoBinary        string         `yaml:",omitempty"` | ||||
| 	Skip            bool           `yaml:"skip,omitempty"` | ||||
| 	GoBinary        string         `yaml:"gobinary,omitempty"` | ||||
| 	NoUniqueDistDir bool           `yaml:"no_unique_dist_dir,omitempty"` | ||||
| 	UnproxiedMain   string         `yaml:"-"` // used by gomod.proxy | ||||
| 	UnproxiedDir    string         `yaml:"-"` // used by gomod.proxy | ||||
| } | ||||
|  | ||||
| type HookConfig struct { | ||||
| 	Pre  BuildHooks `yaml:",omitempty"` | ||||
| 	Post BuildHooks `yaml:",omitempty"` | ||||
| 	Pre  BuildHooks `yaml:"pre,omitempty"` | ||||
| 	Post BuildHooks `yaml:"post,omitempty"` | ||||
| } | ||||
|  | ||||
| type BuildHooks []BuildHook | ||||
| @@ -253,10 +296,26 @@ func (bhc *BuildHooks) UnmarshalYAML(unmarshal func(interface{}) error) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (bhc BuildHooks) JSONSchemaType() *jsonschema.Type { | ||||
| 	type t BuildHooks | ||||
| 	reflector := jsonschema.Reflector{ | ||||
| 		ExpandedStruct: true, | ||||
| 	} | ||||
| 	schema := reflector.Reflect(&t{}) | ||||
| 	return &jsonschema.Type{ | ||||
| 		OneOf: []*jsonschema.Type{ | ||||
| 			{ | ||||
| 				Type: "string", | ||||
| 			}, | ||||
| 			schema.Type, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| type BuildHook struct { | ||||
| 	Dir string   `yaml:",omitempty"` | ||||
| 	Cmd string   `yaml:",omitempty"` | ||||
| 	Env []string `yaml:",omitempty"` | ||||
| 	Dir string   `yaml:"dir,omitempty"` | ||||
| 	Cmd string   `yaml:"cmd,omitempty"` | ||||
| 	Env []string `yaml:"env,omitempty"` | ||||
| } | ||||
|  | ||||
| // UnmarshalYAML is a custom unmarshaler that allows simplified declarations of commands as strings. | ||||
| @@ -276,10 +335,26 @@ func (bh *BuildHook) UnmarshalYAML(unmarshal func(interface{}) error) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (bh BuildHook) JSONSchemaType() *jsonschema.Type { | ||||
| 	type t BuildHook | ||||
| 	reflector := jsonschema.Reflector{ | ||||
| 		ExpandedStruct: true, | ||||
| 	} | ||||
| 	schema := reflector.Reflect(&t{}) | ||||
| 	return &jsonschema.Type{ | ||||
| 		OneOf: []*jsonschema.Type{ | ||||
| 			{ | ||||
| 				Type: "string", | ||||
| 			}, | ||||
| 			schema.Type, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // FormatOverride is used to specify a custom format for a specific GOOS. | ||||
| type FormatOverride struct { | ||||
| 	Goos   string `yaml:",omitempty"` | ||||
| 	Format string `yaml:",omitempty"` | ||||
| 	Goos   string `yaml:"goos,omitempty"` | ||||
| 	Format string `yaml:"format,omitempty"` | ||||
| } | ||||
|  | ||||
| // File is a file inside an archive. | ||||
| @@ -317,34 +392,53 @@ func (f *File) UnmarshalYAML(unmarshal func(interface{}) error) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (f File) JSONSchemaType() *jsonschema.Type { | ||||
| 	type t File | ||||
| 	reflector := jsonschema.Reflector{ | ||||
| 		ExpandedStruct: true, | ||||
| 	} | ||||
| 	schema := reflector.Reflect(&t{}) | ||||
| 	// jsonschema would just refer to FileInfo in the definition. It doesn't get included there, as we override the | ||||
| 	// generated schema with JSONSchemaType here. So we need to include it directly in the schema of File. | ||||
| 	schema.Properties.Set("info", reflector.Reflect(&FileInfo{}).Type) | ||||
| 	return &jsonschema.Type{ | ||||
| 		OneOf: []*jsonschema.Type{ | ||||
| 			{ | ||||
| 				Type: "string", | ||||
| 			}, | ||||
| 			schema.Type, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // UniversalBinary setups macos universal binaries. | ||||
| type UniversalBinary struct { | ||||
| 	ID           string `yaml:"id,omitempty"` | ||||
| 	NameTemplate string `yaml:"name_template,omitempty"` | ||||
| 	Replace      bool   `yaml:",omitempty"` | ||||
| 	Replace      bool   `yaml:"replace,omitempty"` | ||||
| } | ||||
|  | ||||
| // Archive config used for the archive. | ||||
| type Archive struct { | ||||
| 	ID                        string            `yaml:",omitempty"` | ||||
| 	Builds                    []string          `yaml:",omitempty"` | ||||
| 	ID                        string            `yaml:"id,omitempty"` | ||||
| 	Builds                    []string          `yaml:"builds,omitempty"` | ||||
| 	NameTemplate              string            `yaml:"name_template,omitempty"` | ||||
| 	Replacements              map[string]string `yaml:",omitempty"` | ||||
| 	Format                    string            `yaml:",omitempty"` | ||||
| 	Replacements              map[string]string `yaml:"replacements,omitempty"` | ||||
| 	Format                    string            `yaml:"format,omitempty"` | ||||
| 	FormatOverrides           []FormatOverride  `yaml:"format_overrides,omitempty"` | ||||
| 	WrapInDirectory           string            `yaml:"wrap_in_directory,omitempty"` | ||||
| 	Files                     []File            `yaml:",omitempty"` | ||||
| 	AllowDifferentBinaryCount bool              `yaml:"allow_different_binary_count"` | ||||
| 	Files                     []File            `yaml:"files,omitempty"` | ||||
| 	AllowDifferentBinaryCount bool              `yaml:"allow_different_binary_count,omitempty"` | ||||
| } | ||||
|  | ||||
| // Release config used for the GitHub/GitLab release. | ||||
| type Release struct { | ||||
| 	GitHub                 Repo        `yaml:",omitempty"` | ||||
| 	GitLab                 Repo        `yaml:",omitempty"` | ||||
| 	Gitea                  Repo        `yaml:",omitempty"` | ||||
| 	Draft                  bool        `yaml:",omitempty"` | ||||
| 	Disable                bool        `yaml:",omitempty"` | ||||
| 	Prerelease             string      `yaml:",omitempty"` | ||||
| 	GitHub                 Repo        `yaml:"github,omitempty"` | ||||
| 	GitLab                 Repo        `yaml:"gitlab,omitempty"` | ||||
| 	Gitea                  Repo        `yaml:"gitea,omitempty"` | ||||
| 	Draft                  bool        `yaml:"draft,omitempty"` | ||||
| 	Disable                bool        `yaml:"disable,omitempty"` | ||||
| 	Prerelease             string      `yaml:"prerelease,omitempty"` | ||||
| 	NameTemplate           string      `yaml:"name_template,omitempty"` | ||||
| 	IDs                    []string    `yaml:"ids,omitempty"` | ||||
| 	ExtraFiles             []ExtraFile `yaml:"extra_files,omitempty"` | ||||
| @@ -355,8 +449,8 @@ type Release struct { | ||||
|  | ||||
| // Milestone config used for VCS milestone. | ||||
| type Milestone struct { | ||||
| 	Repo         Repo   `yaml:",omitempty"` | ||||
| 	Close        bool   `yaml:",omitempty"` | ||||
| 	Repo         Repo   `yaml:"repo,omitempty"` | ||||
| 	Close        bool   `yaml:"close,omitempty"` | ||||
| 	FailOnError  bool   `yaml:"fail_on_error,omitempty"` | ||||
| 	NameTemplate string `yaml:"name_template,omitempty"` | ||||
| } | ||||
| @@ -371,18 +465,18 @@ type NFPM struct { | ||||
| 	NFPMOverridables `yaml:",inline"` | ||||
| 	Overrides        map[string]NFPMOverridables `yaml:"overrides,omitempty"` | ||||
|  | ||||
| 	ID          string   `yaml:",omitempty"` | ||||
| 	Builds      []string `yaml:",omitempty"` | ||||
| 	Formats     []string `yaml:",omitempty"` | ||||
| 	Section     string   `yaml:",omitempty"` | ||||
| 	Priority    string   `yaml:",omitempty"` | ||||
| 	Vendor      string   `yaml:",omitempty"` | ||||
| 	Homepage    string   `yaml:",omitempty"` | ||||
| 	Maintainer  string   `yaml:",omitempty"` | ||||
| 	Description string   `yaml:",omitempty"` | ||||
| 	License     string   `yaml:",omitempty"` | ||||
| 	Bindir      string   `yaml:",omitempty"` | ||||
| 	Meta        bool     `yaml:",omitempty"` // make package without binaries - only deps | ||||
| 	ID          string   `yaml:"id,omitempty"` | ||||
| 	Builds      []string `yaml:"builds,omitempty"` | ||||
| 	Formats     []string `yaml:"formats,omitempty"` | ||||
| 	Section     string   `yaml:"section,omitempty"` | ||||
| 	Priority    string   `yaml:"priority,omitempty"` | ||||
| 	Vendor      string   `yaml:"vendor,omitempty"` | ||||
| 	Homepage    string   `yaml:"homepage,omitempty"` | ||||
| 	Maintainer  string   `yaml:"maintainer,omitempty"` | ||||
| 	Description string   `yaml:"description,omitempty"` | ||||
| 	License     string   `yaml:"license,omitempty"` | ||||
| 	Bindir      string   `yaml:"bindir,omitempty"` | ||||
| 	Meta        bool     `yaml:"meta,omitempty"` // make package without binaries - only deps | ||||
| } | ||||
|  | ||||
| // NFPMScripts is used to specify maintainer scripts. | ||||
| @@ -477,12 +571,12 @@ type NFPMOverridables struct { | ||||
| 	Release          string            `yaml:"release,omitempty"` | ||||
| 	Prerelease       string            `yaml:"prerelease,omitempty"` | ||||
| 	VersionMetadata  string            `yaml:"version_metadata,omitempty"` | ||||
| 	Replacements     map[string]string `yaml:",omitempty"` | ||||
| 	Dependencies     []string          `yaml:",omitempty"` | ||||
| 	Recommends       []string          `yaml:",omitempty"` | ||||
| 	Suggests         []string          `yaml:",omitempty"` | ||||
| 	Conflicts        []string          `yaml:",omitempty"` | ||||
| 	Replaces         []string          `yaml:",omitempty"` | ||||
| 	Replacements     map[string]string `yaml:"replacements,omitempty"` | ||||
| 	Dependencies     []string          `yaml:"dependencies,omitempty"` | ||||
| 	Recommends       []string          `yaml:"recommends,omitempty"` | ||||
| 	Suggests         []string          `yaml:"suggests,omitempty"` | ||||
| 	Conflicts        []string          `yaml:"conflicts,omitempty"` | ||||
| 	Replaces         []string          `yaml:"replaces,omitempty"` | ||||
| 	EmptyFolders     []string          `yaml:"empty_folders,omitempty"` | ||||
| 	Contents         files.Contents    `yaml:"contents,omitempty"` | ||||
| 	Scripts          NFPMScripts       `yaml:"scripts,omitempty"` | ||||
| @@ -508,36 +602,36 @@ type SnapcraftAppMetadata struct { | ||||
| 	Plugs            []string | ||||
| 	Daemon           string | ||||
| 	Args             string | ||||
| 	Completer        string `yaml:",omitempty"` | ||||
| 	Completer        string `yaml:"completer,omitempty"` | ||||
| 	Command          string `yaml:"command"` | ||||
| 	RestartCondition string `yaml:"restart_condition,omitempty"` | ||||
| } | ||||
|  | ||||
| type SnapcraftLayoutMetadata struct { | ||||
| 	Symlink  string `yaml:",omitempty"` | ||||
| 	Bind     string `yaml:",omitempty"` | ||||
| 	Symlink  string `yaml:"symlink,omitempty"` | ||||
| 	Bind     string `yaml:"bind,omitempty"` | ||||
| 	BindFile string `yaml:"bind_file,omitempty"` | ||||
| 	Type     string `yaml:",omitempty"` | ||||
| 	Type     string `yaml:"type,omitempty"` | ||||
| } | ||||
|  | ||||
| // Snapcraft config. | ||||
| type Snapcraft struct { | ||||
| 	NameTemplate string            `yaml:"name_template,omitempty"` | ||||
| 	Replacements map[string]string `yaml:",omitempty"` | ||||
| 	Publish      bool              `yaml:",omitempty"` | ||||
| 	Replacements map[string]string `yaml:"replacements,omitempty"` | ||||
| 	Publish      bool              `yaml:"publish,omitempty"` | ||||
|  | ||||
| 	ID               string                             `yaml:",omitempty"` | ||||
| 	Builds           []string                           `yaml:",omitempty"` | ||||
| 	Name             string                             `yaml:",omitempty"` | ||||
| 	Summary          string                             `yaml:",omitempty"` | ||||
| 	Description      string                             `yaml:",omitempty"` | ||||
| 	Base             string                             `yaml:",omitempty"` | ||||
| 	License          string                             `yaml:",omitempty"` | ||||
| 	Grade            string                             `yaml:",omitempty"` | ||||
| 	ID               string                             `yaml:"id,omitempty"` | ||||
| 	Builds           []string                           `yaml:"builds,omitempty"` | ||||
| 	Name             string                             `yaml:"name,omitempty"` | ||||
| 	Summary          string                             `yaml:"summary,omitempty"` | ||||
| 	Description      string                             `yaml:"description,omitempty"` | ||||
| 	Base             string                             `yaml:"base,omitempty"` | ||||
| 	License          string                             `yaml:"license,omitempty"` | ||||
| 	Grade            string                             `yaml:"grade,omitempty"` | ||||
| 	ChannelTemplates []string                           `yaml:"channel_templates,omitempty"` | ||||
| 	Confinement      string                             `yaml:",omitempty"` | ||||
| 	Layout           map[string]SnapcraftLayoutMetadata `yaml:",omitempty"` | ||||
| 	Apps             map[string]SnapcraftAppMetadata    `yaml:",omitempty"` | ||||
| 	Confinement      string                             `yaml:"confinement,omitempty"` | ||||
| 	Layout           map[string]SnapcraftLayoutMetadata `yaml:"layout,omitempty"` | ||||
| 	Apps             map[string]SnapcraftAppMetadata    `yaml:"apps,omitempty"` | ||||
| 	Plugs            map[string]interface{}             `yaml:",omitempty"` | ||||
|  | ||||
| 	Files []SnapcraftExtraFiles `yaml:"extra_files,omitempty"` | ||||
| @@ -568,10 +662,10 @@ type Checksum struct { | ||||
| type Docker struct { | ||||
| 	ID                 string   `yaml:"id,omitempty"` | ||||
| 	IDs                []string `yaml:"ids,omitempty"` | ||||
| 	Goos               string   `yaml:",omitempty"` | ||||
| 	Goarch             string   `yaml:",omitempty"` | ||||
| 	Goarm              string   `yaml:",omitempty"` | ||||
| 	Dockerfile         string   `yaml:",omitempty"` | ||||
| 	Goos               string   `yaml:"goos,omitempty"` | ||||
| 	Goarch             string   `yaml:"goarch,omitempty"` | ||||
| 	Goarm              string   `yaml:"goarm,omitempty"` | ||||
| 	Dockerfile         string   `yaml:"dockerfile,omitempty"` | ||||
| 	ImageTemplates     []string `yaml:"image_templates,omitempty"` | ||||
| 	SkipPush           string   `yaml:"skip_push,omitempty"` | ||||
| 	Files              []string `yaml:"extra_files,omitempty"` | ||||
| @@ -594,15 +688,15 @@ type DockerManifest struct { | ||||
|  | ||||
| // Filters config. | ||||
| type Filters struct { | ||||
| 	Exclude []string `yaml:",omitempty"` | ||||
| 	Exclude []string `yaml:"exclude,omitempty"` | ||||
| } | ||||
|  | ||||
| // Changelog Config. | ||||
| type Changelog struct { | ||||
| 	Filters Filters `yaml:",omitempty"` | ||||
| 	Sort    string  `yaml:",omitempty"` | ||||
| 	Skip    bool    `yaml:",omitempty"` // TODO(caarlos0): rename to Disable to match other pipes | ||||
| 	Use     string  `yaml:",omitempty"` | ||||
| 	Filters Filters `yaml:"filters,omitempty"` | ||||
| 	Sort    string  `yaml:"sort,omitempty"` | ||||
| 	Skip    bool    `yaml:"skip,omitempty"` // TODO(caarlos0): rename to Disable to match other pipes | ||||
| 	Use     string  `yaml:"use,omitempty"` | ||||
| } | ||||
|  | ||||
| // EnvFiles holds paths to files that contains environment variables | ||||
| @@ -615,84 +709,84 @@ type EnvFiles struct { | ||||
|  | ||||
| // Before config. | ||||
| type Before struct { | ||||
| 	Hooks []string `yaml:",omitempty"` | ||||
| 	Hooks []string `yaml:"hooks,omitempty"` | ||||
| } | ||||
|  | ||||
| // Blob contains config for GO CDK blob. | ||||
| type Blob struct { | ||||
| 	Bucket     string      `yaml:",omitempty"` | ||||
| 	Provider   string      `yaml:",omitempty"` | ||||
| 	Region     string      `yaml:",omitempty"` | ||||
| 	Bucket     string      `yaml:"bucket,omitempty"` | ||||
| 	Provider   string      `yaml:"provider,omitempty"` | ||||
| 	Region     string      `yaml:"region,omitempty"` | ||||
| 	DisableSSL bool        `yaml:"disableSSL,omitempty"` | ||||
| 	Folder     string      `yaml:",omitempty"` | ||||
| 	KMSKey     string      `yaml:",omitempty"` | ||||
| 	Folder     string      `yaml:"folder,omitempty"` | ||||
| 	KMSKey     string      `yaml:"kmskey,omitempty"` | ||||
| 	IDs        []string    `yaml:"ids,omitempty"` | ||||
| 	Endpoint   string      `yaml:",omitempty"` // used for minio for example | ||||
| 	Endpoint   string      `yaml:"endpoint,omitempty"` // used for minio for example | ||||
| 	ExtraFiles []ExtraFile `yaml:"extra_files,omitempty"` | ||||
| } | ||||
|  | ||||
| // Upload configuration. | ||||
| type Upload struct { | ||||
| 	Name               string            `yaml:",omitempty"` | ||||
| 	Name               string            `yaml:"name,omitempty"` | ||||
| 	IDs                []string          `yaml:"ids,omitempty"` | ||||
| 	Target             string            `yaml:",omitempty"` | ||||
| 	Username           string            `yaml:",omitempty"` | ||||
| 	Mode               string            `yaml:",omitempty"` | ||||
| 	Method             string            `yaml:",omitempty"` | ||||
| 	Target             string            `yaml:"target,omitempty"` | ||||
| 	Username           string            `yaml:"username,omitempty"` | ||||
| 	Mode               string            `yaml:"mode,omitempty"` | ||||
| 	Method             string            `yaml:"method,omitempty"` | ||||
| 	ChecksumHeader     string            `yaml:"checksum_header,omitempty"` | ||||
| 	TrustedCerts       string            `yaml:"trusted_certificates,omitempty"` | ||||
| 	Checksum           bool              `yaml:",omitempty"` | ||||
| 	Signature          bool              `yaml:",omitempty"` | ||||
| 	Checksum           bool              `yaml:"checksum,omitempty"` | ||||
| 	Signature          bool              `yaml:"signature,omitempty"` | ||||
| 	CustomArtifactName bool              `yaml:"custom_artifact_name,omitempty"` | ||||
| 	CustomHeaders      map[string]string `yaml:"custom_headers,omitempty"` | ||||
| } | ||||
|  | ||||
| // Publisher configuration. | ||||
| type Publisher struct { | ||||
| 	Name      string   `yaml:",omitempty"` | ||||
| 	Name      string   `yaml:"name,omitempty"` | ||||
| 	IDs       []string `yaml:"ids,omitempty"` | ||||
| 	Checksum  bool     `yaml:",omitempty"` | ||||
| 	Signature bool     `yaml:",omitempty"` | ||||
| 	Dir       string   `yaml:",omitempty"` | ||||
| 	Cmd       string   `yaml:",omitempty"` | ||||
| 	Env       []string `yaml:",omitempty"` | ||||
| 	Checksum  bool     `yaml:"checksum,omitempty"` | ||||
| 	Signature bool     `yaml:"signature,omitempty"` | ||||
| 	Dir       string   `yaml:"dir,omitempty"` | ||||
| 	Cmd       string   `yaml:"cmd,omitempty"` | ||||
| 	Env       []string `yaml:"env,omitempty"` | ||||
| } | ||||
|  | ||||
| // Source configuration. | ||||
| type Source struct { | ||||
| 	NameTemplate string `yaml:"name_template,omitempty"` | ||||
| 	Format       string `yaml:",omitempty"` | ||||
| 	Enabled      bool   `yaml:",omitempty"` | ||||
| 	Format       string `yaml:"format,omitempty"` | ||||
| 	Enabled      bool   `yaml:"enabled,omitempty"` | ||||
| } | ||||
|  | ||||
| // Project includes all project configuration. | ||||
| type Project struct { | ||||
| 	ProjectName     string           `yaml:"project_name,omitempty"` | ||||
| 	Env             []string         `yaml:",omitempty"` | ||||
| 	Release         Release          `yaml:",omitempty"` | ||||
| 	Milestones      []Milestone      `yaml:",omitempty"` | ||||
| 	Brews           []Homebrew       `yaml:",omitempty"` | ||||
| 	Rigs            []GoFish         `yaml:",omitempty"` | ||||
| 	Scoop           Scoop            `yaml:",omitempty"` | ||||
| 	Builds          []Build          `yaml:",omitempty"` | ||||
| 	Archives        []Archive        `yaml:",omitempty"` | ||||
| 	Env             []string         `yaml:"env,omitempty"` | ||||
| 	Release         Release          `yaml:"release,omitempty"` | ||||
| 	Milestones      []Milestone      `yaml:"milestones,omitempty"` | ||||
| 	Brews           []Homebrew       `yaml:"brews,omitempty"` | ||||
| 	Rigs            []GoFish         `yaml:"rigs,omitempty"` | ||||
| 	Scoop           Scoop            `yaml:"scoop,omitempty"` | ||||
| 	Builds          []Build          `yaml:"builds,omitempty"` | ||||
| 	Archives        []Archive        `yaml:"archives,omitempty"` | ||||
| 	NFPMs           []NFPM           `yaml:"nfpms,omitempty"` | ||||
| 	Snapcrafts      []Snapcraft      `yaml:",omitempty"` | ||||
| 	Snapshot        Snapshot         `yaml:",omitempty"` | ||||
| 	Checksum        Checksum         `yaml:",omitempty"` | ||||
| 	Dockers         []Docker         `yaml:",omitempty"` | ||||
| 	Snapcrafts      []Snapcraft      `yaml:"snapcrafts,omitempty"` | ||||
| 	Snapshot        Snapshot         `yaml:"snapshot,omitempty"` | ||||
| 	Checksum        Checksum         `yaml:"checksum,omitempty"` | ||||
| 	Dockers         []Docker         `yaml:"dockers,omitempty"` | ||||
| 	DockerManifests []DockerManifest `yaml:"docker_manifests,omitempty"` | ||||
| 	Artifactories   []Upload         `yaml:",omitempty"` | ||||
| 	Uploads         []Upload         `yaml:",omitempty"` | ||||
| 	Artifactories   []Upload         `yaml:"artifactories,omitempty"` | ||||
| 	Uploads         []Upload         `yaml:"uploads,omitempty"` | ||||
| 	Blobs           []Blob           `yaml:"blobs,omitempty"` | ||||
| 	Publishers      []Publisher      `yaml:"publishers,omitempty"` | ||||
| 	Changelog       Changelog        `yaml:",omitempty"` | ||||
| 	Dist            string           `yaml:",omitempty"` | ||||
| 	Signs           []Sign           `yaml:",omitempty"` | ||||
| 	Changelog       Changelog        `yaml:"changelog,omitempty"` | ||||
| 	Dist            string           `yaml:"dist,omitempty"` | ||||
| 	Signs           []Sign           `yaml:"signs,omitempty"` | ||||
| 	DockerSigns     []Sign           `yaml:"docker_signs,omitempty"` | ||||
| 	EnvFiles        EnvFiles         `yaml:"env_files,omitempty"` | ||||
| 	Before          Before           `yaml:",omitempty"` | ||||
| 	Source          Source           `yaml:",omitempty"` | ||||
| 	Before          Before           `yaml:"before,omitempty"` | ||||
| 	Source          Source           `yaml:"source,omitempty"` | ||||
| 	GoMod           GoMod            `yaml:"gomod,omitempty"` | ||||
| 	Announce        Announce         `yaml:"announce,omitempty"` | ||||
|  | ||||
| @@ -712,9 +806,9 @@ type Project struct { | ||||
| } | ||||
|  | ||||
| type GoMod struct { | ||||
| 	Proxy    bool     `yaml:",omitempty"` | ||||
| 	Env      []string `yaml:",omitempty"` | ||||
| 	GoBinary string   `yaml:",omitempty"` | ||||
| 	Proxy    bool     `yaml:"proxy,omitempty"` | ||||
| 	Env      []string `yaml:"env,omitempty"` | ||||
| 	GoBinary string   `yaml:"gobinary,omitempty"` | ||||
| } | ||||
|  | ||||
| type Announce struct { | ||||
|   | ||||
| @@ -8,6 +8,7 @@ fi | ||||
|  | ||||
| rm -rf www/docs/cmd/*.md | ||||
| go run . docs | ||||
| go run . schema -o ./www/docs/static/schema.json | ||||
| "$SED" \ | ||||
| 	-i'' \ | ||||
| 	-e 's/SEE ALSO/See also/g' \ | ||||
|   | ||||
							
								
								
									
										2105
									
								
								www/docs/static/schema.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2105
									
								
								www/docs/static/schema.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user