techinform 1.4.5 → 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/.github/workflows/gempush.yml +30 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +9 -0
- data/README.md +2 -2
- 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 +24 -9
- data/lib/techinform/version.rb +1 -1
- data/techinform.gemspec +18 -5
- metadata +19 -11
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
|
@@ -0,0 +1,30 @@
|
|
1
|
+
name: Ruby Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
name: Build + Publish
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
- name: Set up Ruby 2.7
|
17
|
+
uses: actions/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
version: 2.7.x
|
20
|
+
|
21
|
+
- name: Publish to RubyGems
|
22
|
+
run: |
|
23
|
+
mkdir -p $HOME/.gem
|
24
|
+
touch $HOME/.gem/credentials
|
25
|
+
chmod 0600 $HOME/.gem/credentials
|
26
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
27
|
+
gem build *.gemspec
|
28
|
+
gem push *.gem
|
29
|
+
env:
|
30
|
+
GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.1
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Techinform
|
2
2
|
|
3
|
-
Collection of console tools, useful for everyday tasks in Techinform company.
|
3
|
+
Collection of console tools, useful for everyday tasks in Techinform Soft company (https://techinform.dev).
|
4
4
|
|
5
5
|
* All backups stored at /backups/local directory.
|
6
6
|
* All backup sync goes to /backups/< server name > directory.
|
@@ -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)
|
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,22 +18,34 @@ module Techinform
|
|
15
18
|
end
|
16
19
|
encrypted = filename.split('.').last == 'gpg'
|
17
20
|
if type == 'pg'
|
18
|
-
|
19
|
-
|
20
|
-
`
|
21
|
+
if encrypted && just_decrypt
|
22
|
+
puts "Decrypting postgres backup of #{filename}..."
|
23
|
+
`pv --wait #{filename} | gpg2 --decrypt | #{bzip2} > #{File.basename(filename, '.*') + '.bz2'}`
|
24
|
+
elsif encrypted
|
25
|
+
puts "Restoring postgres backup to database #{dbname}..."
|
26
|
+
`pv --wait #{filename} | gpg2 --decrypt | psql #{dbname} > /dev/null`
|
21
27
|
else
|
22
|
-
`
|
28
|
+
`pv --wait #{filename} | #{bunzip2} | psql #{dbname} > /dev/null`
|
23
29
|
end
|
24
30
|
else
|
25
|
-
|
26
|
-
|
27
|
-
`
|
31
|
+
if encrypted && just_decrypt
|
32
|
+
puts "Decrypting mysql backup of #{filename}..."
|
33
|
+
`pv --wait #{filename} | gpg2 --decrypt | #{bzip2} > #{File.basename(filename, '.*') + '.bz2'}`
|
34
|
+
elsif encrypted
|
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}`
|
28
37
|
else
|
29
|
-
`
|
38
|
+
`pv --wait #{filename} | #{bunzip2} | mysql#{" -u#{ENV['DBUSER']}" if !ENV['DBUSER'].nil?}#{" -p#{ENV['PASSWORD']}" if !ENV['PASSWORD'].nil?} #{dbname}`
|
30
39
|
end
|
31
40
|
end
|
32
41
|
end
|
33
42
|
|
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'
|
44
|
+
def decrypt(type, filename)
|
45
|
+
puts "lbzip2 is not found. Single-threaded bzip2 will be used. Consider installing lbzip2" if bzip2 == 'bzip2'
|
46
|
+
restore(type, filename, nil, true)
|
47
|
+
end
|
48
|
+
|
34
49
|
desc 'deploy [project]', 'Deploy specific project'
|
35
50
|
def deploy(project)
|
36
51
|
`cd ~/projects/#{project} && git pull origin master && bundle install && cap production deploy`
|
data/lib/techinform/version.rb
CHANGED
data/techinform.gemspec
CHANGED
@@ -7,11 +7,24 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = 'techinform'
|
8
8
|
spec.version = Techinform::VERSION
|
9
9
|
spec.authors = ['Alexey Chernikov']
|
10
|
-
spec.email = ['alexey
|
10
|
+
spec.email = ['alexey@chernikov.online']
|
11
11
|
|
12
12
|
spec.summary = %q{Console tools, useful at Techinform}
|
13
|
-
spec.description = %q{Collection of console tools, which is useful for everyday work at Techinform.}
|
14
|
-
spec.homepage = 'https://techinform.
|
13
|
+
spec.description = %q{Collection of console tools, which is useful for everyday work at Techinform Soft ( https://techinform.dev )}
|
14
|
+
spec.homepage = 'https://techinform.dev'
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
20
|
+
|
21
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
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
|
+
else
|
25
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
26
|
+
"public gem pushes."
|
27
|
+
end
|
15
28
|
|
16
29
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
30
|
f.match(%r{^(test|spec|features)/})
|
@@ -25,7 +38,7 @@ Gem::Specification.new do |spec|
|
|
25
38
|
spec.add_dependency 'thor', '~> 0.20'
|
26
39
|
spec.add_dependency 'highline', '~> 2.0'
|
27
40
|
|
28
|
-
spec.add_development_dependency 'bundler', '~> 1
|
29
|
-
spec.add_development_dependency 'rake', '~>
|
41
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
42
|
+
spec.add_development_dependency 'rake', '~> 13.0.1'
|
30
43
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
31
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.
|
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:
|
11
|
+
date: 2020-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -44,28 +44,28 @@ 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
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 13.0.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 13.0.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,17 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '5.0'
|
83
|
-
description: Collection of console tools, which is useful for everyday work at Techinform
|
83
|
+
description: Collection of console tools, which is useful for everyday work at Techinform
|
84
|
+
Soft ( https://techinform.dev )
|
84
85
|
email:
|
85
|
-
- alexey
|
86
|
+
- alexey@chernikov.online
|
86
87
|
executables:
|
87
88
|
- techinform
|
88
89
|
- ti
|
89
90
|
extensions: []
|
90
91
|
extra_rdoc_files: []
|
91
92
|
files:
|
93
|
+
- ".github/workflows/gempush.yml"
|
92
94
|
- ".gitignore"
|
93
95
|
- ".ruby-version"
|
96
|
+
- CHANGELOG.md
|
94
97
|
- CODE_OF_CONDUCT.md
|
95
98
|
- Gemfile
|
96
99
|
- README.md
|
@@ -106,6 +109,7 @@ files:
|
|
106
109
|
- lib/backup/files_backup.rb
|
107
110
|
- lib/backup/mysql_backup.rb
|
108
111
|
- lib/backup/postgre_backup.rb
|
112
|
+
- lib/bzip2_selector.rb
|
109
113
|
- lib/techinform.rb
|
110
114
|
- lib/techinform/backup.rb
|
111
115
|
- lib/techinform/defaults.rb
|
@@ -113,10 +117,14 @@ files:
|
|
113
117
|
- lib/techinform/sync/rails_exclude_files
|
114
118
|
- lib/techinform/version.rb
|
115
119
|
- techinform.gemspec
|
116
|
-
homepage: https://techinform.
|
120
|
+
homepage: https://techinform.dev
|
117
121
|
licenses:
|
118
122
|
- MIT
|
119
|
-
metadata:
|
123
|
+
metadata:
|
124
|
+
allowed_push_host: https://rubygems.org
|
125
|
+
homepage_uri: https://techinform.dev
|
126
|
+
source_code_uri: https://github.com/alexey-chernikov/techinform
|
127
|
+
changelog_uri: https://github.com/alexey-chernikov/techinform/CHANGELOG.md
|
120
128
|
post_install_message:
|
121
129
|
rdoc_options: []
|
122
130
|
require_paths:
|
@@ -132,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
140
|
- !ruby/object:Gem::Version
|
133
141
|
version: '0'
|
134
142
|
requirements: []
|
135
|
-
rubygems_version: 3.
|
143
|
+
rubygems_version: 3.1.2
|
136
144
|
signing_key:
|
137
145
|
specification_version: 4
|
138
146
|
summary: Console tools, useful at Techinform
|