dokku-installer-cli 0.0.9.1 → 0.0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/dokku +1 -141
- data/lib/dokku_installer.rb +5 -0
- data/lib/dokku_installer/config.rb +47 -0
- data/lib/dokku_installer/domains.rb +15 -0
- data/lib/dokku_installer/postgres.rb +97 -0
- data/lib/dokku_installer/ssl.rb +25 -0
- data/lib/dokku_installer/version.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c945b34c9882b87432e855b86f5612a760abe39
|
4
|
+
data.tar.gz: c393ae67b9aec13d04aa2db8702eb3d601c23d14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b2d401fab02a575e21f1d8ea86213981244beaf752947666996ef0008b04e9e94e2d790d72117dc9eceed8097ed89cc448974357cc387119d05dc58acecfe1b
|
7
|
+
data.tar.gz: 6abaad81c6af7c6121b27ed408940caf86098b6cb2c22e1c78b242e55d1090c9570cf3661b5ef35e1b8b61e614eb1c66fd5cfea3109502a1bbab928c15c7a6fb
|
data/bin/dokku
CHANGED
@@ -1,42 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require "shellwords"
|
4
3
|
require "thor"
|
5
4
|
require "YAML"
|
5
|
+
require_relative "../lib/dokku_installer"
|
6
6
|
|
7
7
|
module DokkuInstaller
|
8
8
|
class Cli < Thor
|
9
9
|
|
10
|
-
desc "config", "Display the app's environment variables"
|
11
|
-
def config
|
12
|
-
run_command "config #{app_name}"
|
13
|
-
end
|
14
|
-
|
15
|
-
desc "config:get KEY", "Display an environment variable value"
|
16
|
-
def config_get(*args)
|
17
|
-
run_command "config:get #{app_name} #{args.first}"
|
18
|
-
end
|
19
|
-
|
20
|
-
desc "config:set KEY1=VALUE1 [KEY2=VALUE2 ...]", "Set one or more environment variables"
|
21
|
-
def config_set(*args)
|
22
|
-
run_command "config:set #{app_name} #{args.join(' ')}"
|
23
|
-
end
|
24
|
-
|
25
|
-
desc "config:unset KEY1 [KEY2 ...]", "Unset one or more environment variables"
|
26
|
-
def config_unset(*args)
|
27
|
-
run_command "config:unset #{app_name} #{args.join(' ')}"
|
28
|
-
end
|
29
|
-
|
30
|
-
desc "domains", "Display the app's domains"
|
31
|
-
def domains(*args)
|
32
|
-
run_command "domains #{app_name}"
|
33
|
-
end
|
34
|
-
|
35
|
-
desc "domains:set DOMAIN1 [DOMAIN2 ...]", "Set one or more domains"
|
36
|
-
def domains_set(*args)
|
37
|
-
run_command "domains:set #{app_name} #{args.join(' ')}"
|
38
|
-
end
|
39
|
-
|
40
10
|
desc "logs [-t]", "Show the last logs for the application (-t follows)"
|
41
11
|
def logs(*args)
|
42
12
|
if args.first && args.first.strip == "-t"
|
@@ -53,70 +23,6 @@ module DokkuInstaller
|
|
53
23
|
exec("open http://#{app_name}.#{domain}")
|
54
24
|
end
|
55
25
|
|
56
|
-
desc "postgres:backups", "List available PostgreSQL backups"
|
57
|
-
def postgres_backups
|
58
|
-
command = "ssh -t dokku@#{domain} postgres:backups #{app_name}"
|
59
|
-
puts "Running #{command}..."
|
60
|
-
backups = `#{command}`
|
61
|
-
backups.split("\n").reverse.each_with_index do |line, index|
|
62
|
-
number = "#{index + 1}"
|
63
|
-
if number.length < 2
|
64
|
-
number = " #{number}"
|
65
|
-
end
|
66
|
-
puts "#{number}. #{line}"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
desc "postgres:backups:create", "Create a new PostgreSQL backup"
|
71
|
-
def postgres_backups_create
|
72
|
-
run_command "postgres:backups:create #{app_name}"
|
73
|
-
end
|
74
|
-
|
75
|
-
desc "postgres:backups:disable", "Disable daily PostgreSQL backups"
|
76
|
-
def postgres_backups_disable
|
77
|
-
run_command "postgres:backups:disable #{app_name}"
|
78
|
-
end
|
79
|
-
|
80
|
-
desc "postgres:backups:download <number>", "Download the numbered PostgreSQL backup"
|
81
|
-
def postgres_backups_download(*args)
|
82
|
-
number = args.first ? args.first : 1
|
83
|
-
|
84
|
-
if backup = backup_filename(number)
|
85
|
-
command = "postgres:backups:download #{app_name} #{backup} > #{backup}"
|
86
|
-
puts "Saving to local file: #{backup}"
|
87
|
-
run_command(command)
|
88
|
-
else
|
89
|
-
puts "Invalid backup number"
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
desc "postgres:backups:enable", "Enable daily PostgreSQL backups"
|
94
|
-
def postgres_backups_enable
|
95
|
-
run_command "postgres:backups:enable #{app_name}"
|
96
|
-
end
|
97
|
-
|
98
|
-
desc "postgres:backups:restore:local <number>", "Restore the numbered PostgreSQL backup locally"
|
99
|
-
def postgres_backups_restore_local(*args)
|
100
|
-
# Download the backup file
|
101
|
-
number = args.first ? args.first : 1
|
102
|
-
|
103
|
-
if backup = backup_filename(number)
|
104
|
-
command = "ssh -t dokku@#{domain} postgres:backups:download #{app_name} #{backup} > #{backup}"
|
105
|
-
puts "Saving to local file: #{backup}"
|
106
|
-
`#{command}`
|
107
|
-
|
108
|
-
if psql_options
|
109
|
-
command = "psql #{psql_options} --file=#{backup}"
|
110
|
-
puts "Running #{command}..."
|
111
|
-
`#{command}`
|
112
|
-
puts "Deleting #{backup}..."
|
113
|
-
`rm #{backup}`
|
114
|
-
end
|
115
|
-
else
|
116
|
-
puts "Invalid backup number"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
26
|
desc "restart", "Restart the application"
|
121
27
|
def restart(*args)
|
122
28
|
run_command "restart #{app_name}"
|
@@ -142,26 +48,6 @@ module DokkuInstaller
|
|
142
48
|
exec(command)
|
143
49
|
end
|
144
50
|
|
145
|
-
desc "ssl:certificate <file path>", "Add a signed certificate for SSL (server.crt)"
|
146
|
-
def ssl_certificate(*args)
|
147
|
-
file_path = args.first
|
148
|
-
file_contents = File.read(file_path)
|
149
|
-
command = "echo \"#{file_contents}\" | ssh dokku@#{domain} ssl:certificate #{app_name}"
|
150
|
-
|
151
|
-
puts "Running #{command}..."
|
152
|
-
exec(command)
|
153
|
-
end
|
154
|
-
|
155
|
-
desc "ssl:key <file path>", "Add a private key for SSL (server.key)"
|
156
|
-
def ssl_key(*args)
|
157
|
-
file_path = args.first
|
158
|
-
file_contents = File.read(file_path)
|
159
|
-
command = "echo \"#{file_contents}\" | ssh dokku@#{domain} ssl:key #{app_name}"
|
160
|
-
|
161
|
-
puts "Running #{command}..."
|
162
|
-
exec(command)
|
163
|
-
end
|
164
|
-
|
165
51
|
desc "url", "Show the URL for the application"
|
166
52
|
def url
|
167
53
|
puts "http://#{app_name}.#{domain}"
|
@@ -227,32 +113,6 @@ module DokkuInstaller
|
|
227
113
|
end
|
228
114
|
end
|
229
115
|
|
230
|
-
def psql_options
|
231
|
-
@psql_options ||= begin
|
232
|
-
restore_options = nil
|
233
|
-
|
234
|
-
if File.exist?("./config/database.yml")
|
235
|
-
if development_config = YAML::load(IO.read("./config/database.yml"))["development"]
|
236
|
-
restore_options = "--host=#{development_config['host']} --dbname=#{development_config['database']}"
|
237
|
-
|
238
|
-
if username = development_config["username"]
|
239
|
-
restore_options += " --username=#{username}"
|
240
|
-
end
|
241
|
-
|
242
|
-
if port = development_config["port"]
|
243
|
-
restore_options += " --port=#{port}"
|
244
|
-
end
|
245
|
-
else
|
246
|
-
puts "Missing database.yml config for development environment"
|
247
|
-
end
|
248
|
-
else
|
249
|
-
puts "Missing file config/database.yml"
|
250
|
-
end
|
251
|
-
|
252
|
-
restore_options
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
116
|
def run_command(command)
|
257
117
|
dokku_command = "ssh -t dokku@#{domain} #{command}"
|
258
118
|
|
data/lib/dokku_installer.rb
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
module DokkuInstaller
|
2
|
+
class Cli < Thor
|
3
|
+
|
4
|
+
desc "config", "Display the app's environment variables"
|
5
|
+
def config
|
6
|
+
run_command "config #{app_name}"
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "config:get KEY", "Display an environment variable value"
|
10
|
+
def config_get(*args)
|
11
|
+
run_command "config:get #{app_name} #{args.first}"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "config:set KEY1=VALUE1 [KEY2=VALUE2 ...]", "Set one or more environment variables"
|
15
|
+
def config_set(*args)
|
16
|
+
# FIXME: Requires root to send config values with spaces
|
17
|
+
user = "dokku"
|
18
|
+
|
19
|
+
args = args.map{|arg|
|
20
|
+
key_value = arg.split("=")
|
21
|
+
if key_value.length == 2
|
22
|
+
user = "root" if key_value[1].index(" ")
|
23
|
+
return_value = "#{key_value[0]}="
|
24
|
+
return_value += '\"'
|
25
|
+
return_value += key_value[1].gsub(/"|'/, "")
|
26
|
+
return_value += '\"'
|
27
|
+
return_value
|
28
|
+
else
|
29
|
+
arg
|
30
|
+
end
|
31
|
+
}
|
32
|
+
|
33
|
+
command = "ssh #{user}@#{domain} "
|
34
|
+
command += user == "root" ? "dokku " : ""
|
35
|
+
command += "config:set #{app_name} #{args.join(' ')}"
|
36
|
+
|
37
|
+
puts "Running #{command}..."
|
38
|
+
exec(command)
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "config:unset KEY1 [KEY2 ...]", "Unset one or more environment variables"
|
42
|
+
def config_unset(*args)
|
43
|
+
run_command "config:unset #{app_name} #{args.join(' ')}"
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module DokkuInstaller
|
2
|
+
class Cli < Thor
|
3
|
+
|
4
|
+
desc "domains", "Display the app's domains"
|
5
|
+
def domains(*args)
|
6
|
+
run_command "domains #{app_name}"
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "domains:set DOMAIN1 [DOMAIN2 ...]", "Set one or more domains"
|
10
|
+
def domains_set(*args)
|
11
|
+
run_command "domains:set #{app_name} #{args.join(' ')}"
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module DokkuInstaller
|
2
|
+
class Cli < Thor
|
3
|
+
|
4
|
+
desc "postgres:backups", "List available PostgreSQL backups"
|
5
|
+
def postgres_backups
|
6
|
+
command = "ssh -t dokku@#{domain} postgres:backups #{app_name}"
|
7
|
+
puts "Running #{command}..."
|
8
|
+
backups = `#{command}`
|
9
|
+
backups.split("\n").reverse.each_with_index do |line, index|
|
10
|
+
number = "#{index + 1}"
|
11
|
+
if number.length < 2
|
12
|
+
number = " #{number}"
|
13
|
+
end
|
14
|
+
puts "#{number}. #{line}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "postgres:backups:create", "Create a new PostgreSQL backup"
|
19
|
+
def postgres_backups_create
|
20
|
+
run_command "postgres:backups:create #{app_name}"
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "postgres:backups:disable", "Disable daily PostgreSQL backups"
|
24
|
+
def postgres_backups_disable
|
25
|
+
run_command "postgres:backups:disable #{app_name}"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "postgres:backups:download <number>", "Download the numbered PostgreSQL backup"
|
29
|
+
def postgres_backups_download(*args)
|
30
|
+
number = args.first ? args.first : 1
|
31
|
+
|
32
|
+
if backup = backup_filename(number)
|
33
|
+
command = "postgres:backups:download #{app_name} #{backup} > #{backup}"
|
34
|
+
puts "Saving to local file: #{backup}"
|
35
|
+
run_command(command)
|
36
|
+
else
|
37
|
+
puts "Invalid backup number"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
desc "postgres:backups:enable", "Enable daily PostgreSQL backups"
|
42
|
+
def postgres_backups_enable
|
43
|
+
run_command "postgres:backups:enable #{app_name}"
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "postgres:backups:restore:local <number>", "Restore the numbered PostgreSQL backup locally"
|
47
|
+
def postgres_backups_restore_local(*args)
|
48
|
+
# Download the backup file
|
49
|
+
number = args.first ? args.first : 1
|
50
|
+
|
51
|
+
if backup = backup_filename(number)
|
52
|
+
command = "ssh -t dokku@#{domain} postgres:backups:download #{app_name} #{backup} > #{backup}"
|
53
|
+
puts "Saving to local file: #{backup}"
|
54
|
+
`#{command}`
|
55
|
+
|
56
|
+
if psql_options
|
57
|
+
command = "psql #{psql_options} --file=#{backup}"
|
58
|
+
puts "Running #{command}..."
|
59
|
+
`#{command}`
|
60
|
+
puts "Deleting #{backup}..."
|
61
|
+
`rm #{backup}`
|
62
|
+
end
|
63
|
+
else
|
64
|
+
puts "Invalid backup number"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def psql_options
|
71
|
+
@psql_options ||= begin
|
72
|
+
restore_options = nil
|
73
|
+
|
74
|
+
if File.exist?("./config/database.yml")
|
75
|
+
if development_config = YAML::load(IO.read("./config/database.yml"))["development"]
|
76
|
+
restore_options = "--host=#{development_config['host']} --dbname=#{development_config['database']}"
|
77
|
+
|
78
|
+
if username = development_config["username"]
|
79
|
+
restore_options += " --username=#{username}"
|
80
|
+
end
|
81
|
+
|
82
|
+
if port = development_config["port"]
|
83
|
+
restore_options += " --port=#{port}"
|
84
|
+
end
|
85
|
+
else
|
86
|
+
puts "Missing database.yml config for development environment"
|
87
|
+
end
|
88
|
+
else
|
89
|
+
puts "Missing file config/database.yml"
|
90
|
+
end
|
91
|
+
|
92
|
+
restore_options
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module DokkuInstaller
|
2
|
+
class Cli < Thor
|
3
|
+
|
4
|
+
desc "ssl:certificate <file path>", "Add a signed certificate for SSL (server.crt)"
|
5
|
+
def ssl_certificate(*args)
|
6
|
+
file_path = args.first
|
7
|
+
file_contents = File.read(file_path)
|
8
|
+
command = "echo \"#{file_contents}\" | ssh dokku@#{domain} ssl:certificate #{app_name}"
|
9
|
+
|
10
|
+
puts "Running #{command}..."
|
11
|
+
exec(command)
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "ssl:key <file path>", "Add a private key for SSL (server.key)"
|
15
|
+
def ssl_key(*args)
|
16
|
+
file_path = args.first
|
17
|
+
file_contents = File.read(file_path)
|
18
|
+
command = "echo \"#{file_contents}\" | ssh dokku@#{domain} ssl:key #{app_name}"
|
19
|
+
|
20
|
+
puts "Running #{command}..."
|
21
|
+
exec(command)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dokku-installer-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.9.
|
4
|
+
version: 0.0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Pattison
|
@@ -40,6 +40,10 @@ files:
|
|
40
40
|
- bin/dokku
|
41
41
|
- dokku_installer_cli.gemspec
|
42
42
|
- lib/dokku_installer.rb
|
43
|
+
- lib/dokku_installer/config.rb
|
44
|
+
- lib/dokku_installer/domains.rb
|
45
|
+
- lib/dokku_installer/postgres.rb
|
46
|
+
- lib/dokku_installer/ssl.rb
|
43
47
|
- lib/dokku_installer/version.rb
|
44
48
|
homepage: https://github.com/brianpattison/dokku-installer-cli
|
45
49
|
licenses:
|