<!-- PR description--> New commands to initialize & connect to a repo on local or network attached storage. * `repo init filesystem --path /tmp/repo` * `repo connect filesystem --path /tmp/repo` Includes basic unit & e2e tests. More coverage to be added in a following PR to keep the size contained. **Updates:** * Added Repo path sanitization i.e. handle relative paths, make paths cross platform compatible, etc. * Removed retention artifacts, not supported for filesystem storage. * cli docs - auto updated. * Manually tested with all corso backup/restore/export commands. **Doesn't include** 1. Symlinks 2. User ids wiring into repo. 3. Repos documentation update - in an upcoming PR. 4. Prefix support -> kopia doesn't support prefixes for `filesystem` storage 5. More E2E tests. --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [x] 🕐 Yes, but in a later PR - [ ] ⛔ No #### Type of change <!--- Please check the type of change your PR introduces: ---> - [x] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Supportability/Tests - [ ] 💻 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. --> * #1416 #### Test Plan <!-- How will this be tested prior to merging.--> - [x] 💪 Manual - [x] ⚡ Unit test - [x] 💚 E2E
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package flags
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
const (
|
|
BackupFN = "backup"
|
|
AWSAccessKeyFN = "aws-access-key"
|
|
AWSSecretAccessKeyFN = "aws-secret-access-key"
|
|
AWSSessionTokenFN = "aws-session-token"
|
|
|
|
// Corso Flags
|
|
CorsoPassphraseFN = "passphrase"
|
|
SucceedIfExistsFN = "succeed-if-exists"
|
|
)
|
|
|
|
var (
|
|
BackupIDFV string
|
|
AWSAccessKeyFV string
|
|
AWSSecretAccessKeyFV string
|
|
AWSSessionTokenFV string
|
|
CorsoPassphraseFV string
|
|
SucceedIfExistsFV bool
|
|
)
|
|
|
|
// AddBackupIDFlag adds the --backup flag.
|
|
func AddBackupIDFlag(cmd *cobra.Command, require bool) {
|
|
cmd.Flags().StringVar(&BackupIDFV, BackupFN, "", "ID of the backup to retrieve.")
|
|
|
|
if require {
|
|
cobra.CheckErr(cmd.MarkFlagRequired(BackupFN))
|
|
}
|
|
}
|
|
|
|
func AddAWSCredsFlags(cmd *cobra.Command) {
|
|
fs := cmd.Flags()
|
|
fs.StringVar(&AWSAccessKeyFV, AWSAccessKeyFN, "", "S3 access key")
|
|
fs.StringVar(&AWSSecretAccessKeyFV, AWSSecretAccessKeyFN, "", "S3 access secret")
|
|
fs.StringVar(&AWSSessionTokenFV, AWSSessionTokenFN, "", "S3 session token")
|
|
}
|
|
|
|
// M365 flags
|
|
func AddCorsoPassphaseFlags(cmd *cobra.Command) {
|
|
fs := cmd.Flags()
|
|
fs.StringVar(&CorsoPassphraseFV,
|
|
CorsoPassphraseFN,
|
|
"",
|
|
"Passphrase to protect encrypted repository contents")
|
|
}
|