eventhub-command 0.3.13 → 0.3.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +17 -17
- data/Gemfile +2 -2
- data/Rakefile +44 -44
- data/eh.gemspec +2 -0
- data/eh.rdoc +4 -4
- data/lib/deployer/base_deployer.rb +149 -149
- data/lib/deployer/executor.rb +19 -3
- 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.rb +2 -0
- data/lib/eh.rb +11 -11
- data/lib/eh/commands/deploy_mule.rb +23 -23
- data/lib/eh/commands/deploy_ruby.rb +25 -25
- data/lib/eh/commands/generate_processor.rb +90 -90
- data/lib/eh/commands/package_ruby.rb +113 -113
- data/lib/eh/commands/proxy.rb +50 -0
- data/lib/eh/commands/repository.rb +81 -81
- data/lib/eh/proxy/proxy.rb +98 -0
- data/lib/eh/proxy/settings/git.rb +37 -0
- data/lib/eh/proxy/settings/shell.rb +46 -0
- data/lib/eh/proxy/settings/svn.rb +61 -0
- data/lib/eh/settings.rb +28 -0
- data/lib/eh/version.rb +1 -1
- data/test/default_test.rb +14 -14
- data/test/test_helper.rb +9 -9
- data/todo.txt +8 -8
- metadata +37 -3
@@ -1,25 +1,25 @@
|
|
1
|
-
desc 'deploy a single ruby processor'
|
2
|
-
arg_name '[processor_name,[other_processor_name,pattern*]]'
|
3
|
-
|
4
|
-
command :deploy_ruby do |c|
|
5
|
-
c.flag([:stage], desc: 'stage', type: String, long_desc: 'Stage where processor is deployed to', default_value: Eh::Settings.current.default_stage)
|
6
|
-
c.flag([:deploy_via], desc: 'how to get hold of the processor: scm or scp', type: String, long_desc: 'copy the processor zip file via scp from this machine or check it out from scm', default_value: 'svn')
|
7
|
-
c.flag([:branch], desc: 'branch', type: String, long_desc: 'What branch to deploy. Only when deploy_via=scm', default_value: 'master')
|
8
|
-
c.flag([:tag], desc: 'tag', type: String, long_desc: 'What tag to deploy. Only when deploy_via=scm', default_value: nil)
|
9
|
-
|
10
|
-
c.switch([:v, :verbose], :desc => 'Show additional output.')
|
11
|
-
|
12
|
-
c.action do |global_options, options, args|
|
13
|
-
begin
|
14
|
-
if args[0]
|
15
|
-
processor_names = args[0].split(',').map(&:strip)
|
16
|
-
else
|
17
|
-
processor_names = nil
|
18
|
-
end
|
19
|
-
Deployer::RubyDeployer.new(processor_names, options).deploy!
|
20
|
-
rescue => e
|
21
|
-
puts e.message
|
22
|
-
puts e.backtrace.join("\n")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
1
|
+
desc 'deploy a single ruby processor'
|
2
|
+
arg_name '[processor_name,[other_processor_name,pattern*]]'
|
3
|
+
|
4
|
+
command :deploy_ruby do |c|
|
5
|
+
c.flag([:stage], desc: 'stage', type: String, long_desc: 'Stage where processor is deployed to', default_value: Eh::Settings.current.default_stage)
|
6
|
+
c.flag([:deploy_via], desc: 'how to get hold of the processor: scm or scp', type: String, long_desc: 'copy the processor zip file via scp from this machine or check it out from scm', default_value: 'svn')
|
7
|
+
c.flag([:branch], desc: 'branch', type: String, long_desc: 'What branch to deploy. Only when deploy_via=scm', default_value: 'master')
|
8
|
+
c.flag([:tag], desc: 'tag', type: String, long_desc: 'What tag to deploy. Only when deploy_via=scm', default_value: nil)
|
9
|
+
|
10
|
+
c.switch([:v, :verbose], :desc => 'Show additional output.')
|
11
|
+
|
12
|
+
c.action do |global_options, options, args|
|
13
|
+
begin
|
14
|
+
if args[0]
|
15
|
+
processor_names = args[0].split(',').map(&:strip)
|
16
|
+
else
|
17
|
+
processor_names = nil
|
18
|
+
end
|
19
|
+
Deployer::RubyDeployer.new(processor_names, options).deploy!
|
20
|
+
rescue => e
|
21
|
+
puts e.message
|
22
|
+
puts e.backtrace.join("\n")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,90 +1,90 @@
|
|
1
|
-
desc 'Generates a template for a processor'
|
2
|
-
arg_name 'module_name processor_name'
|
3
|
-
|
4
|
-
command :generate_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
|
1
|
+
desc 'Generates a template for a processor'
|
2
|
+
arg_name 'module_name processor_name'
|
3
|
+
|
4
|
+
command :generate_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
|
@@ -1,113 +1,113 @@
|
|
1
|
-
desc 'Packages processors to zip files. '
|
2
|
-
arg_name '[processor_name,[other_processor_name,pattern*]]'
|
3
|
-
command :package_ruby do |c|
|
4
|
-
c.flag([:x, :exclude], :desc => "Exclude processors by name.", :type => Array, :long_desc => "You can specify multiple processors by providing a comma-separated list.")
|
5
|
-
c.flag([:d, :destination], :desc => "Destination directory to place created zip files.", :default_value => Eh::Settings.current.ruby_release_dir)
|
6
|
-
c.flag([:s, :source], :desc => "Source directory to read processors from.", :default_value => Eh::Settings.current.processors_src_dir)
|
7
|
-
|
8
|
-
c.action do |global_options, options, args|
|
9
|
-
source_dir = options['s']
|
10
|
-
destination_dir = options['d']
|
11
|
-
|
12
|
-
puts "Will package processors from #{source_dir} to #{destination_dir}"
|
13
|
-
# find all processors in the base directory
|
14
|
-
processor_names = Dir["#{source_dir}/*"].map do |dir|
|
15
|
-
File.basename(dir)
|
16
|
-
end
|
17
|
-
|
18
|
-
# Drop files, only use directories
|
19
|
-
processor_names.delete_if do |item|
|
20
|
-
!File.directory?("#{source_dir}/#{item}")
|
21
|
-
end
|
22
|
-
|
23
|
-
included_processor_names = processor_names
|
24
|
-
|
25
|
-
# if processor names are given as arguments then use them.
|
26
|
-
# can contain wildcards like "console.*" to include all processors
|
27
|
-
# starting with "console.".
|
28
|
-
if args[0]
|
29
|
-
processor_names_from_arguments = args[0].split(',').map(&:strip)
|
30
|
-
|
31
|
-
included_processor_names = included_processor_names.select do |processor_name|
|
32
|
-
processor_names_from_arguments.any? do |query|
|
33
|
-
if query.end_with?('*')
|
34
|
-
processor_name.start_with?(query.gsub('*', ''))
|
35
|
-
else
|
36
|
-
processor_name == query
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# exclude processors specified by -x option, if option is given
|
43
|
-
if options['x']
|
44
|
-
# check if any processor has been excluded from packaging
|
45
|
-
included_processor_names = included_processor_names.select do |processor_name|
|
46
|
-
!options['x'].include?(processor_name)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# make sure we have at least one processor
|
51
|
-
if included_processor_names.empty?
|
52
|
-
raise "There are no processor names. Either your -s directory is empty or you specified a strange combination of -x and -p"
|
53
|
-
end
|
54
|
-
|
55
|
-
# make sure destination directory exists
|
56
|
-
FileUtils.mkdir_p(destination_dir)
|
57
|
-
|
58
|
-
Eh::Settings.current.deployment_management_files.each do |file|
|
59
|
-
FileUtils.cp(file, destination_dir)
|
60
|
-
end
|
61
|
-
|
62
|
-
# Zip all processors
|
63
|
-
included_processor_names.each do |processor_name|
|
64
|
-
|
65
|
-
directory = File.join(source_dir, processor_name) # last slash could be omitted
|
66
|
-
zipfile_name = File.join(destination_dir, "#{processor_name}.zip")
|
67
|
-
|
68
|
-
# remove zip before we create a new one
|
69
|
-
FileUtils.rm zipfile_name, :force => true
|
70
|
-
|
71
|
-
options = {"directories-recursively" => true}
|
72
|
-
|
73
|
-
Zip::File.open(zipfile_name,Zip::File::CREATE) do |zipfile|
|
74
|
-
|
75
|
-
[directory].each{ |file_to_be_zipped|
|
76
|
-
|
77
|
-
if File.directory?(file_to_be_zipped)
|
78
|
-
# should skip directories
|
79
|
-
next if options["directories-skip"]
|
80
|
-
|
81
|
-
# should recursively add directory
|
82
|
-
if options["directories-recursively"]
|
83
|
-
directory = file_to_be_zipped
|
84
|
-
puts "zipper: archiving directory: #{directory}"
|
85
|
-
directory_chosen_pathname = options["directories-recursively-splat"] ? directory : File.dirname(directory)
|
86
|
-
directory_pathname = Pathname.new(directory_chosen_pathname)
|
87
|
-
files = Dir[File.join(directory, '**', '**')]
|
88
|
-
|
89
|
-
# pattern to exclude unwanted folders
|
90
|
-
re = Regexp.new("^#{directory}/(log|logs|exceptions|pids|tmp)")
|
91
|
-
files.delete_if {|filename| re.match(filename) if File.directory?(filename)}
|
92
|
-
|
93
|
-
files.each do |file|
|
94
|
-
file_pathname = Pathname.new(file)
|
95
|
-
file_relative_pathname = file_pathname.relative_path_from(directory_pathname)
|
96
|
-
zipfile.add(file_relative_pathname,file)
|
97
|
-
end
|
98
|
-
next
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
filename = File.basename(file_to_be_zipped)
|
103
|
-
|
104
|
-
puts "zipper: archiving #{file_to_be_zipped} as #{filename} into #{zipfile}"
|
105
|
-
|
106
|
-
zipfile.add(filename,file_to_be_zipped)
|
107
|
-
}
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
puts "Done packaging #{included_processor_names.size} processors"
|
112
|
-
end
|
113
|
-
end
|
1
|
+
desc 'Packages processors to zip files. '
|
2
|
+
arg_name '[processor_name,[other_processor_name,pattern*]]'
|
3
|
+
command :package_ruby do |c|
|
4
|
+
c.flag([:x, :exclude], :desc => "Exclude processors by name.", :type => Array, :long_desc => "You can specify multiple processors by providing a comma-separated list.")
|
5
|
+
c.flag([:d, :destination], :desc => "Destination directory to place created zip files.", :default_value => Eh::Settings.current.ruby_release_dir)
|
6
|
+
c.flag([:s, :source], :desc => "Source directory to read processors from.", :default_value => Eh::Settings.current.processors_src_dir)
|
7
|
+
|
8
|
+
c.action do |global_options, options, args|
|
9
|
+
source_dir = options['s']
|
10
|
+
destination_dir = options['d']
|
11
|
+
|
12
|
+
puts "Will package processors from #{source_dir} to #{destination_dir}"
|
13
|
+
# find all processors in the base directory
|
14
|
+
processor_names = Dir["#{source_dir}/*"].map do |dir|
|
15
|
+
File.basename(dir)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Drop files, only use directories
|
19
|
+
processor_names.delete_if do |item|
|
20
|
+
!File.directory?("#{source_dir}/#{item}")
|
21
|
+
end
|
22
|
+
|
23
|
+
included_processor_names = processor_names
|
24
|
+
|
25
|
+
# if processor names are given as arguments then use them.
|
26
|
+
# can contain wildcards like "console.*" to include all processors
|
27
|
+
# starting with "console.".
|
28
|
+
if args[0]
|
29
|
+
processor_names_from_arguments = args[0].split(',').map(&:strip)
|
30
|
+
|
31
|
+
included_processor_names = included_processor_names.select do |processor_name|
|
32
|
+
processor_names_from_arguments.any? do |query|
|
33
|
+
if query.end_with?('*')
|
34
|
+
processor_name.start_with?(query.gsub('*', ''))
|
35
|
+
else
|
36
|
+
processor_name == query
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# exclude processors specified by -x option, if option is given
|
43
|
+
if options['x']
|
44
|
+
# check if any processor has been excluded from packaging
|
45
|
+
included_processor_names = included_processor_names.select do |processor_name|
|
46
|
+
!options['x'].include?(processor_name)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# make sure we have at least one processor
|
51
|
+
if included_processor_names.empty?
|
52
|
+
raise "There are no processor names. Either your -s directory is empty or you specified a strange combination of -x and -p"
|
53
|
+
end
|
54
|
+
|
55
|
+
# make sure destination directory exists
|
56
|
+
FileUtils.mkdir_p(destination_dir)
|
57
|
+
|
58
|
+
Eh::Settings.current.deployment_management_files.each do |file|
|
59
|
+
FileUtils.cp(file, destination_dir)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Zip all processors
|
63
|
+
included_processor_names.each do |processor_name|
|
64
|
+
|
65
|
+
directory = File.join(source_dir, processor_name) # last slash could be omitted
|
66
|
+
zipfile_name = File.join(destination_dir, "#{processor_name}.zip")
|
67
|
+
|
68
|
+
# remove zip before we create a new one
|
69
|
+
FileUtils.rm zipfile_name, :force => true
|
70
|
+
|
71
|
+
options = {"directories-recursively" => true}
|
72
|
+
|
73
|
+
Zip::File.open(zipfile_name,Zip::File::CREATE) do |zipfile|
|
74
|
+
|
75
|
+
[directory].each{ |file_to_be_zipped|
|
76
|
+
|
77
|
+
if File.directory?(file_to_be_zipped)
|
78
|
+
# should skip directories
|
79
|
+
next if options["directories-skip"]
|
80
|
+
|
81
|
+
# should recursively add directory
|
82
|
+
if options["directories-recursively"]
|
83
|
+
directory = file_to_be_zipped
|
84
|
+
puts "zipper: archiving directory: #{directory}"
|
85
|
+
directory_chosen_pathname = options["directories-recursively-splat"] ? directory : File.dirname(directory)
|
86
|
+
directory_pathname = Pathname.new(directory_chosen_pathname)
|
87
|
+
files = Dir[File.join(directory, '**', '**')]
|
88
|
+
|
89
|
+
# pattern to exclude unwanted folders
|
90
|
+
re = Regexp.new("^#{directory}/(log|logs|exceptions|pids|tmp)")
|
91
|
+
files.delete_if {|filename| re.match(filename) if File.directory?(filename)}
|
92
|
+
|
93
|
+
files.each do |file|
|
94
|
+
file_pathname = Pathname.new(file)
|
95
|
+
file_relative_pathname = file_pathname.relative_path_from(directory_pathname)
|
96
|
+
zipfile.add(file_relative_pathname,file)
|
97
|
+
end
|
98
|
+
next
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
filename = File.basename(file_to_be_zipped)
|
103
|
+
|
104
|
+
puts "zipper: archiving #{file_to_be_zipped} as #{filename} into #{zipfile}"
|
105
|
+
|
106
|
+
zipfile.add(filename,file_to_be_zipped)
|
107
|
+
}
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
puts "Done packaging #{included_processor_names.size} processors"
|
112
|
+
end
|
113
|
+
end
|