From 4f952c85ff860286940ab751eb5b62b9665fff1a Mon Sep 17 00:00:00 2001 From: Mark McDonnell Date: Thu, 30 Nov 2023 10:48:50 +0000 Subject: [PATCH] refactor: prepare for 10.7.0 release (#1097) * refactor: prepare for 10.7.0 release * fix(compute/metadata): only display SUCCESS message when updating config * fix: allow disabling of script_info --- .fastly/config.toml | 3 +- pkg/app/metadata.json | 20 ++++++++ pkg/app/run.go | 6 +-- pkg/commands/compute/build.go | 73 +++++++++------------------ pkg/commands/compute/hashfiles.go | 12 ++--- pkg/commands/compute/hashsum.go | 12 ++--- pkg/commands/compute/metadata.go | 66 ++++++++++++++++++------ pkg/commands/compute/metadata_test.go | 8 +-- pkg/commands/compute/publish.go | 12 ++--- pkg/commands/compute/serve.go | 12 ++--- pkg/config/config.go | 2 + 11 files changed, 123 insertions(+), 103 deletions(-) diff --git a/.fastly/config.toml b/.fastly/config.toml index f78d8bd7e..097f79b38 100644 --- a/.fastly/config.toml +++ b/.fastly/config.toml @@ -1,4 +1,4 @@ -config_version = 5 +config_version = 6 [fastly] account_endpoint = "https://accounts.fastly.com" @@ -8,6 +8,7 @@ api_endpoint = "https://api.fastly.com" build_info = "enable" machine_info = "disable" # users have to opt-in for this (everything else they'll have to opt-out) package_info = "enable" +script_info = "enable" [language] [language.go] diff --git a/pkg/app/metadata.json b/pkg/app/metadata.json index b947f61a9..a2c145597 100644 --- a/pkg/app/metadata.json +++ b/pkg/app/metadata.json @@ -1220,6 +1220,26 @@ } } }, + "metadata": { + "examples": [ + { + "cmd": "fastly compute metadata --enable", + "title": "Enable all metadata collection information" + }, + { + "cmd": "fastly compute metadata --disable", + "title": "Disable all metadata collection information" + }, + { + "cmd": "fastly compute metadata --enable-build --enable-machine --enable-package", + "title": "Enable specific metadata collection information" + }, + { + "cmd": "fastly compute metadata --disable-build --disable-machine --disable-package", + "title": "Disable specific metadata collection information" + } + ] + }, "pops": { "apis": [ "https://developer.fastly.com/reference/api/utils/pops/#list-pops" diff --git a/pkg/app/run.go b/pkg/app/run.go index 79b1d4ca3..6d57c8e60 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -186,11 +186,9 @@ func Exec(data *global.Data) error { return nil } - // FIXME: Tweak messaging before for 10.7.0 - // To learn more about what data is being collected, why, and how to disable it: https://developer.fastly.com/reference/cli/ metadataDisable, _ := strconv.ParseBool(data.Env.WasmMetadataDisable) - if slices.Contains(data.Args, "--metadata-enable") && !metadataDisable && !data.Config.CLI.MetadataNoticeDisplayed && commandCollectsData(commandName) { - text.Important(data.Output, "The Fastly CLI is configured to collect data related to Wasm builds (e.g. compilation times, resource usage, and other non-identifying data). To learn more about our data & privacy policies visit https://www.fastly.com/trust. Join the conversation https://bit.ly/wasm-metadata") + if !slices.Contains(data.Args, "--metadata-disable") && !metadataDisable && !data.Config.CLI.MetadataNoticeDisplayed && commandCollectsData(commandName) { + text.Important(data.Output, "The Fastly CLI is configured to collect data related to Wasm builds (e.g. compilation times, resource usage, and other non-identifying data). To learn more about what data is being collected, why, and how to disable it: https://developer.fastly.com/reference/cli/") text.Break(data.Output) data.Config.CLI.MetadataNoticeDisplayed = true err := data.Config.Write(data.ConfigPath) diff --git a/pkg/commands/compute/build.go b/pkg/commands/compute/build.go index f0684babc..ac8bd740b 100644 --- a/pkg/commands/compute/build.go +++ b/pkg/commands/compute/build.go @@ -62,7 +62,7 @@ type BuildCommand struct { // e.g. serve, publish, hashsum, hash-files // This is so they can set values appropriately before calling Build.Exec(). Flags Flags - MetadataEnable bool + MetadataDisable bool MetadataFilterEnvVars string MetadataShow bool } @@ -79,14 +79,12 @@ func NewBuildCommand(parent cmd.Registerer, g *global.Data) *BuildCommand { c.CmdClause.Flag("env", "The manifest environment config to use (e.g. 'stage' will attempt to read 'fastly.stage.toml')").StringVar(&c.Flags.Env) c.CmdClause.Flag("include-source", "Include source code in built package").BoolVar(&c.Flags.IncludeSrc) c.CmdClause.Flag("language", "Language type").StringVar(&c.Flags.Lang) + c.CmdClause.Flag("metadata-disable", "Disable Wasm binary metadata annotations").BoolVar(&c.MetadataDisable) + c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").StringVar(&c.MetadataFilterEnvVars) c.CmdClause.Flag("metadata-show", "Inspect the Wasm binary metadata").BoolVar(&c.MetadataShow) c.CmdClause.Flag("package-name", "Package name").StringVar(&c.Flags.PackageName) c.CmdClause.Flag("timeout", "Timeout, in seconds, for the build compilation step").IntVar(&c.Flags.Timeout) - // Hidden - c.CmdClause.Flag("metadata-enable", "Feature flag to trial the Wasm binary metadata annotations").Hidden().BoolVar(&c.MetadataEnable) - c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Hidden().StringVar(&c.MetadataFilterEnvVars) - return &c } @@ -209,36 +207,8 @@ func (c *BuildCommand) Exec(in io.Reader, out io.Writer) (err error) { "metadata", "add", "bin/main.wasm", metadataProcessedBy, } - // FIXME: For feature launch replace enable flag with disable equivalent. - // e.g. define --metadata-disable and check for that first with env var. - // Also make sure hidden flags (across all composite commands) aren't hidden. - // Also update the run.go app to remove the message which displays a warning. - // Also one final release un-hide the metadata command and add metadata.json examples - // e.g. - /* - "metadata": { - "examples": [ - { - "cmd": "fastly compute metadata --enable", - "title": "Enable all metadata collection information" - }, - { - "cmd": "fastly compute metadata --disable", - "title": "Disable all metadata collection information" - }, - { - "cmd": "fastly compute metadata --enable-build --enable-machine --enable-package", - "title": "Enable specific metadata collection information" - }, - { - "cmd": "fastly compute metadata --disable-build --disable-machine --disable-package", - "title": "Disable specific metadata collection information" - } - ] - }, - */ metadataDisable, _ := strconv.ParseBool(c.Globals.Env.WasmMetadataDisable) - if c.MetadataEnable && !metadataDisable { + if !c.MetadataDisable && !metadataDisable { if err := c.AnnotateWasmBinaryLong(wasmtools, metadataArgs, language); err != nil { return err } @@ -336,11 +306,6 @@ func (c *BuildCommand) Exec(in io.Reader, out io.Writer) (err error) { out = originalOut text.Success(out, "\nBuilt package (%s)", dest) - - // FIXME: Remove this notice in the CLI version 10.7.0 - if !c.Globals.Flags.Quiet { - text.Important(out, "\nIn the next release (10.7.0), the Fastly CLI will collect data related to Wasm builds. If you have questions, comments or feedback, join the discussion at https://bit.ly/wasm-metadata") - } return nil } @@ -357,22 +322,21 @@ func (c *BuildCommand) AnnotateWasmBinaryLong(wasmtools string, args []string, l // Allow customer to specify their own env variables to be filtered. ExtendStaticSecretEnvVars(c.MetadataFilterEnvVars) - dc := DataCollection{ - ScriptInfo: DataCollectionScriptInfo{ - DefaultBuildUsed: language.DefaultBuildScript(), - BuildScript: FilterSecretsFromString(c.Globals.Manifest.File.Scripts.Build), - EnvVars: FilterSecretsFromSlice(c.Globals.Manifest.File.Scripts.EnvVars), - PostInitScript: FilterSecretsFromString(c.Globals.Manifest.File.Scripts.PostInit), - PostBuildScript: FilterSecretsFromString(c.Globals.Manifest.File.Scripts.PostBuild), - }, + dc := DataCollection{} + + metadata := c.Globals.Config.WasmMetadata + + // Only record basic data if user has disabled all other metadata collection. + if metadata.BuildInfo == "disable" && metadata.MachineInfo == "disable" && metadata.PackageInfo == "disable" && metadata.ScriptInfo == "disable" { + return c.AnnotateWasmBinaryShort(wasmtools, args) } - if c.Globals.Config.WasmMetadata.BuildInfo == "enable" { + if metadata.BuildInfo == "enable" { dc.BuildInfo = DataCollectionBuildInfo{ MemoryHeapAlloc: ms.HeapAlloc, } } - if c.Globals.Config.WasmMetadata.MachineInfo == "enable" { + if metadata.MachineInfo == "enable" { dc.MachineInfo = DataCollectionMachineInfo{ Arch: runtime.GOARCH, CPUs: runtime.NumCPU(), @@ -381,12 +345,21 @@ func (c *BuildCommand) AnnotateWasmBinaryLong(wasmtools string, args []string, l OS: runtime.GOOS, } } - if c.Globals.Config.WasmMetadata.PackageInfo == "enable" { + if metadata.PackageInfo == "enable" { dc.PackageInfo = DataCollectionPackageInfo{ ClonedFrom: c.Globals.Manifest.File.ClonedFrom, Packages: language.Dependencies(), } } + if metadata.ScriptInfo == "enable" { + dc.ScriptInfo = DataCollectionScriptInfo{ + DefaultBuildUsed: language.DefaultBuildScript(), + BuildScript: FilterSecretsFromString(c.Globals.Manifest.File.Scripts.Build), + EnvVars: FilterSecretsFromSlice(c.Globals.Manifest.File.Scripts.EnvVars), + PostInitScript: FilterSecretsFromString(c.Globals.Manifest.File.Scripts.PostInit), + PostBuildScript: FilterSecretsFromString(c.Globals.Manifest.File.Scripts.PostBuild), + } + } data, err := json.Marshal(dc) if err != nil { diff --git a/pkg/commands/compute/hashfiles.go b/pkg/commands/compute/hashfiles.go index f5200ef53..0deda8360 100644 --- a/pkg/commands/compute/hashfiles.go +++ b/pkg/commands/compute/hashfiles.go @@ -37,7 +37,7 @@ type HashFilesCommand struct { env cmd.OptionalString includeSrc cmd.OptionalBool lang cmd.OptionalString - metadataEnable cmd.OptionalBool + metadataDisable cmd.OptionalBool metadataFilterEnvVars cmd.OptionalString metadataShow cmd.OptionalBool packageName cmd.OptionalString @@ -58,16 +58,14 @@ func NewHashFilesCommand(parent cmd.Registerer, g *global.Data, build *BuildComm c.CmdClause.Flag("env", "The manifest environment config to use (e.g. 'stage' will attempt to read 'fastly.stage.toml')").Action(c.env.Set).StringVar(&c.env.Value) c.CmdClause.Flag("include-source", "Include source code in built package").Action(c.includeSrc.Set).BoolVar(&c.includeSrc.Value) c.CmdClause.Flag("language", "Language type").Action(c.lang.Set).StringVar(&c.lang.Value) + c.CmdClause.Flag("metadata-disable", "Disable Wasm binary metadata annotations").Action(c.metadataDisable.Set).BoolVar(&c.metadataDisable.Value) + c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) c.CmdClause.Flag("metadata-show", "Inspect the Wasm binary metadata").Action(c.metadataShow.Set).BoolVar(&c.metadataShow.Value) c.CmdClause.Flag("package", "Path to a package tar.gz").Short('p').StringVar(&c.Package) c.CmdClause.Flag("package-name", "Package name").Action(c.packageName.Set).StringVar(&c.packageName.Value) c.CmdClause.Flag("skip-build", "Skip the build step").BoolVar(&c.SkipBuild) c.CmdClause.Flag("timeout", "Timeout, in seconds, for the build compilation step").Action(c.timeout.Set).IntVar(&c.timeout.Value) - // Hidden - c.CmdClause.Flag("metadata-enable", "Feature flag to trial the Wasm binary metadata annotations").Hidden().Action(c.metadataEnable.Set).BoolVar(&c.metadataEnable.Value) - c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Hidden().Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) - return &c } @@ -165,8 +163,8 @@ func (c *HashFilesCommand) Build(in io.Reader, out io.Writer) error { if c.timeout.WasSet { c.buildCmd.Flags.Timeout = c.timeout.Value } - if c.metadataEnable.WasSet { - c.buildCmd.MetadataEnable = c.metadataEnable.Value + if c.metadataDisable.WasSet { + c.buildCmd.MetadataDisable = c.metadataDisable.Value } if c.metadataFilterEnvVars.WasSet { c.buildCmd.MetadataFilterEnvVars = c.metadataFilterEnvVars.Value diff --git a/pkg/commands/compute/hashsum.go b/pkg/commands/compute/hashsum.go index 242b4f735..9d75870f9 100644 --- a/pkg/commands/compute/hashsum.go +++ b/pkg/commands/compute/hashsum.go @@ -26,7 +26,7 @@ type HashsumCommand struct { env cmd.OptionalString includeSrc cmd.OptionalBool lang cmd.OptionalString - metadataEnable cmd.OptionalBool + metadataDisable cmd.OptionalBool metadataFilterEnvVars cmd.OptionalString metadataShow cmd.OptionalBool packageName cmd.OptionalString @@ -48,16 +48,14 @@ func NewHashsumCommand(parent cmd.Registerer, g *global.Data, build *BuildComman c.CmdClause.Flag("env", "The manifest environment config to use (e.g. 'stage' will attempt to read 'fastly.stage.toml')").Action(c.env.Set).StringVar(&c.env.Value) c.CmdClause.Flag("include-source", "Include source code in built package").Action(c.includeSrc.Set).BoolVar(&c.includeSrc.Value) c.CmdClause.Flag("language", "Language type").Action(c.lang.Set).StringVar(&c.lang.Value) + c.CmdClause.Flag("metadata-disable", "Disable Wasm binary metadata annotations").Action(c.metadataDisable.Set).BoolVar(&c.metadataDisable.Value) + c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) c.CmdClause.Flag("metadata-show", "Inspect the Wasm binary metadata").Action(c.metadataShow.Set).BoolVar(&c.metadataShow.Value) c.CmdClause.Flag("package", "Path to a package tar.gz").Short('p').StringVar(&c.PackagePath) c.CmdClause.Flag("package-name", "Package name").Action(c.packageName.Set).StringVar(&c.packageName.Value) c.CmdClause.Flag("skip-build", "Skip the build step").BoolVar(&c.SkipBuild) c.CmdClause.Flag("timeout", "Timeout, in seconds, for the build compilation step").Action(c.timeout.Set).IntVar(&c.timeout.Value) - // Hidden - c.CmdClause.Flag("metadata-enable", "Feature flag to trial the Wasm binary metadata annotations").Hidden().Action(c.metadataEnable.Set).BoolVar(&c.metadataEnable.Value) - c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Hidden().Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) - return &c } @@ -169,8 +167,8 @@ func (c *HashsumCommand) Build(in io.Reader, out io.Writer) error { if c.timeout.WasSet { c.buildCmd.Flags.Timeout = c.timeout.Value } - if c.metadataEnable.WasSet { - c.buildCmd.MetadataEnable = c.metadataEnable.Value + if c.metadataDisable.WasSet { + c.buildCmd.MetadataDisable = c.metadataDisable.Value } if c.metadataFilterEnvVars.WasSet { c.buildCmd.MetadataFilterEnvVars = c.metadataFilterEnvVars.Value diff --git a/pkg/commands/compute/metadata.go b/pkg/commands/compute/metadata.go index cac78170d..cfe6c6b4d 100644 --- a/pkg/commands/compute/metadata.go +++ b/pkg/commands/compute/metadata.go @@ -19,25 +19,29 @@ type MetadataCommand struct { disableBuild bool disableMachine bool disablePackage bool + disableScript bool enable bool enableBuild bool enableMachine bool enablePackage bool + enableScript bool } // NewMetadataCommand returns a new command registered in the parent. func NewMetadataCommand(parent cmd.Registerer, g *global.Data) *MetadataCommand { var c MetadataCommand c.Globals = g - c.CmdClause = parent.Command("metadata", "Control what metadata is collected").Hidden() + c.CmdClause = parent.Command("metadata", "Control what metadata is collected") c.CmdClause.Flag("disable", "Disable all metadata").BoolVar(&c.disable) c.CmdClause.Flag("disable-build", "Disable metadata for information regarding the time taken for builds and compilation processes").BoolVar(&c.disableBuild) c.CmdClause.Flag("disable-machine", "Disable metadata for general, non-identifying system specifications (CPU, RAM, operating system)").BoolVar(&c.disableMachine) c.CmdClause.Flag("disable-package", "Disable metadata for packages and libraries utilized in your source code").BoolVar(&c.disablePackage) + c.CmdClause.Flag("disable-script", "Disable metadata for script info from the fastly.toml manifest (i.e. [scripts] section).").BoolVar(&c.disableScript) c.CmdClause.Flag("enable", "Enable all metadata").BoolVar(&c.enable) c.CmdClause.Flag("enable-build", "Enable metadata for information regarding the time taken for builds and compilation processes").BoolVar(&c.enableBuild) c.CmdClause.Flag("enable-machine", "Enable metadata for general, non-identifying system specifications (CPU, RAM, operating system)").BoolVar(&c.enableMachine) c.CmdClause.Flag("enable-package", "Enable metadata for packages and libraries utilized in your source code").BoolVar(&c.enablePackage) + c.CmdClause.Flag("enable-script", "Enable metadata for script info from the fastly.toml manifest (i.e. [scripts] section).").BoolVar(&c.enableScript) return &c } @@ -46,47 +50,76 @@ func (c *MetadataCommand) Exec(_ io.Reader, out io.Writer) error { if c.disable && c.enable { return fsterr.ErrInvalidEnableDisableFlagCombo } - if c.disable { - c.Globals.Config.WasmMetadata = toggleAll("disable") - } + + var modified bool + + // Global enable/disable if c.enable { c.Globals.Config.WasmMetadata = toggleAll("enable") + modified = true } - if c.disable && (c.enableBuild || c.enableMachine || c.enablePackage) { - text.Info(out, "We will disable all metadata except for the specified `--enable-*` flags") - text.Break(out) - } - if c.enable && (c.disableBuild || c.disableMachine || c.disablePackage) { - text.Info(out, "We will enable all metadata except for the specified `--disable-*` flags") - text.Break(out) + if c.disable { + c.Globals.Config.WasmMetadata = toggleAll("disable") + modified = true } + + // Specific enablement if c.enableBuild { c.Globals.Config.WasmMetadata.BuildInfo = "enable" + modified = true } if c.enableMachine { c.Globals.Config.WasmMetadata.MachineInfo = "enable" + modified = true } if c.enablePackage { c.Globals.Config.WasmMetadata.PackageInfo = "enable" + modified = true } + if c.enableScript { + c.Globals.Config.WasmMetadata.ScriptInfo = "enable" + modified = true + } + + // Specific disablement if c.disableBuild { c.Globals.Config.WasmMetadata.BuildInfo = "disable" + modified = true } if c.disableMachine { c.Globals.Config.WasmMetadata.MachineInfo = "disable" + modified = true } if c.disablePackage { c.Globals.Config.WasmMetadata.PackageInfo = "disable" + modified = true } - err := c.Globals.Config.Write(c.Globals.ConfigPath) - if err != nil { - return fmt.Errorf("failed to persist metadata choices to disk: %w", err) + if c.disableScript { + c.Globals.Config.WasmMetadata.ScriptInfo = "disable" + modified = true } - text.Success(out, "configuration updated (see: `fastly config`)") - text.Break(out) + + if modified { + if c.disable && (c.enableBuild || c.enableMachine || c.enablePackage || c.enableScript) { + text.Info(out, "We will disable all metadata except for the specified `--enable-*` flags") + text.Break(out) + } + if c.enable && (c.disableBuild || c.disableMachine || c.disablePackage || c.disableScript) { + text.Info(out, "We will enable all metadata except for the specified `--disable-*` flags") + text.Break(out) + } + err := c.Globals.Config.Write(c.Globals.ConfigPath) + if err != nil { + return fmt.Errorf("failed to persist metadata choices to disk: %w", err) + } + text.Success(out, "configuration updated") + text.Break(out) + } + text.Output(out, "Build Information: %s", c.Globals.Config.WasmMetadata.BuildInfo) text.Output(out, "Machine Information: %s", c.Globals.Config.WasmMetadata.MachineInfo) text.Output(out, "Package Information: %s", c.Globals.Config.WasmMetadata.PackageInfo) + text.Output(out, "Script Information: %s", c.Globals.Config.WasmMetadata.ScriptInfo) return nil } @@ -95,5 +128,6 @@ func toggleAll(state string) config.WasmMetadata { t.BuildInfo = state t.MachineInfo = state t.PackageInfo = state + t.ScriptInfo = state return t } diff --git a/pkg/commands/compute/metadata_test.go b/pkg/commands/compute/metadata_test.go index 0c756682b..f68127470 100644 --- a/pkg/commands/compute/metadata_test.go +++ b/pkg/commands/compute/metadata_test.go @@ -71,7 +71,7 @@ func TestMetadata(t *testing.T) { { TestScenario: testutil.TestScenario{ Args: args("compute metadata --enable"), - WantOutput: "SUCCESS: configuration updated (see: `fastly config`)", + WantOutput: "SUCCESS: configuration updated", }, ExpectedConfig: config.WasmMetadata{ BuildInfo: "enable", @@ -82,7 +82,7 @@ func TestMetadata(t *testing.T) { { TestScenario: testutil.TestScenario{ Args: args("compute metadata --disable"), - WantOutput: "SUCCESS: configuration updated (see: `fastly config`)", + WantOutput: "SUCCESS: configuration updated", }, ExpectedConfig: config.WasmMetadata{ BuildInfo: "disable", @@ -95,7 +95,7 @@ func TestMetadata(t *testing.T) { Args: args("compute metadata --enable --disable-build"), WantOutputs: []string{ "INFO: We will enable all metadata except for the specified `--disable-*` flags", - "SUCCESS: configuration updated (see: `fastly config`)", + "SUCCESS: configuration updated", }, }, ExpectedConfig: config.WasmMetadata{ @@ -109,7 +109,7 @@ func TestMetadata(t *testing.T) { Args: args("compute metadata --disable --enable-machine"), WantOutputs: []string{ "INFO: We will disable all metadata except for the specified `--enable-*` flags", - "SUCCESS: configuration updated (see: `fastly config`)", + "SUCCESS: configuration updated", }, }, ExpectedConfig: config.WasmMetadata{ diff --git a/pkg/commands/compute/publish.go b/pkg/commands/compute/publish.go index 2deb16a66..b80bcb339 100644 --- a/pkg/commands/compute/publish.go +++ b/pkg/commands/compute/publish.go @@ -20,7 +20,7 @@ type PublishCommand struct { dir cmd.OptionalString includeSrc cmd.OptionalBool lang cmd.OptionalString - metadataEnable cmd.OptionalBool + metadataDisable cmd.OptionalBool metadataFilterEnvVars cmd.OptionalString metadataShow cmd.OptionalBool packageName cmd.OptionalString @@ -53,6 +53,8 @@ func NewPublishCommand(parent cmd.Registerer, g *global.Data, build *BuildComman c.CmdClause.Flag("env", "The manifest environment config to use (e.g. 'stage' will attempt to read 'fastly.stage.toml')").Action(c.env.Set).StringVar(&c.env.Value) c.CmdClause.Flag("include-source", "Include source code in built package").Action(c.includeSrc.Set).BoolVar(&c.includeSrc.Value) c.CmdClause.Flag("language", "Language type").Action(c.lang.Set).StringVar(&c.lang.Value) + c.CmdClause.Flag("metadata-disable", "Disable Wasm binary metadata annotations").Action(c.metadataDisable.Set).BoolVar(&c.metadataDisable.Value) + c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) c.CmdClause.Flag("metadata-show", "Inspect the Wasm binary metadata").Action(c.metadataShow.Set).BoolVar(&c.metadataShow.Value) c.CmdClause.Flag("package", "Path to a package tar.gz").Short('p').Action(c.pkg.Set).StringVar(&c.pkg.Value) c.CmdClause.Flag("package-name", "Package name").Action(c.packageName.Set).StringVar(&c.packageName.Value) @@ -80,10 +82,6 @@ func NewPublishCommand(parent cmd.Registerer, g *global.Data, build *BuildComman }) c.CmdClause.Flag("timeout", "Timeout, in seconds, for the build compilation step").Action(c.timeout.Set).IntVar(&c.timeout.Value) - // Hidden - c.CmdClause.Flag("metadata-enable", "Feature flag to trial the Wasm binary metadata annotations").Hidden().Action(c.metadataEnable.Set).BoolVar(&c.metadataEnable.Value) - c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Hidden().Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) - return &c } @@ -114,8 +112,8 @@ func (c *PublishCommand) Exec(in io.Reader, out io.Writer) (err error) { if c.timeout.WasSet { c.build.Flags.Timeout = c.timeout.Value } - if c.metadataEnable.WasSet { - c.build.MetadataEnable = c.metadataEnable.Value + if c.metadataDisable.WasSet { + c.build.MetadataDisable = c.metadataDisable.Value } if c.metadataFilterEnvVars.WasSet { c.build.MetadataFilterEnvVars = c.metadataFilterEnvVars.Value diff --git a/pkg/commands/compute/serve.go b/pkg/commands/compute/serve.go index f4563a30b..ec84346e4 100644 --- a/pkg/commands/compute/serve.go +++ b/pkg/commands/compute/serve.go @@ -47,7 +47,7 @@ type ServeCommand struct { dir cmd.OptionalString includeSrc cmd.OptionalBool lang cmd.OptionalString - metadataEnable cmd.OptionalBool + metadataDisable cmd.OptionalBool metadataFilterEnvVars cmd.OptionalString metadataShow cmd.OptionalBool packageName cmd.OptionalString @@ -85,6 +85,8 @@ func NewServeCommand(parent cmd.Registerer, g *global.Data, build *BuildCommand) c.CmdClause.Flag("file", "The Wasm file to run").Default("bin/main.wasm").StringVar(&c.file) c.CmdClause.Flag("include-source", "Include source code in built package").Action(c.includeSrc.Set).BoolVar(&c.includeSrc.Value) c.CmdClause.Flag("language", "Language type").Action(c.lang.Set).StringVar(&c.lang.Value) + c.CmdClause.Flag("metadata-disable", "Disable Wasm binary metadata annotations").Action(c.metadataDisable.Set).BoolVar(&c.metadataDisable.Value) + c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) c.CmdClause.Flag("metadata-show", "Inspect the Wasm binary metadata").Action(c.metadataShow.Set).BoolVar(&c.metadataShow.Value) c.CmdClause.Flag("package-name", "Package name").Action(c.packageName.Set).StringVar(&c.packageName.Value) c.CmdClause.Flag("profile-guest", "Profile the Wasm guest under Viceroy (requires Viceroy 0.9.1 or higher). View profiles at https://profiler.firefox.com/.").BoolVar(&c.profileGuest) @@ -96,10 +98,6 @@ func NewServeCommand(parent cmd.Registerer, g *global.Data, build *BuildCommand) c.CmdClause.Flag("watch", "Watch for file changes, then rebuild project and restart local server").BoolVar(&c.watch) c.CmdClause.Flag("watch-dir", "The directory to watch files from (can be relative or absolute). Defaults to current directory.").Action(c.watchDir.Set).StringVar(&c.watchDir.Value) - // Hidden - c.CmdClause.Flag("metadata-enable", "Feature flag to trial the Wasm binary metadata annotations").Hidden().Action(c.metadataEnable.Set).BoolVar(&c.metadataEnable.Value) - c.CmdClause.Flag("metadata-filter-envvars", "Redact specified environment variables from [scripts.env_vars] using comma-separated list").Hidden().Action(c.metadataFilterEnvVars.Set).StringVar(&c.metadataFilterEnvVars.Value) - return &c } @@ -261,8 +259,8 @@ func (c *ServeCommand) Build(in io.Reader, out io.Writer) error { if c.timeout.WasSet { c.build.Flags.Timeout = c.timeout.Value } - if c.metadataEnable.WasSet { - c.build.MetadataEnable = c.metadataEnable.Value + if c.metadataDisable.WasSet { + c.build.MetadataDisable = c.metadataDisable.Value } if c.metadataFilterEnvVars.WasSet { c.build.MetadataFilterEnvVars = c.metadataFilterEnvVars.Value diff --git a/pkg/config/config.go b/pkg/config/config.go index 7d67cbe02..5cbfa8215 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -77,6 +77,8 @@ type WasmMetadata struct { // enabling us to prioritize support for the most commonly used components // (enable/disable). PackageInfo string `toml:"package_info"` + // ScriptInfo represents the [scripts] section from the fastly.toml manifest. + ScriptInfo string `toml:"script_info"` } // CLI represents CLI specific configuration.