avm-eac_redmine_base0 0.27.1 → 0.29.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: '09561ad552a1082975fc3b7264d1777ea9ee2772a167365f2d74b9c88e054197'
4
- data.tar.gz: 90c71edbf5561f3fa8a0b0ff71808f0bc4e53a59aa68428beba6453e3847d878
3
+ metadata.gz: 5097d7b22433940fb8250d0e4b5e4a35bfa108442b3389433e69d16971cd4ed8
4
+ data.tar.gz: 719c3940e5ecec285cc0fc2dab888ad5e1fe65f8ce16f5fc4f568d417e657e37
5
5
  SHA512:
6
- metadata.gz: 7ee8f005a5219438a4e66f0b61a7f4d3551221f53fb8939e6cadd880906e2d567e7bef7e7e89fc0c48efe91b38cbf834bf163ef0168fb9069c31ea26a05ba42d
7
- data.tar.gz: 10ad964cd422bbdc1262351de9d918cec434ee10ff7cec7c054b93ebb96a7fd4caf093d8285b2cd4140fb9a60fb20a2da61e1c542df58469ca615d42a52352c7
6
+ metadata.gz: 98763b89ab2fcbf1aa03516907a24299c1e93259ffaea03f23cac103e816c5590c3ab990e196861a74fffc3c1e098c7a6ddc8bc5f0ecf6970984944f5a6b8659
7
+ data.tar.gz: c351e33d75239c43a9d6defeb5961bfd63fe9f85ec311cb9f18cfe33b842fe07ac9ab0194967eb22698f0ba6459f096cf6aa0c6d8de592046bda253f3d42e307
@@ -5,11 +5,13 @@ module Avm
5
5
  module Instances
6
6
  class Base < ::Avm::EacRailsBase1::Instances::Base
7
7
  module Nodejs
8
- DEFAULT_NODEJS_VERSION = '19.8.1'
8
+ DEFAULT_NODEJS_VERSION = '26.6.0'
9
9
  NODEJS_VERSION_KEY = 'nodejs.version'
10
10
 
11
+ # @return [String]
11
12
  def auto_install_nodejs_version
12
- inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID, NODEJS_VERSION_KEY) ||
13
+ application.local_source.default_nodejs_version.if_present(&:to_s) ||
14
+ inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID, NODEJS_VERSION_KEY) ||
13
15
  DEFAULT_NODEJS_VERSION
14
16
  end
15
17
  end
@@ -7,7 +7,7 @@ module Avm
7
7
  module Instances
8
8
  class Base < ::Avm::EacRailsBase1::Instances::Base
9
9
  require_sub __FILE__, include_modules: true
10
- enable_simple_cache
10
+ enable_memoized
11
11
 
12
12
  include ::Avm::EacRubyBase1::Instances::Mixin
13
13
 
@@ -52,7 +52,7 @@ module Avm
52
52
  private
53
53
 
54
54
  # @return [Avm::EacRedmineBase0::Instances::RestApi]
55
- def rest_api_uncached
55
+ memoize def rest_api
56
56
  url = root_url
57
57
  url.query_values = { key: admin_api_key }
58
58
  ::Avm::EacRedmineBase0::Instances::RestApi.new(url)
@@ -4,7 +4,7 @@ module Avm
4
4
  module EacRedmineBase0
5
5
  module Instances
6
6
  class DockerImage < ::Avm::Instances::DockerImage
7
- enable_simple_cache
7
+ enable_memoized
8
8
 
9
9
  APACHE_HOST_DOCKERFILE_SUBPATH = 'apache_host_dockerfile'
10
10
  APACHE_PATH_DOCKERFILE_SUBPATH = 'apache_path_dockerfile'
@@ -89,7 +89,7 @@ module Avm
89
89
  r
90
90
  end
91
91
 
92
- def git_repo_uncached
92
+ memoize def git_repo
93
93
  ::EacGit::Local.new(instance.source_instance.install_path)
94
94
  end
95
95
 
@@ -97,7 +97,7 @@ module Avm
97
97
  git_repo.rev_parse('HEAD')
98
98
  end
99
99
 
100
- def redmine_source_path_uncached
100
+ memoize def redmine_source_path
101
101
  r = provide_dir.join(REDMINE_SOURCE_HOST_SUBPATH)
102
102
  ::FileUtils.rm_rf(r.to_path)
103
103
  r.mkpath
@@ -5,7 +5,7 @@ module Avm
5
5
  module Instances
6
6
  class RestApi < ::EacRest::Api
7
7
  class WikiPage < ::Avm::EacRedmineBase0::Instances::RestApi::EntityBase
8
- enable_simple_cache
8
+ enable_memoized
9
9
 
10
10
  DATA_ROOT = 'wiki_page'
11
11
 
@@ -51,12 +51,12 @@ module Avm
51
51
  private
52
52
 
53
53
  # @return [String]
54
- def current_content_uncached
54
+ memoize def current_content
55
55
  runner_context.call(:wiki_page_content)
56
56
  end
57
57
 
58
58
  # @return [String]
59
- def new_content_uncached
59
+ memoize def new_content
60
60
  input_content
61
61
  end
62
62
  end
@@ -12,7 +12,7 @@ module Avm
12
12
 
13
13
  private
14
14
 
15
- def project_uncached
15
+ memoize def project
16
16
  runner_context.call(:instance).rest_api.root_entity.project(parsed.id_or_identifier)
17
17
  end
18
18
  end
@@ -11,6 +11,11 @@ module Avm
11
11
  INSTALLER_PLUGIN_DEFAULT_SETTINGS_PATH =
12
12
  'plugins/redmine_installer/installer/default_settings.sh'
13
13
 
14
+ # @return [Avm::VersionNumber]
15
+ def default_nodejs_version
16
+ ::Avm::VersionNumber.new(default_setting_value('nodejs_version'))
17
+ end
18
+
14
19
  # @return [ActiveSupport::Duration]
15
20
  def default_passenger_start_timeout
16
21
  default_setting_value('passenger_start_timeout').to_i.seconds
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRedmineBase0
5
+ module Sources
6
+ class Base < ::Avm::EacRailsBase1::Sources::Base
7
+ module Update
8
+ # @param changes [Enumerable<Avm::Sources::Change>]
9
+ def update_self_changes_after_subs
10
+ super.grep_v(::Avm::EacRubyBase1::Sources::Update::Changes::RubocopFormat)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRedmineBase0
5
+ module Sources
6
+ class CoreUpdate
7
+ module BundleChanges
8
+ GEMFILE_CONFLICTED_GEMS = %w[rubocop rubocop-rails].freeze
9
+
10
+ # @return [void]
11
+ def bundle_changes
12
+ disable_gemfile_conflicted_gems
13
+ load_subs_from_gemfile
14
+ generate_gemfile_lock
15
+ end
16
+
17
+ # @return [void]
18
+ def disable_gemfile_conflicted_gems
19
+ GEMFILE_CONFLICTED_GEMS.each do |gem_name|
20
+ disable_gemfile_gem(gem_name)
21
+ end
22
+ end
23
+
24
+ # @param gem_name [String]
25
+ # @return [void]
26
+ def disable_gemfile_gem(gem_name)
27
+ source.gemfile_path.write(
28
+ source.gemfile_path.read.gsub(gemfile_gem_line_pattern(gem_name), '\1# \2')
29
+ )
30
+ end
31
+
32
+ # @param gem_name [String]
33
+ # @return [Regexp]
34
+ def gemfile_gem_line_pattern(gem_name)
35
+ /^([ \t]*)(gem[ \t]+['"]#{::Regexp.quote(gem_name)}['"].*)$/
36
+ end
37
+
38
+ # @return [void]
39
+ def generate_gemfile_lock
40
+ source.bundle_update.system!
41
+ end
42
+
43
+ # @return [void]
44
+ def load_subs_from_gemfile
45
+ source.gemfile_path.write(load_subs_from_gemfile_code, mode: 'a')
46
+ end
47
+
48
+ # @return [String]
49
+ def load_subs_from_gemfile_code
50
+ <<~'CODE'
51
+
52
+ # Subs
53
+ Dir["#{File.join(__dir__, 'sub')}/*"].each do |dir|
54
+ next unless File.exist?(File.join(dir, "#{File.basename(dir)}.gemspec"))
55
+
56
+ gem File.basename(dir), path: dir, require: false
57
+ end
58
+ CODE
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRedmineBase0
5
+ module Sources
6
+ class CoreUpdate
7
+ module Scm
8
+ enable_memoized
9
+
10
+ # @return [void]
11
+ def git_commit
12
+ if git_repo.dirty?
13
+ infom 'Git commiting...'
14
+ git_repo.command('add', '--', target_path).execute!
15
+ git_repo.command('commit', '-m', git_commit_message, '--', target_path).execute!
16
+ else
17
+ infom 'Nothing to commit'
18
+ end
19
+ end
20
+
21
+ # @return [String]
22
+ def git_commit_message
23
+ i18n_translate(__method__, version: version, __locale: source.locale)
24
+ end
25
+
26
+ # @return [EacGit::Local]
27
+ memoize def git_repo
28
+ ::EacGit::Local.new(target_path)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRedmineBase0
5
+ module Sources
6
+ class CoreUpdate
7
+ module SourcePackage
8
+ enable_memoized
9
+
10
+ # @return [void]
11
+ def assert_source_package
12
+ infom 'Asserting source package...'
13
+ source_package.assert
14
+ infov 'Package cache path', source_package.path
15
+ infov 'Package size', source_package.path.size
16
+ end
17
+
18
+ # @return [EacFs::CachedDownload]
19
+ memoize def source_package
20
+ ::EacFs::CachedDownload.new(url, fs_cache)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRedmineBase0
5
+ module Sources
6
+ class CoreUpdate
7
+ module Tempdir
8
+ def on_temp_dir
9
+ ::EacRubyUtils::Fs::Temp.on_directory do |dir|
10
+ @tempdir = dir
11
+ yield
12
+ end
13
+ end
14
+
15
+ protected
16
+
17
+ attr_accessor :tempdir
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -5,45 +5,36 @@ module Avm
5
5
  module Sources
6
6
  class CoreUpdate
7
7
  enable_speaker
8
- enable_simple_cache
8
+ enable_memoized
9
9
  common_constructor :source, :version, :url
10
10
 
11
11
  GITIGNORE_ADD = %w[/public/assets/**/* /config/credentials.* /config/credentials/*
12
- /config/install.sh /config/master.key /log/**/*].freeze
13
- GITIGNORE_DEL = %w[/Gemfile.lock /plugins/* /public/themes/*].freeze
12
+ /config/install.sh /config/*.key /log/**/*].freeze
13
+ GITIGNORE_DEL = %w[/Gemfile.lock /plugins/* /themes/* !/themes/README].freeze
14
14
  TARGET_KEEP = ::Avm::Sources::Base::Configuration::CONFIGURATION_FILENAMES
15
15
  .map { |b| "/#{b}" } + %w[/Gemfile.lock /plugins/*/**
16
- /public/themes/*/**].freeze
17
- TARGET_REMOVE = %w[alternate classic].map { |t| "/public/themes/#{t}/**" }
16
+ /themes/*/** /sub/*/**].freeze
17
+ TARGET_REMOVE = ['/themes/README'].freeze
18
18
 
19
19
  def run
20
- ::EacRubyUtils::Fs::Temp.on_directory do |dir|
21
- @tempdir = dir
20
+ on_temp_dir do
22
21
  assert_source_package
23
22
  extract_package_to_tempdir
24
23
  sync_content
25
24
  change_git_ignore
26
25
  validate_empty_dir
26
+ bundle_changes
27
27
  end
28
28
  git_commit
29
29
  success 'Done!'
30
30
  end
31
31
 
32
- def assert_source_package
33
- infom 'Asserting source package...'
34
- source_package.assert
35
- infov 'Package cache path', source_package.path
36
- infov 'Package size', source_package.path.size
37
- end
38
-
39
32
  def fs_object_id
40
33
  [source.path, version].join('_').variableize
41
34
  end
42
35
 
43
36
  private
44
37
 
45
- attr_reader :tempdir
46
-
47
38
  def change_git_ignore
48
39
  file = target_path.join('.gitignore')
49
40
  file.write(
@@ -60,34 +51,11 @@ module Avm
60
51
  ).execute!
61
52
  end
62
53
 
63
- def git_commit
64
- if git_repo.dirty?
65
- infom 'Git commiting...'
66
- git_repo.command('add', '--', target_path).execute!
67
- git_repo.command('commit', '-m', git_commit_message, '--', target_path).execute!
68
- else
69
- infom 'Nothing to commit'
70
- end
71
- end
72
-
73
- def git_commit_message
74
- i18n_translate(__method__, version: version, __locale: source.locale)
75
- end
76
-
77
- def git_repo_uncached
78
- ::EacGit::Local.new(target_path)
79
- end
80
-
81
54
  def sync_content
82
55
  ::Avm::Sync.new(source_path, target_path)
83
56
  .add_exclude('/*').add_includes(*target_files_to_remove).move_mode(true).run
84
57
  end
85
58
 
86
- # @return [EacFs::CachedDownload]
87
- def source_package_uncached
88
- ::EacFs::CachedDownload.new(url, fs_cache)
89
- end
90
-
91
59
  def validate_empty_dir
92
60
  if source_path.children.empty?
93
61
  infom 'No content left in source directory'
@@ -97,7 +65,7 @@ module Avm
97
65
  end
98
66
  end
99
67
 
100
- def source_path_uncached
68
+ memoize def source_path
101
69
  ::Pathname.new(tempdir.to_path)
102
70
  end
103
71
 
@@ -116,9 +84,11 @@ module Avm
116
84
  TARGET_KEEP.any? { |target_keep| tpath.fnmatch?(target_keep) }
117
85
  end
118
86
 
119
- def target_path_uncached
87
+ memoize def target_path
120
88
  source.path
121
89
  end
90
+
91
+ require_sub __FILE__, include_modules: true
122
92
  end
123
93
  end
124
94
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRedmineBase0
5
- VERSION = '0.27.1'
5
+ VERSION = '0.29.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-eac_redmine_base0
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.1
4
+ version: 0.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
@@ -15,20 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.102'
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: 0.102.4
18
+ version: '0.103'
22
19
  type: :runtime
23
20
  prerelease: false
24
21
  version_requirements: !ruby/object:Gem::Requirement
25
22
  requirements:
26
23
  - - "~>"
27
24
  - !ruby/object:Gem::Version
28
- version: '0.102'
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: 0.102.4
25
+ version: '0.103'
32
26
  - !ruby/object:Gem::Dependency
33
27
  name: avm-eac_generic_base0
34
28
  requirement: !ruby/object:Gem::Requirement
@@ -36,6 +30,9 @@ dependencies:
36
30
  - - "~>"
37
31
  - !ruby/object:Gem::Version
38
32
  version: '0.16'
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 0.16.1
39
36
  type: :runtime
40
37
  prerelease: false
41
38
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,6 +40,9 @@ dependencies:
43
40
  - - "~>"
44
41
  - !ruby/object:Gem::Version
45
42
  version: '0.16'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 0.16.1
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: avm-eac_rails_base1
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +179,12 @@ files:
179
179
  - lib/avm/eac_redmine_base0/instances/runners/project_rename.rb
180
180
  - lib/avm/eac_redmine_base0/sources/base.rb
181
181
  - lib/avm/eac_redmine_base0/sources/base/default_settings.rb
182
+ - lib/avm/eac_redmine_base0/sources/base/update.rb
182
183
  - lib/avm/eac_redmine_base0/sources/core_update.rb
184
+ - lib/avm/eac_redmine_base0/sources/core_update/bundle_changes.rb
185
+ - lib/avm/eac_redmine_base0/sources/core_update/scm.rb
186
+ - lib/avm/eac_redmine_base0/sources/core_update/source_package.rb
187
+ - lib/avm/eac_redmine_base0/sources/core_update/tempdir.rb
183
188
  - lib/avm/eac_redmine_base0/sources/runners/core_update.rb
184
189
  - lib/avm/eac_redmine_base0/sources/runners/docker.rb
185
190
  - lib/avm/eac_redmine_base0/version.rb