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 +4 -4
- data/lib/avm/eac_redmine_base0/{apache_host.rb → instances/apache_host.rb} +3 -1
- data/lib/avm/eac_redmine_base0/instances/base.rb +7 -6
- data/lib/avm/eac_redmine_base0/instances/data_unit.rb +53 -0
- data/lib/avm/eac_redmine_base0/instances/deploy.rb +1 -1
- data/lib/avm/eac_redmine_base0/instances/docker_image.rb +1 -1
- data/lib/avm/eac_redmine_base0/{rest_api.rb → instances/rest_api.rb} +3 -1
- data/lib/avm/eac_redmine_base0/instances/runners/project_rename.rb +1 -1
- data/lib/avm/eac_redmine_base0/runners/base.rb +1 -1
- data/lib/avm/eac_redmine_base0/sources/core_update.rb +120 -0
- data/lib/avm/eac_redmine_base0/sources/runners/core_update.rb +3 -2
- data/lib/avm/eac_redmine_base0/version.rb +1 -1
- metadata +12 -18
- data/lib/avm/eac_redmine_base0/core_update.rb +0 -118
- data/lib/avm/eac_redmine_base0/data_unit.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b0062b4f8d1bea44ec567461cbee96a017d3cd070b8fe773d4dcb69fa5c8966
|
4
|
+
data.tar.gz: 8338fc718b9740f62102b7a7a81d9b6a936a293bb9dd2e9b9645601184628212
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32608264f08bff25804ccd35434f8ee1b14e95a0b7bc6bea6e5ce3e0441dd947a026b7d6d71ee37cddb7aaf6be29a63dd9d33e54e68e3a5cd31b0707393ff6d3
|
7
|
+
data.tar.gz: c6395a3dd175f38e32b739a45f46250657675fd9c5d2d1eedf8abcc465a67227f49bc785c8515173158aa594ab5ae415f85764281062730b0a6b75f97831c400
|
@@ -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/
|
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
|
-
"#{
|
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
|
@@ -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
|
32
|
+
::Avm::EacRedmineBase0::Sources::CoreUpdate
|
33
|
+
.new(runner_context.call(:subject), version, url).run
|
33
34
|
end
|
34
35
|
|
35
36
|
def url
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|