techinform 1.5.0 → 1.5.1
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/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/backup/backup.rb +2 -1
- data/lib/backup/db_backup.rb +1 -1
- data/lib/bzip2_selector.rb +7 -0
- data/lib/techinform.rb +14 -8
- data/lib/techinform/version.rb +1 -1
- data/techinform.gemspec +3 -3
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 377409d470d19efcfd9028db6bdefa2071403ac78f60e2b56f67550520eb305c
|
4
|
+
data.tar.gz: 30a08875950a5c865e51bc72d9c6decc346374caf6f94253147ec50e9d640e66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73a5ca1881758fee223838342fc950b73a4c328b81ff504d273f4d240ec823cb071f5d412589c0542f99b2241704745a0c3ef9c9cca9d4420073a388153d5254
|
7
|
+
data.tar.gz: 4f0253a7eaf1d62c88d3bbee508eb3a98f226931545fed400026b0be7968574db8d470b709117eb8525866f89f26955482707cb574f2a9cc508929df8cdb2e23
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -17,7 +17,7 @@ Install gem yourself as:
|
|
17
17
|
|
18
18
|
* mysqldump - for mysql database dumps
|
19
19
|
* gpg2 - backup encryption support
|
20
|
-
* bzip2 - backup compression support
|
20
|
+
* bzip2 - backup compression support (prefer lbzip2 if installed)
|
21
21
|
* rsync - syncing backups
|
22
22
|
|
23
23
|
## Configuration
|
data/lib/backup/backup.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'date'
|
2
2
|
require_relative '../techinform/defaults'
|
3
3
|
require 'highline'
|
4
|
+
require 'bzip2_selector'
|
4
5
|
|
5
6
|
class Backup
|
6
7
|
attr_reader :dry_run, :quiet
|
@@ -60,7 +61,7 @@ class Backup
|
|
60
61
|
if encrypt?
|
61
62
|
"| gpg2 --encrypt #{"--compress-algo=bzip2" if compress?} --recipient=#{ENV['GPGKEY']}"
|
62
63
|
else
|
63
|
-
"| bzip2" if compress?
|
64
|
+
"| #{bzip2}" if compress?
|
64
65
|
end
|
65
66
|
end
|
66
67
|
|
data/lib/backup/db_backup.rb
CHANGED
@@ -5,7 +5,7 @@ class DbBackup < Backup
|
|
5
5
|
|
6
6
|
def initialize user: nil, database: nil, password: nil, compress: true, host: nil, encrypt: nil
|
7
7
|
super compress: compress, encrypt: encrypt
|
8
|
-
user = ENV['
|
8
|
+
user = ENV['DBUSER'] if user.nil?
|
9
9
|
password = ENV['PASSWORD'] if password.nil?
|
10
10
|
@password, @user, @database, @host = password, user, database, host
|
11
11
|
ensure_path unless database.nil?
|
data/lib/techinform.rb
CHANGED
@@ -2,12 +2,15 @@ require 'techinform/version'
|
|
2
2
|
require 'techinform/projects'
|
3
3
|
require_relative 'techinform/backup'
|
4
4
|
require 'thor'
|
5
|
+
require 'bzip2_selector'
|
6
|
+
|
5
7
|
|
6
8
|
module Techinform
|
7
9
|
class CLI < Thor
|
8
10
|
desc 'restore [type] [absolute_filename or database to select file] [dbname]', 'Restore database from backup; if no absolute filename given, will present select menu to choose file'
|
9
|
-
def restore(type, filename, dbname, just_decrypt = false)
|
11
|
+
def restore(type, filename, dbname = nil, just_decrypt = false)
|
10
12
|
require 'highline'
|
13
|
+
dbname = filename if dbname.nil?
|
11
14
|
if !File.exist?(filename)
|
12
15
|
cli = HighLine.new
|
13
16
|
path = type == 'pg' ? PostgreBackup.new(database: filename).restore_path : MysqlBackup.new(database: filename).restore_path
|
@@ -15,28 +18,31 @@ module Techinform
|
|
15
18
|
end
|
16
19
|
encrypted = filename.split('.').last == 'gpg'
|
17
20
|
if type == 'pg'
|
18
|
-
puts "Restoring postgres backup to database #{dbname}..."
|
19
21
|
if encrypted && just_decrypt
|
20
|
-
|
22
|
+
puts "Decrypting postgres backup of #{filename}..."
|
23
|
+
`pv --wait #{filename} | gpg2 --decrypt | #{bzip2} > #{File.basename(filename, '.*') + '.bz2'}`
|
21
24
|
elsif encrypted
|
25
|
+
puts "Restoring postgres backup to database #{dbname}..."
|
22
26
|
`pv --wait #{filename} | gpg2 --decrypt | psql #{dbname} > /dev/null`
|
23
27
|
else
|
24
|
-
`pv --wait #{filename} | bunzip2 | psql #{dbname} > /dev/null`
|
28
|
+
`pv --wait #{filename} | #{bunzip2} | psql #{dbname} > /dev/null`
|
25
29
|
end
|
26
30
|
else
|
27
|
-
puts "Restoring mysql backup to database #{dbname}..."
|
28
31
|
if encrypted && just_decrypt
|
29
|
-
|
32
|
+
puts "Decrypting mysql backup of #{filename}..."
|
33
|
+
`pv --wait #{filename} | gpg2 --decrypt | #{bzip2} > #{File.basename(filename, '.*') + '.bz2'}`
|
30
34
|
elsif encrypted
|
31
|
-
|
35
|
+
puts "Restoring mysql backup to database #{dbname}..."
|
36
|
+
`pv --wait #{filename} | gpg2 --decrypt | mysql#{" -u#{ENV['DBUSER']}" if !ENV['DBUSER'].nil?}#{" -p#{ENV['PASSWORD']}" if !ENV['PASSWORD'].nil?} #{dbname}`
|
32
37
|
else
|
33
|
-
`pv --wait #{filename} | bunzip2 | mysql
|
38
|
+
`pv --wait #{filename} | #{bunzip2} | mysql#{" -u#{ENV['DBUSER']}" if !ENV['DBUSER'].nil?}#{" -p#{ENV['PASSWORD']}" if !ENV['PASSWORD'].nil?} #{dbname}`
|
34
39
|
end
|
35
40
|
end
|
36
41
|
end
|
37
42
|
|
38
43
|
desc 'decrypt [type] [absolute_filename or database to select file]', 'Decrypt file from backup; if no absolute filename given, will present select menu to choose file'
|
39
44
|
def decrypt(type, filename)
|
45
|
+
puts "lbzip2 is not found. Single-threaded bzip2 will be used. Consider installing lbzip2" if bzip2 == 'bzip2'
|
40
46
|
restore(type, filename, nil, true)
|
41
47
|
end
|
42
48
|
|
data/lib/techinform/version.rb
CHANGED
data/techinform.gemspec
CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
20
20
|
|
21
21
|
spec.metadata["homepage_uri"] = spec.homepage
|
22
|
-
spec.metadata["source_code_uri"] = "https://github.com/
|
23
|
-
spec.metadata["changelog_uri"] = "https://github.com/
|
22
|
+
spec.metadata["source_code_uri"] = "https://github.com/alexey-chernikov/techinform"
|
23
|
+
spec.metadata["changelog_uri"] = "https://github.com/alexey-chernikov/techinform/CHANGELOG.md"
|
24
24
|
else
|
25
25
|
raise "RubyGems 2.0 or newer is required to protect against " \
|
26
26
|
"public gem pushes."
|
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_dependency 'thor', '~> 0.20'
|
39
39
|
spec.add_dependency 'highline', '~> 2.0'
|
40
40
|
|
41
|
-
spec.add_development_dependency 'bundler', '~> 1
|
41
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
42
42
|
spec.add_development_dependency 'rake', '~> 13.0.1'
|
43
43
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
44
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: techinform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey Chernikov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1
|
47
|
+
version: '2.1'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1
|
54
|
+
version: '2.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- lib/backup/files_backup.rb
|
110
110
|
- lib/backup/mysql_backup.rb
|
111
111
|
- lib/backup/postgre_backup.rb
|
112
|
+
- lib/bzip2_selector.rb
|
112
113
|
- lib/techinform.rb
|
113
114
|
- lib/techinform/backup.rb
|
114
115
|
- lib/techinform/defaults.rb
|
@@ -122,8 +123,8 @@ licenses:
|
|
122
123
|
metadata:
|
123
124
|
allowed_push_host: https://rubygems.org
|
124
125
|
homepage_uri: https://techinform.dev
|
125
|
-
source_code_uri: https://github.com/
|
126
|
-
changelog_uri: https://github.com/
|
126
|
+
source_code_uri: https://github.com/alexey-chernikov/techinform
|
127
|
+
changelog_uri: https://github.com/alexey-chernikov/techinform/CHANGELOG.md
|
127
128
|
post_install_message:
|
128
129
|
rdoc_options: []
|
129
130
|
require_paths:
|