ukku 0.2.1 → 0.2.2
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 +4 -4
- data/bin/ukku +4 -0
- data/lib/ukku.rb +3 -0
- data/lib/ukku/command.rb +21 -0
- data/lib/ukku/configure_command.rb +5 -4
- data/lib/ukku/connection.rb +6 -4
- data/lib/ukku/multiple_applications_error.rb +2 -0
- data/lib/ukku/no_application_error.rb +2 -0
- data/lib/ukku/ps_add_command.rb +4 -25
- data/lib/ukku/ps_command.rb +3 -24
- data/lib/ukku/ps_remove_command.rb +5 -26
- data/lib/ukku/run_command.rb +4 -25
- data/lib/ukku/set_var_command.rb +3 -20
- data/lib/ukku/upload_key_command.rb +3 -21
- data/lib/ukku/vars_command.rb +3 -20
- data/lib/ukku/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8c0a07ab01d66c7f5cd95a53f3aff08bc9d86daa
|
|
4
|
+
data.tar.gz: 978dd591fc8ce3ceb9c04f3c68418238305d62ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4674aa0bf3ab0a7d6f8f83be7da985ee257e0f04cb7b34a235a162bb22aef098c7bc6126edd101662b755abcd4d774315759a5c66d238fd3fa59d9606517ea23
|
|
7
|
+
data.tar.gz: e962080e4d41d9e9046026f14ab2b794d7c3ab7c6d49e67a596e8d51266f8921ea66decdc496320539eea2376e63ac516868a2324aab200b7bc810a095d488c7
|
data/bin/ukku
CHANGED
|
@@ -48,6 +48,10 @@ begin
|
|
|
48
48
|
PsRemoveCommand.new.execute(args) if args['ps:remove']
|
|
49
49
|
rescue Docopt::Exit => e
|
|
50
50
|
puts doc.strip
|
|
51
|
+
rescue NoApplicationError => e
|
|
52
|
+
puts " ! No application configured. Run 'ukku configure <host>' first."
|
|
53
|
+
rescue MultipleApplicationsError => e
|
|
54
|
+
puts " ! No app specified, use the --app NAME option"
|
|
51
55
|
rescue Exception => e
|
|
52
56
|
puts " ! #{e.message}"
|
|
53
57
|
puts e.backtrace
|
data/lib/ukku.rb
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
require 'ukku/version.rb'
|
|
2
|
+
require 'ukku/no_application_error.rb'
|
|
3
|
+
require 'ukku/multiple_applications_error.rb'
|
|
2
4
|
require 'ukku/connection.rb'
|
|
5
|
+
require 'ukku/command.rb'
|
|
3
6
|
require 'ukku/configure_command.rb'
|
|
4
7
|
require 'ukku/run_command.rb'
|
|
5
8
|
require 'ukku/vars_command.rb'
|
data/lib/ukku/command.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
class Command
|
|
2
|
+
def load_app_info(args)
|
|
3
|
+
raise NoApplicationError if !File.exist?(UKKU_FILE)
|
|
4
|
+
|
|
5
|
+
data = YAML.load_file(UKKU_FILE)
|
|
6
|
+
raise NoApplicationError if data.length == 0
|
|
7
|
+
|
|
8
|
+
if data.length > 1
|
|
9
|
+
if args['--app'].nil? || args['--app'] !~ /[^[:space:]]/
|
|
10
|
+
raise MultipleApplicationsError
|
|
11
|
+
else
|
|
12
|
+
name = args['--app']
|
|
13
|
+
app_info = data[name]
|
|
14
|
+
end
|
|
15
|
+
else
|
|
16
|
+
app_info = data.values.first
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
app_info.each_with_object({}) { |(k,v), h| h[k.to_sym] = v }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class ConfigureCommand
|
|
1
|
+
class ConfigureCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
3
|
host = args['HOST']
|
|
4
4
|
name = args['NAME'] || "production"
|
|
@@ -15,7 +15,7 @@ class ConfigureCommand
|
|
|
15
15
|
raise "Name '#{name}' already exists, choose a different one"
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
conn = Connection.new(
|
|
18
|
+
conn = Connection.new(entry)
|
|
19
19
|
server_ready = is_server_ready?(conn)
|
|
20
20
|
|
|
21
21
|
if server_ready
|
|
@@ -88,8 +88,9 @@ class ConfigureCommand
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def append_entry_to_ukku_file(name, params)
|
|
91
|
-
data =
|
|
92
|
-
|
|
91
|
+
data = File.exist?(UKKU_FILE) ? YAML.load_file(UKKU_FILE) : {}
|
|
92
|
+
data[name] = params
|
|
93
|
+
File.open(UKKU_FILE, 'w') { |f| f.write data.to_yaml }
|
|
93
94
|
end
|
|
94
95
|
|
|
95
96
|
def append_ukku_file_to_gitignore
|
data/lib/ukku/connection.rb
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
class Connection
|
|
2
|
-
def initialize(
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@
|
|
2
|
+
def initialize(opts)
|
|
3
|
+
options = opts.each_with_object({}) { |(k,v), h| h[k.to_sym] = v }
|
|
4
|
+
|
|
5
|
+
@host = options[:host]
|
|
6
|
+
@user = options[:user]
|
|
7
|
+
@identity_file = options[:identity_file]
|
|
6
8
|
end
|
|
7
9
|
|
|
8
10
|
def execute(command, &blk)
|
data/lib/ukku/ps_add_command.rb
CHANGED
|
@@ -1,32 +1,11 @@
|
|
|
1
|
-
class PsAddCommand
|
|
1
|
+
class PsAddCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
3
|
type = args['TYPE']
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
raise "No application configured. Run 'ukku configure HOST' first."
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
data = YAML.load_file(UKKU_FILE)
|
|
10
|
-
name, server = data.first
|
|
11
|
-
if name.nil?
|
|
12
|
-
raise "No application configured. Run 'ukku configure <host>' first."
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
if data.length > 1
|
|
16
|
-
if args['--app'].empty?
|
|
17
|
-
raise "No app specified, use the --app NAME option"
|
|
18
|
-
else
|
|
19
|
-
name = args[--app]
|
|
20
|
-
sever = data[name]
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
host = server['host']
|
|
25
|
-
user = server['user']
|
|
26
|
-
identity_file = server['identity_file']
|
|
5
|
+
app_info = load_app_info(args)
|
|
27
6
|
|
|
28
|
-
puts "Adding process type '#{type}' on #{host} ..."
|
|
29
|
-
conn = Connection.new(
|
|
7
|
+
puts "Adding process type '#{type}' on #{app_info[:host]} ..."
|
|
8
|
+
conn = Connection.new(app_info)
|
|
30
9
|
conn.execute("sudo touch /etc/ukku/ps-types/#{type}")
|
|
31
10
|
begin
|
|
32
11
|
conn.execute("launchapp")
|
data/lib/ukku/ps_command.rb
CHANGED
|
@@ -1,31 +1,10 @@
|
|
|
1
|
-
class PsCommand
|
|
1
|
+
class PsCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
3
|
type = args['TYPE']
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
raise "No application configured. Run 'ukku configure HOST' first."
|
|
7
|
-
end
|
|
5
|
+
app_info = load_app_info(args)
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
name, server = data.first
|
|
11
|
-
if name.nil?
|
|
12
|
-
raise "No application configured. Run 'ukku configure <host>' first."
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
if data.length > 1
|
|
16
|
-
if args['--app'].empty?
|
|
17
|
-
raise "No app specified, use the --app NAME option"
|
|
18
|
-
else
|
|
19
|
-
name = args[--app]
|
|
20
|
-
sever = data[name]
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
host = server['host']
|
|
25
|
-
user = server['user']
|
|
26
|
-
identity_file = server['identity_file']
|
|
27
|
-
|
|
28
|
-
conn = Connection.new(host, user, identity_file)
|
|
7
|
+
conn = Connection.new(app_info)
|
|
29
8
|
conn.execute("ls /etc/ukku/ps-types")
|
|
30
9
|
end
|
|
31
10
|
end
|
|
@@ -1,34 +1,13 @@
|
|
|
1
|
-
class PsRemoveCommand
|
|
1
|
+
class PsRemoveCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
3
|
type = args['TYPE']
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
raise "No application configured. Run 'ukku configure HOST' first."
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
data = YAML.load_file(UKKU_FILE)
|
|
10
|
-
name, server = data.first
|
|
11
|
-
if name.nil?
|
|
12
|
-
raise "No application configured. Run 'ukku configure <host>' first."
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
if data.length > 1
|
|
16
|
-
if args['--app'].empty?
|
|
17
|
-
raise "No app specified, use the --app NAME option"
|
|
18
|
-
else
|
|
19
|
-
name = args[--app]
|
|
20
|
-
sever = data[name]
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
host = server['host']
|
|
25
|
-
user = server['user']
|
|
26
|
-
identity_file = server['identity_file']
|
|
5
|
+
app_info = load_app_info(args)
|
|
27
6
|
|
|
28
|
-
puts "Removing process type '#{type}' on #{host} ..."
|
|
29
|
-
conn = Connection.new(
|
|
30
|
-
conn.execute("sudo rm /etc/ukku/ps-types/#{type} && docker kill app-#{type} && docker rm app-#{type}")
|
|
7
|
+
puts "Removing process type '#{type}' on #{app_info[:host]} ..."
|
|
8
|
+
conn = Connection.new(app_info)
|
|
31
9
|
begin
|
|
10
|
+
conn.execute("sudo rm /etc/ukku/ps-types/#{type} && docker kill app-#{type} && docker rm app-#{type}")
|
|
32
11
|
conn.execute("launchapp")
|
|
33
12
|
rescue Subprocess::NonZeroExit => e
|
|
34
13
|
end
|
data/lib/ukku/run_command.rb
CHANGED
|
@@ -1,32 +1,11 @@
|
|
|
1
|
-
class RunCommand
|
|
1
|
+
class RunCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
3
|
command = args['COMMAND'].join(' ')
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
raise "No application configured. Run 'ukku configure HOST' first."
|
|
7
|
-
end
|
|
5
|
+
app_info = load_app_info(args)
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if name.nil?
|
|
12
|
-
raise "No application configured. Run 'ukku configure <host>' first."
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
if data.length > 1
|
|
16
|
-
if args['--app'].empty?
|
|
17
|
-
raise "No app specified, use the --app NAME option"
|
|
18
|
-
else
|
|
19
|
-
name = args[--app]
|
|
20
|
-
sever = data[name]
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
host = server['host']
|
|
25
|
-
user = server['user']
|
|
26
|
-
identity_file = server['identity_file']
|
|
27
|
-
|
|
28
|
-
puts "Running command '#{command}' on #{host} ..."
|
|
29
|
-
conn = Connection.new(host, user, identity_file)
|
|
7
|
+
puts "Running command '#{command}' on #{app_info[:host]} ..."
|
|
8
|
+
conn = Connection.new(app_info)
|
|
30
9
|
conn.execute("runcommand #{command}")
|
|
31
10
|
end
|
|
32
11
|
end
|
data/lib/ukku/set_var_command.rb
CHANGED
|
@@ -1,28 +1,11 @@
|
|
|
1
|
-
class SetVarCommand
|
|
1
|
+
class SetVarCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
3
|
var_name = args['VAR_NAME']
|
|
4
4
|
var_value = args['VAR_VALUE']
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
name, server = data.first
|
|
8
|
-
if name.nil?
|
|
9
|
-
raise "No application configured. Run 'ukku configure <host>' first."
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
if data.length > 1
|
|
13
|
-
if args['--app'].empty?
|
|
14
|
-
raise "No app specified, use the --app NAME option"
|
|
15
|
-
else
|
|
16
|
-
name = args[--app]
|
|
17
|
-
sever = data[name]
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
host = server['host']
|
|
22
|
-
user = server['user']
|
|
23
|
-
identity_file = server['identity_file']
|
|
6
|
+
app_info = load_app_info(args)
|
|
24
7
|
|
|
25
|
-
conn = Connection.new(
|
|
8
|
+
conn = Connection.new(app_info)
|
|
26
9
|
conn.execute("sudo mkdir -p /etc/ukku/vars && echo '#{var_value}' > /etc/ukku/vars/#{var_name}")
|
|
27
10
|
begin
|
|
28
11
|
conn.execute("launchapp")
|
|
@@ -1,28 +1,10 @@
|
|
|
1
|
-
class UploadKeyCommand
|
|
1
|
+
class UploadKeyCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if name.nil?
|
|
6
|
-
raise "No application configured. Run 'ukku configure <host>' first."
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
if data.length > 1
|
|
10
|
-
if args['--app'].empty?
|
|
11
|
-
raise "No app specified, use the --app NAME option"
|
|
12
|
-
else
|
|
13
|
-
name = args[--app]
|
|
14
|
-
sever = data[name]
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
host = server['host']
|
|
19
|
-
user = server['user']
|
|
20
|
-
identity_file = server['identity_file']
|
|
3
|
+
app_info = load_app_info(args)
|
|
4
|
+
conn = Connection.new(app_info)
|
|
21
5
|
|
|
22
6
|
key_file = args['PUBLIC_KEY_FILE']
|
|
23
7
|
|
|
24
|
-
conn = Connection.new(host, user, identity_file)
|
|
25
|
-
|
|
26
8
|
puts "Uploading key '#{key_file}' ... "
|
|
27
9
|
conn.execute("gitreceive upload-key ukku") do |p|
|
|
28
10
|
p.communicate IO.read(File.expand_path(key_file))
|
data/lib/ukku/vars_command.rb
CHANGED
|
@@ -1,25 +1,8 @@
|
|
|
1
|
-
class VarsCommand
|
|
1
|
+
class VarsCommand < Command
|
|
2
2
|
def execute(args)
|
|
3
|
-
|
|
4
|
-
name, server = data.first
|
|
5
|
-
if name.nil?
|
|
6
|
-
raise "No application configured. Run 'ukku configure <host>' first."
|
|
7
|
-
end
|
|
3
|
+
app_info = load_app_info(args)
|
|
8
4
|
|
|
9
|
-
|
|
10
|
-
if args['--app'].empty?
|
|
11
|
-
raise "No app specified, use the --app NAME option"
|
|
12
|
-
else
|
|
13
|
-
name = args[--app]
|
|
14
|
-
sever = data[name]
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
host = server['host']
|
|
19
|
-
user = server['user']
|
|
20
|
-
identity_file = server['identity_file']
|
|
21
|
-
|
|
22
|
-
conn = Connection.new(host, user, identity_file)
|
|
5
|
+
conn = Connection.new(app_info)
|
|
23
6
|
conn.execute("sudo mkdir -p /etc/ukku/vars && FILES=/etc/ukku/vars/*; for f in $FILES; do echo \"${f##*/}=$(<$f)\"; done")
|
|
24
7
|
end
|
|
25
8
|
end
|
data/lib/ukku/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ukku
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Germán Escobar
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -123,8 +123,11 @@ files:
|
|
|
123
123
|
- features/support/env.rb
|
|
124
124
|
- features/ukku.feature
|
|
125
125
|
- lib/ukku.rb
|
|
126
|
+
- lib/ukku/command.rb
|
|
126
127
|
- lib/ukku/configure_command.rb
|
|
127
128
|
- lib/ukku/connection.rb
|
|
129
|
+
- lib/ukku/multiple_applications_error.rb
|
|
130
|
+
- lib/ukku/no_application_error.rb
|
|
128
131
|
- lib/ukku/ps_add_command.rb
|
|
129
132
|
- lib/ukku/ps_command.rb
|
|
130
133
|
- lib/ukku/ps_remove_command.rb
|