package cmd import ( "github.com/spf13/cobra" "path/filepath" sw "playbookctl/internal/space_worker" "playbookctl/internal/utils/logger" ) var ( flagBackupAdd bool ) func NewCommandRole() *cobra.Command { roleCmd := &cobra.Command{ Use: "role", Short: "работа с ролями в пространстве", RunE: func(cmd *cobra.Command, _ []string) error { return cmd.Help() }, } roleCmd.AddCommand(newCommandRoleCreate()) roleCmd.AddCommand(newCommandRoleRemove()) roleCmd.AddCommand(newCommandRoleList()) roleCmd.AddCommand(newCommandRoleModify()) return roleCmd } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// func newCommandRoleCreate() *cobra.Command { createCmd := &cobra.Command{ Use: "create ", Aliases: []string{"new"}, Short: "создать роль в пространстве", Args: cobra.ExactArgs(1), RunE: roleCreateRunE, } return createCmd } func roleCreateRunE(_ *cobra.Command, args []string) error { workDir, err := filepath.Abs(flagWorkdir) if err != nil { return err } spaceWorker := sw.NewSpaceWorker(logger.LogVerbose(flagVerbose), workDir) return spaceWorker.CreateRole(args[0]) } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// func newCommandRoleRemove() *cobra.Command { createCmd := &cobra.Command{ Use: "remove ", Aliases: []string{"delete", "rm", "del"}, Short: "удаляет роль из пространства", Args: cobra.ExactArgs(1), ValidArgsFunction: ArgRoleCompletion, RunE: roleRemoveRunE, } return createCmd } func roleRemoveRunE(_ *cobra.Command, args []string) error { workDir, err := filepath.Abs(flagWorkdir) if err != nil { return err } spaceWorker := sw.NewSpaceWorker(logger.LogVerbose(flagVerbose), workDir) return spaceWorker.RemoveRole(args[0]) } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// func newCommandRoleList() *cobra.Command { listCmd := &cobra.Command{ Use: "list", Aliases: []string{"ls"}, Short: "список ролей в пространстве", RunE: roleListRunE, } return listCmd } func roleListRunE(_ *cobra.Command, _ []string) error { workDir, err := filepath.Abs(flagWorkdir) if err != nil { return err } spaceWorker := sw.NewSpaceWorker(logger.LogVerbose(flagVerbose), workDir) return spaceWorker.ListRoles() } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// func newCommandRoleModify() *cobra.Command { modifyCmd := &cobra.Command{ Use: "modify ", Short: "модифицировать роль", Args: cobra.ExactArgs(1), ValidArgsFunction: ArgRoleCompletion, RunE: roleModifyRunE, } modifyCmd.Flags().BoolVar(&flagBackupAdd, "backup-add", false, "добавить backup функцию") return modifyCmd } func roleModifyRunE(_ *cobra.Command, args []string) error { workDir, err := filepath.Abs(flagWorkdir) if err != nil { return err } spaceWorker := sw.NewSpaceWorker(logger.LogVerbose(flagVerbose), workDir) if flagBackupAdd { return spaceWorker.ModifyRoleBackupAdd(args[0]) } return nil }