sistero 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46afcf4d2b2acdb8217689eb5211dbee64f72ad4
4
- data.tar.gz: e65a84a742003c6c7ddde077fd19dd49c0033d75
3
+ metadata.gz: c31adbdb186b28911fef49e9cc7ff7ca3f247a7e
4
+ data.tar.gz: f19fb31fb796ac1d1781741ce02000f00780e733
5
5
  SHA512:
6
- metadata.gz: 969c627528636576fb3e3a5e1993b8df53ca5783055d811801aabbd8dce814597d55903087c7e30038cbec9c5e9c582b41af4f71af2a9fbca84dc9b167964454
7
- data.tar.gz: 7ec2865ef037edd095614eb81758a04c461507b2ae0c368a210a0b1ac17ba037b740d1a7bf47a100d8f4e6f3ff9ce2020702500b62a3c4e68535dc90ca1ae10d
6
+ metadata.gz: 578488ef88bc13ef6692627ad4f34d6dd86411490a6c45c97a941cde850e0433538f61d5dac2be3ca34c015749c37a73c4086a6c4e8573c34dc2e62cef14c4f5
7
+ data.tar.gz: a726152b1fd6e1fe310ed6e357ba4ed2bab50a11d3638777c0f664584750cf0a9e1339dcc5248ac41e5671fe550d695b4f591da9d9d1512a7ff250866cc5fd1c
data/bin/sistero CHANGED
@@ -2,106 +2,61 @@
2
2
 
3
3
  require 'bundler/setup'
4
4
  require 'sistero'
5
+ require 'moister'
5
6
 
6
7
  module Sistero::Command
7
- @config = OpenStruct.new
8
-
9
- @subcommands = {}
10
- @op = nil
11
-
12
- def self.subcommand name, banner, &block
13
- @subcommands[name] = { name: name, banner: banner, parse_cmdline: block }
14
- end
15
-
16
- def self.with_help help_op
17
- help_op.on '-h', '--help', 'show this help message' do
18
- puts help_op
19
- exit
20
- end
21
- end
22
-
23
- def self.parse_opts op, args
24
- args = @config.args = args.clone
25
- op.order! args
26
- raise "must supply subcommand" if args.empty?
27
-
28
- action = args.first
29
- subcmd_meta = @subcommands[action]
30
- raise "invalid subcommand: #{action}" unless @subcommands.has_key? action
31
- args.shift
32
-
33
- @config.action = action
34
- OptionParser.new do |subop|
35
- subop.banner = subcmd_meta[:banner]
36
- with_help subop
37
- parse_cmdline = subcmd_meta[:parse_cmdline]
38
- parse_cmdline.call(subop) if parse_cmdline
39
- end.order! args
40
- end
41
-
42
8
  def self.run args
43
- OptionParser.new do |op|
44
- @op = op
9
+ config = nil
45
10
 
11
+ Moister::SubcommandOptionParser.new do |op|
46
12
  op.banner = 'usage: sistero [global options] command [command options]'
47
- op.on '-h', '--help', 'show this help message' do
48
- max_len = @subcommands.values.map { |subcommand| subcommand[:name].length }.max
49
13
 
50
- puts op
51
- puts "\ncommands:"
52
- @subcommands.values.each do |subcommand|
53
- prefix = subcommand[:name]
54
- prefix += ' ' * (max_len - prefix.length + 2)
55
- puts " #{prefix} #{subcommand[:banner]}"
14
+ op.for_all do |op|
15
+ op.on_tail '-h', '--help', 'show this help message' do
16
+ puts op
17
+ exit
56
18
  end
57
- exit
58
19
  end
59
20
 
60
- op.on '-c', '--config file', 'override path to config file' do |cfg_file_path|
61
- @config.cfg_file_path = cfg_file_path
62
- end
21
+ op.on '-c', '--config file', 'override path to config file', 'cfg_file_path'
63
22
 
64
- subcommand 'ssh', 'ssh to vm' do |subop|
65
- subop.on '-o val', 'add ssh options' do |ssh_options|
66
- @config.ssh_options = ssh_options
67
- end
23
+ op.subcommand 'ssh', 'ssh to vm' do |subop|
24
+ subop.on '-o val', 'add ssh options', 'ssh_options'
68
25
  end
69
26
 
70
- subcommand 'create', 'create vm'
71
-
72
- subcommand 'destroy', 'destroy vm'
73
-
74
- subcommand 'list', 'list vms'
75
-
76
- subcommand 'show-config', 'show configuration'
77
-
78
- subcommand 'ssh-keys', 'show ssh keys'
79
-
80
- subcommand 'sizes', 'show possible sizes'
27
+ op.subcommand 'create', 'create vm'
28
+ op.subcommand 'destroy', 'destroy vm'
29
+ op.subcommand 'list', 'list vms'
30
+ op.subcommand 'show-config', 'show configuration'
31
+ op.subcommand 'ssh-keys', 'show ssh keys'
32
+ op.subcommand 'sizes', 'show possible sizes'
33
+ op.subcommand 'regions', 'show possible regions'
34
+ op.subcommand 'images', 'show images'
81
35
 
82
- subcommand 'regions', 'show possible regions'
36
+ parsed_cfg = op.parse(args).to_h
83
37
 
84
- subcommand 'images', 'show images'
38
+ parsed_cfg.merge! parsed_cfg[:config]
39
+ parsed_cfg.delete :config
85
40
 
86
- parse_opts op, args
41
+ config = OpenStruct.new parsed_cfg
87
42
  end
88
43
 
89
- unless @config.action
44
+ unless config.command
90
45
  puts 'please supply a command, see --help'
91
46
  exit
92
47
  end
93
48
 
94
- sistero = Sistero::Instance.new({ cfg_file_path: @config.cfg_file_path })
95
- case @config.action
49
+ sistero = Sistero::Instance.new({ cfg_file_path: config.cfg_file_path })
50
+ case config.command
96
51
  when 'ssh'
97
- vm_name, *ssh_args = @config.args
52
+ vm_name, *ssh_args = config.positionals
98
53
  # TODO: pass ssh_args
99
- sistero.ssh_to_vm(vm_name, ssh_options: @config.ssh_options)
54
+ sistero.ssh_to_vm(vm_name, ssh_options: config.ssh_options)
100
55
  when 'create'
101
- vms = @config.args.empty? ? [nil] : @config.args
56
+ vms = config.positionals.empty? ? [nil] : config.positionals
102
57
  vms.each { |vm_name| sistero.create_vm(vm_name) }
103
58
  when 'destroy'
104
- vms = @config.args.empty? ? [nil] : @config.args
59
+ vms = config.positionals.empty? ? [nil] : config.positionals
105
60
  vms.each { |vm_name| sistero.destroy_vm(vm_name) }
106
61
  when 'list'
107
62
  sistero.list_vms()
@@ -121,4 +76,4 @@ module Sistero::Command
121
76
  end
122
77
  end
123
78
 
124
- Sistero::Command::run ARGV.clone
79
+ Sistero::Command::run ARGV
@@ -1,3 +1,3 @@
1
1
  module Sistero
2
- VERSION = '0.4.3'
2
+ VERSION = '0.4.4'
3
3
  end
data/sistero.gemspec CHANGED
@@ -31,4 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "rspec"
32
32
 
33
33
  spec.add_dependency "droplet_kit", "~> 1.3"
34
+ spec.add_dependency "moister", "~> 0.2"
34
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sistero
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Pike
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-02 00:00:00.000000000 Z
11
+ date: 2016-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: moister
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.2'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.2'
69
83
  description: Profile based digital ocean cluster management command line tool.
70
84
  email:
71
85
  - github@chilon.net