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 +4 -4
- data/bin/sistero +30 -75
- data/lib/sistero/version.rb +1 -1
- data/sistero.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c31adbdb186b28911fef49e9cc7ff7ca3f247a7e
|
4
|
+
data.tar.gz: f19fb31fb796ac1d1781741ce02000f00780e733
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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'
|
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'
|
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 '
|
73
|
-
|
74
|
-
subcommand '
|
75
|
-
|
76
|
-
subcommand '
|
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
|
-
|
36
|
+
parsed_cfg = op.parse(args).to_h
|
83
37
|
|
84
|
-
|
38
|
+
parsed_cfg.merge! parsed_cfg[:config]
|
39
|
+
parsed_cfg.delete :config
|
85
40
|
|
86
|
-
|
41
|
+
config = OpenStruct.new parsed_cfg
|
87
42
|
end
|
88
43
|
|
89
|
-
unless
|
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:
|
95
|
-
case
|
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 =
|
52
|
+
vm_name, *ssh_args = config.positionals
|
98
53
|
# TODO: pass ssh_args
|
99
|
-
sistero.ssh_to_vm(vm_name, ssh_options:
|
54
|
+
sistero.ssh_to_vm(vm_name, ssh_options: config.ssh_options)
|
100
55
|
when 'create'
|
101
|
-
vms =
|
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 =
|
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
|
79
|
+
Sistero::Command::run ARGV
|
data/lib/sistero/version.rb
CHANGED
data/sistero.gemspec
CHANGED
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.
|
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-
|
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
|