dokku-installer-cli 0.0.8 → 0.0.9

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: 77c55952348afc6f97cb4262a61b8bbd4fecf15a
4
- data.tar.gz: ee588ed6b3ac1cdaf963bd09e9eaad6e94d420e4
3
+ metadata.gz: 25020f2b95b8dcff21290f451cf31c3bb288a424
4
+ data.tar.gz: 4d2f383fb98e9c810792f3c5e06fb890456231e0
5
5
  SHA512:
6
- metadata.gz: 00df6dfbdfc530434c4214f0ff72c97e49be3c9b1b6c73ba7f91674ee68147b10dfb6f29ab5868cdcdc4b05175474b1ce4a30f738b7ec9539d56a5f5d8a1ba4a
7
- data.tar.gz: 1c94715ce03a72ac17941da93095753e5db128cbd6cf96a00d92ca3444dd4d835297b6528f205079de1cf9209dea565e86f349fc2534df6a6204019aa11f565e
6
+ metadata.gz: 24ad507fb472e346ebaa848b6d0fcef0a875e83f3820c72ac46edc82d80c0d4583a29b47c35e9c66c42b5fec1b306447233d82829193f3ce8e2f31294b1bcfec
7
+ data.tar.gz: 91f9f6ac6ca6a70390eaadf6e242e3f5eecdb1c82bb9504a5f246084f41f209058094466651ad9ecaaa9e244c41b99dad666486b73a3c3cbce4833ada57bee2f
data/bin/dokku CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "shellwords"
4
4
  require "thor"
5
+ require "YAML"
5
6
 
6
7
  module DokkuInstaller
7
8
  class Cli < Thor
@@ -78,21 +79,9 @@ module DokkuInstaller
78
79
 
79
80
  desc "postgres:backups:download <number>", "Download the numbered PostgreSQL backup"
80
81
  def postgres_backups_download(*args)
81
- # Make sure the number is valid
82
82
  number = args.first ? args.first : 1
83
- number = number.to_s.gsub(/\D/, "").to_i
84
- if number < 1
85
- puts "Invalid backup number"
86
- return
87
- end
88
83
 
89
- # Get the file name for the numbered backup
90
- puts "Getting list of backups..."
91
- command = "ssh -t dokku@#{domain} postgres:backups #{app_name}"
92
- backups = `#{command}`
93
- index = number - 1
94
- backup = backups.split("\n").reverse[index].strip
95
- if backup
84
+ if backup = backup_filename(number)
96
85
  command = "postgres:backups:download #{app_name} #{backup} > #{backup}"
97
86
  puts "Saving to local file: #{backup}"
98
87
  run_command(command)
@@ -106,6 +95,28 @@ module DokkuInstaller
106
95
  run_command "postgres:backups:enable #{app_name}"
107
96
  end
108
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
+
109
120
  desc "restart", "Restart the application"
110
121
  def restart(*args)
111
122
  run_command "restart #{app_name}"
@@ -175,6 +186,23 @@ module DokkuInstaller
175
186
  @app_name ||= git_config_match[2]
176
187
  end
177
188
 
189
+ def backup_filename(number)
190
+ # Make sure the number is valid or use 1
191
+ number = number.to_s.gsub(/\D/, "").to_i
192
+ number = 1 if number < 1
193
+
194
+ # Get the file name for the numbered backup
195
+ puts "Getting list of backups..."
196
+ command = "ssh -t dokku@#{domain} postgres:backups #{app_name}"
197
+ backups = `#{command}`
198
+ index = number - 1
199
+ if filename = backups.split("\n").reverse[index]
200
+ filename.strip
201
+ else
202
+ nil
203
+ end
204
+ end
205
+
178
206
  def domain
179
207
  @domain ||= git_config_match[1]
180
208
  end
@@ -192,6 +220,32 @@ module DokkuInstaller
192
220
  end
193
221
  end
194
222
 
223
+ def psql_options
224
+ @psql_options ||= begin
225
+ restore_options = nil
226
+
227
+ if File.exist?("./config/database.yml")
228
+ if development_config = YAML::load(IO.read("./config/database.yml"))["development"]
229
+ restore_options = "--host=#{development_config['host']} --dbname=#{development_config['database']}"
230
+
231
+ if username = development_config["username"]
232
+ restore_options += " --username=#{username}"
233
+ end
234
+
235
+ if port = development_config["port"]
236
+ restore_options += " --port=#{port}"
237
+ end
238
+ else
239
+ puts "Missing database.yml config for development environment"
240
+ end
241
+ else
242
+ puts "Missing file config/database.yml"
243
+ end
244
+
245
+ restore_options
246
+ end
247
+ end
248
+
195
249
  def run_command(command)
196
250
  dokku_command = "ssh -t dokku@#{domain} #{command}"
197
251
 
@@ -1,3 +1,3 @@
1
1
  module DokkuInstaller
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  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.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Pattison