sistero 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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