dkdeploy-typo3-cms 7.0.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 +7 -0
- data/.gitignore +20 -0
- data/.rubocop.yml +23 -0
- data/.travis.yml +12 -0
- data/Berksfile +3 -0
- data/Berksfile.lock +66 -0
- data/CHANGELOG.md +12 -0
- data/CONTRIBUTORS.md +16 -0
- data/Gemfile +3 -0
- data/LICENSE +7 -0
- data/README.md +87 -0
- data/Rakefile +1 -0
- data/Vagrantfile +62 -0
- data/assets/dkdeploy-logo.png +0 -0
- data/config/vm/cookbooks/dkdeploy-typo3-cms/metadata.rb +12 -0
- data/config/vm/cookbooks/dkdeploy-typo3-cms/recipes/default.rb +71 -0
- data/dkdeploy-typo3-cms.gemspec +29 -0
- data/features/advanced_typo3.feature +156 -0
- data/features/caretaker_key_management.feature +36 -0
- data/features/clear_cache_on_rollback.feature +17 -0
- data/features/cli.feature +61 -0
- data/features/step_definitions/mysql.rb +75 -0
- data/features/step_definitions/typo3.rb +16 -0
- data/features/support/env.rb +11 -0
- data/features/typo3.feature +100 -0
- data/features/typoscript_upload_and_merge_config.feature +128 -0
- data/features/typoscript_upload_and_merge_pagets.feature +128 -0
- data/features/typoscript_upload_and_merge_userts.feature +128 -0
- data/features/update_database.feature +23 -0
- data/lib/capistrano/dkdeploy/typo3_cms.rb +37 -0
- data/lib/dkdeploy/typo3/cms.rb +1 -0
- data/lib/dkdeploy/typo3/cms/dsl.rb +27 -0
- data/lib/dkdeploy/typo3/cms/helpers/cli.rb +165 -0
- data/lib/dkdeploy/typo3/cms/helpers/erb.rb +25 -0
- data/lib/dkdeploy/typo3/cms/i18n.rb +111 -0
- data/lib/dkdeploy/typo3/cms/tasks/cache.rake +18 -0
- data/lib/dkdeploy/typo3/cms/tasks/caretaker_key_management.rake +60 -0
- data/lib/dkdeploy/typo3/cms/tasks/cli.rake +45 -0
- data/lib/dkdeploy/typo3/cms/tasks/typo3.rake +272 -0
- data/lib/dkdeploy/typo3/cms/tasks/typoscript.rake +288 -0
- data/lib/dkdeploy/typo3/cms/version.rb +16 -0
- data/spec/fixtures/application/Capfile +8 -0
- data/spec/fixtures/application/Gemfile +3 -0
- data/spec/fixtures/application/config/deploy.rb +8 -0
- data/spec/fixtures/application/config/deploy/dev.rb +41 -0
- data/spec/fixtures/application/htdocs/.hidden/.gitkeep +0 -0
- data/spec/fixtures/application/htdocs/catalog/index.html +1 -0
- data/spec/fixtures/application/htdocs/composer.json +24 -0
- data/spec/fixtures/application/htdocs/typo3/cli_dispatch.phpsh +2 -0
- data/spec/fixtures/application/htdocs/typo3conf/AdditionalConfiguration.php +3 -0
- data/spec/fixtures/application/htdocs/typo3conf/LocalConfiguration.php +28 -0
- data/spec/fixtures/application/htdocs/typo3conf/PackageStates.php +358 -0
- data/spec/fixtures/application/vendor/composer.phar +0 -0
- data/spec/fixtures/capistrano/configuration/additional_configuration_for_server.rb +1 -0
- data/spec/fixtures/capistrano/configuration/cli_break_after_one_run_in_release_path.rb +14 -0
- data/spec/fixtures/capistrano/configuration/cli_break_after_three_runs_in_release_path.rb +14 -0
- data/spec/fixtures/capistrano/configuration/cli_test_tasks.rb +19 -0
- data/spec/fixtures/capistrano/configuration/cli_test_tasks_with_path.rb +15 -0
- data/vendor/AdditionalConfiguration.php.erb +57 -0
- data/vendor/create_caretaker_instance_keys.php.erb +18 -0
- metadata +222 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
module Dkdeploy
|
2
|
+
module Typo3
|
3
|
+
# TYPO3 dsl api
|
4
|
+
module DSL
|
5
|
+
# Execute a rake/capistrano task only for given server
|
6
|
+
#
|
7
|
+
# @param server [Capistrano::Configuration::Server] Server to execute task
|
8
|
+
# @param task [String] Name of rake/capistrano task
|
9
|
+
# @param args [Array] Arguments of rake/capistrano task
|
10
|
+
def invoke_for_server(server, task, *args)
|
11
|
+
backup_filter = fetch :filter, {}
|
12
|
+
begin
|
13
|
+
new_server_filter = Marshal.load(Marshal.dump(backup_filter))
|
14
|
+
new_server_filter[:host] = server.hostname
|
15
|
+
set :filter, new_server_filter
|
16
|
+
env.setup_filters
|
17
|
+
info I18n.t('dsl.invoke_for_server.set_filter', task: task, host: server.hostname, scope: :dkdeploy)
|
18
|
+
invoke task, *args
|
19
|
+
Rake::Task[task].reenable
|
20
|
+
ensure
|
21
|
+
set :filter, backup_filter
|
22
|
+
env.setup_filters
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
module Dkdeploy
|
2
|
+
module Typo3
|
3
|
+
module Cms
|
4
|
+
module Helpers
|
5
|
+
# TYPO3 cli helpers
|
6
|
+
module Cli
|
7
|
+
# Execute a task typo3/cli_dispatch.phpsh cli_params
|
8
|
+
#
|
9
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
10
|
+
# @return [Boolean] returns true/false as success of execution
|
11
|
+
def typo3_cli(*cli_params)
|
12
|
+
path_to_cli_dispatch = File.join(current_path, 'typo3', 'cli_dispatch.phpsh')
|
13
|
+
run_script(current_path, path_to_cli_dispatch, cli_params)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Execute a task typo3/cli_dispatch.phpsh cli_params in a specific directory
|
17
|
+
#
|
18
|
+
# @param path [String] file path where task is to be executed
|
19
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
20
|
+
# @return [Boolean] returns true/false as success of execution
|
21
|
+
def typo3_cli_in_path(path, *cli_params)
|
22
|
+
path_to_cli_dispatch = File.join(path, 'typo3', 'cli_dispatch.phpsh')
|
23
|
+
run_script(path, path_to_cli_dispatch, cli_params)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns the last results of invocations of a task typo3/cli_dispatch.phpsh cli_params
|
27
|
+
# Invocation can be controlled by the result of a given block.
|
28
|
+
# True repeats the invocation until maximum_loop_count is reached.
|
29
|
+
# False stops invocation regardless of loop count.
|
30
|
+
#
|
31
|
+
# @param maximum_loop_count [Integer] number of maximum attempts to run task
|
32
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
33
|
+
# @return [String] returns the last result of executing task
|
34
|
+
def capture_typo3_cli_in_loop(maximum_loop_count, *cli_params, &block)
|
35
|
+
path_to_cli_dispatch = File.join(current_path, 'typo3', 'cli_dispatch.phpsh')
|
36
|
+
capture_script_in_loop(current_path, path_to_cli_dispatch, maximum_loop_count, cli_params, &block)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Returns the last results of invocations of a task typo3/cli_dispatch.phpsh cli_params
|
40
|
+
# Invocation can be controlled by the result of a given block.
|
41
|
+
# True repeats the invocation until maximum_loop_count is reached.
|
42
|
+
# False stops invocation regardless of loop count.
|
43
|
+
#
|
44
|
+
# @param path [String] file path where task is to be executed
|
45
|
+
# @param maximum_loop_count [Integer] number of maximum attempts to run task
|
46
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
47
|
+
# @return [String] returns the last result of executing task
|
48
|
+
def capture_typo3_cli_in_path_in_loop(path, maximum_loop_count, *cli_params, &block)
|
49
|
+
path_to_cli_dispatch = File.join(path, 'typo3', 'cli_dispatch.phpsh')
|
50
|
+
capture_script_in_loop(path, path_to_cli_dispatch, maximum_loop_count, cli_params, &block)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Execute a typo3_console task with cli_params
|
54
|
+
#
|
55
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
56
|
+
# @return [Boolean] returns true/false as success of execution
|
57
|
+
def typo3_console(*cli_params)
|
58
|
+
path_to_typo3_console = File.join(current_path, fetch(:path_to_typo3_console))
|
59
|
+
run_script(current_path, path_to_typo3_console, cli_params)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Execute a typo3_console task with cli_params in a specific directory
|
63
|
+
#
|
64
|
+
# @param path [String] file path where task is to be executed
|
65
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
66
|
+
# @return [Boolean] returns true/false as success of execution
|
67
|
+
def typo3_console_in_path(path, *cli_params)
|
68
|
+
path_to_typo3_console = File.join(path, fetch(:path_to_typo3_console))
|
69
|
+
run_script(path, path_to_typo3_console, cli_params)
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns the last results of invocations of a a typo3_console task with cli_params
|
73
|
+
# Invocation can be controlled by the result of a given block.
|
74
|
+
# True repeats the invocation until maximum_loop_count is reached.
|
75
|
+
# False stops invocation regardless of loop count.
|
76
|
+
#
|
77
|
+
# @param maximum_loop_count [Integer] number of maximum attempts to run task
|
78
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
79
|
+
# @return [String] returns the last result of executing task
|
80
|
+
def capture_typo3_console_in_loop(maximum_loop_count, *cli_params, &block)
|
81
|
+
path_to_typo3_console = File.join(current_path, fetch(:path_to_typo3_console))
|
82
|
+
capture_script_in_loop(current_path, path_to_typo3_console, maximum_loop_count, cli_params, &block)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Returns the last results of invocations of a typo3_console task with cli_params
|
86
|
+
# Invocation can be controlled by the result of a given block.
|
87
|
+
# True repeats the invocation until maximum_loop_count is reached.
|
88
|
+
# False stops invocation regardless of loop count.
|
89
|
+
#
|
90
|
+
# @param path [String] file path where task is to be executed
|
91
|
+
# @param maximum_loop_count [Integer] number of maximum attempts to run task
|
92
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
93
|
+
# @return [String] returns the last result of executing task
|
94
|
+
def capture_typo3_console_in_path_in_loop(path, maximum_loop_count, *cli_params, &block)
|
95
|
+
path_to_typo3_console = File.join(path, fetch(:path_to_typo3_console))
|
96
|
+
capture_script_in_loop(path, path_to_typo3_console, maximum_loop_count, cli_params, &block)
|
97
|
+
end
|
98
|
+
|
99
|
+
# Execute a script with cli_params in a specific directory
|
100
|
+
#
|
101
|
+
# @param path [String] file path where task is to be executed
|
102
|
+
# @param script [String] path to script
|
103
|
+
# @param cli_params [Array] list of arguments for typo3/cli_dispatch.phpsh
|
104
|
+
# @return [Boolean] returns true/false as success of execution
|
105
|
+
def run_script(path, script, *cli_params)
|
106
|
+
on primary :backend do |host|
|
107
|
+
within path do
|
108
|
+
unless test " [ -e #{script} ] "
|
109
|
+
error I18n.t('resource.not_exists_on_host', resource: script, host: host.hostname, scope: :dkdeploy)
|
110
|
+
next
|
111
|
+
end
|
112
|
+
|
113
|
+
with fetch(:typo3_environment_cli) do
|
114
|
+
execute :php, script, *cli_params
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# Returns the last results of invocations of a script
|
121
|
+
# Invocation can be controlled by the result of a given block.
|
122
|
+
# True repeats the invocation until maximum_loop_count is reached.
|
123
|
+
# False stops invocation regardless of loop count.
|
124
|
+
#
|
125
|
+
# @param path [String] file path where task is to be executed
|
126
|
+
# @param script [String] path to script
|
127
|
+
# @param maximum_loop_count [Integer] number of maximum attempts to run task
|
128
|
+
# @param cli_params [Array] list of arguments for the script
|
129
|
+
# @return [String] returns the last result of executing task
|
130
|
+
def capture_script_in_loop(path, script, maximum_loop_count, *cli_params)
|
131
|
+
output = nil
|
132
|
+
|
133
|
+
on primary :backend do |host|
|
134
|
+
within path do
|
135
|
+
unless test "[ -e #{script} ]"
|
136
|
+
error I18n.t('resource.not_exists_on_host', resource: script, host: host.hostname, scope: :dkdeploy)
|
137
|
+
next
|
138
|
+
end
|
139
|
+
|
140
|
+
loop_counter = 1
|
141
|
+
|
142
|
+
while loop_counter <= maximum_loop_count
|
143
|
+
info I18n.t('tasks.cli.show_loop_counter', loop_counter: loop_counter, scope: :dkdeploy)
|
144
|
+
with fetch(:typo3_environment_cli) do
|
145
|
+
output = capture :php, script, *cli_params
|
146
|
+
end
|
147
|
+
if block_given?
|
148
|
+
unless yield(output, loop_counter, self)
|
149
|
+
info I18n.t('tasks.cli.block_yields_false', loop_counter: loop_counter, scope: :dkdeploy)
|
150
|
+
break
|
151
|
+
end
|
152
|
+
end
|
153
|
+
loop_counter += 1
|
154
|
+
end
|
155
|
+
info I18n.t('tasks.cli.maximum_calls_reached', scope: :dkdeploy) if loop_counter > maximum_loop_count
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
output
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Dkdeploy
|
2
|
+
module Typo3
|
3
|
+
module Cms
|
4
|
+
module Helpers
|
5
|
+
# Erb related helpers
|
6
|
+
module Erb
|
7
|
+
# Remove "<?php" at beginning and "?>" at end of string
|
8
|
+
#
|
9
|
+
# @param php_code [String] PHP Code to sanitize
|
10
|
+
# @return [String]
|
11
|
+
def sanitize_php(php_code)
|
12
|
+
php_code.strip.reverse.chomp('php?<').reverse.chomp('?>').strip.concat("\n")
|
13
|
+
end
|
14
|
+
|
15
|
+
# Return path to default template file for "AdditionalConfiguration.php" at gem
|
16
|
+
#
|
17
|
+
# @return [String]
|
18
|
+
def default_template_file
|
19
|
+
File.join(__dir__, '..', '..', '..', '..', '..', 'vendor', 'AdditionalConfiguration.php.erb')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'i18n'
|
2
|
+
|
3
|
+
en = {
|
4
|
+
questions: {
|
5
|
+
create_new_keys: "Please enter 'yes' to create new Caretaker keys (everything else will not touch existing keys)",
|
6
|
+
additional_configuration_template: 'Please specify the location for the additional configuration file (e.g. vendor/AdditionalConfiguration.php.erb)',
|
7
|
+
typo3_languages_to_translate: 'Please specify the languages you wish to translate',
|
8
|
+
path: 'please specify the path'
|
9
|
+
},
|
10
|
+
dsl: {
|
11
|
+
invoke_for_server: {
|
12
|
+
set_filter: "Invoking task '%{task}' for server '%{host}'"
|
13
|
+
}
|
14
|
+
},
|
15
|
+
tasks: {
|
16
|
+
caretaker: {
|
17
|
+
errors: {
|
18
|
+
public_key_not_found: 'Public key at %{public_key_path} on %{host} not found!',
|
19
|
+
creating_keys_failed: 'Could not create Caretaker SSL keys on %{host}!',
|
20
|
+
configuring_keys_failed: 'Could not configure Caretaker SSL keys on %{host}!'
|
21
|
+
},
|
22
|
+
info: {
|
23
|
+
output_file: 'Output file %{output_file} (%{host}):',
|
24
|
+
output_file_one_liner: 'One line public key (%{host}):'
|
25
|
+
}
|
26
|
+
},
|
27
|
+
cli: {
|
28
|
+
show_loop_counter: 'Running cli task for the %{loop_counter}. time',
|
29
|
+
maximum_calls_reached: 'Maximum number of cli calls reached!',
|
30
|
+
block_yields_false: 'Breaking loop after %{loop_counter} run because block yields false'
|
31
|
+
},
|
32
|
+
db: {
|
33
|
+
username: 'Please enter TYPO3 admin username',
|
34
|
+
password: 'Please enter TYPO3 admin password'
|
35
|
+
},
|
36
|
+
fetch_extension: {
|
37
|
+
extension_name: 'Please enter name of extension',
|
38
|
+
extension_not_found: "Extension '%{extension}' not found!",
|
39
|
+
download: 'Downloading %{extension}...',
|
40
|
+
rsync: 'Rsyncing %{extension}...'
|
41
|
+
},
|
42
|
+
clear_temp: {
|
43
|
+
clear: 'Clearing typo3temp directory...'
|
44
|
+
},
|
45
|
+
install_tool: {
|
46
|
+
enable: 'Enabling install tool...',
|
47
|
+
disable: 'Disabling install tool...'
|
48
|
+
},
|
49
|
+
fetch_localconf: {
|
50
|
+
fetch: 'Fetching localconf...'
|
51
|
+
},
|
52
|
+
typoscript: {
|
53
|
+
copy_source: 'Please enter a common prefix for all config paths:',
|
54
|
+
config_paths: 'Please enter a space separated list of remote config paths:',
|
55
|
+
pagets_paths: 'Please enter a space separated list of remote PageTS paths:',
|
56
|
+
userts_paths: 'Please enter a space separated list of remote UserTS paths:',
|
57
|
+
config_file: 'Please enter the name of the config file:',
|
58
|
+
pagets_file: 'Please enter the name of the PageTS file:',
|
59
|
+
userts_file: 'Please enter the name of the UserTS file:',
|
60
|
+
typoscript_config_base_path: 'Please enter the base path of config files:',
|
61
|
+
typoscript_pagets_base_path: 'Please enter the base path of PageTS files:',
|
62
|
+
typoscript_userts_base_path: 'Please enter the base path of UserTS files:',
|
63
|
+
skipping: 'Skipping %{file_or_directory} because it does not exist...',
|
64
|
+
uploading: 'Uploading %{local_file} to %{remote_file}...',
|
65
|
+
uploaded: 'Uploaded %{local_file} to %{remote_file}.',
|
66
|
+
merged: 'Merged %{source_file} with %{target_file}.'
|
67
|
+
},
|
68
|
+
encryption_key: {
|
69
|
+
enter_key: 'Enter an encryption key (should be at least 9 characters):',
|
70
|
+
validation_error: 'Encryption key is empty or less than 9 characters.'
|
71
|
+
},
|
72
|
+
install_tool_password: {
|
73
|
+
enter_password: 'Install tool password:',
|
74
|
+
validation_error: 'Install tool password is empty.'
|
75
|
+
},
|
76
|
+
processed_file_checksums: {
|
77
|
+
typo3_version: 'Running TYPO3 CMS Version %{typo3_version}',
|
78
|
+
task_does_not_apply: 'This task does not apply!',
|
79
|
+
nothing_to_do: 'No updates to perform. All processed files checksums have already been updated.',
|
80
|
+
all_done: 'All processed file checksums updated!'
|
81
|
+
},
|
82
|
+
typo3: {
|
83
|
+
cms: {
|
84
|
+
v6: {
|
85
|
+
generate_additional_configuration_template: {
|
86
|
+
info: 'No need to generate template. There already is one in %{local_configuration_template}'
|
87
|
+
},
|
88
|
+
setup_additional_configuration: {
|
89
|
+
no_template_found: 'Can not find "AdditionalConfiguration.php" template at "%{configuration_template}"',
|
90
|
+
upload_info: 'Uploading merged AdditionalConfiguration to %{remote_configuration_file}',
|
91
|
+
no_local_file_info: '%{local_configuration_template} does not exist. File upload cancelled.',
|
92
|
+
file_not_found_and_ignored: 'Configuration file %{file} does not exist. File ignored.'
|
93
|
+
},
|
94
|
+
remove_extensions: {
|
95
|
+
info: 'The following extensions were removed: %{removed_extensions}',
|
96
|
+
no_extension_found: 'No installed extension found'
|
97
|
+
}
|
98
|
+
},
|
99
|
+
update_database: {
|
100
|
+
still_updates_available: 'Still database schema updates available. See log for details.'
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
I18n.backend.store_translations(:en, dkdeploy: en)
|
108
|
+
|
109
|
+
if I18n.respond_to?(:enforce_available_locales=)
|
110
|
+
I18n.enforce_available_locales = true
|
111
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
include Capistrano::DSL
|
2
|
+
|
3
|
+
namespace :typo3 do
|
4
|
+
namespace :cms do
|
5
|
+
namespace :cache do
|
6
|
+
desc 'Clear TYPO3 file cache directory'
|
7
|
+
task :clear_file_cache do |task|
|
8
|
+
on release_roles :app do
|
9
|
+
cache_path = File.join release_path, 'typo3temp', 'Cache'
|
10
|
+
execute :rm, '-rf', cache_path if test "[ -d #{cache_path} ]"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Reenable Task to allow multiple invokation
|
14
|
+
task.reenable
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'capistrano/i18n'
|
3
|
+
require 'dkdeploy/typo3/cms/i18n'
|
4
|
+
require 'dkdeploy/typo3/cms/helpers/cli'
|
5
|
+
|
6
|
+
include Dkdeploy::Typo3::Cms::Helpers::Cli
|
7
|
+
|
8
|
+
namespace :caretaker do
|
9
|
+
desc 'Create - if necessary or configured - and configure TYPO3 Caretaker SSL keys'
|
10
|
+
task :create_keys, :create_new_caretaker_keys do |_, args|
|
11
|
+
create_new_keys = 'yes' == ask_variable(args, :create_new_caretaker_keys, 'questions.create_new_keys')
|
12
|
+
|
13
|
+
on roles :app do |server|
|
14
|
+
key_is_missing = !test("[ -f #{fetch(:caretaker_private_key_path)} ]")
|
15
|
+
|
16
|
+
if create_new_keys || key_is_missing
|
17
|
+
begin
|
18
|
+
execute :mkdir, '-p', File.join(shared_path, 'config')
|
19
|
+
execute :openssl, 'genrsa', '-out', fetch(:caretaker_private_key_path), '2048', '2>/dev/null'
|
20
|
+
execute :openssl, 'rsa', '-in', fetch(:caretaker_private_key_path), '-pubout', '-out', fetch(:caretaker_public_key_path), '2>&1'
|
21
|
+
rescue SSHKit::Command::Failed
|
22
|
+
error I18n.t('tasks.caretaker.errors.creating_keys_failed', host: server.hostname, scope: :dkdeploy)
|
23
|
+
execute :rm, '-f', fetch(:caretaker_private_key_path)
|
24
|
+
execute :rm, '-f', fetch(:caretaker_public_key_path)
|
25
|
+
exit 1
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
begin
|
30
|
+
create_caretaker_instance_keys_template = ERB.new(File.read(fetch(:create_caretaker_instance_keys_template)), nil, '>')
|
31
|
+
create_caretaker_instance_keys_content = create_caretaker_instance_keys_template.result(binding)
|
32
|
+
upload! StringIO.new(create_caretaker_instance_keys_content), fetch(:create_caretaker_instance_keys_path), scp: true
|
33
|
+
execute :php, '-f', fetch(:create_caretaker_instance_keys_path)
|
34
|
+
execute :rm, '-f', fetch(:create_caretaker_instance_keys_path)
|
35
|
+
rescue SSHKit::Command::Failed
|
36
|
+
error I18n.t('tasks.caretaker.errors.configuring_keys_failed', host: server.hostname, scope: :dkdeploy)
|
37
|
+
execute :rm, '-r', fetch(:create_caretaker_instance_keys_path)
|
38
|
+
execute :rm, '-r', fetch(:caretaker_instance_keys_path)
|
39
|
+
exit 1
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
desc 'Display Caretaker SSL public key'
|
45
|
+
task :show_public_key do
|
46
|
+
on roles :app do |server|
|
47
|
+
if test("[ -f #{fetch(:caretaker_public_key_path)} ]")
|
48
|
+
public_key = capture :cat, fetch(:caretaker_public_key_path)
|
49
|
+
else
|
50
|
+
error I18n.t('tasks.caretaker.errors.public_key_not_found', public_key_path: fetch(:caretaker_public_key_path), host: server.hostname, scope: :dkdeploy)
|
51
|
+
exit 1
|
52
|
+
end
|
53
|
+
|
54
|
+
info I18n.t('tasks.caretaker.info.output_file', output_file: fetch(:caretaker_public_key_path), host: server.hostname, scope: :dkdeploy)
|
55
|
+
info public_key
|
56
|
+
info I18n.t('tasks.caretaker.info.output_file_one_liner', output_file: fetch(:caretaker_public_key_path), host: server.hostname, scope: :dkdeploy)
|
57
|
+
info public_key.gsub(/\n/m, '|')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'dkdeploy/typo3/cms/helpers/cli'
|
3
|
+
|
4
|
+
include Capistrano::DSL
|
5
|
+
include Dkdeploy::Typo3::Cms::Helpers::Cli
|
6
|
+
|
7
|
+
namespace :typo3 do
|
8
|
+
namespace :cms do
|
9
|
+
namespace :cli do
|
10
|
+
desc 'Execute TYPO3 cli task'
|
11
|
+
task :run do |task, args|
|
12
|
+
typo3_cli(args.extras)
|
13
|
+
|
14
|
+
# Reenable Task to allow multiple invokation
|
15
|
+
task.reenable
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'Execute a typo3_console task'
|
19
|
+
task :typo3_console do |task, args|
|
20
|
+
typo3_console(args.extras)
|
21
|
+
|
22
|
+
# Reenable Task to allow multiple invokation
|
23
|
+
task.reenable
|
24
|
+
end
|
25
|
+
|
26
|
+
desc 'Uploads wrapper script to initialize PHP with environment variables'
|
27
|
+
task :upload_wrapper do
|
28
|
+
path_to_typo_cms_cli_dispatch = File.join release_path, 'typo3_cms_cli_dispatch.sh'
|
29
|
+
path_to_cli_dispatch = File.join release_path, 'typo3', 'cli_dispatch.phpsh'
|
30
|
+
|
31
|
+
bash_path = SSHKit.config.command_map[:bash]
|
32
|
+
wrapper_file_content = "#!#{bash_path}\n"
|
33
|
+
fetch(:typo3_environment_cli).each do |variable_name, variable_value|
|
34
|
+
wrapper_file_content << "#{variable_name.to_s.upcase}='#{variable_value}' "
|
35
|
+
end
|
36
|
+
|
37
|
+
php_interpreter_path = SSHKit.config.command_map[:php]
|
38
|
+
wrapper_file_content << "#{php_interpreter_path} #{path_to_cli_dispatch} $@\n"
|
39
|
+
on release_roles :backend do
|
40
|
+
upload! StringIO.new(wrapper_file_content), path_to_typo_cms_cli_dispatch
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|