switch_db 0.1.0 → 0.1.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/README.md +11 -0
- data/lib/switch_db/cli.rb +1 -2
- data/lib/switch_db/command/store.rb +2 -2
- data/lib/switch_db/configuration.rb +1 -9
- data/lib/switch_db/option_parser.rb +3 -1
- data/lib/switch_db/reference_set.rb +15 -19
- data/lib/switch_db/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec1149cc9d5c6d0bb34390a1503fe6048f780c17
|
4
|
+
data.tar.gz: b10f6db84a00e097292099b8e7aaf0fa8a5d0248
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 611341244196f13828eadd38516d203b65199993630f665fcbeccd8d113843c667ac6e55ee9d2d306c836fb9436f431299880f722001dbd933b2a53ca7561ca2
|
7
|
+
data.tar.gz: fe39838ca4125c47dca1bfed4171e24fb49e74922cd16ea8e47cd9de935dcae0c2742c45c31afb56a461c7baa7f13e269331c756ae6e25085d71eab00becc695
|
data/README.md
CHANGED
@@ -4,6 +4,14 @@ A command-line interface for a database dumpfile
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
+
### from rubygems
|
8
|
+
|
9
|
+
```
|
10
|
+
gem install switch_db
|
11
|
+
```
|
12
|
+
|
13
|
+
### from github
|
14
|
+
|
7
15
|
```sh
|
8
16
|
git clone https://github.com/alpaca-tc/switch_db
|
9
17
|
cd switch_db
|
@@ -61,6 +69,9 @@ Restored database a 'application_test'
|
|
61
69
|
|
62
70
|
# Set default username and password
|
63
71
|
switch_db config user_name:root password:password
|
72
|
+
|
73
|
+
# Remove config
|
74
|
+
switch_db config user_name: password:
|
64
75
|
```
|
65
76
|
|
66
77
|
## Development
|
data/lib/switch_db/cli.rb
CHANGED
@@ -3,9 +3,8 @@ module SwitchDb
|
|
3
3
|
class << self
|
4
4
|
def run!(command, arguments = {})
|
5
5
|
command_class = command_for(command)
|
6
|
-
reference_set = ReferenceSet.
|
6
|
+
reference_set = ReferenceSet.load_from_directory(SwitchDb.configuration.cache_dir)
|
7
7
|
command_class.new(reference_set: reference_set).run(arguments)
|
8
|
-
reference_set.write_reference_set
|
9
8
|
end
|
10
9
|
|
11
10
|
private
|
@@ -3,14 +3,14 @@ require 'fileutils'
|
|
3
3
|
module SwitchDb
|
4
4
|
module Command
|
5
5
|
class Store < Base
|
6
|
-
def run(name:, database_names: [])
|
6
|
+
def run(name:, database_names: [], force: false)
|
7
7
|
reference = SwitchDb::Reference.new(name: name, database_names: database_names)
|
8
8
|
duplicated = @reference_set.references.key?(reference.name)
|
9
9
|
|
10
10
|
FileUtils.mkdir_p(reference.full_path)
|
11
11
|
|
12
12
|
reference.database_paths.each do |database_name, database_path|
|
13
|
-
next if duplicated && !overwrite?(reference)
|
13
|
+
next if !force && duplicated && !overwrite?(reference)
|
14
14
|
|
15
15
|
SwitchDb::Database.current_database.dump_database(database_name, database_path)
|
16
16
|
puts "Stored database a '#{database_name}'"
|
@@ -5,13 +5,11 @@ module SwitchDb
|
|
5
5
|
class Configuration
|
6
6
|
attr_reader :config_file
|
7
7
|
attr_reader :cache_dir
|
8
|
-
attr_accessor :reference_set_file
|
9
8
|
attr_accessor :user_name
|
10
9
|
attr_accessor :password
|
11
10
|
|
12
11
|
def initialize
|
13
12
|
@config_file = 'config.yml'
|
14
|
-
@reference_set_file = 'reference_set.yml'
|
15
13
|
@cache_dir = Pathname.new(File.expand_path('~/.cache/switch_db'))
|
16
14
|
@user_name = 'root'
|
17
15
|
@password = nil
|
@@ -19,16 +17,11 @@ module SwitchDb
|
|
19
17
|
load_from_config_file(configuration_full_path)
|
20
18
|
end
|
21
19
|
|
22
|
-
def reference_set_file_full_path
|
23
|
-
cache_dir.join(reference_set_file)
|
24
|
-
end
|
25
|
-
|
26
20
|
def to_h
|
27
21
|
{
|
28
|
-
reference_set_file: reference_set_file,
|
29
22
|
user_name: user_name,
|
30
23
|
password: password
|
31
|
-
}
|
24
|
+
}.delete_if { |_, value| value.nil? || value.empty? }
|
32
25
|
end
|
33
26
|
|
34
27
|
def write_configuration_file
|
@@ -38,7 +31,6 @@ module SwitchDb
|
|
38
31
|
|
39
32
|
def configuration_keys
|
40
33
|
%i[
|
41
|
-
reference_set_file
|
42
34
|
user_name
|
43
35
|
password
|
44
36
|
]
|
@@ -79,6 +79,8 @@ module SwitchDb
|
|
79
79
|
case option_name
|
80
80
|
when 'database_names'
|
81
81
|
@options[:database_names] = value.to_s.split(/(?:,|\s+)/)
|
82
|
+
when 'force'
|
83
|
+
@options[:force] = true
|
82
84
|
when 'help'
|
83
85
|
puts banner
|
84
86
|
exit
|
@@ -101,7 +103,7 @@ module SwitchDb
|
|
101
103
|
switch_db list
|
102
104
|
switch_db config [key:value...]
|
103
105
|
switch_db rm <name>
|
104
|
-
switch_db store <name> --database_names [database_name,database_name...]
|
106
|
+
switch_db store <name> --database_names [database_name,database_name...] [--force]
|
105
107
|
switch_db restore <name>
|
106
108
|
|
107
109
|
Examples:
|
@@ -1,30 +1,35 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
require 'pathname'
|
2
3
|
require 'yaml'
|
3
4
|
|
4
5
|
module SwitchDb
|
5
6
|
class ReferenceSet
|
6
|
-
attr_reader :
|
7
|
+
attr_reader :directory_path, :references
|
7
8
|
|
8
|
-
def initialize(
|
9
|
-
@
|
9
|
+
def initialize(directory_path)
|
10
|
+
@directory_path = directory_path
|
10
11
|
@references = {}
|
11
12
|
end
|
12
13
|
|
13
|
-
def self.
|
14
|
-
new(
|
15
|
-
|
14
|
+
def self.load_from_directory(directory_path)
|
15
|
+
new(directory_path).tap do |instance|
|
16
|
+
directories = Dir[File.join(directory_path, '*')].select { |path| File.directory?(path) }
|
17
|
+
|
18
|
+
directories.each do |path|
|
19
|
+
reference_name = File.basename(path)
|
20
|
+
sql_file_paths = Dir[File.join(path, '*.sql')].select { |file_path| File.file?(file_path) }
|
21
|
+
database_names = sql_file_paths.map { |file_path| File.basename(file_path).gsub(/\.sql$/, '') }
|
16
22
|
|
17
|
-
(yaml[:references] || []).map do |reference|
|
18
23
|
reference = Reference.new(
|
19
|
-
name:
|
20
|
-
database_names:
|
24
|
+
name: reference_name,
|
25
|
+
database_names: database_names
|
21
26
|
)
|
22
27
|
|
23
28
|
instance.add_reference(reference)
|
24
29
|
end
|
25
30
|
end
|
26
31
|
rescue Errno::ENOENT
|
27
|
-
new(
|
32
|
+
new(directory_path)
|
28
33
|
end
|
29
34
|
|
30
35
|
def add_reference(reference)
|
@@ -35,11 +40,6 @@ module SwitchDb
|
|
35
40
|
@references.delete(reference.name)
|
36
41
|
end
|
37
42
|
|
38
|
-
def write_reference_set
|
39
|
-
FileUtils.mkdir_p(configuration_directory)
|
40
|
-
File.write(@configuration_path, to_h.to_yaml)
|
41
|
-
end
|
42
|
-
|
43
43
|
private
|
44
44
|
|
45
45
|
def to_h
|
@@ -47,9 +47,5 @@ module SwitchDb
|
|
47
47
|
references: references.values.map(&:to_h)
|
48
48
|
}
|
49
49
|
end
|
50
|
-
|
51
|
-
def configuration_directory
|
52
|
-
File.dirname(@configuration_path)
|
53
|
-
end
|
54
50
|
end
|
55
51
|
end
|
data/lib/switch_db/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: switch_db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- alpaca-tc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|