Updates to /cli/backup/sharepoint.go
Adds functionality for Selecting SharePoint Page as a data selector.
This commit is contained in:
parent
0f16e5768f
commit
5abc237ac6
@ -27,9 +27,12 @@ import (
|
||||
// setup and globals
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
|
||||
// sharePoint bucket info from flags
|
||||
var (
|
||||
libraryItems []string
|
||||
libraryPaths []string
|
||||
pageFolders []string
|
||||
page []string
|
||||
site []string
|
||||
weburl []string
|
||||
|
||||
@ -38,6 +41,7 @@ var (
|
||||
|
||||
const (
|
||||
dataLibraries = "libraries"
|
||||
dataPages = "pages"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -93,7 +97,7 @@ func addSharePointCommands(cmd *cobra.Command) *cobra.Command {
|
||||
fs.StringSliceVar(
|
||||
&sharepointData,
|
||||
utils.DataFN, nil,
|
||||
"Select one or more types of data to backup: "+dataLibraries+".")
|
||||
"Select one or more types of data to backup: "+dataLibraries+" or "+dataPages+".")
|
||||
options.AddOperationFlags(c)
|
||||
|
||||
case listCommand:
|
||||
@ -128,11 +132,16 @@ func addSharePointCommands(cmd *cobra.Command) *cobra.Command {
|
||||
|
||||
fs.StringArrayVar(&site,
|
||||
utils.SiteFN, nil,
|
||||
"Backup SharePoint data by site ID; accepts '"+utils.Wildcard+"' to select all sites.")
|
||||
"Select backup details by site ID; accepts '"+utils.Wildcard+"' to select all sites.")
|
||||
|
||||
fs.StringSliceVar(&weburl,
|
||||
utils.WebURLFN, nil,
|
||||
"Restore data by site webURL; accepts '"+utils.Wildcard+"' to select all sites.")
|
||||
"Select backup data by site webURL; accepts '"+utils.Wildcard+"' to select all sites.")
|
||||
|
||||
fs.StringSliceVar(
|
||||
&pageFolders,
|
||||
utils.PageFN, nil,
|
||||
"Select backup data by site ID; accepts '"+utils.Wildcard+"' to select all sites.")
|
||||
|
||||
// info flags
|
||||
|
||||
@ -179,7 +188,7 @@ func createSharePointCmd(cmd *cobra.Command, args []string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := validateSharePointBackupCreateFlags(site, weburl); err != nil {
|
||||
if err := validateSharePointBackupCreateFlags(site, weburl, sharepointData); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -200,7 +209,7 @@ func createSharePointCmd(cmd *cobra.Command, args []string) error {
|
||||
return Only(ctx, errors.Wrap(err, "Failed to connect to Microsoft APIs"))
|
||||
}
|
||||
|
||||
sel, err := sharePointBackupCreateSelectors(ctx, site, weburl, gc)
|
||||
sel, err := sharePointBackupCreateSelectors(ctx, site, weburl, sharepointData, gc)
|
||||
if err != nil {
|
||||
return Only(ctx, errors.Wrap(err, "Retrieving up sharepoint sites by ID and WebURL"))
|
||||
}
|
||||
@ -250,7 +259,7 @@ func createSharePointCmd(cmd *cobra.Command, args []string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateSharePointBackupCreateFlags(sites, weburls []string) error {
|
||||
func validateSharePointBackupCreateFlags(sites, weburls, data []string) error {
|
||||
if len(sites) == 0 && len(weburls) == 0 {
|
||||
return errors.New(
|
||||
"requires one or more --" +
|
||||
@ -260,13 +269,21 @@ func validateSharePointBackupCreateFlags(sites, weburls []string) error {
|
||||
)
|
||||
}
|
||||
|
||||
for _, d := range data {
|
||||
if d != dataLibraries && d != dataPages {
|
||||
return errors.New(
|
||||
d + "is an unrecognized data type; either " + dataLibraries + "or " + dataPages,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// TODO: users might specify a data type, this only supports AllData().
|
||||
func sharePointBackupCreateSelectors(
|
||||
ctx context.Context,
|
||||
sites, weburls []string,
|
||||
sites, weburls, data []string,
|
||||
gc *connector.GraphConnector,
|
||||
) (*selectors.SharePointBackup, error) {
|
||||
if len(sites) == 0 && len(weburls) == 0 {
|
||||
@ -297,7 +314,20 @@ func sharePointBackupCreateSelectors(
|
||||
}
|
||||
|
||||
sel := selectors.NewSharePointBackup(union)
|
||||
sel.Include(sel.AllData())
|
||||
if len(data) == 0 {
|
||||
sel.Include(sel.AllData())
|
||||
|
||||
return sel, nil
|
||||
}
|
||||
|
||||
for _, d := range data {
|
||||
switch d {
|
||||
case dataLibraries:
|
||||
sel.Include(sel.Libraries(selectors.Any()))
|
||||
case dataPages:
|
||||
sel.Include(sel.Pages(selectors.Any()))
|
||||
}
|
||||
}
|
||||
|
||||
return sel, nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user