redmine-installer 2.1.4 → 2.2.0

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