github.com/hooklift/nomad@v0.5.7-0.20170407200202-db11e7dd7b55/commands.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/hashicorp/nomad/command"
     7  	"github.com/hashicorp/nomad/command/agent"
     8  	"github.com/mitchellh/cli"
     9  )
    10  
    11  // Commands returns the mapping of CLI commands for Nomad. The meta
    12  // parameter lets you set meta options for all commands.
    13  func Commands(metaPtr *command.Meta) map[string]cli.CommandFactory {
    14  	if metaPtr == nil {
    15  		metaPtr = new(command.Meta)
    16  	}
    17  
    18  	meta := *metaPtr
    19  	if meta.Ui == nil {
    20  		meta.Ui = &cli.BasicUi{
    21  			Reader:      os.Stdin,
    22  			Writer:      os.Stdout,
    23  			ErrorWriter: os.Stderr,
    24  		}
    25  	}
    26  
    27  	return map[string]cli.CommandFactory{
    28  		"alloc-status": func() (cli.Command, error) {
    29  			return &command.AllocStatusCommand{
    30  				Meta: meta,
    31  			}, nil
    32  		},
    33  		"agent": func() (cli.Command, error) {
    34  			return &agent.Command{
    35  				Revision:          GitCommit,
    36  				Version:           Version,
    37  				VersionPrerelease: VersionPrerelease,
    38  				Ui:                meta.Ui,
    39  				ShutdownCh:        make(chan struct{}),
    40  			}, nil
    41  		},
    42  		"agent-info": func() (cli.Command, error) {
    43  			return &command.AgentInfoCommand{
    44  				Meta: meta,
    45  			}, nil
    46  		},
    47  		"check": func() (cli.Command, error) {
    48  			return &command.AgentCheckCommand{
    49  				Meta: meta,
    50  			}, nil
    51  		},
    52  		"client-config": func() (cli.Command, error) {
    53  			return &command.ClientConfigCommand{
    54  				Meta: meta,
    55  			}, nil
    56  		},
    57  		"eval-status": func() (cli.Command, error) {
    58  			return &command.EvalStatusCommand{
    59  				Meta: meta,
    60  			}, nil
    61  		},
    62  		"executor": func() (cli.Command, error) {
    63  			return &command.ExecutorPluginCommand{
    64  				Meta: meta,
    65  			}, nil
    66  		},
    67  		"fs": func() (cli.Command, error) {
    68  			return &command.FSCommand{
    69  				Meta: meta,
    70  			}, nil
    71  		},
    72  		"init": func() (cli.Command, error) {
    73  			return &command.InitCommand{
    74  				Meta: meta,
    75  			}, nil
    76  		},
    77  		"inspect": func() (cli.Command, error) {
    78  			return &command.InspectCommand{
    79  				Meta: meta,
    80  			}, nil
    81  		},
    82  		"keygen": func() (cli.Command, error) {
    83  			return &command.KeygenCommand{
    84  				Meta: meta,
    85  			}, nil
    86  		},
    87  		"keyring": func() (cli.Command, error) {
    88  			return &command.KeyringCommand{
    89  				Meta: meta,
    90  			}, nil
    91  		},
    92  		"job": func() (cli.Command, error) {
    93  			return &command.JobCommand{
    94  				Meta: meta,
    95  			}, nil
    96  		},
    97  		"job dispatch": func() (cli.Command, error) {
    98  			return &command.JobDispatchCommand{
    99  				Meta: meta,
   100  			}, nil
   101  		},
   102  		"logs": func() (cli.Command, error) {
   103  			return &command.LogsCommand{
   104  				Meta: meta,
   105  			}, nil
   106  		},
   107  		"node-drain": func() (cli.Command, error) {
   108  			return &command.NodeDrainCommand{
   109  				Meta: meta,
   110  			}, nil
   111  		},
   112  		"node-status": func() (cli.Command, error) {
   113  			return &command.NodeStatusCommand{
   114  				Meta: meta,
   115  			}, nil
   116  		},
   117  
   118  		"operator": func() (cli.Command, error) {
   119  			return &command.OperatorCommand{
   120  				Meta: meta,
   121  			}, nil
   122  		},
   123  
   124  		"operator raft": func() (cli.Command, error) {
   125  			return &command.OperatorRaftCommand{
   126  				Meta: meta,
   127  			}, nil
   128  		},
   129  
   130  		"operator raft list-peers": func() (cli.Command, error) {
   131  			return &command.OperatorRaftListCommand{
   132  				Meta: meta,
   133  			}, nil
   134  		},
   135  
   136  		"operator raft remove-peer": func() (cli.Command, error) {
   137  			return &command.OperatorRaftRemoveCommand{
   138  				Meta: meta,
   139  			}, nil
   140  		},
   141  
   142  		"plan": func() (cli.Command, error) {
   143  			return &command.PlanCommand{
   144  				Meta: meta,
   145  			}, nil
   146  		},
   147  
   148  		"run": func() (cli.Command, error) {
   149  			return &command.RunCommand{
   150  				Meta: meta,
   151  			}, nil
   152  		},
   153  		"server-force-leave": func() (cli.Command, error) {
   154  			return &command.ServerForceLeaveCommand{
   155  				Meta: meta,
   156  			}, nil
   157  		},
   158  		"server-join": func() (cli.Command, error) {
   159  			return &command.ServerJoinCommand{
   160  				Meta: meta,
   161  			}, nil
   162  		},
   163  		"server-members": func() (cli.Command, error) {
   164  			return &command.ServerMembersCommand{
   165  				Meta: meta,
   166  			}, nil
   167  		},
   168  		"status": func() (cli.Command, error) {
   169  			return &command.StatusCommand{
   170  				Meta: meta,
   171  			}, nil
   172  		},
   173  		"stop": func() (cli.Command, error) {
   174  			return &command.StopCommand{
   175  				Meta: meta,
   176  			}, nil
   177  		},
   178  		"validate": func() (cli.Command, error) {
   179  			return &command.ValidateCommand{
   180  				Meta: meta,
   181  			}, nil
   182  		},
   183  		"version": func() (cli.Command, error) {
   184  			ver := Version
   185  			rel := VersionPrerelease
   186  			if GitDescribe != "" {
   187  				ver = GitDescribe
   188  				// Trim off a leading 'v', we append it anyways.
   189  				if ver[0] == 'v' {
   190  					ver = ver[1:]
   191  				}
   192  			}
   193  			if GitDescribe == "" && rel == "" && VersionPrerelease != "" {
   194  				rel = "dev"
   195  			}
   196  
   197  			return &command.VersionCommand{
   198  				Revision:          GitCommit,
   199  				Version:           ver,
   200  				VersionPrerelease: rel,
   201  				Ui:                meta.Ui,
   202  			}, nil
   203  		},
   204  	}
   205  }