<!-- 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
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package flags
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/alcionai/corso/src/pkg/storage"
|
|
)
|
|
|
|
// filesystem flag names
|
|
const (
|
|
FilesystemPathFN = "path"
|
|
)
|
|
|
|
// filesystem flag values
|
|
var (
|
|
FilesystemPathFV string
|
|
)
|
|
|
|
func AddFilesystemFlags(cmd *cobra.Command) {
|
|
fs := cmd.Flags()
|
|
|
|
AddAzureCredsFlags(cmd)
|
|
AddCorsoPassphaseFlags(cmd)
|
|
|
|
fs.StringVar(
|
|
&FilesystemPathFV,
|
|
FilesystemPathFN,
|
|
"",
|
|
"path to local or network storage")
|
|
cobra.CheckErr(cmd.MarkFlagRequired(FilesystemPathFN))
|
|
|
|
fs.BoolVar(
|
|
&SucceedIfExistsFV,
|
|
SucceedIfExistsFN,
|
|
false,
|
|
"Exit with success if the repo has already been initialized.")
|
|
cobra.CheckErr(fs.MarkHidden("succeed-if-exists"))
|
|
}
|
|
|
|
func FilesystemFlagOverrides(cmd *cobra.Command) map[string]string {
|
|
fs := GetPopulatedFlags(cmd)
|
|
return PopulateFilesystemFlags(fs)
|
|
}
|
|
|
|
func PopulateFilesystemFlags(flagset PopulatedFlags) map[string]string {
|
|
fsOverrides := map[string]string{
|
|
storage.StorageProviderTypeKey: storage.ProviderFilesystem.String(),
|
|
}
|
|
|
|
if _, ok := flagset[FilesystemPathFN]; ok {
|
|
fsOverrides[FilesystemPathFN] = FilesystemPathFV
|
|
}
|
|
|
|
return fsOverrides
|
|
}
|