diff --git a/internal/cmd/check.go b/internal/cmd/check.go index a611b148..6a8150f5 100644 --- a/internal/cmd/check.go +++ b/internal/cmd/check.go @@ -57,7 +57,7 @@ func checkCmd[T controlinit.CheckTarget]() *cobra.Command { builder. AddCloudFlags(). AddModLocationFlag(). - AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable or param")). + AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable if the mod supports it")). AddBoolFlag(constants.ArgHeader, true, "Include column headers for csv and table output"). AddBoolFlag(constants.ArgHelp, false, "Help for run command", cmdconfig.FlagOptions.WithShortHand("h")). AddBoolFlag(constants.ArgInput, true, "Enable interactive prompts"). diff --git a/internal/cmd/dashboard.go b/internal/cmd/dashboard.go index 1a29d3bf..ab9c073d 100644 --- a/internal/cmd/dashboard.go +++ b/internal/cmd/dashboard.go @@ -54,7 +54,7 @@ The current mod is the working directory, or the directory specified by the --mo AddModLocationFlag(). AddStringArrayFlag(constants.ArgArg, nil, "Specify the value of a dashboard argument"). AddStringSliceFlag(constants.ArgExport, nil, "Export output to file, supported format: pps (snapshot)"). - AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable or param")). + AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable if the mod supports it")). AddIntFlag(constants.ArgDatabaseQueryTimeout, localconstants.DatabaseDefaultQueryTimeout, "The query timeout"). AddBoolFlag(constants.ArgHelp, false, "Help for dashboard", cmdconfig.FlagOptions.WithShortHand("h")). AddBoolFlag(constants.ArgInput, true, "Enable interactive prompts"). diff --git a/internal/cmd/mod.go b/internal/cmd/mod.go index e555c898..22daa14c 100644 --- a/internal/cmd/mod.go +++ b/internal/cmd/mod.go @@ -102,7 +102,7 @@ Examples: cmdconfig.OnCmd(cmd). AddBoolFlag(constants.ArgDryRun, false, "Show which mods would be installed/updated/uninstalled without modifying them"). - AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable or param")). + AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable if the mod supports it")). AddBoolFlag(constants.ArgForce, false, "Install mods even if plugin/cli version requirements are not met (cannot be used with --dry-run)"). AddBoolFlag(constants.ArgHelp, false, "Help for install", cmdconfig.FlagOptions.WithShortHand("h")). AddBoolFlag(constants.ArgPrune, true, "Remove unused dependencies after installation is complete"). diff --git a/internal/cmd/query.go b/internal/cmd/query.go index e452fdc3..993a8ab3 100644 --- a/internal/cmd/query.go +++ b/internal/cmd/query.go @@ -51,7 +51,7 @@ The current mod is the working directory, or the directory specified by the --mo // NOTE: use StringArrayFlag for ArgQueryInput, not StringSliceFlag // Cobra will interpret values passed to a StringSliceFlag as CSV, where args passed to StringArrayFlag are not parsed and used raw AddStringArrayFlag(constants.ArgArg, nil, "Specify the value of a query argument"). - AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable or param")). + AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable if the mod supports it")). AddIntFlag(constants.ArgDatabaseQueryTimeout, localconstants.DatabaseDefaultQueryTimeout, "The query timeout"). AddStringSliceFlag(constants.ArgExport, nil, "Export output to file, supported formats: csv, html, json, md, nunit3, pps (snapshot), asff"). AddBoolFlag(constants.ArgHeader, true, "Include column headers for csv and table output"). diff --git a/internal/cmd/server.go b/internal/cmd/server.go index 2f2e730a..66e4d05e 100644 --- a/internal/cmd/server.go +++ b/internal/cmd/server.go @@ -29,7 +29,7 @@ func serverCmd() *cobra.Command { Args: cobra.NoArgs, Run: runServerCmd, Short: "Start Powerpipe dashboard server", - Long: `Run the Powerpipe server, including the dashbaord server and the API. + Long: `Run the Powerpipe server, including the dashboard server and the API. Powerpipe server runs in the foreground; Press Ctrl-C to exit.`, } @@ -43,7 +43,7 @@ Powerpipe server runs in the foreground; Press Ctrl-C to exit.`, AddStringFlag(constants.ArgListen, string(dashboardserver.ListenTypeLocal), "Accept connections from local (localhost only) or network (all interfaces / IP addresses)"). AddStringArrayFlag(constants.ArgVariable, []string{}, "Specify the value of a variable. Multiple --var arguments may be passed."). AddStringFlag(constants.ArgVarFile, "", "Specify a .ppvar file containing variable values."). - AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable or param")). + AddStringFlag(constants.ArgDatabase, "", "Turbot Pipes workspace database", cmdconfig.FlagOptions.Deprecated("use a variable if the mod supports it")). AddIntFlag(constants.ArgDashboardTimeout, 0, "Set a the dashboard execution timeout") return cmd diff --git a/internal/cmdconfig/cmd_hooks.go b/internal/cmdconfig/cmd_hooks.go index 05588265..869da176 100644 --- a/internal/cmdconfig/cmd_hooks.go +++ b/internal/cmdconfig/cmd_hooks.go @@ -176,7 +176,7 @@ func initGlobalConfig() error_helpers.ErrorAndWarnings { } // now validate all config values have appropriate values - return validateConfig() + return validateConfig(loader.GetActiveWorkspaceProfile()) } func setPipesTokenDefault(loader *parse.WorkspaceProfileLoader[*workspace_profile.PowerpipeWorkspaceProfile]) error { @@ -209,9 +209,8 @@ func setPipesTokenDefault(loader *parse.WorkspaceProfileLoader[*workspace_profil return nil } -// now validate config values have appropriate values -// (currently validates telemetry) -func validateConfig() error_helpers.ErrorAndWarnings { +// now validate config values have appropriate values +func validateConfig(activeWorkspace *workspace_profile.PowerpipeWorkspaceProfile) error_helpers.ErrorAndWarnings { var res = error_helpers.ErrorAndWarnings{} telemetry := viper.GetString(constants.ArgTelemetry) if !helpers.StringSliceContains(constants.TelemetryLevels, telemetry) { @@ -221,6 +220,16 @@ func validateConfig() error_helpers.ErrorAndWarnings { if _, legacyDiagnosticsSet := os.LookupEnv(plugin.EnvLegacyDiagnosticsLevel); legacyDiagnosticsSet { res.AddWarning(fmt.Sprintf("Environment variable %s is deprecated - use %s", plugin.EnvLegacyDiagnosticsLevel, plugin.EnvDiagnosticsLevel)) } + + // database deprecation warnings + if _, dbEnvSet := os.LookupEnv(app_specific.EnvDatabase); dbEnvSet { + res.AddWarning(fmt.Sprintf("Environment variable %s is deprecated- use a variable if the mod supports it", app_specific.EnvDatabase)) + } + // check active workspace profile + if activeWorkspace != nil && activeWorkspace.Database != nil { + res.AddWarning(fmt.Sprintf("workspace property 'database' is deprecated - use a variable if the mod supports it (%s:%d-%d)", activeWorkspace.DeclRange.Filename, activeWorkspace.DeclRange.Start.Line, activeWorkspace.DeclRange.End.Line)) + } + res.Error = plugin.ValidateDiagnosticsEnvVar() return res diff --git a/internal/powerpipeconfig/powerpipe_config.go b/internal/powerpipeconfig/powerpipe_config.go index 68584bdf..5b4ab53b 100644 --- a/internal/powerpipeconfig/powerpipe_config.go +++ b/internal/powerpipeconfig/powerpipe_config.go @@ -31,7 +31,7 @@ type PowerpipeConfig struct { loadLock *sync.Mutex DefaultConnection connection.ConnectionStringProvider - // cache the conneciton strings for cloud workspaces (is this ok??? + // cache the connection strings for cloud workspaces (is this ok??? cloudConnectionStrings map[string]string // lock cloudConnectionStringLock *sync.RWMutex