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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3c9a1dc6785a1fe8b0783cee362b5a0fbd54844
4
- data.tar.gz: 0e3c756f7e024416663442cfda3372f3e545576a
3
+ metadata.gz: ec1149cc9d5c6d0bb34390a1503fe6048f780c17
4
+ data.tar.gz: b10f6db84a00e097292099b8e7aaf0fa8a5d0248
5
5
  SHA512:
6
- metadata.gz: fd6dc0c3c9161877d9ab267076bbf28f03012e121def85faf6073a1e613384406e5ad44fe607e7ba644dd0f4f9c5b438132cb52a4918fed44f035fa97a819274
7
- data.tar.gz: 0d1c497e4d59e5452528ee5ec80266e9fca150efd4f5a3541d8ce751998a89ff6b69504f3f5047f268f0a64f6d03f08c1bb8e1050780c4d587cb2c06d8f82c4c
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.load_file(SwitchDb.configuration.reference_set_file_full_path)
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 :configuration_path, :references
7
+ attr_reader :directory_path, :references
7
8
 
8
- def initialize(configuration_path)
9
- @configuration_path = configuration_path
9
+ def initialize(directory_path)
10
+ @directory_path = directory_path
10
11
  @references = {}
11
12
  end
12
13
 
13
- def self.load_file(configuration_path)
14
- new(configuration_path).tap do |instance|
15
- yaml = YAML.load_file(configuration_path)
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: reference[:name],
20
- database_names: reference[: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(configuration_path)
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
@@ -1,3 +1,3 @@
1
1
  module SwitchDb
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.1.1'.freeze
3
3
  end
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.0
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-21 00:00:00.000000000 Z
11
+ date: 2017-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler