eac_tools 0.87.1 → 0.89.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +27 -32
- data/lib/eac_tools/version.rb +1 -1
- data/sub/avm/lib/avm/applications/base/local_source.rb +6 -1
- data/sub/avm/lib/avm/launcher/context/instance_discovery/root_instance_paths.rb +53 -0
- data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +25 -6
- data/sub/avm/lib/avm/launcher/context.rb +3 -3
- data/sub/avm/lib/avm/rspec/setup.rb +2 -1
- data/sub/avm/lib/avm/rspec/shared_examples/entries_values.rb +1 -3
- data/sub/avm/lib/avm/rspec/shared_examples/with_config.rb +11 -0
- data/sub/avm/lib/avm/version.rb +1 -1
- data/sub/avm/spec/lib/avm/launcher/context_spec.rb +11 -0
- data/sub/avm/spec/lib/avm/launcher/context_spec_files/config.yml +9 -0
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec.rb +7 -8
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/config.yml +5 -0
- data/sub/avm/spec/spec_helper/{eac_launcher.rb → launcher_context.rb} +34 -11
- metadata +12 -75
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/avm-tools_stub/avm-tools.gemspec +0 -29
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/avm-tools_stub/lib/avm/tools/version.rb +0 -7
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/avm-tools_stub/lib/avm/tools.rb +0 -6
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/ruby_gem_stub/lib/ruby_gem_stub/version.rb +0 -5
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/ruby_gem_stub/lib/ruby_gem_stub.rb +0 -3
- data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/ruby_gem_stub/ruby_gem_stub.gemspec +0 -16
- data/sub/avm-eac_redmine_base0/Gemfile +0 -8
- data/sub/avm-eac_redmine_base0/avm-eac_redmine_base0.gemspec +0 -27
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/apache_host.rb +0 -12
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/base/database.rb +0 -30
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/base/files.rb +0 -22
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/base/gitolite.rb +0 -55
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/base/install.rb +0 -46
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/base/nodejs.rb +0 -22
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/base/web.rb +0 -20
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/base.rb +0 -59
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/deploy.rb +0 -19
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/docker_image.rb +0 -106
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/rest_api/entity_base.rb +0 -35
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/rest_api/project.rb +0 -26
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/rest_api/root.rb +0 -21
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/rest_api/wiki_page.rb +0 -54
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/rest_api.rb +0 -14
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/docker.rb +0 -17
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project/wiki_page/read.rb +0 -27
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project/wiki_page/write.rb +0 -70
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project/wiki_page.rb +0 -30
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project.rb +0 -26
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project_rename.rb +0 -56
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners.rb +0 -14
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances.rb +0 -11
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/sources/base.rb +0 -36
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/sources/core_update.rb +0 -131
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/sources/runners/core_update.rb +0 -65
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/sources/runners/docker.rb +0 -19
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/sources/runners.rb +0 -13
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/sources.rb +0 -11
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/version.rb +0 -7
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0.rb +0 -9
- data/sub/avm-eac_redmine_base0/locale/en.yml +0 -6
- data/sub/avm-eac_redmine_base0/locale/pt-BR.yml +0 -6
- data/sub/avm-eac_redmine_base0/spec/lib/avm/eac_redmine_base0/instances/apache_host_spec.rb +0 -22
- data/sub/avm-eac_redmine_base0/spec/lib/avm/eac_redmine_base0/instances/apache_host_spec_files/apache_host_spec_no_ssl_content.conf +0 -11
- data/sub/avm-eac_redmine_base0/spec/lib/avm/eac_redmine_base0/instances/base/gitolite_spec.rb +0 -26
- data/sub/avm-eac_redmine_base0/spec/lib/avm/eac_redmine_base0/instances/base/gitolite_spec_files/config.yml +0 -10
- data/sub/avm-eac_redmine_base0/spec/rubocop_spec.rb +0 -3
- data/sub/avm-eac_redmine_base0/spec/spec_helper.rb +0 -5
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/deploy/config/install.sh.template +0 -45
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/deploy/config/secrets.yml +0 -8
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/Dockerfile.template +0 -33
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/apache_host_dockerfile +0 -8
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/apache_http_virtualhost.conf.template +0 -10
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/apache_https_virtualhost.conf.template +0 -16
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/apache_path_dockerfile +0 -5
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/start.sh.template +0 -52
- /data/sub/avm/spec/spec_helper/{eac_launcher → launcher_context}/settings.yml +0 -0
@@ -1,106 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
require 'avm/eac_redmine_base0/instances/deploy'
|
5
|
-
require 'avm/eac_ubuntu_base0/instances/base'
|
6
|
-
require 'avm/instances/docker_image'
|
7
|
-
require 'eac_templates/core_ext'
|
8
|
-
|
9
|
-
module Avm
|
10
|
-
module EacRedmineBase0
|
11
|
-
module Instances
|
12
|
-
class DockerImage < ::Avm::Instances::DockerImage
|
13
|
-
enable_simple_cache
|
14
|
-
|
15
|
-
APACHE_HOST_DOCKERFILE_SUBPATH = 'apache_host_dockerfile'
|
16
|
-
APACHE_PATH_DOCKERFILE_SUBPATH = 'apache_path_dockerfile'
|
17
|
-
INSTALLER_TARGET_TASK_WITH_WEB_PATH_BLANK = 'redmine_as_apache_base'
|
18
|
-
INSTALLER_TARGET_TASK_WITH_WEB_PATH_PRESENT = 'redmine_as_apache_path'
|
19
|
-
REDMINE_SOURCE_HOST_SUBPATH = 'redmine_source'
|
20
|
-
|
21
|
-
delegate :database_internal, to: :instance
|
22
|
-
|
23
|
-
def avm_fs_cache_object_id
|
24
|
-
instance.id
|
25
|
-
end
|
26
|
-
|
27
|
-
def apache_setup
|
28
|
-
template.child(apache_setup_dockerfile).apply(self)
|
29
|
-
end
|
30
|
-
|
31
|
-
# @return [String]
|
32
|
-
def apache_setup_dockerfile
|
33
|
-
web_path_present? ? APACHE_PATH_DOCKERFILE_SUBPATH : APACHE_HOST_DOCKERFILE_SUBPATH
|
34
|
-
end
|
35
|
-
|
36
|
-
def base_image
|
37
|
-
eac_ubuntu_base0_instance.docker_image.provide.id
|
38
|
-
end
|
39
|
-
|
40
|
-
def installer_target_task
|
41
|
-
if web_path_present?
|
42
|
-
INSTALLER_TARGET_TASK_WITH_WEB_PATH_PRESENT
|
43
|
-
else
|
44
|
-
INSTALLER_TARGET_TASK_WITH_WEB_PATH_BLANK
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def redmine_user
|
49
|
-
eac_ubuntu_base0_instance.docker_image.user_name
|
50
|
-
end
|
51
|
-
|
52
|
-
def redmine_user_home
|
53
|
-
eac_ubuntu_base0_instance.docker_image.user_home
|
54
|
-
end
|
55
|
-
|
56
|
-
def redmine_path
|
57
|
-
"#{redmine_user_home}/redmine_app"
|
58
|
-
end
|
59
|
-
|
60
|
-
def skip_database
|
61
|
-
ENV.fetch('SKIP_DATABASE', nil)
|
62
|
-
end
|
63
|
-
|
64
|
-
def start_path
|
65
|
-
'/start.sh'
|
66
|
-
end
|
67
|
-
|
68
|
-
def web_path_present?
|
69
|
-
::Addressable::URI.parse(instance.web_url).path.present?
|
70
|
-
end
|
71
|
-
|
72
|
-
def write_in_provide_dir
|
73
|
-
super
|
74
|
-
|
75
|
-
::Avm::EacRedmineBase0::Instances::Deploy.template.child('config')
|
76
|
-
.child('install.sh.template')
|
77
|
-
.apply_to_file(variables_source, provide_dir.join('install_settings.sh'))
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
|
82
|
-
def eac_ubuntu_base0_instance
|
83
|
-
r = ::Avm::EacUbuntuBase0::Instances::Base.by_id(instance.id)
|
84
|
-
r.docker_image_options = instance.docker_image_options
|
85
|
-
r
|
86
|
-
end
|
87
|
-
|
88
|
-
def git_repo_uncached
|
89
|
-
::EacGit::Local.new(instance.source_instance.install_path)
|
90
|
-
end
|
91
|
-
|
92
|
-
def redmine_source_git_id
|
93
|
-
git_repo.rev_parse('HEAD')
|
94
|
-
end
|
95
|
-
|
96
|
-
def redmine_source_path_uncached
|
97
|
-
r = provide_dir.join(REDMINE_SOURCE_HOST_SUBPATH)
|
98
|
-
::FileUtils.rm_rf(r.to_path)
|
99
|
-
r.mkpath
|
100
|
-
git_repo.commit(redmine_source_git_id).archive_to_dir(r).system!
|
101
|
-
REDMINE_SOURCE_HOST_SUBPATH
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_rest/api'
|
4
|
-
require 'eac_rest/entity'
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module EacRedmineBase0
|
9
|
-
module Instances
|
10
|
-
class RestApi < ::EacRest::Api
|
11
|
-
class EntityBase < ::EacRest::Entity
|
12
|
-
def build_request(url_suffix)
|
13
|
-
api.request_json("#{url_suffix}.json")
|
14
|
-
end
|
15
|
-
|
16
|
-
def data_from_response(response)
|
17
|
-
raise "\"#{response.url}\" returned non-ok status: #{response.status}" unless
|
18
|
-
response.status.to_s.start_with?('2')
|
19
|
-
|
20
|
-
return {} if response.body_str.blank?
|
21
|
-
|
22
|
-
response.body_data
|
23
|
-
rescue ::JSON::ParserError
|
24
|
-
raise "\"#{response.url}\" returned invalid JSON: \"#{response.body_str}\" " \
|
25
|
-
"(Status: #{response.status})"
|
26
|
-
end
|
27
|
-
|
28
|
-
def fetch_data(url_suffix)
|
29
|
-
data_from_response(build_request(url_suffix).response)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/eac_redmine_base0/instances/rest_api/entity_base'
|
4
|
-
require 'avm/eac_redmine_base0/instances/rest_api/wiki_page'
|
5
|
-
require 'eac_rest/api'
|
6
|
-
require 'eac_ruby_utils/core_ext'
|
7
|
-
|
8
|
-
module Avm
|
9
|
-
module EacRedmineBase0
|
10
|
-
module Instances
|
11
|
-
class RestApi < ::EacRest::Api
|
12
|
-
class Project < ::Avm::EacRedmineBase0::Instances::RestApi::EntityBase
|
13
|
-
# @return [String]
|
14
|
-
def prefix
|
15
|
-
"/projects/#{id}"
|
16
|
-
end
|
17
|
-
|
18
|
-
# @return [Avm::EacRedmineBase0::Instances::RestApi::WikiPage]
|
19
|
-
def wiki_page(name)
|
20
|
-
child_entity(::Avm::EacRedmineBase0::Instances::RestApi::WikiPage, name)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/eac_redmine_base0/instances/rest_api/entity_base'
|
4
|
-
require 'eac_rest/api'
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module EacRedmineBase0
|
9
|
-
module Instances
|
10
|
-
class RestApi < ::EacRest::Api
|
11
|
-
class Root < ::Avm::EacRedmineBase0::Instances::RestApi::EntityBase
|
12
|
-
# @param id_or_identifier [String]
|
13
|
-
# @return [Avm::EacRedmineBase0::Instances::RestApi::Project]
|
14
|
-
def project(id_or_identifier)
|
15
|
-
api.entity(::Avm::EacRedmineBase0::Instances::RestApi::Project, id_or_identifier)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/eac_redmine_base0/instances/rest_api/entity_base'
|
4
|
-
require 'eac_rest/api'
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module EacRedmineBase0
|
9
|
-
module Instances
|
10
|
-
class RestApi < ::EacRest::Api
|
11
|
-
class WikiPage < ::Avm::EacRedmineBase0::Instances::RestApi::EntityBase
|
12
|
-
enable_simple_cache
|
13
|
-
|
14
|
-
# @return [Hash]
|
15
|
-
def data_from_id
|
16
|
-
fetch_data(prefix)
|
17
|
-
end
|
18
|
-
|
19
|
-
# @return [String]
|
20
|
-
def data_root
|
21
|
-
'wiki_page'
|
22
|
-
end
|
23
|
-
|
24
|
-
# @return [String]
|
25
|
-
def prefix
|
26
|
-
"#{parent_entity.prefix}/wiki/#{id}"
|
27
|
-
end
|
28
|
-
|
29
|
-
# @return [String]
|
30
|
-
def read
|
31
|
-
data.fetch(data_root).fetch('text')
|
32
|
-
end
|
33
|
-
|
34
|
-
# @param content [String]
|
35
|
-
# @return [+self+]
|
36
|
-
def write(text)
|
37
|
-
data_from_response(
|
38
|
-
build_request(prefix).verb(:put).header('Content-type', 'application/json')
|
39
|
-
.body_data(write_data(text).to_json).response
|
40
|
-
)
|
41
|
-
end
|
42
|
-
|
43
|
-
# @param text [String]
|
44
|
-
# @return [Hash]
|
45
|
-
def write_data(text)
|
46
|
-
{
|
47
|
-
data_root => { 'text' => text }
|
48
|
-
}
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/docker/runner'
|
4
|
-
|
5
|
-
module Avm
|
6
|
-
module EacRedmineBase0
|
7
|
-
module Instances
|
8
|
-
module Runners
|
9
|
-
class Docker < ::Avm::Docker::Runner
|
10
|
-
def use_default_registry?
|
11
|
-
false
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project/wiki_page/read.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/core_ext'
|
4
|
-
|
5
|
-
module Avm
|
6
|
-
module EacRedmineBase0
|
7
|
-
module Instances
|
8
|
-
module Runners
|
9
|
-
class Project
|
10
|
-
class WikiPage
|
11
|
-
class Read
|
12
|
-
runner_with :help, :output
|
13
|
-
|
14
|
-
def run
|
15
|
-
run_output
|
16
|
-
end
|
17
|
-
|
18
|
-
def output_content
|
19
|
-
runner_context.call(:wiki_page_content)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/core_ext'
|
4
|
-
|
5
|
-
module Avm
|
6
|
-
module EacRedmineBase0
|
7
|
-
module Instances
|
8
|
-
module Runners
|
9
|
-
class Project
|
10
|
-
class WikiPage
|
11
|
-
class Write
|
12
|
-
runner_with :help, :confirmation, :input do
|
13
|
-
bool_opt '-f', '--force'
|
14
|
-
end
|
15
|
-
delegate :force?, to: :parsed
|
16
|
-
|
17
|
-
def run
|
18
|
-
start_banner
|
19
|
-
if write?
|
20
|
-
run_write
|
21
|
-
else
|
22
|
-
success 'Content unchanged, no further action will be taken'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def start_banner
|
27
|
-
infov 'Content'
|
28
|
-
infov ' * Current', current_content
|
29
|
-
infov ' * New', new_content
|
30
|
-
infov ' * Changed?', content_changed?
|
31
|
-
end
|
32
|
-
|
33
|
-
# @return [Boolean]
|
34
|
-
def content_changed?
|
35
|
-
new_content != current_content
|
36
|
-
end
|
37
|
-
|
38
|
-
def run_write
|
39
|
-
if confirm?('Write?')
|
40
|
-
infom 'Writing...'
|
41
|
-
runner_context.call(:wiki_page).write(new_content)
|
42
|
-
success('Writed!')
|
43
|
-
else
|
44
|
-
success('Unconfirmed, no further action will be taken')
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# @return [Boolean]
|
49
|
-
def write?
|
50
|
-
parsed.force? || content_changed?
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
# @return [String]
|
56
|
-
def current_content_uncached
|
57
|
-
runner_context.call(:wiki_page_content)
|
58
|
-
end
|
59
|
-
|
60
|
-
# @return [String]
|
61
|
-
def new_content_uncached
|
62
|
-
input_content
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project/wiki_page.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/core_ext'
|
4
|
-
|
5
|
-
module Avm
|
6
|
-
module EacRedmineBase0
|
7
|
-
module Instances
|
8
|
-
module Runners
|
9
|
-
class Project
|
10
|
-
class WikiPage
|
11
|
-
runner_with :help, :subcommands do
|
12
|
-
pos_arg :name
|
13
|
-
subcommands
|
14
|
-
end
|
15
|
-
|
16
|
-
def wiki_page
|
17
|
-
runner_context.call(:project).wiki_page(parsed.name)
|
18
|
-
end
|
19
|
-
|
20
|
-
def wiki_page_content
|
21
|
-
wiki_page.read
|
22
|
-
end
|
23
|
-
|
24
|
-
require_sub __FILE__
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/core_ext'
|
4
|
-
|
5
|
-
module Avm
|
6
|
-
module EacRedmineBase0
|
7
|
-
module Instances
|
8
|
-
module Runners
|
9
|
-
class Project
|
10
|
-
runner_with :help, :subcommands do
|
11
|
-
pos_arg :id_or_identifier
|
12
|
-
subcommands
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def project_uncached
|
18
|
-
runner_context.call(:instance).rest_api.root_entity.project(parsed.id_or_identifier)
|
19
|
-
end
|
20
|
-
|
21
|
-
require_sub __FILE__
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/runners/project_rename.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/core_ext'
|
4
|
-
require 'avm/eac_rails_base1/instances/runners/code_runner'
|
5
|
-
|
6
|
-
module Avm
|
7
|
-
module EacRedmineBase0
|
8
|
-
module Instances
|
9
|
-
module Runners
|
10
|
-
class ProjectRename
|
11
|
-
runner_with :help, ::Avm::EacRailsBase1::RunnerWith::Bundle do
|
12
|
-
pos_arg :from
|
13
|
-
pos_arg :to
|
14
|
-
end
|
15
|
-
|
16
|
-
def run
|
17
|
-
bundle_run
|
18
|
-
end
|
19
|
-
|
20
|
-
def start_banner
|
21
|
-
infov 'From', from
|
22
|
-
infov 'To', to
|
23
|
-
end
|
24
|
-
|
25
|
-
delegate :from, :to, to: :parsed
|
26
|
-
|
27
|
-
def bundle_args
|
28
|
-
%w[exec rails runner] + [code]
|
29
|
-
end
|
30
|
-
|
31
|
-
def code
|
32
|
-
<<~CODE
|
33
|
-
from_arg = '#{from}'
|
34
|
-
to_arg = '#{to}'
|
35
|
-
project = ::Project.where(identifier: from_arg).first
|
36
|
-
if project.present?
|
37
|
-
puts "Project found: \#{project}"
|
38
|
-
puts "Renaming..."
|
39
|
-
project.update_column(:identifier, to_arg)
|
40
|
-
puts "Renamed. Testing..."
|
41
|
-
project = ::Project.where(identifier: to_arg).first
|
42
|
-
if project
|
43
|
-
puts "Project found: \#{project}"
|
44
|
-
else
|
45
|
-
fail "After rename: project not found with identifier \\"\#{to_arg}\\""
|
46
|
-
end
|
47
|
-
else
|
48
|
-
fail "Before rename: project not found with identifier \\"\#{from_arg}\\""
|
49
|
-
end
|
50
|
-
CODE
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/eac_rails_base1/sources/base'
|
4
|
-
require 'avm/eac_redmine_base0/sources/runners'
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module EacRedmineBase0
|
9
|
-
module Sources
|
10
|
-
class Base < ::Avm::EacRailsBase1::Sources::Base
|
11
|
-
DEFAULT_TEST_COMMANDS = {}.freeze
|
12
|
-
REDMINE_LIB_SUBPATH = 'lib/redmine.rb'
|
13
|
-
SUBS_INCLUDE_PATHS_DEFAULT = ['plugins/*'].freeze
|
14
|
-
|
15
|
-
# Return a empty hash (No tests).
|
16
|
-
#
|
17
|
-
# @return [Hash<String, EacRubyUtils::Envs::Command].
|
18
|
-
def default_test_commands
|
19
|
-
DEFAULT_TEST_COMMANDS
|
20
|
-
end
|
21
|
-
|
22
|
-
def redmine_lib_path
|
23
|
-
path.join(REDMINE_LIB_SUBPATH)
|
24
|
-
end
|
25
|
-
|
26
|
-
def subs_include_paths_default
|
27
|
-
SUBS_INCLUDE_PATHS_DEFAULT
|
28
|
-
end
|
29
|
-
|
30
|
-
def valid?
|
31
|
-
super && redmine_lib_path.exist?
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,131 +0,0 @@
|
|
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 /plugins/*/**
|
22
|
-
/public/themes/*/**].freeze
|
23
|
-
TARGET_REMOVE = %w[alternate classic].map { |t| "/public/themes/#{t}/**" }
|
24
|
-
|
25
|
-
def run
|
26
|
-
::EacRubyUtils::Fs::Temp.on_directory do |dir|
|
27
|
-
@tempdir = dir
|
28
|
-
assert_source_package
|
29
|
-
extract_package_to_tempdir
|
30
|
-
sync_content
|
31
|
-
change_git_ignore
|
32
|
-
validate_empty_dir
|
33
|
-
end
|
34
|
-
git_commit
|
35
|
-
success 'Done!'
|
36
|
-
end
|
37
|
-
|
38
|
-
def assert_source_package
|
39
|
-
infom 'Asserting source package...'
|
40
|
-
source_package.assert
|
41
|
-
infov 'Package cache path', source_package.path
|
42
|
-
infov 'Package size', source_package.path.size
|
43
|
-
end
|
44
|
-
|
45
|
-
def fs_object_id
|
46
|
-
[source.path, version].join('_').variableize
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
attr_reader :tempdir
|
52
|
-
|
53
|
-
def change_git_ignore
|
54
|
-
file = target_path.join('.gitignore')
|
55
|
-
file.write(
|
56
|
-
(file.read.each_line.map(&:strip).reject { |line| GITIGNORE_DEL.include?(line) } +
|
57
|
-
['', '#eac_redmine_base0'] + GITIGNORE_ADD).map { |line| "#{line}\n" }.join
|
58
|
-
)
|
59
|
-
end
|
60
|
-
|
61
|
-
def extract_package_to_tempdir
|
62
|
-
infom "Extracting package to tempdir #{tempdir}..."
|
63
|
-
::EacRubyUtils::Envs.local.command(
|
64
|
-
'tar', '-xf', source_package.path.to_path, '-C', tempdir.to_path,
|
65
|
-
'--strip-components', '1'
|
66
|
-
).execute!
|
67
|
-
end
|
68
|
-
|
69
|
-
def git_commit
|
70
|
-
if git_repo.dirty?
|
71
|
-
infom 'Git commiting...'
|
72
|
-
git_repo.command('add', '--', target_path).execute!
|
73
|
-
git_repo.command('commit', '-m', git_commit_message, '--', target_path).execute!
|
74
|
-
else
|
75
|
-
infom 'Nothing to commit'
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def git_commit_message
|
80
|
-
i18n_translate(__method__, version: version, __locale: source.locale)
|
81
|
-
end
|
82
|
-
|
83
|
-
def git_repo_uncached
|
84
|
-
::EacGit::Local.new(target_path)
|
85
|
-
end
|
86
|
-
|
87
|
-
def sync_content
|
88
|
-
::Avm::Sync.new(source_path, target_path)
|
89
|
-
.add_exclude('/*').add_includes(*target_files_to_remove).move_mode(true).run
|
90
|
-
end
|
91
|
-
|
92
|
-
# @return [EacFs::CachedDownload]
|
93
|
-
def source_package_uncached
|
94
|
-
::EacFs::CachedDownload.new(url, fs_cache)
|
95
|
-
end
|
96
|
-
|
97
|
-
def validate_empty_dir
|
98
|
-
if source_path.children.empty?
|
99
|
-
infom 'No content left in source directory'
|
100
|
-
else
|
101
|
-
fatal_error 'Found entries in source directory: ' + # rubocop:disable Style/StringConcatenation
|
102
|
-
source_path.children.map { |c| c.basename.to_path }.join(', ')
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def source_path_uncached
|
107
|
-
::Pathname.new(tempdir.to_path)
|
108
|
-
end
|
109
|
-
|
110
|
-
# @return [Enumerable<String>]
|
111
|
-
def target_files_to_remove
|
112
|
-
git_repo.command('ls-files').execute!
|
113
|
-
.each_line.map { |v| "/#{v.strip}" }
|
114
|
-
.reject { |tpath| target_keep?(tpath) }
|
115
|
-
end
|
116
|
-
|
117
|
-
# @param tpath [String]
|
118
|
-
# @return [Boolean]
|
119
|
-
def target_keep?(tpath)
|
120
|
-
tpath = tpath.to_pathname
|
121
|
-
TARGET_REMOVE.none? { |target_remove| tpath.fnmatch?(target_remove) }
|
122
|
-
TARGET_KEEP.any? { |target_keep| tpath.fnmatch?(target_keep) }
|
123
|
-
end
|
124
|
-
|
125
|
-
def target_path_uncached
|
126
|
-
source.path
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|