## Description Since the backup permissions increases the backup time by a lot(mostly from higher number of requests and increased throttling), it was decided to disable it by default. It is still enabled in tests so as to make sure the code does not have regressions. ## Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No ## Type of change <!--- Please check the type of change your PR introduces: ---> - [x] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Test - [ ] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup ## Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> ## Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [ ] ⚡ Unit test - [x] 💚 E2E
100 lines
3.0 KiB
Go
100 lines
3.0 KiB
Go
package options
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/pflag"
|
|
|
|
"github.com/alcionai/corso/src/pkg/control"
|
|
)
|
|
|
|
// Control produces the control options based on the user's flags.
|
|
func Control() control.Options {
|
|
opt := control.Defaults()
|
|
|
|
opt.FailFast = fastFail
|
|
opt.DisableMetrics = noStats
|
|
opt.RestorePermissions = restorePermissions
|
|
opt.ToggleFeatures.DisableIncrementals = disableIncrementals
|
|
opt.ToggleFeatures.EnablePermissionsBackup = enablePermissionsBackup
|
|
|
|
return opt
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Operations Flags
|
|
// ---------------------------------------------------------------------------
|
|
|
|
var (
|
|
fastFail bool
|
|
noStats bool
|
|
restorePermissions bool
|
|
)
|
|
|
|
// AddOperationFlags adds command-local operation flags
|
|
func AddOperationFlags(cmd *cobra.Command) {
|
|
fs := cmd.Flags()
|
|
fs.BoolVar(&fastFail, "fast-fail", false, "stop processing immediately if any error occurs")
|
|
// TODO: reveal this flag when fail-fast support is implemented
|
|
cobra.CheckErr(fs.MarkHidden("fast-fail"))
|
|
}
|
|
|
|
// AddGlobalOperationFlags adds the global operations flag set.
|
|
func AddGlobalOperationFlags(cmd *cobra.Command) {
|
|
fs := cmd.PersistentFlags()
|
|
fs.BoolVar(&noStats, "no-stats", false, "disable anonymous usage statistics gathering")
|
|
}
|
|
|
|
// AddRestorePermissionsFlag adds OneDrive flag for restoring permissions
|
|
func AddRestorePermissionsFlag(cmd *cobra.Command) {
|
|
fs := cmd.Flags()
|
|
fs.BoolVar(&restorePermissions, "restore-permissions", false, "Restore permissions for files and folders")
|
|
// TODO: reveal this flag once backing up permissions becomes default
|
|
cobra.CheckErr(fs.MarkHidden("restore-permissions"))
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Feature Flags
|
|
// ---------------------------------------------------------------------------
|
|
|
|
var (
|
|
disableIncrementals bool
|
|
enablePermissionsBackup bool
|
|
)
|
|
|
|
type exposeFeatureFlag func(*pflag.FlagSet)
|
|
|
|
// AddFeatureToggle adds CLI flags for each exposed feature toggle to the
|
|
// persistent flag set within the command.
|
|
func AddFeatureToggle(cmd *cobra.Command, effs ...exposeFeatureFlag) {
|
|
fs := cmd.PersistentFlags()
|
|
for _, fflag := range effs {
|
|
fflag(fs)
|
|
}
|
|
}
|
|
|
|
// Adds the hidden '--no-incrementals' cli flag which, when set, disables
|
|
// incremental backups.
|
|
func DisableIncrementals() func(*pflag.FlagSet) {
|
|
return func(fs *pflag.FlagSet) {
|
|
fs.BoolVar(
|
|
&disableIncrementals,
|
|
"disable-incrementals",
|
|
false,
|
|
"Disable incremental data retrieval in backups.")
|
|
cobra.CheckErr(fs.MarkHidden("disable-incrementals"))
|
|
}
|
|
}
|
|
|
|
// Adds the hidden '--enable-permissions-backup' cli flag which, when
|
|
// set, enables backing up permissions.
|
|
func EnablePermissionsBackup() func(*pflag.FlagSet) {
|
|
return func(fs *pflag.FlagSet) {
|
|
fs.BoolVar(
|
|
&enablePermissionsBackup,
|
|
"enable-permissions-backup",
|
|
false,
|
|
"Enable backing up item permissions for OneDrive")
|
|
cobra.CheckErr(fs.MarkHidden("enable-permissions-backup"))
|
|
}
|
|
}
|