redmine-installer 1.0.7 → 2.0.0.rc1

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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +3 -15
  5. data/README.md +49 -177
  6. data/bin/redmine +4 -5
  7. data/lib/redmine-installer/backup.rb +13 -40
  8. data/lib/redmine-installer/cli.rb +92 -61
  9. data/lib/redmine-installer/command.rb +63 -117
  10. data/lib/redmine-installer/configuration.rb +148 -0
  11. data/lib/redmine-installer/database.rb +204 -0
  12. data/lib/redmine-installer/environment.rb +21 -0
  13. data/lib/redmine-installer/errors.rb +7 -0
  14. data/lib/redmine-installer/install.rb +37 -42
  15. data/lib/redmine-installer/logger.rb +83 -0
  16. data/lib/redmine-installer/package.rb +180 -0
  17. data/lib/redmine-installer/patches/ruby.rb +35 -0
  18. data/lib/redmine-installer/patches/tty.rb +16 -0
  19. data/lib/redmine-installer/profile.rb +24 -55
  20. data/lib/redmine-installer/redmine.rb +551 -0
  21. data/lib/redmine-installer/spec/spec.rb +81 -0
  22. data/lib/redmine-installer/task.rb +18 -77
  23. data/lib/redmine-installer/task_module.rb +12 -0
  24. data/lib/redmine-installer/upgrade.rb +51 -59
  25. data/lib/redmine-installer/utils.rb +46 -233
  26. data/lib/redmine-installer/version.rb +2 -4
  27. data/lib/redmine-installer.rb +69 -56
  28. data/redmine-installer.gemspec +20 -19
  29. data/spec/custom_matchers.rb +21 -0
  30. data/spec/installer_helper.rb +107 -0
  31. data/spec/installer_process.rb +82 -0
  32. data/spec/lib/backup_restore_spec.rb +81 -0
  33. data/spec/lib/install_spec.rb +125 -36
  34. data/spec/lib/upgrade_spec.rb +73 -52
  35. data/spec/packages/redmine-3.1.0.zip +0 -0
  36. data/spec/packages/redmine-3.2.0.zip +0 -0
  37. data/spec/packages/redmine-3.3.0-bad-migration.zip +0 -0
  38. data/spec/packages/redmine-3.3.0.zip +0 -0
  39. data/spec/packages/something-else.zip +0 -0
  40. data/spec/packages_helper.rb +19 -0
  41. data/spec/shared_contexts.rb +13 -0
  42. data/spec/spec_helper.rb +34 -18
  43. metadata +62 -63
  44. data/lib/redmine-installer/config_param.rb +0 -100
  45. data/lib/redmine-installer/error.rb +0 -5
  46. data/lib/redmine-installer/exec.rb +0 -158
  47. data/lib/redmine-installer/ext/module.rb +0 -7
  48. data/lib/redmine-installer/ext/string.rb +0 -15
  49. data/lib/redmine-installer/git.rb +0 -51
  50. data/lib/redmine-installer/helper.rb +0 -5
  51. data/lib/redmine-installer/helpers/generate_config.rb +0 -29
  52. data/lib/redmine-installer/locales/cs.yml +0 -147
  53. data/lib/redmine-installer/locales/en.yml +0 -154
  54. data/lib/redmine-installer/plugin.rb +0 -9
  55. data/lib/redmine-installer/plugins/base.rb +0 -24
  56. data/lib/redmine-installer/plugins/database.rb +0 -180
  57. data/lib/redmine-installer/plugins/email_sending.rb +0 -82
  58. data/lib/redmine-installer/plugins/redmine_plugin.rb +0 -82
  59. data/lib/redmine-installer/plugins/web_server.rb +0 -26
  60. data/lib/redmine-installer/step.rb +0 -16
  61. data/lib/redmine-installer/steps/backup.rb +0 -125
  62. data/lib/redmine-installer/steps/base.rb +0 -79
  63. data/lib/redmine-installer/steps/database_config.rb +0 -15
  64. data/lib/redmine-installer/steps/email_config.rb +0 -11
  65. data/lib/redmine-installer/steps/env_check.rb +0 -20
  66. data/lib/redmine-installer/steps/install.rb +0 -23
  67. data/lib/redmine-installer/steps/load_package.rb +0 -226
  68. data/lib/redmine-installer/steps/move_redmine.rb +0 -22
  69. data/lib/redmine-installer/steps/redmine_root.rb +0 -52
  70. data/lib/redmine-installer/steps/upgrade.rb +0 -57
  71. data/lib/redmine-installer/steps/validation.rb +0 -38
  72. data/lib/redmine-installer/steps/webserver_config.rb +0 -22
  73. data/spec/load_redmine.rb +0 -24
@@ -1,22 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Redmine::Installer::Step
4
- class MoveRedmine < Base
5
-
6
- def up
7
- # Move all files from tmp_redmine_root to redmine_root
8
- Dir.chdir(base.tmp_redmine_root) do
9
- Dir.glob('{*,.*}') do |entry|
10
- next if entry.end_with?('.') || entry.end_with?('..')
11
-
12
- FileUtils.mv(entry, base.redmine_root)
13
- end
14
- end
15
- end
16
-
17
- def print_footer
18
- say '<green>... OK</green>', 1
19
- end
20
-
21
- end
22
- end
@@ -1,52 +0,0 @@
1
- require 'find'
2
-
3
- module Redmine::Installer::Step
4
- class RedmineRoot < Base
5
-
6
- CHECK_N_INACCESSIBLE_FILES = 10
7
-
8
- def up
9
- # Get redmine root
10
- base.redmine_root ||= ask(:path_for_redmine_root, default: '.')
11
-
12
- # Make absolute path
13
- base.redmine_root = File.expand_path(base.redmine_root)
14
-
15
- if base.redmine_root == Dir.pwd
16
- error "You cannot upgrade current dir. Please go to the different directory."
17
- end
18
-
19
- unless Dir.exist?(base.redmine_root)
20
- try_create_dir(base.redmine_root)
21
- end
22
-
23
- unless File.writable?(base.redmine_root)
24
- error t(:dir_is_not_writeable, dir: base.redmine_root)
25
- end
26
-
27
- inaccessible_files = []
28
- Find.find(base.redmine_root).each do |item|
29
- if !File.writable?(item) || !File.readable?(item)
30
- inaccessible_files << item
31
- end
32
-
33
- if inaccessible_files.size > CHECK_N_INACCESSIBLE_FILES
34
- break
35
- end
36
- end
37
-
38
- if inaccessible_files.any?
39
- error "Redmine root contains inaccessible files. Make sure that all files in #{base.redmine_root} are readable/writeable. (limit #{CHECK_N_INACCESSIBLE_FILES} files: #{inaccessible_files.join(', ')})"
40
- end
41
- end
42
-
43
- def save(configuration)
44
- configuration['redmine_root'] = base.redmine_root
45
- end
46
-
47
- def load(configuration)
48
- base.redmine_root = configuration['redmine_root']
49
- end
50
-
51
- end
52
- end
@@ -1,57 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Redmine::Installer::Step
4
- class Upgrade < Base
5
-
6
- def up
7
- # Copy database.yml
8
- copy_config_file(plugin::Database::DATABASE_YML_PATH)
9
-
10
- # Copy configuration.yml
11
- copy_config_file(plugin::EmailSending::CONFIGURATION_YML_PATH)
12
-
13
- # Copy files
14
- FileUtils.cp_r(File.join(base.redmine_root, 'files'), base.tmp_redmine_root)
15
-
16
- # Copy plugins
17
- tmp_plugin_dir = File.join(base.tmp_redmine_root, 'plugins')
18
- redmine_plugins.each do |plugin|
19
- # Copy only plugins which are not part of package
20
- # - this is a upgrade so package should contains newer version
21
- unless Dir.exist?(File.join(tmp_plugin_dir, File.basename(plugin)))
22
- FileUtils.cp_r(plugin, tmp_plugin_dir)
23
- end
24
- end
25
-
26
- Dir.chdir(base.tmp_redmine_root) do
27
- command.bundle_install(base.env)
28
- command.rake_db_migrate(base.env)
29
- command.rake_redmine_plugin_migrate(base.env) if some_plugins?
30
- command.rake_generate_secret_token(base.env)
31
-
32
- # Other plugins can have post-install procedure
33
- plugin::RedminePlugin.all.each do |plugin|
34
- plugin.upgrade(base)
35
- end
36
- end
37
-
38
- # Delete content of redmine_root
39
- Dir.glob(File.join(base.redmine_root, '{*,.*}')) do |entry|
40
- next if entry.end_with?('.') || entry.end_with?('..')
41
-
42
- FileUtils.remove_entry_secure(entry)
43
- end
44
- end
45
-
46
- private
47
-
48
- def copy_config_file(relative_path)
49
- file = File.join(base.redmine_root, relative_path)
50
-
51
- if File.exist?(file)
52
- FileUtils.cp(file, File.join(base.tmp_redmine_root, 'config'))
53
- end
54
- end
55
-
56
- end
57
- end
@@ -1,38 +0,0 @@
1
- ##
2
- # Validate redmine folder
3
- #
4
- module Redmine::Installer::Step
5
- class Validation < Base
6
-
7
- REDMINE_SHOULD_CONTAINS = [
8
- 'app', 'lib', 'config', 'public', 'db',
9
- 'Gemfile', 'Rakefile', 'config.ru',
10
- File.join('lib', 'redmine'),
11
- File.join('lib', 'redmine', 'core_ext'),
12
- File.join('lib', 'redmine', 'helpers'),
13
- File.join('lib', 'redmine', 'views'),
14
- File.join('lib', 'redmine.rb'),
15
- ].sort
16
-
17
- def up
18
- Dir.chdir(base.redmine_root) do
19
- @records = Dir.glob(File.join('**', '*')).sort
20
- end
21
-
22
- # Is this redmine
23
- unless (@records & REDMINE_SHOULD_CONTAINS) == REDMINE_SHOULD_CONTAINS
24
- error :error_redmine_not_contains_all, records: REDMINE_SHOULD_CONTAINS.join(', ')
25
- end
26
-
27
- # Plugins are in righ dir
28
- if @records.select{|x| x.start_with?('vendor/plugins')}.size > 1
29
- error :error_plugins_should_be_on_plugins
30
- end
31
- end
32
-
33
- def print_footer
34
- say '<green>... OK</green>', 1
35
- end
36
-
37
- end
38
- end
@@ -1,22 +0,0 @@
1
- module Redmine::Installer::Step
2
- class WebserverConfig < Base
3
-
4
- def up
5
- choices = {}
6
- plugin::WebServer.all.each do |m|
7
- choices[m] = m.title
8
- end
9
- choices[nil] = t(:skip)
10
-
11
- answer = choose(:"what_web_server_do_you_want", choices, default: nil)
12
-
13
- # Skip
14
- return if answer.nil?
15
-
16
- say("(#{answer.title })", 5)
17
-
18
- say(answer.generate_config(base.redmine_root))
19
- end
20
-
21
- end
22
- end
data/spec/load_redmine.rb DELETED
@@ -1,24 +0,0 @@
1
- require 'rest_client'
2
-
3
- class LoadRedmine
4
-
5
- def self.files
6
- @files ||= []
7
- end
8
-
9
- def self.clean
10
- files.each(&:unlink)
11
- end
12
-
13
- def self.get(version)
14
- file = Tempfile.new(['redmine', '.zip'])
15
- files << file
16
-
17
- file.binmode
18
- # file.write RestClient.get("http://www.redmine.org/releases/redmine-#{version}.zip")
19
- file.write RestClient.get("http://localhost:5000/redmine-#{version}.zip")
20
- file.close
21
- file.path
22
- end
23
-
24
- end