avm-eac_redmine_base0 0.13.0 → 0.15.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: 39da16425fa7ccfa3501da84353c3cb37525f8933756cd610acf95b73a9ead98
4
- data.tar.gz: 471b560946e13ca892df86c66f43ca33e6c3e95f27c25cb58ac2f55d1aa3e629
3
+ metadata.gz: 8b0062b4f8d1bea44ec567461cbee96a017d3cd070b8fe773d4dcb69fa5c8966
4
+ data.tar.gz: 8338fc718b9740f62102b7a7a81d9b6a936a293bb9dd2e9b9645601184628212
5
5
  SHA512:
6
- metadata.gz: 5330c3b5f6106e116ecc727b8a65c674ea97447376cde71fc9b6367e952c003ff73051894aded1b4a55f2afb9a1e8ad77fe58ef8ebe30b00ebc04a24ba14dab0
7
- data.tar.gz: a525d4d4f7a1e0b49775bd77ba2218950dac786804767d16bce3c72f7eada11c707f7a5209ee8d5e8e739c2e526df598470bdf126afdf91bffe583d7a9357ecd
6
+ metadata.gz: 32608264f08bff25804ccd35434f8ee1b14e95a0b7bc6bea6e5ce3e0441dd947a026b7d6d71ee37cddb7aaf6be29a63dd9d33e54e68e3a5cd31b0707393ff6d3
7
+ data.tar.gz: c6395a3dd175f38e32b739a45f46250657675fd9c5d2d1eedf8abcc465a67227f49bc785c8515173158aa594ab5ae415f85764281062730b0a6b75f97831c400
@@ -4,7 +4,9 @@ require 'avm/eac_rails_base1/apache_host'
4
4
 
5
5
  module Avm
6
6
  module EacRedmineBase0
7
- class ApacheHost < ::Avm::EacRailsBase1::ApacheHost
7
+ module Instances
8
+ class ApacheHost < ::Avm::EacRailsBase1::ApacheHost
9
+ end
8
10
  end
9
11
  end
10
12
  end
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'addressable/uri'
4
- require 'avm/eac_redmine_base0/data_unit'
4
+ require 'avm/eac_redmine_base0/instances/data_unit'
5
5
  require 'avm/eac_redmine_base0/instances/docker_image'
6
- require 'avm/eac_redmine_base0/rest_api'
6
+ require 'avm/eac_redmine_base0/instances/runners'
7
+ require 'avm/eac_redmine_base0/instances/rest_api'
7
8
  require 'avm/eac_rails_base1/instances/base'
8
9
 
9
10
  module Avm
@@ -21,7 +22,7 @@ module Avm
21
22
  def docker_run_arguments
22
23
  [
23
24
  '--volume',
24
- "#{read_entry(::Avm::Instances::EntryKeys::FS_PATH)}:/home/myuser/eac_redmine_base0",
25
+ "#{install_path}:/home/myuser/eac_redmine_base0",
25
26
  '--publish', "#{read_entry(:ssh_port)}:22",
26
27
  '--publish', "#{read_entry(:http_port)}:80",
27
28
  '--publish', "#{read_entry(:https_port)}:443"
@@ -32,7 +33,7 @@ module Avm
32
33
  @data_package ||= ::Avm::Data::Instance::Package.new(
33
34
  self,
34
35
  units: {
35
- all: ::Avm::EacRedmineBase0::DataUnit.new(self)
36
+ all: ::Avm::EacRedmineBase0::Instances::DataUnit.new(self)
36
37
  }
37
38
  )
38
39
  end
@@ -46,11 +47,11 @@ module Avm
46
47
 
47
48
  private
48
49
 
49
- # @return [Avm::EacRedmineBase0::RestApi]
50
+ # @return [Avm::EacRedmineBase0::Instances::RestApi]
50
51
  def rest_api_uncached
51
52
  url = root_url
52
53
  url.query_values = { key: read_entry('api.key') }
53
- ::Avm::EacRedmineBase0::RestApi.new(url)
54
+ ::Avm::EacRedmineBase0::Instances::RestApi.new(url)
54
55
  end
55
56
  end
56
57
  end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/data/instance/unit'
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'curb'
6
+ require 'open-uri'
7
+
8
+ module Avm
9
+ module EacRedmineBase0
10
+ module Instances
11
+ class DataUnit < ::Avm::Data::Instance::Unit
12
+ common_constructor :instance
13
+
14
+ EXPORT_PATH = '/backup/export'
15
+ EXTENSION = '.tar'
16
+ IMPORT_PATH = '/backup/import.json'
17
+
18
+ def do_dump(data_path)
19
+ ::File.open(data_path, 'wb') do |file|
20
+ file << export_request.response.body_data_or_raise
21
+ end
22
+ end
23
+
24
+ def do_load(data_path)
25
+ do_load_by_web(data_path) || do_load_by_rake(data_path) || raise('Failed to load')
26
+ end
27
+
28
+ def do_load_by_web(data_path)
29
+ c = Curl::Easy.new(import_url)
30
+ c.multipart_form_post = true
31
+ c.http_post(Curl::PostField.file('redmine_with_git_tableless_load[path]', data_path))
32
+ c.perform
33
+ true
34
+ rescue Curl::Err::ConnectionFailedError
35
+ false
36
+ end
37
+
38
+ def do_load_by_rake(data_path)
39
+ instance.bundle('exec', 'rake', "redmine_with_git:load:all[#{data_path}]").system
40
+ true
41
+ end
42
+
43
+ def export_request
44
+ instance.rest_api.request(EXPORT_PATH)
45
+ end
46
+
47
+ def import_url
48
+ instance.rest_api.build_service_url(IMPORT_PATH).to_s
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -21,7 +21,7 @@ module Avm
21
21
  end
22
22
 
23
23
  def installer_path
24
- ::File.join(instance.fs_path, 'plugins', 'redmine_installer', 'installer', 'run.sh')
24
+ ::File.join(instance.install_path, 'plugins', 'redmine_installer', 'installer', 'run.sh')
25
25
  end
26
26
 
27
27
  def install_task
@@ -77,7 +77,7 @@ module Avm
77
77
  end
78
78
 
79
79
  def git_repo_uncached
80
- ::EacGit::Local.new(instance.source_instance.fs_path)
80
+ ::EacGit::Local.new(instance.source_instance.install_path)
81
81
  end
82
82
 
83
83
  def redmine_source_git_id
@@ -5,7 +5,9 @@ require 'eac_rest/api'
5
5
 
6
6
  module Avm
7
7
  module EacRedmineBase0
8
- class RestApi < ::EacRest::Api
8
+ module Instances
9
+ class RestApi < ::EacRest::Api
10
+ end
9
11
  end
10
12
  end
11
13
  end
@@ -8,7 +8,7 @@ module Avm
8
8
  module Instances
9
9
  module Runners
10
10
  class ProjectRename
11
- runner_with ::Avm::EacRailsBase1::RunnerWith::Bundle do
11
+ runner_with :help, ::Avm::EacRailsBase1::RunnerWith::Bundle do
12
12
  pos_arg :from
13
13
  pos_arg :to
14
14
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'avm/eac_redmine_base0/instances/base'
4
4
  require 'avm/eac_redmine_base0/instances/deploy'
5
- require 'avm/eac_redmine_base0/apache_host'
5
+ require 'avm/eac_redmine_base0/instances/apache_host'
6
6
  require 'avm/eac_rails_base1/runner'
7
7
  require 'eac_ruby_utils/core_ext'
8
8
 
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_redmine_base0/sources/core_update'
4
+ require 'avm/sources/base/configuration'
5
+ require 'avm/sync'
6
+ require 'eac_fs/cached_download'
7
+ require 'eac_ruby_utils/core_ext'
8
+
9
+ module Avm
10
+ module EacRedmineBase0
11
+ module Sources
12
+ class CoreUpdate
13
+ enable_speaker
14
+ enable_simple_cache
15
+ common_constructor :source, :version, :url
16
+
17
+ GITIGNORE_ADD = %w[/public/assets/**/* /config/install.sh /config/secrets_key.txt
18
+ /log/**/*].freeze
19
+ GITIGNORE_DEL = %w[/Gemfile.lock /plugins/* /public/themes/*].freeze
20
+ TARGET_KEEP = ::Avm::Sources::Base::Configuration::CONFIGURATION_FILENAMES
21
+ .map { |b| "/#{b}" } + %w[/Gemfile.lock].freeze
22
+
23
+ def run
24
+ ::EacRubyUtils::Fs::Temp.on_directory do |dir|
25
+ @tempdir = dir
26
+ assert_source_package
27
+ extract_package_to_tempdir
28
+ sync_content
29
+ change_git_ignore
30
+ validate_empty_dir
31
+ end
32
+ git_commit
33
+ success 'Done!'
34
+ end
35
+
36
+ def assert_source_package
37
+ infom 'Asserting source package...'
38
+ source_package.assert
39
+ infov 'Package cache path', source_package.path
40
+ infov 'Package size', source_package.path.size
41
+ end
42
+
43
+ def fs_object_id
44
+ [source.path, version].join('_').variableize
45
+ end
46
+
47
+ private
48
+
49
+ attr_reader :tempdir
50
+
51
+ def change_git_ignore
52
+ file = target_path.join('.gitignore')
53
+ file.write(
54
+ (file.read.each_line.map(&:strip).reject { |line| GITIGNORE_DEL.include?(line) } +
55
+ ['', '#eac_redmine_base0'] + GITIGNORE_ADD).map { |line| "#{line}\n" }.join
56
+ )
57
+ end
58
+
59
+ def extract_package_to_tempdir
60
+ infom "Extracting package to tempdir #{tempdir}..."
61
+ ::EacRubyUtils::Envs.local.command(
62
+ 'tar', '-xf', source_package.path.to_path, '-C', tempdir.to_path,
63
+ '--strip-components', '1'
64
+ ).execute!
65
+ end
66
+
67
+ def git_commit
68
+ if git_repo.dirty?
69
+ infom 'Git commiting...'
70
+ git_repo.command('add', '--', target_path).execute!
71
+ git_repo.command('commit', '-m', git_commit_message, '--', target_path).execute!
72
+ else
73
+ infom 'Nothing to commit'
74
+ end
75
+ end
76
+
77
+ def git_commit_message
78
+ i18n_translate(__method__, version: version, __locale: source.locale)
79
+ end
80
+
81
+ def git_repo_uncached
82
+ ::EacGit::Local.new(target_path)
83
+ end
84
+
85
+ def sync_content
86
+ ::Avm::Sync.new(source_path, target_path)
87
+ .add_exclude('/*').add_includes(*target_files_to_remove).move_mode(true).run
88
+ end
89
+
90
+ # @return [EacFs::CachedDownload]
91
+ def source_package_uncached
92
+ ::EacFs::CachedDownload.new(url, fs_cache)
93
+ end
94
+
95
+ def validate_empty_dir
96
+ if source_path.children.empty?
97
+ infom 'No content left in source directory'
98
+ else
99
+ fatal_error 'Found entries in source directory: ' +
100
+ source_path.children.map { |c| c.basename.to_path }.join(', ')
101
+ end
102
+ end
103
+
104
+ def source_path_uncached
105
+ ::Pathname.new(tempdir.to_path)
106
+ end
107
+
108
+ def target_files_to_remove
109
+ git_repo.command('ls-files').execute!
110
+ .each_line.map { |v| "/#{v.strip}" }
111
+ .without(*TARGET_KEEP)
112
+ end
113
+
114
+ def target_path_uncached
115
+ source.path
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/eac_rails_base1/sources/base'
4
- require 'avm/eac_redmine_base0/core_update'
4
+ require 'avm/eac_redmine_base0/sources/core_update'
5
5
  require 'eac_cli/core_ext'
6
6
 
7
7
  module Avm
@@ -29,7 +29,8 @@ module Avm
29
29
  end
30
30
 
31
31
  def update
32
- ::Avm::EacRedmineBase0::CoreUpdate.new(runner_context.call(:subject), version, url).run
32
+ ::Avm::EacRedmineBase0::Sources::CoreUpdate
33
+ .new(runner_context.call(:subject), version, url).run
33
34
  end
34
35
 
35
36
  def url
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRedmineBase0
5
- VERSION = '0.13.0'
5
+ VERSION = '0.15.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-eac_redmine_base0
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-18 00:00:00.000000000 Z
11
+ date: 2022-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -16,20 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.39'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.39.1
19
+ version: '0.43'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0.39'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.39.1
26
+ version: '0.43'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: avm-eac_generic_base0
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -50,14 +44,14 @@ dependencies:
50
44
  requirements:
51
45
  - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '0.5'
47
+ version: '0.6'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
52
  - - "~>"
59
53
  - !ruby/object:Gem::Version
60
- version: '0.5'
54
+ version: '0.6'
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: avm-eac_ubuntu_base0
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -138,14 +132,14 @@ dependencies:
138
132
  requirements:
139
133
  - - "~>"
140
134
  - !ruby/object:Gem::Version
141
- version: '0.102'
135
+ version: '0.103'
142
136
  type: :runtime
143
137
  prerelease: false
144
138
  version_requirements: !ruby/object:Gem::Requirement
145
139
  requirements:
146
140
  - - "~>"
147
141
  - !ruby/object:Gem::Version
148
- version: '0.102'
142
+ version: '0.103'
149
143
  - !ruby/object:Gem::Dependency
150
144
  name: eac_ruby_gem_support
151
145
  requirement: !ruby/object:Gem::Requirement
@@ -167,21 +161,21 @@ extensions: []
167
161
  extra_rdoc_files: []
168
162
  files:
169
163
  - lib/avm/eac_redmine_base0.rb
170
- - lib/avm/eac_redmine_base0/apache_host.rb
171
- - lib/avm/eac_redmine_base0/core_update.rb
172
- - lib/avm/eac_redmine_base0/data_unit.rb
173
164
  - lib/avm/eac_redmine_base0/instances.rb
165
+ - lib/avm/eac_redmine_base0/instances/apache_host.rb
174
166
  - lib/avm/eac_redmine_base0/instances/base.rb
167
+ - lib/avm/eac_redmine_base0/instances/data_unit.rb
175
168
  - lib/avm/eac_redmine_base0/instances/deploy.rb
176
169
  - lib/avm/eac_redmine_base0/instances/docker_image.rb
170
+ - lib/avm/eac_redmine_base0/instances/rest_api.rb
177
171
  - lib/avm/eac_redmine_base0/instances/runners.rb
178
172
  - lib/avm/eac_redmine_base0/instances/runners/docker.rb
179
173
  - lib/avm/eac_redmine_base0/instances/runners/project_rename.rb
180
- - lib/avm/eac_redmine_base0/rest_api.rb
181
174
  - lib/avm/eac_redmine_base0/runners.rb
182
175
  - lib/avm/eac_redmine_base0/runners/base.rb
183
176
  - lib/avm/eac_redmine_base0/sources.rb
184
177
  - lib/avm/eac_redmine_base0/sources/base.rb
178
+ - lib/avm/eac_redmine_base0/sources/core_update.rb
185
179
  - lib/avm/eac_redmine_base0/sources/runners.rb
186
180
  - lib/avm/eac_redmine_base0/sources/runners/core_update.rb
187
181
  - lib/avm/eac_redmine_base0/sources/runners/docker.rb
@@ -1,118 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/eac_redmine_base0/core_update'
4
- require 'avm/sources/base/configuration'
5
- require 'avm/sync'
6
- require 'eac_fs/cached_download'
7
- require 'eac_ruby_utils/core_ext'
8
-
9
- module Avm
10
- module EacRedmineBase0
11
- class CoreUpdate
12
- enable_speaker
13
- enable_simple_cache
14
- common_constructor :source, :version, :url
15
-
16
- GITIGNORE_ADD = %w[/public/assets/**/* /config/install.sh /config/secrets_key.txt
17
- /log/**/*].freeze
18
- GITIGNORE_DEL = %w[/Gemfile.lock /plugins/* /public/themes/*].freeze
19
- TARGET_KEEP = ::Avm::Sources::Base::Configuration::CONFIGURATION_FILENAMES
20
- .map { |b| "/#{b}" } + %w[/Gemfile.lock].freeze
21
-
22
- def run
23
- ::EacRubyUtils::Fs::Temp.on_directory do |dir|
24
- @tempdir = dir
25
- assert_source_package
26
- extract_package_to_tempdir
27
- sync_content
28
- change_git_ignore
29
- validate_empty_dir
30
- end
31
- git_commit
32
- success 'Done!'
33
- end
34
-
35
- def assert_source_package
36
- infom 'Asserting source package...'
37
- source_package.assert
38
- infov 'Package cache path', source_package.path
39
- infov 'Package size', source_package.path.size
40
- end
41
-
42
- def fs_object_id
43
- [source.path, version].join('_').variableize
44
- end
45
-
46
- private
47
-
48
- attr_reader :tempdir
49
-
50
- def change_git_ignore
51
- file = target_path.join('.gitignore')
52
- file.write(
53
- (file.read.each_line.map(&:strip).reject { |line| GITIGNORE_DEL.include?(line) } +
54
- ['', '#eac_redmine_base0'] + GITIGNORE_ADD).map { |line| "#{line}\n" }.join
55
- )
56
- end
57
-
58
- def extract_package_to_tempdir
59
- infom "Extracting package to tempdir #{tempdir}..."
60
- ::EacRubyUtils::Envs.local.command(
61
- 'tar', '-xf', source_package.path.to_path, '-C', tempdir.to_path,
62
- '--strip-components', '1'
63
- ).execute!
64
- end
65
-
66
- def git_commit
67
- if git_repo.dirty?
68
- infom 'Git commiting...'
69
- git_repo.command('add', '--', target_path).execute!
70
- git_repo.command('commit', '-m', git_commit_message, '--', target_path).execute!
71
- else
72
- infom 'Nothing to commit'
73
- end
74
- end
75
-
76
- def git_commit_message
77
- i18n_translate(__method__, version: version, __locale: source.locale)
78
- end
79
-
80
- def git_repo_uncached
81
- ::EacGit::Local.new(target_path)
82
- end
83
-
84
- def sync_content
85
- ::Avm::Sync.new(source_path, target_path)
86
- .add_exclude('/*').add_includes(*target_files_to_remove).move_mode(true).run
87
- end
88
-
89
- # @return [EacFs::CachedDownload]
90
- def source_package_uncached
91
- ::EacFs::CachedDownload.new(url, fs_cache)
92
- end
93
-
94
- def validate_empty_dir
95
- if source_path.children.empty?
96
- infom 'No content left in source directory'
97
- else
98
- fatal_error 'Found entries in source directory: ' +
99
- source_path.children.map { |c| c.basename.to_path }.join(', ')
100
- end
101
- end
102
-
103
- def source_path_uncached
104
- ::Pathname.new(tempdir.to_path)
105
- end
106
-
107
- def target_files_to_remove
108
- git_repo.command('ls-files').execute!
109
- .each_line.map { |v| "/#{v.strip}" }
110
- .without(*TARGET_KEEP)
111
- end
112
-
113
- def target_path_uncached
114
- source.path
115
- end
116
- end
117
- end
118
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/data/instance/unit'
4
- require 'eac_ruby_utils/core_ext'
5
- require 'curb'
6
- require 'open-uri'
7
-
8
- module Avm
9
- module EacRedmineBase0
10
- class DataUnit < ::Avm::Data::Instance::Unit
11
- common_constructor :instance
12
-
13
- EXPORT_PATH = '/backup/export'
14
- EXTENSION = '.tar'
15
- IMPORT_PATH = '/backup/import.json'
16
-
17
- def do_dump(data_path)
18
- ::File.open(data_path, 'wb') do |file|
19
- file << export_request.response.body_data_or_raise
20
- end
21
- end
22
-
23
- def do_load(data_path)
24
- do_load_by_web(data_path) || do_load_by_rake(data_path) || raise('Failed to load')
25
- end
26
-
27
- def do_load_by_web(data_path)
28
- c = Curl::Easy.new(import_url)
29
- c.multipart_form_post = true
30
- c.http_post(Curl::PostField.file('redmine_with_git_tableless_load[path]', data_path))
31
- c.perform
32
- true
33
- rescue Curl::Err::ConnectionFailedError
34
- false
35
- end
36
-
37
- def do_load_by_rake(data_path)
38
- instance.bundle('exec', 'rake', "redmine_with_git:load:all[#{data_path}]").system
39
- true
40
- end
41
-
42
- def export_request
43
- instance.rest_api.request(EXPORT_PATH)
44
- end
45
-
46
- def import_url
47
- instance.rest_api.build_service_url(IMPORT_PATH).to_s
48
- end
49
- end
50
- end
51
- end