add script boilerplate for mock data generation (#1161)
## Description Introduces a `factory` script to help devs generate fake m365 data in bulk for testing purposes. Only boilerplate at this time. Any TODO's or not-yet- implemented statuses are present as placeholders alone, without official deadlines. ## Type of change - [x] 🤖 Test ## Issue(s) * #902 ## Test Plan - [x] 💪 Manual
This commit is contained in:
parent
65d6780906
commit
39f9c7f50f
71
src/cmd/factory/exchange.go
Normal file
71
src/cmd/factory/exchange.go
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
. "github.com/alcionai/corso/src/cli/print"
|
||||||
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
emailsCmd = &cobra.Command{
|
||||||
|
Use: "emails",
|
||||||
|
Short: "Generate exchange emails",
|
||||||
|
RunE: handleExchangeEmailFactory,
|
||||||
|
}
|
||||||
|
|
||||||
|
eventsCmd = &cobra.Command{
|
||||||
|
Use: "events",
|
||||||
|
Short: "Generate exchange calendar events",
|
||||||
|
RunE: handleExchangeCalendarEventFactory,
|
||||||
|
}
|
||||||
|
|
||||||
|
contactsCmd = &cobra.Command{
|
||||||
|
Use: "contacts",
|
||||||
|
Short: "Generate exchange contacts",
|
||||||
|
RunE: handleExchangeContactFactory,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func addExchangeCommands(parent *cobra.Command) {
|
||||||
|
parent.AddCommand(emailsCmd)
|
||||||
|
parent.AddCommand(eventsCmd)
|
||||||
|
parent.AddCommand(contactsCmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleExchangeEmailFactory(cmd *cobra.Command, args []string) error {
|
||||||
|
Err(cmd.Context(), ErrNotYetImplemeted)
|
||||||
|
|
||||||
|
if utils.HasNoFlagsAndShownHelp(cmd) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate mocked emails
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleExchangeCalendarEventFactory(cmd *cobra.Command, args []string) error {
|
||||||
|
Err(cmd.Context(), ErrNotYetImplemeted)
|
||||||
|
|
||||||
|
if utils.HasNoFlagsAndShownHelp(cmd) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate mocked events
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleExchangeContactFactory(cmd *cobra.Command, args []string) error {
|
||||||
|
//nolint
|
||||||
|
Err(cmd.Context(), ErrNotYetImplemeted)
|
||||||
|
|
||||||
|
if utils.HasNoFlagsAndShownHelp(cmd) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate mocked contacts
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
82
src/cmd/factory/factory.go
Normal file
82
src/cmd/factory/factory.go
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
. "github.com/alcionai/corso/src/cli/print"
|
||||||
|
)
|
||||||
|
|
||||||
|
var factoryCmd = &cobra.Command{
|
||||||
|
Use: "factory",
|
||||||
|
Short: "Generate all types of m365 folders",
|
||||||
|
RunE: handleFactoryRoot,
|
||||||
|
}
|
||||||
|
|
||||||
|
var exchangeCmd = &cobra.Command{
|
||||||
|
Use: "exchange",
|
||||||
|
Short: "Generate exchange data",
|
||||||
|
RunE: handleExchangeFactory,
|
||||||
|
}
|
||||||
|
|
||||||
|
var oneDriveCmd = &cobra.Command{
|
||||||
|
Use: "onedrive",
|
||||||
|
Short: "Generate onedrive data",
|
||||||
|
RunE: handleOneDriveFactory,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
count int
|
||||||
|
container string
|
||||||
|
tenant string
|
||||||
|
user string
|
||||||
|
)
|
||||||
|
|
||||||
|
// TODO: ErrGenerating = errors.New("not all items were successfully generated")
|
||||||
|
|
||||||
|
var ErrNotYetImplemeted = errors.New("not yet implemented")
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------
|
||||||
|
// CLI command handlers
|
||||||
|
// ------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
ctx := SetRootCmd(context.Background(), factoryCmd)
|
||||||
|
|
||||||
|
// persistent flags that are common to all use cases
|
||||||
|
fs := factoryCmd.PersistentFlags()
|
||||||
|
fs.StringVar(&tenant, "tenant", "", "m365 tenant containing the user")
|
||||||
|
fs.StringVar(&user, "user", "", "m365 user owning the new data")
|
||||||
|
cobra.CheckErr(factoryCmd.MarkPersistentFlagRequired("user"))
|
||||||
|
fs.IntVar(&count, "count", 0, "count of items to produce")
|
||||||
|
cobra.CheckErr(factoryCmd.MarkPersistentFlagRequired("count"))
|
||||||
|
fs.StringVar(&container, "container", "", "container location of the new data (will create as needed)")
|
||||||
|
cobra.CheckErr(factoryCmd.MarkPersistentFlagRequired("container"))
|
||||||
|
|
||||||
|
factoryCmd.AddCommand(exchangeCmd)
|
||||||
|
addExchangeCommands(exchangeCmd)
|
||||||
|
factoryCmd.AddCommand(oneDriveCmd)
|
||||||
|
addOneDriveCommands(oneDriveCmd)
|
||||||
|
|
||||||
|
if err := factoryCmd.ExecuteContext(ctx); err != nil {
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleFactoryRoot(cmd *cobra.Command, args []string) error {
|
||||||
|
Err(cmd.Context(), ErrNotYetImplemeted)
|
||||||
|
return cmd.Help()
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleExchangeFactory(cmd *cobra.Command, args []string) error {
|
||||||
|
Err(cmd.Context(), ErrNotYetImplemeted)
|
||||||
|
return cmd.Help()
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleOneDriveFactory(cmd *cobra.Command, args []string) error {
|
||||||
|
Err(cmd.Context(), ErrNotYetImplemeted)
|
||||||
|
return cmd.Help()
|
||||||
|
}
|
||||||
28
src/cmd/factory/onedrive.go
Normal file
28
src/cmd/factory/onedrive.go
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
|
. "github.com/alcionai/corso/src/cli/print"
|
||||||
|
"github.com/alcionai/corso/src/cli/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
var filesCmd = &cobra.Command{
|
||||||
|
Use: "files",
|
||||||
|
Short: "Generate OneDrive files",
|
||||||
|
RunE: handleOneDriveFileFactory,
|
||||||
|
}
|
||||||
|
|
||||||
|
func addOneDriveCommands(parent *cobra.Command) {
|
||||||
|
parent.AddCommand(filesCmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleOneDriveFileFactory(cmd *cobra.Command, args []string) error {
|
||||||
|
Err(cmd.Context(), ErrNotYetImplemeted)
|
||||||
|
|
||||||
|
if utils.HasNoFlagsAndShownHelp(cmd) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user