switch_db 0.1.0 → 0.1.1

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: 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