eventhub-command 0.0.22 → 0.1.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/README.md +52 -29
- data/Rakefile +44 -44
- data/bin/eh +39 -39
- data/eh.gemspec +31 -28
- data/eh.rdoc +4 -4
- data/features/eh.feature +8 -8
- data/features/step_definitions/eh_steps.rb +6 -6
- data/features/support/env.rb +15 -15
- data/lib/deployer.rb +6 -0
- data/lib/deployer/executor.rb +102 -0
- data/lib/deployer/net_ssh_extension.rb +37 -0
- data/lib/deployer/stage.rb +28 -0
- data/lib/eh-commands.rb +8 -6
- data/lib/eh.rb +11 -7
- data/lib/eh/commands/copy_config.rb +51 -51
- data/lib/eh/commands/deploy.rb +38 -38
- data/lib/eh/commands/deploy_mule.rb +67 -0
- data/lib/eh/commands/deploy_ruby.rb +87 -0
- data/lib/eh/commands/generate_processor.rb +90 -90
- data/lib/eh/commands/package.rb +104 -104
- data/lib/eh/commands/package_rails.rb +68 -70
- data/lib/eh/settings.rb +72 -69
- data/lib/eh/version.rb +3 -3
- data/test/default_test.rb +14 -14
- data/test/test_helper.rb +9 -9
- data/todo.txt +8 -8
- metadata +37 -3
@@ -0,0 +1,87 @@
|
|
1
|
+
desc 'deploy a single ruby processor'
|
2
|
+
arg_name 'processor_name stage'
|
3
|
+
|
4
|
+
command :deploy_ruby do |c|
|
5
|
+
c.flag([:s, :stage], desc: "stage", type: String, long_desc: "Stage where processor is deployed to", default_value: 'localhost')
|
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: 'scp')
|
7
|
+
|
8
|
+
c.switch([:v, :verbose], :desc => "Show additional output.")
|
9
|
+
|
10
|
+
c.action do |global_options, options, args|
|
11
|
+
|
12
|
+
if args.size < 1
|
13
|
+
puts "Needs at least one argument: processor_name"
|
14
|
+
exit -1
|
15
|
+
end
|
16
|
+
|
17
|
+
processor_name = args[0]
|
18
|
+
stage_path = File.join(Eh::Settings.current.stages_dir, "#{options[:stage]}.yml")
|
19
|
+
stage = Deployer::Stage.load(stage_path)
|
20
|
+
|
21
|
+
|
22
|
+
puts "deploying #{processor_name} to #{stage.name} for environment #{stage.node_env}"
|
23
|
+
puts "deploying via: #{options[:deploy_via]}"
|
24
|
+
|
25
|
+
|
26
|
+
base_dir = "/apps/compoundbank/s_cme/apps/event_hub"
|
27
|
+
logs_dir = File.join(base_dir, 'shared', 'logs')
|
28
|
+
pids_dir = File.join(base_dir, 'shared', 'pids')
|
29
|
+
|
30
|
+
|
31
|
+
if options[:deploy_via] == 'scp'
|
32
|
+
cached_copy_dir = File.join(base_dir, 'eh-cached-copy-scp')
|
33
|
+
else
|
34
|
+
cached_copy_dir = File.join(base_dir, 'eh-cached-copy-scm')
|
35
|
+
end
|
36
|
+
|
37
|
+
current_dir = File.join(base_dir, 'eh-current')
|
38
|
+
|
39
|
+
processor_dir = File.join(current_dir, 'ruby', processor_name)
|
40
|
+
config_source_dir = File.join(base_dir, 'config', 'ruby', processor_name)
|
41
|
+
|
42
|
+
# TODO: move to common place
|
43
|
+
scm_username = 'deploy'
|
44
|
+
scm_password = 'deploy2014!'
|
45
|
+
scm_base_url = "https://whistler.plan.io/svn/eventhub"
|
46
|
+
repository = "#{scm_base_url}/branches/master/releases"
|
47
|
+
|
48
|
+
Deployer::Executor.new(stage, verbose: options[:verbose]) do |executor|
|
49
|
+
# create required directories
|
50
|
+
executor.execute("mkdir -p #{base_dir} ; mkdir -p #{logs_dir} ; mkdir -p #{File.join(current_dir, 'ruby')} ; mkdir -p #{File.join(cached_copy_dir, 'ruby')}")
|
51
|
+
|
52
|
+
if options[:deploy_via] == 'scp'
|
53
|
+
# upload pre-packaged processor via scp
|
54
|
+
source = "#{Eh::Settings.current.releases_dir}/ruby/#{processor_name}.zip"
|
55
|
+
target = File.join(cached_copy_dir, 'ruby', "#{processor_name}.zip")
|
56
|
+
executor.upload(source, target)
|
57
|
+
else
|
58
|
+
co_line = "svn co --trust-server-cert --non-interactive --username #{scm_username} --password #{scm_password} #{repository} #{cached_copy_dir}"
|
59
|
+
executor.execute(co_line)
|
60
|
+
end
|
61
|
+
|
62
|
+
# unzip package
|
63
|
+
source = File.join(current_dir, 'ruby')
|
64
|
+
target = "#{File.join(cached_copy_dir, 'ruby', processor_name)}.zip"
|
65
|
+
executor.execute("unzip -o -d #{source} #{target}")
|
66
|
+
|
67
|
+
# copy config
|
68
|
+
executor.execute("if [[ -d #{config_source_dir} ]] ; then cp -r #{config_source_dir}/* #{processor_dir}; fi")
|
69
|
+
|
70
|
+
# symlink log dir
|
71
|
+
executor.execute("ln -s #{logs_dir} #{File.join(processor_dir, 'logs')}")
|
72
|
+
|
73
|
+
# symlink pids dir
|
74
|
+
executor.execute("ln -s #{pids_dir} #{File.join(processor_dir, 'pids')}")
|
75
|
+
|
76
|
+
# install gems
|
77
|
+
executor.execute("cd #{processor_dir} && bundle install --without test")
|
78
|
+
|
79
|
+
# stop old one
|
80
|
+
executor.execute("kill -s TERM $(cat #{File.join(pids_dir, processor_name)}.pid)", abort_on_error: false, comment: "This is not sooo important")
|
81
|
+
|
82
|
+
# start new one
|
83
|
+
executor.execute("cd #{processor_dir} && bundle exec ruby #{processor_name}.rb -d --environment=#{stage.node_env}")
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
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
|
data/lib/eh/commands/package.rb
CHANGED
@@ -1,104 +1,104 @@
|
|
1
|
-
desc 'Packages processors to zip files'
|
2
|
-
command :package do |c|
|
3
|
-
c.flag([:x, :exclude], :desc => "Exclude processors by name.", :type => Array, :long_desc => "You can specify multiple processors by providing a comma-separated list.")
|
4
|
-
c.flag([:p, :processors], :desc => "Specify what processors to package", :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
|
-
# only include processors specified by -p option, if option is given
|
26
|
-
if options['p']
|
27
|
-
included_processor_names = included_processor_names.select do |processor_name|
|
28
|
-
options['p'].include?(processor_name)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# exclude processors specified by -x option, if option is given
|
33
|
-
if options['x']
|
34
|
-
# check if any processor has been excluded from packaging
|
35
|
-
included_processor_names = included_processor_names.select do |processor_name|
|
36
|
-
!options['x'].include?(processor_name)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# make sure we have at least one processor
|
41
|
-
if included_processor_names.empty?
|
42
|
-
raise "There are no processor names. Either your -s directory is empty or you specified a strange combination of -x and -p"
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
|
-
# make sure destination directory exists
|
47
|
-
FileUtils.mkdir_p(destination_dir)
|
48
|
-
|
49
|
-
Eh::Settings.current.deployment_management_files.each do |file|
|
50
|
-
FileUtils.cp(file, destination_dir)
|
51
|
-
end
|
52
|
-
|
53
|
-
# Zip all processors
|
54
|
-
included_processor_names.each do |processor_name|
|
55
|
-
|
56
|
-
directory = File.join(source_dir, processor_name) # last slash could be omitted
|
57
|
-
zipfile_name = File.join(destination_dir, "#{processor_name}.zip")
|
58
|
-
|
59
|
-
# remove zip before we create a new one
|
60
|
-
FileUtils.rm zipfile_name, :force => true
|
61
|
-
|
62
|
-
options = {"directories-recursively" => true}
|
63
|
-
|
64
|
-
Zip::File.open(zipfile_name,Zip::File::CREATE) do |zipfile|
|
65
|
-
|
66
|
-
[directory].each{ |file_to_be_zipped|
|
67
|
-
|
68
|
-
if File.directory?(file_to_be_zipped)
|
69
|
-
# should skip directories
|
70
|
-
next if options["directories-skip"]
|
71
|
-
|
72
|
-
# should recursively add directory
|
73
|
-
if options["directories-recursively"]
|
74
|
-
directory = file_to_be_zipped
|
75
|
-
puts "zipper: archiving directory: #{directory}"
|
76
|
-
directory_chosen_pathname = options["directories-recursively-splat"] ? directory : File.dirname(directory)
|
77
|
-
directory_pathname = Pathname.new(directory_chosen_pathname)
|
78
|
-
files = Dir[File.join(directory, '**', '**')]
|
79
|
-
|
80
|
-
# pattern to exclude unwanted folders
|
81
|
-
re = Regexp.new("^#{directory}/(log|logs|exceptions|pids|tmp)")
|
82
|
-
files.delete_if {|filename| re.match(filename) if File.directory?(filename)}
|
83
|
-
|
84
|
-
files.each do |file|
|
85
|
-
file_pathname = Pathname.new(file)
|
86
|
-
file_relative_pathname = file_pathname.relative_path_from(directory_pathname)
|
87
|
-
zipfile.add(file_relative_pathname,file)
|
88
|
-
end
|
89
|
-
next
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
filename = File.basename(file_to_be_zipped)
|
94
|
-
|
95
|
-
puts "zipper: archiving #{file_to_be_zipped} as #{filename} into #{zipfile}"
|
96
|
-
|
97
|
-
zipfile.add(filename,file_to_be_zipped)
|
98
|
-
}
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
puts "Done packaging #{included_processor_names.size} processors"
|
103
|
-
end
|
104
|
-
end
|
1
|
+
desc 'Packages processors to zip files'
|
2
|
+
command :package do |c|
|
3
|
+
c.flag([:x, :exclude], :desc => "Exclude processors by name.", :type => Array, :long_desc => "You can specify multiple processors by providing a comma-separated list.")
|
4
|
+
c.flag([:p, :processors], :desc => "Specify what processors to package", :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
|
+
# only include processors specified by -p option, if option is given
|
26
|
+
if options['p']
|
27
|
+
included_processor_names = included_processor_names.select do |processor_name|
|
28
|
+
options['p'].include?(processor_name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# exclude processors specified by -x option, if option is given
|
33
|
+
if options['x']
|
34
|
+
# check if any processor has been excluded from packaging
|
35
|
+
included_processor_names = included_processor_names.select do |processor_name|
|
36
|
+
!options['x'].include?(processor_name)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# make sure we have at least one processor
|
41
|
+
if included_processor_names.empty?
|
42
|
+
raise "There are no processor names. Either your -s directory is empty or you specified a strange combination of -x and -p"
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
# make sure destination directory exists
|
47
|
+
FileUtils.mkdir_p(destination_dir)
|
48
|
+
|
49
|
+
Eh::Settings.current.deployment_management_files.each do |file|
|
50
|
+
FileUtils.cp(file, destination_dir)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Zip all processors
|
54
|
+
included_processor_names.each do |processor_name|
|
55
|
+
|
56
|
+
directory = File.join(source_dir, processor_name) # last slash could be omitted
|
57
|
+
zipfile_name = File.join(destination_dir, "#{processor_name}.zip")
|
58
|
+
|
59
|
+
# remove zip before we create a new one
|
60
|
+
FileUtils.rm zipfile_name, :force => true
|
61
|
+
|
62
|
+
options = {"directories-recursively" => true}
|
63
|
+
|
64
|
+
Zip::File.open(zipfile_name,Zip::File::CREATE) do |zipfile|
|
65
|
+
|
66
|
+
[directory].each{ |file_to_be_zipped|
|
67
|
+
|
68
|
+
if File.directory?(file_to_be_zipped)
|
69
|
+
# should skip directories
|
70
|
+
next if options["directories-skip"]
|
71
|
+
|
72
|
+
# should recursively add directory
|
73
|
+
if options["directories-recursively"]
|
74
|
+
directory = file_to_be_zipped
|
75
|
+
puts "zipper: archiving directory: #{directory}"
|
76
|
+
directory_chosen_pathname = options["directories-recursively-splat"] ? directory : File.dirname(directory)
|
77
|
+
directory_pathname = Pathname.new(directory_chosen_pathname)
|
78
|
+
files = Dir[File.join(directory, '**', '**')]
|
79
|
+
|
80
|
+
# pattern to exclude unwanted folders
|
81
|
+
re = Regexp.new("^#{directory}/(log|logs|exceptions|pids|tmp)")
|
82
|
+
files.delete_if {|filename| re.match(filename) if File.directory?(filename)}
|
83
|
+
|
84
|
+
files.each do |file|
|
85
|
+
file_pathname = Pathname.new(file)
|
86
|
+
file_relative_pathname = file_pathname.relative_path_from(directory_pathname)
|
87
|
+
zipfile.add(file_relative_pathname,file)
|
88
|
+
end
|
89
|
+
next
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
filename = File.basename(file_to_be_zipped)
|
94
|
+
|
95
|
+
puts "zipper: archiving #{file_to_be_zipped} as #{filename} into #{zipfile}"
|
96
|
+
|
97
|
+
zipfile.add(filename,file_to_be_zipped)
|
98
|
+
}
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
puts "Done packaging #{included_processor_names.size} processors"
|
103
|
+
end
|
104
|
+
end
|