eventhub-command 0.5.0 → 0.6.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/.gitignore +17 -17
- data/Gemfile +2 -2
- data/Rakefile +44 -44
- data/eh.rdoc +4 -4
- data/lib/deployer.rb +1 -0
- data/lib/deployer/base_deployer.rb +149 -149
- data/lib/deployer/go_deployer.rb +112 -0
- data/lib/deployer/mule_deployer.rb +85 -85
- data/lib/deployer/net_ssh_extension.rb +45 -45
- data/lib/deployer/stage.rb +36 -36
- data/lib/eh/commands/deploy.rb +19 -12
- data/lib/eh/commands/generate.rb +91 -91
- data/lib/eh/commands/package.rb +27 -8
- data/lib/eh/commands/repository.rb +81 -81
- data/lib/eh/settings.rb +9 -1
- data/lib/eh/version.rb +1 -1
- data/lib/packager.rb +1 -0
- data/lib/packager/go.rb +159 -0
- data/test/default_test.rb +14 -14
- data/test/test_helper.rb +9 -9
- data/todo.txt +8 -8
- metadata +5 -4
data/lib/eh/commands/generate.rb
CHANGED
@@ -1,91 +1,91 @@
|
|
1
|
-
desc 'Generates a template for a processor'
|
2
|
-
arg_name 'module_name processor_name'
|
3
|
-
command :generate do |c|
|
4
|
-
c.command :processor do |c|
|
5
|
-
c.action do |global_options, options, args|
|
6
|
-
require 'active_support/core_ext/string/inflections'
|
7
|
-
require 'fileutils'
|
8
|
-
require 'erb'
|
9
|
-
|
10
|
-
if args.size != 2
|
11
|
-
puts "Needs exactly 2 arguments: eh generate_processor ModuleName ProcessorName"
|
12
|
-
exit -1
|
13
|
-
end
|
14
|
-
|
15
|
-
processor_module_name = args[0].camelcase
|
16
|
-
processor_class_name = args[1].camelcase
|
17
|
-
underscored_processor_module_name = processor_module_name.underscore
|
18
|
-
underscored_processor_class_name = processor_class_name.underscore
|
19
|
-
|
20
|
-
destination_dir = Eh::Settings.current.processors_src_dir
|
21
|
-
destination_dir = File.join(destination_dir, "#{underscored_processor_module_name}.#{underscored_processor_class_name}")
|
22
|
-
|
23
|
-
if Dir.exists? destination_dir
|
24
|
-
puts "#{destination_dir} already exists!"
|
25
|
-
exit -1
|
26
|
-
end
|
27
|
-
|
28
|
-
template_tmp_dir = Eh::Settings.current.template_tmp_dir
|
29
|
-
checkout_git_repo(template_tmp_dir)
|
30
|
-
|
31
|
-
FileUtils.cp_r template_tmp_dir, destination_dir
|
32
|
-
FileUtils.rm_rf File.join(destination_dir, ".git")
|
33
|
-
FileUtils.rm File.join(destination_dir, 'README.md')
|
34
|
-
|
35
|
-
puts "Generating processor #{processor_module_name}::#{processor_class_name} in #{destination_dir}"
|
36
|
-
Dir.glob(destination_dir + "/**/*.erb") do |file|
|
37
|
-
template = ERB.new(File.read(file))
|
38
|
-
|
39
|
-
File.open(file, "w") do |writeable_file|
|
40
|
-
writeable_file.puts template.result(binding)
|
41
|
-
end
|
42
|
-
|
43
|
-
FileUtils.mv file, File.join(File.dirname(file), File.basename(file, ".erb"))
|
44
|
-
end
|
45
|
-
|
46
|
-
replacements = [
|
47
|
-
["underscored_processor_module_name", underscored_processor_module_name],
|
48
|
-
["underscored_processor_class_name", underscored_processor_class_name],
|
49
|
-
["processor_module_name", processor_module_name],
|
50
|
-
["processor_class_name", processor_class_name]
|
51
|
-
]
|
52
|
-
|
53
|
-
rename_files_with_replacements(destination_dir, replacements)
|
54
|
-
|
55
|
-
FileUtils.rm_rf template_tmp_dir
|
56
|
-
|
57
|
-
puts "Done."
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def shallow_clone_git_repository(source_url, destination_dir)
|
62
|
-
system("git clone --depth 1 #{source_url} #{destination_dir}")
|
63
|
-
end
|
64
|
-
|
65
|
-
def rename_files_with_replacements(destination_dir, replacements)
|
66
|
-
Dir.glob(destination_dir + "/**/*") do |src_file_path|
|
67
|
-
if File.file? src_file_path
|
68
|
-
dir = File.dirname src_file_path
|
69
|
-
file_with_replacements = File.basename src_file_path
|
70
|
-
|
71
|
-
replacements.each do |find_string, replace_string|
|
72
|
-
file_with_replacements.sub!(find_string, replace_string)
|
73
|
-
end
|
74
|
-
|
75
|
-
dest_file_path = File.join(dir, file_with_replacements)
|
76
|
-
|
77
|
-
if src_file_path != dest_file_path
|
78
|
-
FileUtils.mv src_file_path, dest_file_path
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def checkout_git_repo(destination_dir)
|
85
|
-
template_repository_url = Eh::Settings.current.processor_template_repository_url
|
86
|
-
puts "Checking out latest template from #{template_repository_url}"
|
87
|
-
FileUtils.rm_rf(destination_dir)
|
88
|
-
FileUtils.mkdir(destination_dir)
|
89
|
-
shallow_clone_git_repository(template_repository_url, destination_dir)
|
90
|
-
end
|
91
|
-
end
|
1
|
+
desc 'Generates a template for a processor'
|
2
|
+
arg_name 'module_name processor_name'
|
3
|
+
command :generate do |c|
|
4
|
+
c.command :processor do |c|
|
5
|
+
c.action do |global_options, options, args|
|
6
|
+
require 'active_support/core_ext/string/inflections'
|
7
|
+
require 'fileutils'
|
8
|
+
require 'erb'
|
9
|
+
|
10
|
+
if args.size != 2
|
11
|
+
puts "Needs exactly 2 arguments: eh generate_processor ModuleName ProcessorName"
|
12
|
+
exit -1
|
13
|
+
end
|
14
|
+
|
15
|
+
processor_module_name = args[0].camelcase
|
16
|
+
processor_class_name = args[1].camelcase
|
17
|
+
underscored_processor_module_name = processor_module_name.underscore
|
18
|
+
underscored_processor_class_name = processor_class_name.underscore
|
19
|
+
|
20
|
+
destination_dir = Eh::Settings.current.processors_src_dir
|
21
|
+
destination_dir = File.join(destination_dir, "#{underscored_processor_module_name}.#{underscored_processor_class_name}")
|
22
|
+
|
23
|
+
if Dir.exists? destination_dir
|
24
|
+
puts "#{destination_dir} already exists!"
|
25
|
+
exit -1
|
26
|
+
end
|
27
|
+
|
28
|
+
template_tmp_dir = Eh::Settings.current.template_tmp_dir
|
29
|
+
checkout_git_repo(template_tmp_dir)
|
30
|
+
|
31
|
+
FileUtils.cp_r template_tmp_dir, destination_dir
|
32
|
+
FileUtils.rm_rf File.join(destination_dir, ".git")
|
33
|
+
FileUtils.rm File.join(destination_dir, 'README.md')
|
34
|
+
|
35
|
+
puts "Generating processor #{processor_module_name}::#{processor_class_name} in #{destination_dir}"
|
36
|
+
Dir.glob(destination_dir + "/**/*.erb") do |file|
|
37
|
+
template = ERB.new(File.read(file))
|
38
|
+
|
39
|
+
File.open(file, "w") do |writeable_file|
|
40
|
+
writeable_file.puts template.result(binding)
|
41
|
+
end
|
42
|
+
|
43
|
+
FileUtils.mv file, File.join(File.dirname(file), File.basename(file, ".erb"))
|
44
|
+
end
|
45
|
+
|
46
|
+
replacements = [
|
47
|
+
["underscored_processor_module_name", underscored_processor_module_name],
|
48
|
+
["underscored_processor_class_name", underscored_processor_class_name],
|
49
|
+
["processor_module_name", processor_module_name],
|
50
|
+
["processor_class_name", processor_class_name]
|
51
|
+
]
|
52
|
+
|
53
|
+
rename_files_with_replacements(destination_dir, replacements)
|
54
|
+
|
55
|
+
FileUtils.rm_rf template_tmp_dir
|
56
|
+
|
57
|
+
puts "Done."
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def shallow_clone_git_repository(source_url, destination_dir)
|
62
|
+
system("git clone --depth 1 #{source_url} #{destination_dir}")
|
63
|
+
end
|
64
|
+
|
65
|
+
def rename_files_with_replacements(destination_dir, replacements)
|
66
|
+
Dir.glob(destination_dir + "/**/*") do |src_file_path|
|
67
|
+
if File.file? src_file_path
|
68
|
+
dir = File.dirname src_file_path
|
69
|
+
file_with_replacements = File.basename src_file_path
|
70
|
+
|
71
|
+
replacements.each do |find_string, replace_string|
|
72
|
+
file_with_replacements.sub!(find_string, replace_string)
|
73
|
+
end
|
74
|
+
|
75
|
+
dest_file_path = File.join(dir, file_with_replacements)
|
76
|
+
|
77
|
+
if src_file_path != dest_file_path
|
78
|
+
FileUtils.mv src_file_path, dest_file_path
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def checkout_git_repo(destination_dir)
|
85
|
+
template_repository_url = Eh::Settings.current.processor_template_repository_url
|
86
|
+
puts "Checking out latest template from #{template_repository_url}"
|
87
|
+
FileUtils.rm_rf(destination_dir)
|
88
|
+
FileUtils.mkdir(destination_dir)
|
89
|
+
shallow_clone_git_repository(template_repository_url, destination_dir)
|
90
|
+
end
|
91
|
+
end
|
data/lib/eh/commands/package.rb
CHANGED
@@ -3,14 +3,14 @@ command :package do |c|
|
|
3
3
|
c.flag([:s, :source], :desc => "Source directory to read processors from.")
|
4
4
|
c.flag([:d, :destination], :desc => "Destination directory to place created zip files.")
|
5
5
|
|
6
|
-
c.desc 'Packages processors to zip files
|
6
|
+
c.desc 'Packages ruby processors to zip files'
|
7
7
|
c.arg_name '[processor_name,[other_processor_name,pattern*]]'
|
8
|
-
c.command :ruby do |
|
9
|
-
|
10
|
-
|
8
|
+
c.command :ruby do |ruby|
|
9
|
+
ruby.flag([:i, :include], :desc => "Include processors by name format: [processor_name,[other_processor_name,pattern*]]", :type => String, :long_desc => "You can specify multiple processors by providing a comma-separated list as well as pattern using '*'")
|
10
|
+
ruby.flag([:x, :exclude], :desc => "Exclude processors by name format: [processor_name,[other_processor_name,pattern*]]", :type => String, :long_desc => "You can specify multiple processors by providing a comma-separated list as well as pattern using '*'")
|
11
11
|
|
12
|
-
|
13
|
-
options['s'] ||= Eh::Settings.current.
|
12
|
+
ruby.action do |global_options, options, args|
|
13
|
+
options['s'] ||= Eh::Settings.current.ruby_processors_src_dir
|
14
14
|
options['d'] ||= Eh::Settings.current.ruby_release_dir
|
15
15
|
source_dir = options.fetch('s')
|
16
16
|
destination_dir = options.fetch('d')
|
@@ -21,9 +21,28 @@ command :package do |c|
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
c.desc 'Packages go processors to zip files'
|
25
|
+
c.command :go do |go|
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
+
go.flag([:p, :platform], :desc => "Define target platform [linux, osx, window]")
|
28
|
+
|
29
|
+
go.action do |global_options, options, args|
|
30
|
+
options['s'] ||= Eh::Settings.current.go_processors_src_dir
|
31
|
+
options['d'] ||= Eh::Settings.current.go_release_dir
|
32
|
+
source_dir = options.fetch('s')
|
33
|
+
destination_dir = options.fetch('d')
|
34
|
+
include_pattern = options['i'] || args[0]
|
35
|
+
exclude_pattern = options['x']
|
36
|
+
platform = options['p'] || 'linux'
|
37
|
+
packager = Packager::Go.new(source_dir, destination_dir, include_pattern, exclude_pattern, platform)
|
38
|
+
packager.package
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
c.desc 'Packages rails console app to zip file'
|
44
|
+
c.command :rails do |rails|
|
45
|
+
rails.action do |global_options, options, args|
|
27
46
|
options['s'] ||= Eh::Settings.current.rails_src_dir
|
28
47
|
options['d'] ||= Eh::Settings.current.rails_release_dir
|
29
48
|
source_dir = options.fetch('s')
|
@@ -1,81 +1,81 @@
|
|
1
|
-
desc "manage repositories"
|
2
|
-
|
3
|
-
command :repository do |command|
|
4
|
-
command.desc "Lists all avaiable repositories"
|
5
|
-
command.command :list do |command|
|
6
|
-
command.action do |global_options,options,args|
|
7
|
-
|
8
|
-
Eh::Settings.current.repositories.each_with_index do |repository, index|
|
9
|
-
if repository.current?
|
10
|
-
puts "#{index + 1}: #{repository.url} (current)"
|
11
|
-
else
|
12
|
-
puts "#{index + 1}: #{repository.url}"
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
command.desc "selects a repository: eh repository select INDEX"
|
19
|
-
command.command :select do |command|
|
20
|
-
command.action do |global_options,options,args|
|
21
|
-
if Eh::Settings.current.repositories.length == 0
|
22
|
-
raise "No repository configured so far"
|
23
|
-
end
|
24
|
-
if args.length != 1
|
25
|
-
raise "Need exactly 1 arguments: index"
|
26
|
-
end
|
27
|
-
selected = args[0].to_i
|
28
|
-
Eh::Settings.current.data['repositories'].each_with_index do |repository, index|
|
29
|
-
repository['current'] = (index + 1) == selected
|
30
|
-
end
|
31
|
-
puts "Selected #{Eh::Settings.current.repository.url}"
|
32
|
-
Eh::Settings.current.write
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
command.desc 'add a repository to the config: eh repository add URL DIR USERNAME PASSWORD'
|
37
|
-
command.command :add do |command|
|
38
|
-
command.action do |global_options, options, args|
|
39
|
-
if args.length != 4
|
40
|
-
raise "Need exactly 4 arguments: URL, DIR, USERNAME, PASSWORD"
|
41
|
-
end
|
42
|
-
Eh::Settings.current.data['repositories'] ||= []
|
43
|
-
|
44
|
-
# check if same repo already exists
|
45
|
-
exists = Eh::Settings.current.data['repositories'].any? do |repository|
|
46
|
-
repository['url'] == args[0]
|
47
|
-
end
|
48
|
-
if exists
|
49
|
-
raise "Already configured repository for '#{args[0]}'"
|
50
|
-
end
|
51
|
-
|
52
|
-
Eh::Settings.current.data['repositories'] << {
|
53
|
-
'url' => args[0],
|
54
|
-
'dir' => args[1],
|
55
|
-
'deploy_username' => args[2],
|
56
|
-
'deploy_password' => args[3],
|
57
|
-
'current' => (Eh::Settings.current.data['repositories'].length == 0)
|
58
|
-
}
|
59
|
-
Eh::Settings.current.write
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
command.desc 'remove a repository from the config: eh repository remove INDEX'
|
65
|
-
command.command :remove do |command|
|
66
|
-
command.action do |global_options, options, args|
|
67
|
-
|
68
|
-
if args.length != 1
|
69
|
-
raise "Need exactly 1 arguments: index"
|
70
|
-
end
|
71
|
-
selected = args[0].to_i
|
72
|
-
|
73
|
-
if Eh::Settings.current.repositories[selected - 1].nil?
|
74
|
-
raise "No repository with index #{selected}"
|
75
|
-
end
|
76
|
-
|
77
|
-
Eh::Settings.current.data['repositories'].delete_at(selected - 1)
|
78
|
-
Eh::Settings.current.write
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
1
|
+
desc "manage repositories"
|
2
|
+
|
3
|
+
command :repository do |command|
|
4
|
+
command.desc "Lists all avaiable repositories"
|
5
|
+
command.command :list do |command|
|
6
|
+
command.action do |global_options,options,args|
|
7
|
+
|
8
|
+
Eh::Settings.current.repositories.each_with_index do |repository, index|
|
9
|
+
if repository.current?
|
10
|
+
puts "#{index + 1}: #{repository.url} (current)"
|
11
|
+
else
|
12
|
+
puts "#{index + 1}: #{repository.url}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
command.desc "selects a repository: eh repository select INDEX"
|
19
|
+
command.command :select do |command|
|
20
|
+
command.action do |global_options,options,args|
|
21
|
+
if Eh::Settings.current.repositories.length == 0
|
22
|
+
raise "No repository configured so far"
|
23
|
+
end
|
24
|
+
if args.length != 1
|
25
|
+
raise "Need exactly 1 arguments: index"
|
26
|
+
end
|
27
|
+
selected = args[0].to_i
|
28
|
+
Eh::Settings.current.data['repositories'].each_with_index do |repository, index|
|
29
|
+
repository['current'] = (index + 1) == selected
|
30
|
+
end
|
31
|
+
puts "Selected #{Eh::Settings.current.repository.url}"
|
32
|
+
Eh::Settings.current.write
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
command.desc 'add a repository to the config: eh repository add URL DIR USERNAME PASSWORD'
|
37
|
+
command.command :add do |command|
|
38
|
+
command.action do |global_options, options, args|
|
39
|
+
if args.length != 4
|
40
|
+
raise "Need exactly 4 arguments: URL, DIR, USERNAME, PASSWORD"
|
41
|
+
end
|
42
|
+
Eh::Settings.current.data['repositories'] ||= []
|
43
|
+
|
44
|
+
# check if same repo already exists
|
45
|
+
exists = Eh::Settings.current.data['repositories'].any? do |repository|
|
46
|
+
repository['url'] == args[0]
|
47
|
+
end
|
48
|
+
if exists
|
49
|
+
raise "Already configured repository for '#{args[0]}'"
|
50
|
+
end
|
51
|
+
|
52
|
+
Eh::Settings.current.data['repositories'] << {
|
53
|
+
'url' => args[0],
|
54
|
+
'dir' => args[1],
|
55
|
+
'deploy_username' => args[2],
|
56
|
+
'deploy_password' => args[3],
|
57
|
+
'current' => (Eh::Settings.current.data['repositories'].length == 0)
|
58
|
+
}
|
59
|
+
Eh::Settings.current.write
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
command.desc 'remove a repository from the config: eh repository remove INDEX'
|
65
|
+
command.command :remove do |command|
|
66
|
+
command.action do |global_options, options, args|
|
67
|
+
|
68
|
+
if args.length != 1
|
69
|
+
raise "Need exactly 1 arguments: index"
|
70
|
+
end
|
71
|
+
selected = args[0].to_i
|
72
|
+
|
73
|
+
if Eh::Settings.current.repositories[selected - 1].nil?
|
74
|
+
raise "No repository with index #{selected}"
|
75
|
+
end
|
76
|
+
|
77
|
+
Eh::Settings.current.data['repositories'].delete_at(selected - 1)
|
78
|
+
Eh::Settings.current.write
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/lib/eh/settings.rb
CHANGED
@@ -109,10 +109,18 @@ class Eh::Settings
|
|
109
109
|
releases_dir('ruby')
|
110
110
|
end
|
111
111
|
|
112
|
-
def
|
112
|
+
def go_release_dir
|
113
|
+
releases_dir('go')
|
114
|
+
end
|
115
|
+
|
116
|
+
def ruby_processors_src_dir
|
113
117
|
File.join(repository.dir, 'src', 'ruby')
|
114
118
|
end
|
115
119
|
|
120
|
+
def go_processors_src_dir
|
121
|
+
File.join(repository.dir, 'src', 'go', 'src', 'github.com', 'cme-eventhub')
|
122
|
+
end
|
123
|
+
|
116
124
|
def rails_src_dir
|
117
125
|
File.join(repository.dir, 'src', 'rails')
|
118
126
|
end
|
data/lib/eh/version.rb
CHANGED
data/lib/packager.rb
CHANGED
data/lib/packager/go.rb
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
class Packager::Go
|
2
|
+
|
3
|
+
PLATFORMS = ['linux','windows','darwin']
|
4
|
+
|
5
|
+
def initialize(source_dir, destination_dir, include_pattern_string, exclude_pattern_string, platform)
|
6
|
+
@source_dir = Pathname.new(source_dir)
|
7
|
+
@destination_dir = Pathname.new(destination_dir)
|
8
|
+
@include_pattern_string = include_pattern_string
|
9
|
+
@exclude_pattern_string = exclude_pattern_string
|
10
|
+
@platform = platform
|
11
|
+
end
|
12
|
+
|
13
|
+
def package
|
14
|
+
assert_at_least_one_processor!
|
15
|
+
validate_platforms!
|
16
|
+
create_destination_dir
|
17
|
+
#copy_deployment_management_files
|
18
|
+
build_processors
|
19
|
+
package_processors
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
attr_reader :source_dir, :destination_dir, :include_pattern_string, :exclude_pattern_string
|
25
|
+
|
26
|
+
def build_processors
|
27
|
+
puts "Build processors"
|
28
|
+
processor_names.each do |processor_name|
|
29
|
+
build_processor(processor_name)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def build_processor(processor_name)
|
34
|
+
print "Build: #{processor_name.light_blue}"
|
35
|
+
system "cd #{processor_source_dir(processor_name)} && GOOS=#{@platform} GOARCH=amd64 go build"
|
36
|
+
puts " done".green
|
37
|
+
end
|
38
|
+
|
39
|
+
def package_processors
|
40
|
+
puts "Start packaging"
|
41
|
+
processor_names.each do |processor_name|
|
42
|
+
package_processor(processor_name)
|
43
|
+
end
|
44
|
+
puts "Done packaging #{processor_names.size} processors"
|
45
|
+
end
|
46
|
+
|
47
|
+
def package_processor(processor_name)
|
48
|
+
print "Package: #{processor_name.light_blue} "
|
49
|
+
remove_destination_file(processor_name)
|
50
|
+
|
51
|
+
Zip::File.open(destination_file_name(processor_name), Zip::File::CREATE) do |zipfile|
|
52
|
+
files = files_to_zip(processor_name)
|
53
|
+
files.each do |file|
|
54
|
+
relative_filename = file.relative_path_from(source_dir)
|
55
|
+
zipfile.add(relative_filename, file)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
puts " done".green
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def files_to_zip(processor_name)
|
63
|
+
# currently take only the binary and the config folder
|
64
|
+
files = Dir.glob(File.join(processor_source_dir(processor_name), 'config', '**', '*'))
|
65
|
+
files << File.join(processor_source_dir(processor_name),processor_name)
|
66
|
+
|
67
|
+
files.map do |file|
|
68
|
+
Pathname.new(file)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def processor_source_dir(processor_name)
|
73
|
+
File.join(source_dir, processor_name)
|
74
|
+
end
|
75
|
+
|
76
|
+
def create_destination_dir
|
77
|
+
FileUtils.mkdir_p(destination_dir)
|
78
|
+
end
|
79
|
+
|
80
|
+
def remove_destination_file(processor_name)
|
81
|
+
FileUtils.rm destination_file_name(processor_name), force: true
|
82
|
+
end
|
83
|
+
|
84
|
+
def destination_file_name(processor_name)
|
85
|
+
File.join(destination_dir, "#{processor_name}.zip")
|
86
|
+
end
|
87
|
+
|
88
|
+
def copy_deployment_management_files
|
89
|
+
Eh::Settings.current.deployment_management_files.each do |file|
|
90
|
+
FileUtils.cp(file, destination_dir)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def assert_at_least_one_processor!
|
95
|
+
if processor_names.empty?
|
96
|
+
raise "There are no processor names. Either your -s directory is empty or you specified a strange combination of include and exclude pattern."
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def validate_platforms!
|
101
|
+
unless PLATFORMS.include?(@platform)
|
102
|
+
raise "Given platform [#{@platform}] is not allowed out of [#{PLATFORMS.join(', ')}]"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def processor_names
|
107
|
+
included_names = existing_processor_names
|
108
|
+
included_names = included_processor_names(included_names)
|
109
|
+
excluded_names = excluded_processor_names(included_names)
|
110
|
+
included_names - excluded_names
|
111
|
+
end
|
112
|
+
|
113
|
+
def existing_processor_names
|
114
|
+
Dir["#{source_dir}/*"].map do |dir|
|
115
|
+
File.basename(dir)
|
116
|
+
end.delete_if do |item|
|
117
|
+
!File.directory?("#{source_dir}/#{item}")
|
118
|
+
end.sort
|
119
|
+
end
|
120
|
+
|
121
|
+
def included_processor_names(names)
|
122
|
+
# if processor names are given as arguments then use them.
|
123
|
+
# can contain wildcards like "console.*" to include all processors
|
124
|
+
# starting with "console.".
|
125
|
+
names.select do |name|
|
126
|
+
include_patterns.empty? || include_patterns.any? do |pattern|
|
127
|
+
wildcard_pattern_match?(pattern, name) || pattern_match?(pattern, name)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def excluded_processor_names(names)
|
133
|
+
names.select do |name|
|
134
|
+
exclude_patterns.any? && exclude_patterns.any? do |pattern|
|
135
|
+
wildcard_pattern_match?(pattern, name) || pattern_match?(pattern, name)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def include_patterns
|
141
|
+
(include_pattern_string || '').split(',').map { |part| part.strip }
|
142
|
+
end
|
143
|
+
|
144
|
+
def exclude_patterns
|
145
|
+
(exclude_pattern_string || '').split(',').map { |part| part.strip }
|
146
|
+
end
|
147
|
+
|
148
|
+
def wildcard_pattern?(pattern)
|
149
|
+
pattern.end_with?('*')
|
150
|
+
end
|
151
|
+
|
152
|
+
def wildcard_pattern_match?(pattern, name)
|
153
|
+
wildcard_pattern?(pattern) && name.start_with?(pattern.gsub('*', ''))
|
154
|
+
end
|
155
|
+
|
156
|
+
def pattern_match?(pattern, name)
|
157
|
+
pattern == name
|
158
|
+
end
|
159
|
+
end
|