redmine-installer 2.1.4 → 2.2.0

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
  SHA256:
3
- metadata.gz: e2fca52362c2073113f2fae44d25c875ad0d3a8107a419306ef52c1f201ed1e6
4
- data.tar.gz: 4f7263a4b318f5e240b8523120c064c79fa1585d5e9e4c4656c64a062227bcec
3
+ metadata.gz: 5bb267b21e7a017379570dc6403992a1c1f24ee5cd99d46e0f804507822eb4ef
4
+ data.tar.gz: cc4861e5978b24200309f5752872e6326f98c7e2b9572831ce23dc693239e76c
5
5
  SHA512:
6
- metadata.gz: 0c1888894ac0799c639910e8ff3d39c39c8f3c1245994a87528fd6cc28e30111d215bbe01631a5226a3a5bd55c5737be24bd6f7dbe0b27eb6ca542edeaeeac49
7
- data.tar.gz: '0827654c93010b7ae6753508487dd07b88fc85f9f57a525e92603e66c45b81feabfdb929d3ca126801d67df61c3390f0f15c2a0e9d5a191330e2a7aca2b7ea7d'
6
+ metadata.gz: 93a5dd5b2c0b11575542071b65cef96ffc5328c239230f506852d163e0708d0b8befcb17ddeb03405975c7f6bb27095cf742991dda7c029fab78c78b5089cdfc
7
+ data.tar.gz: 6baab12f21600f53306a3561400893a111bf82863930d7d5109302c99cf14b0c6edcd26c3a4ab198b8022f1cade4fc6d5f926091ee8efb97ba53eb7cc526450e
@@ -28,9 +28,10 @@ module RedmineInstaller
28
28
  autoload :Profile, 'redmine-installer/profile'
29
29
  autoload :Backup, 'redmine-installer/backup'
30
30
  autoload :RestoreDB, 'redmine-installer/restore_db'
31
+ autoload :PackageConfig, 'redmine-installer/package_config'
31
32
 
32
33
  # Settings
33
- MIN_SUPPORTED_RUBY = '2.1.0'
34
+ MIN_SUPPORTED_RUBY = '2.2.0'
34
35
 
35
36
  def self.logger
36
37
  @logger ||= RedmineInstaller::Logger.new
@@ -1,6 +1,8 @@
1
1
  module RedmineInstaller
2
2
  class Install < Task
3
3
 
4
+ attr_reader :package_config
5
+
4
6
  def initialize(package, redmine_root, **options)
5
7
  super(**options)
6
8
 
@@ -8,6 +10,7 @@ module RedmineInstaller
8
10
  @package = Package.new(self, package)
9
11
  @target_redmine = Redmine.new(self, redmine_root)
10
12
  @temp_redmine = Redmine.new(self)
13
+ @package_config = PackageConfig.new(@temp_redmine)
11
14
  end
12
15
 
13
16
  def up
@@ -18,6 +21,7 @@ module RedmineInstaller
18
21
  @package.extract
19
22
 
20
23
  @temp_redmine.root = @package.redmine_root
24
+ @package_config.check_version
21
25
 
22
26
  @temp_redmine.create_database_yml
23
27
  @temp_redmine.create_configuration_yml
@@ -9,7 +9,7 @@ module RedmineInstaller
9
9
  SUPPORTED_ARCHIVE_FORMATS = ['.zip', '.gz', '.tgz']
10
10
  TAR_LONGLINK = '././@LongLink'
11
11
 
12
- attr_reader :package
12
+ attr_reader :package, :temp_dir
13
13
 
14
14
  def initialize(task, package)
15
15
  super(task)
@@ -0,0 +1,76 @@
1
+ module RedmineInstaller
2
+ class PackageConfig
3
+ include Utils
4
+
5
+ CONFIG_DIR = '_package'
6
+
7
+ def initialize(redmine)
8
+ @redmine = redmine
9
+ end
10
+
11
+ def min_version
12
+ options['min_version']
13
+ end
14
+
15
+ def dump_type
16
+ options['dump_type']
17
+ end
18
+
19
+ def dump_file
20
+ File.join(@redmine.root, CONFIG_DIR, options['dump_file'].to_s)
21
+ end
22
+
23
+ def dump_attached?
24
+ File.exist?(dump_file)
25
+ end
26
+
27
+ def sql_dump_file
28
+ if defined?(@sql_dump_file)
29
+ return @sql_dump_file
30
+ end
31
+
32
+ if !dump_attached?
33
+ @sql_dump_file = nil
34
+ end
35
+
36
+ if dump_file.end_with?('.gz')
37
+ @sql_dump_file = File.join(@redmine.root, CONFIG_DIR, 'dump.sql')
38
+
39
+ Zlib::GzipReader.open(dump_file) { |gz|
40
+ File.binwrite(@sql_dump_file, gz.read)
41
+ }
42
+ else
43
+ @sql_dump_file = dump_file
44
+ end
45
+
46
+ @sql_dump_file
47
+ end
48
+
49
+ def dump_compatible?(database)
50
+ database.adapter_name.start_with?(dump_type.to_s)
51
+ end
52
+
53
+ def options
54
+ @options ||= _options
55
+ end
56
+
57
+ def check_version
58
+ if min_version && Gem::Version.new(min_version) > Gem::Version.new(RedmineInstaller::VERSION)
59
+ error "You are using an old version of installer. Min version is #{min_version} (current: #{RedmineInstaller::VERSION}). Please run `gem install redmine-installer`."
60
+ end
61
+ end
62
+
63
+ private
64
+
65
+ def _options
66
+ config_file = File.join(@redmine.root, CONFIG_DIR, 'redmine-installer.yaml')
67
+
68
+ if File.exist?(config_file)
69
+ YAML.load_file(config_file)
70
+ else
71
+ {}
72
+ end
73
+ end
74
+
75
+ end
76
+ end
@@ -204,7 +204,7 @@ module RedmineInstaller
204
204
  # Ensuring database
205
205
  rake_db_create
206
206
 
207
- # Load database dump (if was set via CLI)
207
+ # Load database dump (if was set via CLI or attach on package)
208
208
  load_database_dump
209
209
 
210
210
  # Migrating
@@ -651,9 +651,7 @@ module RedmineInstaller
651
651
  Dir.entries(plugins_path).include?('easyproject')
652
652
  end
653
653
 
654
- def load_database_dump
655
- return if @database_dump_to_load.nil?
656
-
654
+ def load_database_dump_from_file
657
655
  selected = prompt.select('Database dump will be loaded. Before that all data must be destroy.',
658
656
  'Skip dump loading' => :cancel,
659
657
  'I am aware of this. Want to continue' => :continue)
@@ -666,6 +664,23 @@ module RedmineInstaller
666
664
  end
667
665
  end
668
666
 
667
+ def load_database_dump_from_package
668
+ if !prompt.no?('Would you like to load default data? Warning: By choosing "yes", you are confirming that all your existing redmine data will be removed.')
669
+
670
+ @database.do_restore(task.package_config.sql_dump_file)
671
+
672
+ logger.info('Default database dump was loaded.')
673
+ end
674
+ end
675
+
676
+ def load_database_dump
677
+ if @database_dump_to_load
678
+ load_database_dump_from_file
679
+ elsif task.package_config.dump_attached? && task.package_config.dump_compatible?(@database)
680
+ load_database_dump_from_package
681
+ end
682
+ end
683
+
669
684
  def without_env(*names)
670
685
  backup = ENV.clone.to_hash
671
686
  ENV.delete_if {|key, _| names.include?(key) }
@@ -19,6 +19,7 @@ module RedmineInstaller
19
19
  @package.extract
20
20
 
21
21
  @temp_redmine.root = @package.redmine_root
22
+ @package_config.check_version
22
23
 
23
24
  @target_redmine.make_backup
24
25
 
@@ -1,3 +1,3 @@
1
1
  module RedmineInstaller
2
- VERSION = '2.1.4'
2
+ VERSION = '2.2.0'
3
3
  end
@@ -66,9 +66,10 @@ module InstallerHelper
66
66
  select_choice
67
67
  end
68
68
 
69
- def expected_successful_installation_or_upgrade(db_creating: false)
69
+ def expected_successful_installation_or_upgrade(db_creating: false, after_create: nil)
70
70
  expected_output_in('--> Bundle install', 50)
71
71
  expected_output_in('--> Database creating', 50) if db_creating
72
+ after_create && after_create.call
72
73
  expected_output_in('--> Database migrating', 50)
73
74
  expected_output_in('--> Plugins migration', 50)
74
75
  expected_output_in('--> Generating secret token', 50)
@@ -79,9 +80,9 @@ module InstallerHelper
79
80
  expected_output('Moving installer log ... OK')
80
81
  end
81
82
 
82
- def expected_successful_installation
83
+ def expected_successful_installation(**options)
83
84
  expected_output('Redmine installing')
84
- expected_successful_installation_or_upgrade(db_creating: true)
85
+ expected_successful_installation_or_upgrade(db_creating: true, **options)
85
86
  expected_output('Redmine was installed')
86
87
  end
87
88
 
@@ -144,4 +144,32 @@ RSpec.describe RedmineInstaller::Install, command: 'install' do
144
144
  expected_redmine_version('3.4.5')
145
145
  end
146
146
 
147
+ it 'high installer version', args: [package_high_installer_version] do
148
+ write(@redmine_root)
149
+ expected_output('You are using an old version of installer')
150
+ end
151
+
152
+ it 'download redmine', args: [package_default_db] do
153
+ expected_output('Path to redmine root:')
154
+ write(@redmine_root)
155
+
156
+ expected_successful_configuration
157
+ expected_successful_installation(
158
+ after_create: proc {
159
+ expected_output('Would you like to load default data')
160
+ write('y')
161
+ expected_output('Database cleaning')
162
+ expected_output('Database restoring')
163
+ }
164
+ )
165
+
166
+ expected_redmine_version('3.4.5')
167
+
168
+ Dir.chdir(@redmine_root) do
169
+ out = `rails runner "puts Issue.count"`.strip
170
+ expect($?.success?).to be_truthy
171
+ expect(out).to eq('3')
172
+ end
173
+ end
174
+
147
175
  end
@@ -16,4 +16,12 @@ module PackagesHelper
16
16
  File.join(packages_dir, 'something-else.zip')
17
17
  end
18
18
 
19
+ def package_high_installer_version
20
+ File.join(packages_dir, 'high-installer-version.zip')
21
+ end
22
+
23
+ def package_default_db
24
+ File.join(packages_dir, 'redmine-3.4.5-default-db.zip')
25
+ end
26
+
19
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine-installer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondřej Moravčík
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-05 00:00:00.000000000 Z
11
+ date: 2018-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -148,6 +148,7 @@ files:
148
148
  - lib/redmine-installer/install.rb
149
149
  - lib/redmine-installer/logger.rb
150
150
  - lib/redmine-installer/package.rb
151
+ - lib/redmine-installer/package_config.rb
151
152
  - lib/redmine-installer/patches/ruby.rb
152
153
  - lib/redmine-installer/patches/tty.rb
153
154
  - lib/redmine-installer/profile.rb