Class: Jenkins2::CommandLine
- Inherits:
-
Object
- Object
- Jenkins2::CommandLine
- Defined in:
- lib/jenkins2/command_line.rb
Instance Attribute Summary collapse
-
#command_options ⇒ Object
Returns the value of attribute command_options.
-
#global_options ⇒ Object
Returns the value of attribute global_options.
Instance Method Summary collapse
-
#initialize(args) ⇒ CommandLine
constructor
A new instance of CommandLine.
- #run ⇒ Object
Constructor Details
#initialize(args) ⇒ CommandLine
Returns a new instance of CommandLine.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/jenkins2/command_line.rb', line 11 def initialize( args ) = OptionParser::OptionMap.new = { verbose: 0, log: STDOUT } = OptionParser::OptionMap.new global = CommandParser.new 'Usage: jenkins [global-options] <command> [options]' do |opts| opts.separator '' opts.separator "Global options (accepted by all commands):" opts.on '-s', '--server URL', ::URI, 'Jenkins Server Url' do |opt| [:server] = opt end opts.on '-u', '--user USER', 'Jenkins API user' do |opt| [:user] = opt end opts.on '-k', '--key KEY', 'Jenkins API key' do |opt| [:key] = opt end opts.on '-c', '--config [PATH]', 'Use configuration file. Instead of providing '\ 'server, user and key through command line, you can do that with configuration file. '\ 'File format is json: { "server": "http://jenkins.example.com", "user": "admin", '\ '"key": "123456" }. Options provided in command line will overwrite ones from '\ 'configuration file. Program looks for ~/.jenkins2.json if no PATH is provided.' do |opt| [:config] = opt || ::File.join( ENV['HOME'], '.jenkins2.json' ) end opts.on '-l', '--log FILE', 'Log file. Prints to standard out, if not provided' do |opt| [:log] = opt end opts.on '-v', '--verbose', 'Print more info. Up to -vvv. Prints only errors by default.' do [:verbose] += 1 end opts.on '-h', '--help', 'Show help' do [:help] = true end opts.on '-V', '--version', 'Show version' do puts VERSION exit end opts.separator '' opts.separator 'For command specific options run: jenkins2 --help <command>' opts.separator '' opts.command 'version', 'Outputs the current version of Jenkins' opts.command 'prepare-for-shutdown', 'Stop executing new builds, so that the system can '\ 'be eventually shut down safely.' opts.command 'cancel-shutdown', 'Cancel the effect of "prepare-for-shutshow" command.' opts.command 'wait-nodes-idle', 'Wait for all nodes to become idle. Is expected to be '\ 'called after "prepare_for_shutdown", otherwise new builds will still be run.' do |cmd| cmd.on '-m', '--max-wait-minutes INT', Integer, 'Wait for INT minutes at most. '\ 'Default 60' do |opt| [:max_wait_minutes] = opt end end opts.command 'offline-node', 'Stop using a node for performing builds temporarily, until '\ 'the next "online-node" command.' do |cmd| cmd.on '-n', '--node NAME', 'Name of the node or empty for master' do |opt| [:node] = opt end cmd.on '-m', '--message MESSAGE', 'Record the note about why you are '\ 'disconnecting this node' do |opt| [:message] = opt end end opts.command 'online-node', 'Resume using a node for performing builds, to cancel out '\ 'the earlier "offline-node" command.' do |cmd| cmd.on '-n', '--node [NAME]', 'Name of the node or empty for master' do |opt| [:node] = opt end end opts.command 'connect-node', 'Connects a node, i.e. starts Jenkins slave on a node.' do |cmd| cmd.on '-n', '--node [NAME]', 'Name of the node or empty for master' do |opt| [:node] = opt end end opts.command 'create-node', 'Creates a new node from XML' do |cmd| cmd.on '-n', '--node NAME', 'Name of the new node' do |opt| [:node] = opt end cmd.on '-x', '--xml FILE', 'Path to XML configuration file' do |opt| [:xml] = IO.read opt end end opts.command 'delete-node', 'Deletes a node' do |cmd| cmd.on '-n', '--node NAME', 'Node name' do |opt| [:node] = opt end end opts.command 'create-credential', 'Creates credential.' do |cmd| cmd.on '-S', '--scope SCOPE', 'GLOBAL or SYSTEM scope' do |opt| [:scope] = opt end cmd.on '-i', '--id ID', 'Unique Id of credential. Will be generated automactically, if '\ 'not provided' do |opt| [:id] = opt end cmd.on '-d', '--description DESC', 'Human readable text, what this credential is used for.' do |opt| [:description] = opt end cmd.on '-n', '--username NAME', 'Username for Username-Password or SSH credential' do |opt| [:username] = opt end cmd.on '-p', '--password PASS', 'Password in plain text for Username-Password credential' do |opt| [:password] = opt end cmd.on '-f', '--private-key FILE', 'Path to private key file for SSH credential' do |opt| [:private_key] = IO.read( opt ).gsub( "\n", "\\n" ) end cmd.on '-P', '--passphrase PHRASE', 'Passphrase for the private key for SSH credential' do |opt| [:passphrase] = opt end cmd.on '-e', '--secret SECRET', 'Some secret text for Secret credential' do |opt| [:secret] = opt end cmd.on '-F', '--secret-file FILE', 'Path to secret file for Secret File credential' do |opt| [:filename] = File.basename opt [:content] = IO.read opt end end opts.command 'delete-credential', 'Deletes credential.' do |cmd| cmd.on '-i', '--id ID', 'Credential id' do |opt| [:id] = opt end end opts.command 'get-credential', 'Returns credential as json.' do |cmd| cmd.on '-i', '--id ID', 'Credential id' do |opt| [:id] = opt end end opts.command 'list-credentials', 'Lists all credentials.' opts.command 'disconnect-node', 'Disconnects a node.' do |cmd| cmd.on '-n', '--node [NAME]', 'Name of the node or empty for master' do |opt| [:node] = opt end cmd.on '-m', '--message MESSAGE', 'Reason, why the node is being disconnected.' do |opt| [:message] = opt end end opts.command 'wait-node-idle', 'Wait for the node to become idle. Make sure you run '\ '"offline-node" first.' do |cmd| cmd.on '-n', '--node [NAME]', 'Name of the node or empty for master' do |opt| [:node] = opt end cmd.on '-m', '--max-wait-minutes INT', Integer, 'Wait for INT minutes at most. '\ 'Default 60' do |opt| [:max_wait_minutes] = opt end end opts.command 'get-node-xml', 'Returns the node definition XML.' do |cmd| cmd.on '-n', '--node [NAME]', 'Name of the node or empty for master' do |opt| [:node] = opt end end opts.command 'get-node', 'Returns the node state.' do |cmd| cmd.on '-n', '--node [NAME]', 'Name of the node or empty for master' do |opt| [:node] = opt end end opts.command 'update-node', 'Updates the node definition XML from stdin or file.' do |cmd| cmd.on '-n', '--node [NAME]', 'Name of the node or empty for master' do |opt| [:node] = opt end cmd.on '-x', '--xml-config FILE', 'File to read definition from. Omit this to read from stdin' do |opt| [:xml_config] = IO.read( opt ) end end opts.command 'build', 'Starts a build.' do |cmd| cmd.on '-j', '--job NAME', 'Name of the job' do |opt| [:job] = opt end cmd.on '-p', '--params KEY=VALUE[,KEY=VALUE...]', Array, 'Build parameters, where keys are'\ ' names of variables' do |opt| [:params] = opt.collect{|i| i.split( '=', 2 ) }.to_h end end opts.command 'install-plugin', 'Installs a plugin from url or by short name. '\ 'Provide either --url or --name.' do |cmd| cmd.on '-u', '--uri URI', ::URI, 'Uri to install plugin from.' do |opt| [:uri] = opt end cmd.on '-n', '--name SHORTNAME', 'Plugin short name (like thinBackup).' do |opt| [:name] = opt end end opts.command 'list-plugins', 'Lists installed plugins' end begin global.parse!( args ) [:command] = global.command_name if [:config] from_file = JSON.parse( IO.read( [:config] ), symbolize_names: true ) = from_file.merge( ) end Log.init if [:help] Log.unknown { global.help } exit end raise OptionParser::MissingArgument, :command unless [:command] rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e Log.fatal { e. } Log.fatal { global.help } exit 1 end Log.debug { "Options: #{@global_options}\nUnparsed args: #{ARGV}" } end |
Instance Attribute Details
#command_options ⇒ Object
Returns the value of attribute command_options.
9 10 11 |
# File 'lib/jenkins2/command_line.rb', line 9 def end |
#global_options ⇒ Object
Returns the value of attribute global_options.
8 9 10 |
# File 'lib/jenkins2/command_line.rb', line 8 def end |
Instance Method Details
#run ⇒ Object
215 216 217 218 |
# File 'lib/jenkins2/command_line.rb', line 215 def run jc = Client.new( ) jc.send( [:command].gsub( '-', '_' ), ) end |