code: func NewCmdCreateClusterRole(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
  	c := &CreateClusterRoleOptions{
  		CreateRoleOptions: NewCreateRoleOptions(ioStreams),
  		AggregationRule:   map[string]string{},
  	}
  	cmd := &cobra.Command{
  		Use:                   "clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run]",
  		DisableFlagsInUseLine: true,
  		Short:                 clusterRoleLong,
  		Long:                  clusterRoleLong,
  		Example:               clusterRoleExample,
  		Run: func(cmd *cobra.Command, args []string) {
  			cmdutil.CheckErr(c.Complete(f, cmd, args))
  			cmdutil.CheckErr(c.Validate())
  			cmdutil.CheckErr(c.RunCreateRole())
  		},
  	}
  
  	c.PrintFlags.AddFlags(cmd)
  
  	cmdutil.AddApplyAnnotationFlags(cmd)
  	cmdutil.AddValidateFlags(cmd)
  	cmdutil.AddDryRunFlag(cmd)
  	cmd.Flags().StringSliceVar(&c.Verbs, "verb", c.Verbs, "Verb that applies to the resources contained in the rule")
  	cmd.Flags().StringSliceVar(&c.NonResourceURLs, "non-resource-url", c.NonResourceURLs, "A partial url that user should have access to.")
  	cmd.Flags().StringSlice("resource", []string{}, "Resource that the rule applies to")
  	cmd.Flags().StringArrayVar(&c.ResourceNames, "resource-name", c.ResourceNames, "Resource in the white list that the rule applies to, repeat this flag for multiple items")
  	cmd.Flags().Var(cliflag.NewMapStringString(&c.AggregationRule), "aggregation-rule", "An aggregation label selector for combining ClusterRoles.")
  
  	return cmd
  }
docs: // NewCmdCreateClusterRole initializes and returns new ClusterRoles command