redmine-installer 1.0.7 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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