| 247 | } |
| 248 | |
| 249 | func (c *App) setup(app *kingpin.Application) { |
| 250 | app.PreAction(func(pc *kingpin.ParseContext) error { |
| 251 | if sc := pc.SelectedCommand; sc != nil { |
| 252 | c.currentAction = sc.FullCommand() |
| 253 | } else { |
| 254 | c.currentAction = "unknown-action" |
| 255 | } |
| 256 | |
| 257 | return nil |
| 258 | }) |
| 259 | |
| 260 | _ = app.Flag("help-full", "Show help for all commands, including hidden").Action(func(pc *kingpin.ParseContext) error { |
| 261 | _ = app.UsageForContextWithTemplate(pc, 0, kingpin.DefaultUsageTemplate) |
| 262 | |
| 263 | c.exitWithError(nil) |
| 264 | |
| 265 | return nil |
| 266 | }).Bool() |
| 267 | |
| 268 | app.Flag("auto-maintenance", "Automatic maintenance").Default("true").Hidden().BoolVar(&c.enableAutomaticMaintenance) |
| 269 | |
| 270 | // hidden flags to control auto-update behavior. |
| 271 | app.Flag("initial-update-check-delay", "Initial delay before first time update check").Default("24h").Hidden().Envar(c.EnvName("KOPIA_INITIAL_UPDATE_CHECK_DELAY")).DurationVar(&c.initialUpdateCheckDelay) |
| 272 | app.Flag("update-check-interval", "Interval between update checks").Default("168h").Hidden().Envar(c.EnvName("KOPIA_UPDATE_CHECK_INTERVAL")).DurationVar(&c.updateCheckInterval) |
| 273 | app.Flag("update-available-notify-interval", "Interval between update notifications").Default("1h").Hidden().Envar(c.EnvName("KOPIA_UPDATE_NOTIFY_INTERVAL")).DurationVar(&c.updateAvailableNotifyInterval) |
| 274 | app.Flag("config-file", "Specify the config file to use").Default("repository.config").Envar(c.EnvName("KOPIA_CONFIG_PATH")).StringVar(&c.configPath) |
| 275 | app.Flag("trace-storage", "Enables tracing of storage operations.").Default("true").Hidden().BoolVar(&c.traceStorage) |
| 276 | app.Flag("timezone", "Format time according to specified time zone (local, utc, original or time zone name)").Hidden().StringVar(&timeZone) |
| 277 | app.Flag("password", "Repository password.").Envar(c.EnvName("KOPIA_PASSWORD")).Short('p').StringVar(&c.password) |
| 278 | app.Flag("persist-credentials", "Persist credentials").Default("true").Envar(c.EnvName("KOPIA_PERSIST_CREDENTIALS_ON_CONNECT")).BoolVar(&c.persistCredentials) |
| 279 | app.Flag("disable-repository-log", "Disable repository log").Hidden().Envar(c.EnvName("KOPIA_DISABLE_REPOSITORY_LOG")).BoolVar(&c.disableRepositoryLog) |
| 280 | app.Flag("dangerous-commands", "Enable dangerous commands that could result in data loss and repository corruption.").Hidden().Envar(c.EnvName("KOPIA_DANGEROUS_COMMANDS")).StringVar(&c.DangerousCommands) |
| 281 | app.Flag("track-releasable", "Enable tracking of releasable resources.").Hidden().Envar(c.EnvName("KOPIA_TRACK_RELEASABLE")).StringsVar(&c.trackReleasable) |
| 282 | app.Flag("upgrade-owner-id", "Repository format upgrade owner-id.").Hidden().Envar(c.EnvName("KOPIA_REPO_UPGRADE_OWNER_ID")).StringVar(&c.upgradeOwnerID) |
| 283 | app.Flag("upgrade-no-block", "Do not block when repository format upgrade is in progress, instead exit with a message.").Hidden().Default("false").Envar(c.EnvName("KOPIA_REPO_UPGRADE_NO_BLOCK")).BoolVar(&c.doNotWaitForUpgrade) |
| 284 | app.Flag("error-notifications", "Send notification on errors").Hidden(). |
| 285 | Envar(c.EnvName("KOPIA_SEND_ERROR_NOTIFICATIONS")). |
| 286 | Default(errorNotificationsNonInteractive). |
| 287 | EnumVar(&c.errorNotifications, errorNotificationsAlways, errorNotificationsNever, errorNotificationsNonInteractive) |
| 288 | |
| 289 | if c.enableTestOnlyFlags() { |
| 290 | app.Flag("ignore-missing-required-features", "Open repository despite missing features (VERY DANGEROUS, ONLY FOR TESTING)").Hidden().BoolVar(&c.testonlyIgnoreMissingRequiredFeatures) |
| 291 | } |
| 292 | |
| 293 | c.observability.setup(c, app) |
| 294 | |
| 295 | c.setupOSSpecificKeychainFlags(c, app) |
| 296 | |
| 297 | c.progress.setup(c, app) |
| 298 | |
| 299 | c.blob.setup(c, app) |
| 300 | c.benchmark.setup(c, app) |
| 301 | c.cache.setup(c, app) |
| 302 | c.content.setup(c, app) |
| 303 | c.diff.setup(c, app) |
| 304 | c.index.setup(c, app) |
| 305 | c.list.setup(c, app) |
| 306 | c.logs.setup(c, app) |