redmine-installer 2.3.2 → 3.0.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.
metadata CHANGED
@@ -1,31 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine-installer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondřej Moravčík
8
- autorequire:
8
+ - Easy Software Ltd.
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2019-06-24 00:00:00.000000000 Z
12
+ date: 2022-12-13 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: commander
15
+ name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - ">="
18
19
  - !ruby/object:Gem::Version
19
- version: '0'
20
+ version: 2.3.7
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - ">="
25
26
  - !ruby/object:Gem::Version
26
- version: '0'
27
+ version: 2.3.7
27
28
  - !ruby/object:Gem::Dependency
28
- name: rubyzip
29
+ name: commander
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - ">="
@@ -39,47 +40,61 @@ dependencies:
39
40
  - !ruby/object:Gem::Version
40
41
  version: '0'
41
42
  - !ruby/object:Gem::Dependency
42
- name: bundler
43
+ name: pastel
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.8.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 0.8.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: rubyzip
43
58
  requirement: !ruby/object:Gem::Requirement
44
59
  requirements:
45
60
  - - ">="
46
61
  - !ruby/object:Gem::Version
47
- version: '1.16'
62
+ version: '0'
48
63
  type: :runtime
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
67
  - - ">="
53
68
  - !ruby/object:Gem::Version
54
- version: '1.16'
69
+ version: '0'
55
70
  - !ruby/object:Gem::Dependency
56
- name: pastel
71
+ name: tty-progressbar
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
74
  - - "~>"
60
75
  - !ruby/object:Gem::Version
61
- version: 0.7.2
76
+ version: 0.18.2
62
77
  type: :runtime
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
81
  - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: 0.7.2
83
+ version: 0.18.2
69
84
  - !ruby/object:Gem::Dependency
70
85
  name: tty-prompt
71
86
  requirement: !ruby/object:Gem::Requirement
72
87
  requirements:
73
88
  - - "~>"
74
89
  - !ruby/object:Gem::Version
75
- version: 0.16.1
90
+ version: 0.23.1
76
91
  type: :runtime
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
80
95
  - - "~>"
81
96
  - !ruby/object:Gem::Version
82
- version: 0.16.1
97
+ version: 0.23.1
83
98
  - !ruby/object:Gem::Dependency
84
99
  name: tty-spinner
85
100
  requirement: !ruby/object:Gem::Requirement
@@ -95,19 +110,19 @@ dependencies:
95
110
  - !ruby/object:Gem::Version
96
111
  version: 0.8.0
97
112
  - !ruby/object:Gem::Dependency
98
- name: tty-progressbar
113
+ name: childprocess
99
114
  requirement: !ruby/object:Gem::Requirement
100
115
  requirements:
101
116
  - - "~>"
102
117
  - !ruby/object:Gem::Version
103
- version: 0.15.0
104
- type: :runtime
118
+ version: 4.1.0
119
+ type: :development
105
120
  prerelease: false
106
121
  version_requirements: !ruby/object:Gem::Requirement
107
122
  requirements:
108
123
  - - "~>"
109
124
  - !ruby/object:Gem::Version
110
- version: 0.15.0
125
+ version: 4.1.0
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: rake
113
128
  requirement: !ruby/object:Gem::Requirement
@@ -122,21 +137,37 @@ dependencies:
122
137
  - - ">="
123
138
  - !ruby/object:Gem::Version
124
139
  version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rspec
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: 3.11.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: 3.11.0
125
154
  description: ''
126
155
  email:
127
- - moravcik.ondrej@gmail.com
156
+ - developers@easysoftware.com
128
157
  executables:
129
158
  - redmine
130
159
  extensions: []
131
160
  extra_rdoc_files: []
132
161
  files:
162
+ - ".dockerignore"
133
163
  - ".gitignore"
134
- - ".travis.yml"
135
164
  - CHANGELOG.md
165
+ - Dockerfile
136
166
  - LICENSE.txt
137
167
  - README.md
138
168
  - Rakefile
139
169
  - bin/redmine
170
+ - gems.locked
140
171
  - gems.rb
141
172
  - lib/redmine-installer.rb
142
173
  - lib/redmine-installer/backup.rb
@@ -163,45 +194,27 @@ files:
163
194
  - lib/redmine-installer/utils.rb
164
195
  - lib/redmine-installer/version.rb
165
196
  - redmine-installer.gemspec
166
- - spec/custom_matchers.rb
167
- - spec/installer_helper.rb
168
- - spec/installer_process.rb
169
- - spec/lib/backup_restore_spec.rb
170
- - spec/lib/install_spec.rb
171
- - spec/lib/upgrade_spec.rb
172
- - spec/packages_helper.rb
173
- - spec/shared_contexts.rb
174
- - spec/spec_helper.rb
175
197
  homepage: https://github.com/easyredmine/redmine-installer
176
198
  licenses:
177
199
  - MIT
178
200
  metadata: {}
179
- post_install_message:
201
+ post_install_message:
180
202
  rdoc_options: []
181
203
  require_paths:
182
204
  - lib
183
205
  required_ruby_version: !ruby/object:Gem::Requirement
184
206
  requirements:
185
- - - ">="
207
+ - - '='
186
208
  - !ruby/object:Gem::Version
187
- version: 2.3.0
209
+ version: 3.1.2
188
210
  required_rubygems_version: !ruby/object:Gem::Requirement
189
211
  requirements:
190
212
  - - ">="
191
213
  - !ruby/object:Gem::Version
192
214
  version: '0'
193
215
  requirements: []
194
- rubygems_version: 3.0.3
195
- signing_key:
216
+ rubygems_version: 3.3.22
217
+ signing_key:
196
218
  specification_version: 4
197
219
  summary: Easy way how install/upgrade Redmine, EasyRedmine or EasyProject.
198
- test_files:
199
- - spec/custom_matchers.rb
200
- - spec/installer_helper.rb
201
- - spec/installer_process.rb
202
- - spec/lib/backup_restore_spec.rb
203
- - spec/lib/install_spec.rb
204
- - spec/lib/upgrade_spec.rb
205
- - spec/packages_helper.rb
206
- - spec/shared_contexts.rb
207
- - spec/spec_helper.rb
220
+ test_files: []
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2
4
- services:
5
- - postgresql
6
- before_install:
7
- - gem install bundler
@@ -1,21 +0,0 @@
1
- require 'rspec/expectations'
2
-
3
- RSpec::Matchers.define :have_output do |text|
4
- match do |process|
5
- expect(process.get(text)).to include(text)
6
- end
7
-
8
- failure_message do |process|
9
- "expected that \"#{process.last_get_return}\" would contains: #{text}"
10
- end
11
- end
12
-
13
- RSpec::Matchers.define :have_output_in do |text, second|
14
- match do |process|
15
- expect(process.get(text, max_wait: second)).to include(text)
16
- end
17
-
18
- failure_message do |process|
19
- "expected that \"#{process.last_get_return}\" would contains: #{text} in #{second}s"
20
- end
21
- end
@@ -1,204 +0,0 @@
1
- module InstallerHelper
2
-
3
- def db_username
4
- ENV['SPEC_DB_USERNAME'].to_s
5
- end
6
-
7
- def db_password
8
- ENV['SPEC_DB_PASSWORD'].to_s
9
- end
10
-
11
- def expected_output(text)
12
- expect(@process).to have_output(text)
13
- end
14
-
15
- def expected_output_in(text, max_wait)
16
- expect(@process).to have_output_in(text, max_wait)
17
- end
18
-
19
- def write(text)
20
- @process.write(text + "\n")
21
- end
22
-
23
- # Be carefull - this could have later unpredictable consequences on stdin
24
- def select_choice
25
- # @process.write(' ')
26
- @process.write("\r")
27
- # @process.write("\r\n")
28
- end
29
-
30
- def go_up
31
- @process.write("\e[A")
32
- end
33
-
34
- def go_down
35
- # write(TTY::Reader::Keys.keys[:down])
36
- # write("\e[B")
37
- @process.write("\e[B")
38
- end
39
-
40
- def email_username
41
- 'username'
42
- end
43
-
44
- def email_password
45
- 'password'
46
- end
47
-
48
- def email_address
49
- 'address'
50
- end
51
-
52
- def email_port
53
- '123'
54
- end
55
-
56
- def email_domain
57
- 'domain'
58
- end
59
-
60
- def email_authentication
61
- 'plain'
62
- end
63
-
64
- def email_openssl_verify_mode
65
- 'none'
66
- end
67
-
68
- def email_enable_tls
69
- false
70
- end
71
-
72
- def email_enable_starttls
73
- true
74
- end
75
-
76
- def expected_successful_configuration(email: false)
77
- expected_output('Creating database configuration')
78
- expected_output('What database do you want use?')
79
- expected_output('‣ MySQL')
80
-
81
- go_down
82
- expected_output('‣ PostgreSQL')
83
- select_choice
84
-
85
- expected_output('Database:')
86
- write('test')
87
-
88
- expected_output('Host: (localhost)')
89
- write('')
90
-
91
- expected_output('Username:')
92
- write(db_username)
93
-
94
- expected_output('Password:')
95
- write(db_password)
96
-
97
- expected_output('Encoding: (utf8)')
98
- write('')
99
-
100
- expected_output('Port: (5432)')
101
- write('')
102
-
103
- expected_output('Creating email configuration')
104
- expected_output('Which service to use for email sending?')
105
-
106
- if email
107
- go_up
108
- go_up
109
- go_up
110
- expected_output('‣ Custom configuration (SMTP)')
111
- select_choice
112
-
113
- expected_output('Username:')
114
- write(email_username)
115
-
116
- expected_output('Password:')
117
- write(email_password)
118
-
119
- expected_output('Address:')
120
- write(email_address)
121
-
122
- expected_output('Port:')
123
- write(email_port)
124
-
125
- expected_output('Domain:')
126
- write(email_domain)
127
-
128
- expected_output('Authentication:')
129
- write(email_authentication)
130
-
131
- expected_output('Openssl verify mode:')
132
- write(email_openssl_verify_mode)
133
-
134
- expected_output('Enable tls?: (y/N)')
135
- write(email_enable_tls ? 'y' : 'n')
136
-
137
- expected_output('Enable starttls?: (Y/n)')
138
- write(email_enable_starttls ? 'y' : 'n')
139
- else
140
- expected_output('‣ Nothing')
141
- select_choice
142
- end
143
- end
144
-
145
- def expected_successful_installation_or_upgrade(db_creating: false, after_create: nil)
146
- expected_output_in('--> Bundle install', 50)
147
- expected_output_in('--> Database creating', 50) if db_creating
148
- after_create && after_create.call
149
- expected_output_in('--> Database migrating', 50)
150
- expected_output_in('--> Plugins migration', 50)
151
- expected_output_in('--> Generating secret token', 50)
152
-
153
- expected_output('Cleaning root ... OK')
154
- expected_output('Moving redmine to target directory ... OK')
155
- expected_output('Cleanning up ... OK')
156
- expected_output('Moving installer log ... OK')
157
- end
158
-
159
- def expected_successful_installation(**options)
160
- expected_output('Redmine installing')
161
- expected_successful_installation_or_upgrade(db_creating: true, **options)
162
- expected_output('Redmine was installed')
163
- end
164
-
165
- def expected_successful_upgrade
166
- expected_output('Redmine upgrading')
167
- expected_successful_installation_or_upgrade
168
- expected_output('Redmine was upgraded')
169
-
170
- expected_output('Do you want save steps for further use?')
171
- write('n')
172
- end
173
-
174
- def expected_redmine_version(version)
175
- Dir.chdir(@redmine_root) do
176
- out = `rails runner "puts Redmine::VERSION.to_s"`
177
- expect($?.success?).to be_truthy
178
- expect(out).to include(version)
179
- end
180
- end
181
-
182
- def expected_email_configuration
183
- Dir.chdir(@redmine_root) do
184
- configuration = YAML.load_file('config/configuration.yml')['default']['email_delivery']
185
- smtp_settings = configuration['smtp_settings']
186
-
187
- expect(configuration['delivery_method']).to eq(:smtp)
188
- expect(smtp_settings['address']).to eq(email_address)
189
- expect(smtp_settings['port']).to eq(email_port.to_i)
190
- expect(smtp_settings['authentication']).to eq(email_authentication.to_sym)
191
- expect(smtp_settings['domain']).to eq(email_domain)
192
- expect(smtp_settings['user_name']).to eq(email_username)
193
- expect(smtp_settings['password']).to eq(email_password)
194
- expect(smtp_settings['tls']).to eq(email_enable_tls)
195
- expect(smtp_settings['enable_starttls_auto']).to eq(email_enable_starttls)
196
- expect(smtp_settings['openssl_verify_mode']).to eq(email_openssl_verify_mode)
197
- end
198
- end
199
-
200
- def wait_for_stdin_buffer
201
- sleep 0.5
202
- end
203
-
204
- end
@@ -1,94 +0,0 @@
1
- require 'childprocess'
2
-
3
- class InstallerProcess
4
-
5
- attr_reader :stdout, :last_get_return
6
-
7
- def initialize(command, *args)
8
- tempfile_out = File.open('redmine-installer-out', 'w')
9
- tempfile_err = File.open('redmine-installer-err', 'w')
10
-
11
- tempfile_out.sync = true
12
- tempfile_err.sync = true
13
-
14
- args = args.flatten.compact
15
-
16
- if ['install', 'upgrade'].include?(command)
17
- args << '--bundle-options' << '--without rmagick'
18
- end
19
-
20
- redmine_bin_file = File.expand_path('../bin/redmine', __dir__)
21
-
22
- @process = ChildProcess.build(redmine_bin_file, command, *args)
23
- # @process = ChildProcess.build('bin/redmine', command, *args)
24
- # @process = ChildProcess.build('redmine', command, *args)
25
- @process.io.stdout = tempfile_out
26
- @process.io.stderr = tempfile_err
27
- @process.environment['REDMINE_INSTALLER_SPEC'] = '1'
28
- @process.environment['REDMINE_INSTALLER_LOGFILE'] = File.expand_path(File.join(File.dirname(__FILE__), '..', 'log.log'))
29
- @process.duplex = true
30
- @process.detach = true
31
-
32
- # Because of file description is shared with redmine installer
33
- # so changing posiiotn has effect fot both processes
34
- @stdout = File.open(tempfile_out.path)
35
-
36
- @last_get_return = ''
37
- @buffer = ''
38
- @seek = 0
39
- end
40
-
41
- def run
42
- Bundler.with_clean_env {
43
- start
44
- yield
45
- }
46
- ensure
47
- stop
48
- end
49
-
50
- def start
51
- @process.start
52
- end
53
-
54
- def stop
55
- @process.stop
56
- end
57
-
58
- def write(text)
59
- @process.io.stdin << text
60
-
61
- # @process.io.stdin.puts(text)
62
- # @process.io.stdin.flush
63
-
64
- # @process.io.stdin.syswrite(text + "\n")
65
- # @process.io.stdin.flush
66
-
67
- # @process.io.stdin.write_nonblock(text + "\n")
68
- end
69
-
70
- def get(*args)
71
- @last_get_return = _get(*args)
72
- end
73
-
74
- private
75
-
76
- # max_wait in s
77
- def _get(text, max_wait: 10)
78
- wait_to = Time.now + max_wait
79
- while Time.now < wait_to
80
- @buffer << @stdout.read
81
- index = @buffer.rindex(text)
82
-
83
- if index
84
- break
85
- # return @buffer.slice!(0, index+text.size)
86
- else
87
- sleep 0.5
88
- end
89
- end
90
-
91
- @buffer
92
- end
93
-
94
- end
@@ -1,81 +0,0 @@
1
- require 'spec_helper'
2
-
3
- DATABASE_DUMP = File.join(Dir.tmpdir, 'redmine_installer_database_backup.sql')
4
-
5
- RSpec.describe 'RedmineInstaller backup / restore', order: :defined do
6
-
7
- let(:project_count) { 5 }
8
-
9
- it 'create backup', :install_first, command: 'backup' do
10
- # First ensure `project_count` project
11
- Dir.chdir(@redmine_root) do
12
- out = `rails runner "
13
- Project.delete_all
14
-
15
- #{project_count}.times do |i|
16
- p = Project.new
17
- p.name = 'Test ' + i.to_s
18
- p.identifier = 'test_' + i.to_s
19
- p.save(validate: false)
20
- end
21
-
22
- puts Project.count
23
- "`
24
-
25
- expect($?.success?).to be_truthy
26
- expect(out.to_i).to eq(project_count)
27
- end
28
-
29
- # Backup database
30
- expected_output('Path to redmine root:')
31
- write(@redmine_root)
32
- expected_output('Data backup')
33
- go_down
34
- expected_output('‣ Only database')
35
- select_choice
36
- expected_output('Where to save backup:')
37
- write(@backup_dir)
38
- expected_output('Database backuping')
39
- expected_output('Database backed up')
40
-
41
- # Ensure 0 project (database is shared with all tests)
42
- Dir.chdir(@redmine_root) do
43
- out = `rails runner "
44
- Project.delete_all
45
- puts Project.count
46
- "`
47
-
48
- expect($?.success?).to be_truthy
49
- expect(out.to_i).to eq(0)
50
- end
51
-
52
- # Save backup (after test end - all backup will be deleted)
53
- dump = Dir.glob(File.join(@backup_dir, '*', '*')).last
54
- expect(dump).to end_with('test.sql')
55
-
56
- FileUtils.rm_f(DATABASE_DUMP)
57
- FileUtils.cp(dump, DATABASE_DUMP)
58
- end
59
-
60
- it 'restore', command: 'install', args: [package_v345, '--database-dump', DATABASE_DUMP] do
61
- expected_output('Path to redmine root:')
62
- write(@redmine_root)
63
-
64
- expected_successful_configuration
65
-
66
- expected_output('Database dump will be loaded.')
67
- expected_output('‣ Skip dump loading')
68
-
69
- go_down
70
- expected_output('‣ I am aware of this.')
71
- select_choice
72
-
73
- expected_output_in('Redmine was installed', 500)
74
-
75
- Dir.chdir(@redmine_root) do
76
- out = `rails runner "puts Project.count"`
77
- expect(out.to_i).to eq(project_count)
78
- end
79
- end
80
-
81
- end