dev 2.1.70 → 2.1.71
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +202 -202
- data/lib/apps/svn.rb +151 -151
- data/lib/apps/xcodebuild.rb +15 -15
- data/lib/apps.rb +2 -2
- data/lib/base/dir.rb +98 -98
- data/lib/base/file.rb +34 -34
- data/lib/base/gemspec.rb +50 -50
- data/lib/base/hash.rb +20 -20
- data/lib/base/history.rb +38 -38
- data/lib/base/internet.rb +24 -24
- data/lib/base/project.rb +458 -458
- data/lib/base/string.rb +6 -6
- data/lib/base/text.rb +29 -29
- data/lib/base/timeout.rb +121 -121
- data/lib/base/timer.rb +44 -44
- data/lib/base/version.rb +82 -82
- data/lib/base.rb +4 -4
- data/lib/dev.config.rb +7 -7
- data/lib/tasks/clean.rb +9 -9
- data/lib/tasks/clobber.rb +25 -25
- data/lib/tasks/doc.rb +9 -9
- data/lib/tasks/info.rb +9 -9
- data/lib/tasks/publish.rb +33 -33
- data/lib/tasks/pull.rb +11 -11
- data/lib/tasks/setup.rb +12 -0
- data/lib/tasks/update.rb +14 -14
- metadata +3 -4
data/lib/apps/svn.rb
CHANGED
@@ -1,152 +1,152 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
require 'tmpdir'
|
3
|
-
require_relative('../base/dir.rb')
|
4
|
-
class Svn
|
5
|
-
|
6
|
-
def self.latest_revision
|
7
|
-
if(Dir.exists?(".svn"))
|
8
|
-
`svn update`
|
9
|
-
`svn info`.scan(/Last Changed Rev: ([\d]+)/).each{|m|
|
10
|
-
return m.first.to_s
|
11
|
-
}
|
12
|
-
end
|
13
|
-
"0"
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.url
|
17
|
-
if(Dir.exists?(".svn"))
|
18
|
-
`svn info`.scan(/URL: ([:\/\.\-\d\w]+)/).each{|m|
|
19
|
-
return m.first.to_s
|
20
|
-
}
|
21
|
-
end
|
22
|
-
''
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.export url, destination
|
26
|
-
if(!File.exists?(destination.chomp('@')))
|
27
|
-
`svn export #{url} #{destination}`
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.has_changes? directory=''
|
32
|
-
directory=Dir.pwd if directory.length==0
|
33
|
-
Dir.chdir(directory) do
|
34
|
-
if(File.exists?('.svn'))
|
35
|
-
return true if `svn status`.scan(/^[MA]/).length>0
|
36
|
-
end
|
37
|
-
end
|
38
|
-
false
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.add source, directory=''
|
42
|
-
directory=Dir.pwd if directory.length < 1
|
43
|
-
Dir.chdir(directory) do
|
44
|
-
source.each{|f|
|
45
|
-
puts `svn add #{f} --parents` if `svn status #{f}`.include?('?')
|
46
|
-
puts `svn add #{f} --parents` if !system("svn status #{f}")
|
47
|
-
}
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.append_commit_message message,directory=''
|
52
|
-
directory=Dir.pwd if directory.length < 1
|
53
|
-
Dir.chdir(directory) do
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.commit message, directory=''
|
59
|
-
directory=Dir.pwd if directory.length < 1
|
60
|
-
Dir.chdir(directory) do
|
61
|
-
# svn commit -F commit_message_filename
|
62
|
-
puts `svn commit -m"commit all"`
|
63
|
-
`svn update`
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
# publish a directory to a new subversion path
|
68
|
-
# source_dir is the directory with the files to be published
|
69
|
-
# destination is the new subversion path URL
|
70
|
-
# source_glob is a string or array of glob directives to specify files in source_dir to be publish
|
71
|
-
# source_glob defaults to '**/*' to publish all files in the source_dir
|
72
|
-
def self.publish destination, source_dir, source_filelist=FileList.new('**/*')
|
73
|
-
|
74
|
-
# Support for legacy argument order
|
75
|
-
if(source_dir.include?('svn:') || source_dir.include?('http:') || source_dir.include?('https:'))
|
76
|
-
puts 'warning arguments are in legacy order' if Environment.default.debug?
|
77
|
-
# swap arguments
|
78
|
-
tmp=source_dir
|
79
|
-
source_dir=destination
|
80
|
-
destination=tmp
|
81
|
-
end
|
82
|
-
|
83
|
-
if(!source_filelist.kind_of?(FileList))
|
84
|
-
puts 'converting files array into FileList' if Environment.default.debug?
|
85
|
-
list=FileList.new
|
86
|
-
source_filelist.each{|item|list.include(item)}
|
87
|
-
source_fileList=list
|
88
|
-
end
|
89
|
-
|
90
|
-
output = "\n"
|
91
|
-
if(`svn info #{destination} 2>&1`.include?('Revision:'))
|
92
|
-
puts "Svn.publish: destination #{destination} already exists"
|
93
|
-
else
|
94
|
-
# create subversion directory
|
95
|
-
output = output + "svn mkdir #{destination} --parents --message mkdir_for_publishing"
|
96
|
-
if(!`svn mkdir #{destination} --parents --message mkdir_for_publishing`.include?('Committed'))
|
97
|
-
raise "failure 'svn mkdir #{destination} --parents --message mkdir_for_publishing'"
|
98
|
-
end
|
99
|
-
|
100
|
-
Dir.chdir(source_dir) do
|
101
|
-
files = source_filelist.to_a
|
102
|
-
end
|
103
|
-
files=source_filelist
|
104
|
-
output = output + "\nfiles: "
|
105
|
-
files.each{|f|
|
106
|
-
output = output + f + " "
|
107
|
-
}
|
108
|
-
pwd=Dir.pwd
|
109
|
-
|
110
|
-
dir="#{Environment.default.tmp_dir}/svn_publish"
|
111
|
-
Dir.remove dir if File.exists? dir
|
112
|
-
FileUtils.mkdir dir
|
113
|
-
Dir.chdir(dir) do
|
114
|
-
#Dir.mktmpdir{|dir|
|
115
|
-
|
116
|
-
# checkout new subversion directory
|
117
|
-
output = output + "\nsvn checkout #{destination} #{dir}/to_publish_checkout"
|
118
|
-
if(!`svn checkout #{destination} #{dir}/to_publish_checkout`.include?('Checked out'))
|
119
|
-
raise "failure 'svn checkout #{destination} #{dir}/to_publish_checkout'"
|
120
|
-
end
|
121
|
-
|
122
|
-
# copy files into the checkout out subversion directory to_publish
|
123
|
-
raise "#{dir}/to_publish_checkout does not exist" if(!File.exists?("#{dir}/to_publish_checkout"))
|
124
|
-
Dir.chdir("#{dir}/to_publish_checkout") do
|
125
|
-
File.open('add.txt','w'){|add_file|
|
126
|
-
|
127
|
-
files.each{|f|
|
128
|
-
fdir=File.dirname(f)
|
129
|
-
FileUtils.mkdir_p(fdir) if(fdir.length > 0 && !File.exists?(fdir))
|
130
|
-
FileUtils.cp("#{source_dir}/#{f}","#{f}")
|
131
|
-
add_file.puts f
|
132
|
-
}
|
133
|
-
add_file.close
|
134
|
-
}
|
135
|
-
|
136
|
-
output = output + "\nsvn add --parents --targets add.txt 2>&1"
|
137
|
-
`svn add --parents --targets add.txt 2>&1`
|
138
|
-
commit_output = `svn commit -m"add" 2>&1`
|
139
|
-
output = output + "\n#{commit_output}"
|
140
|
-
if(!commit_output.include?("Committed"))
|
141
|
-
raise "failure 'svn commit -m'added files''" + output
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
#begin
|
146
|
-
#Dir.remove "#{dir}/to_publish_checkout"
|
147
|
-
output
|
148
|
-
end
|
149
|
-
Dir.remove(dir)
|
150
|
-
end
|
151
|
-
end
|
1
|
+
require 'fileutils'
|
2
|
+
require 'tmpdir'
|
3
|
+
require_relative('../base/dir.rb')
|
4
|
+
class Svn
|
5
|
+
|
6
|
+
def self.latest_revision
|
7
|
+
if(Dir.exists?(".svn"))
|
8
|
+
`svn update`
|
9
|
+
`svn info`.scan(/Last Changed Rev: ([\d]+)/).each{|m|
|
10
|
+
return m.first.to_s
|
11
|
+
}
|
12
|
+
end
|
13
|
+
"0"
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.url
|
17
|
+
if(Dir.exists?(".svn"))
|
18
|
+
`svn info`.scan(/URL: ([:\/\.\-\d\w]+)/).each{|m|
|
19
|
+
return m.first.to_s
|
20
|
+
}
|
21
|
+
end
|
22
|
+
''
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.export url, destination
|
26
|
+
if(!File.exists?(destination.chomp('@')))
|
27
|
+
`svn export #{url} #{destination}`
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.has_changes? directory=''
|
32
|
+
directory=Dir.pwd if directory.length==0
|
33
|
+
Dir.chdir(directory) do
|
34
|
+
if(File.exists?('.svn'))
|
35
|
+
return true if `svn status`.scan(/^[MA]/).length>0
|
36
|
+
end
|
37
|
+
end
|
38
|
+
false
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.add source, directory=''
|
42
|
+
directory=Dir.pwd if directory.length < 1
|
43
|
+
Dir.chdir(directory) do
|
44
|
+
source.each{|f|
|
45
|
+
puts `svn add #{f} --parents` if `svn status #{f}`.include?('?')
|
46
|
+
puts `svn add #{f} --parents` if !system("svn status #{f}")
|
47
|
+
}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.append_commit_message message,directory=''
|
52
|
+
directory=Dir.pwd if directory.length < 1
|
53
|
+
Dir.chdir(directory) do
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.commit message, directory=''
|
59
|
+
directory=Dir.pwd if directory.length < 1
|
60
|
+
Dir.chdir(directory) do
|
61
|
+
# svn commit -F commit_message_filename
|
62
|
+
puts `svn commit -m"commit all"`
|
63
|
+
`svn update`
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# publish a directory to a new subversion path
|
68
|
+
# source_dir is the directory with the files to be published
|
69
|
+
# destination is the new subversion path URL
|
70
|
+
# source_glob is a string or array of glob directives to specify files in source_dir to be publish
|
71
|
+
# source_glob defaults to '**/*' to publish all files in the source_dir
|
72
|
+
def self.publish destination, source_dir, source_filelist=FileList.new('**/*')
|
73
|
+
|
74
|
+
# Support for legacy argument order
|
75
|
+
if(source_dir.include?('svn:') || source_dir.include?('http:') || source_dir.include?('https:'))
|
76
|
+
puts 'warning arguments are in legacy order' if Environment.default.debug?
|
77
|
+
# swap arguments
|
78
|
+
tmp=source_dir
|
79
|
+
source_dir=destination
|
80
|
+
destination=tmp
|
81
|
+
end
|
82
|
+
|
83
|
+
if(!source_filelist.kind_of?(FileList))
|
84
|
+
puts 'converting files array into FileList' if Environment.default.debug?
|
85
|
+
list=FileList.new
|
86
|
+
source_filelist.each{|item|list.include(item)}
|
87
|
+
source_fileList=list
|
88
|
+
end
|
89
|
+
|
90
|
+
output = "\n"
|
91
|
+
if(`svn info #{destination} 2>&1`.include?('Revision:'))
|
92
|
+
puts "Svn.publish: destination #{destination} already exists"
|
93
|
+
else
|
94
|
+
# create subversion directory
|
95
|
+
output = output + "svn mkdir #{destination} --parents --message mkdir_for_publishing"
|
96
|
+
if(!`svn mkdir #{destination} --parents --message mkdir_for_publishing`.include?('Committed'))
|
97
|
+
raise "failure 'svn mkdir #{destination} --parents --message mkdir_for_publishing'"
|
98
|
+
end
|
99
|
+
|
100
|
+
Dir.chdir(source_dir) do
|
101
|
+
files = source_filelist.to_a
|
102
|
+
end
|
103
|
+
files=source_filelist
|
104
|
+
output = output + "\nfiles: "
|
105
|
+
files.each{|f|
|
106
|
+
output = output + f + " "
|
107
|
+
}
|
108
|
+
pwd=Dir.pwd
|
109
|
+
|
110
|
+
dir="#{Environment.default.tmp_dir}/svn_publish"
|
111
|
+
Dir.remove dir if File.exists? dir
|
112
|
+
FileUtils.mkdir dir
|
113
|
+
Dir.chdir(dir) do
|
114
|
+
#Dir.mktmpdir{|dir|
|
115
|
+
|
116
|
+
# checkout new subversion directory
|
117
|
+
output = output + "\nsvn checkout #{destination} #{dir}/to_publish_checkout"
|
118
|
+
if(!`svn checkout #{destination} #{dir}/to_publish_checkout`.include?('Checked out'))
|
119
|
+
raise "failure 'svn checkout #{destination} #{dir}/to_publish_checkout'"
|
120
|
+
end
|
121
|
+
|
122
|
+
# copy files into the checkout out subversion directory to_publish
|
123
|
+
raise "#{dir}/to_publish_checkout does not exist" if(!File.exists?("#{dir}/to_publish_checkout"))
|
124
|
+
Dir.chdir("#{dir}/to_publish_checkout") do
|
125
|
+
File.open('add.txt','w'){|add_file|
|
126
|
+
|
127
|
+
files.each{|f|
|
128
|
+
fdir=File.dirname(f)
|
129
|
+
FileUtils.mkdir_p(fdir) if(fdir.length > 0 && !File.exists?(fdir))
|
130
|
+
FileUtils.cp("#{source_dir}/#{f}","#{f}")
|
131
|
+
add_file.puts f
|
132
|
+
}
|
133
|
+
add_file.close
|
134
|
+
}
|
135
|
+
|
136
|
+
output = output + "\nsvn add --parents --targets add.txt 2>&1"
|
137
|
+
`svn add --parents --targets add.txt 2>&1`
|
138
|
+
commit_output = `svn commit -m"add" 2>&1`
|
139
|
+
output = output + "\n#{commit_output}"
|
140
|
+
if(!commit_output.include?("Committed"))
|
141
|
+
raise "failure 'svn commit -m'added files''" + output
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
#begin
|
146
|
+
#Dir.remove "#{dir}/to_publish_checkout"
|
147
|
+
output
|
148
|
+
end
|
149
|
+
Dir.remove(dir)
|
150
|
+
end
|
151
|
+
end
|
152
152
|
end
|
data/lib/apps/xcodebuild.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
#COMMANDS[:build]=['xcodebuild clean -scheme Hydrogen -destination "name=iPhone 6"',
|
2
|
-
# 'xcodebuild build -scheme Hydrogen -destination "name=iPhone 6"']
|
3
|
-
# COMMANDS[:test]=['xcodebuild test -scheme Hydrogen -destination "name=iPhone 6"'] if RUBY_PLATFORM.include?('darwin')
|
4
|
-
|
5
|
-
class XCodeBuild < Hash
|
6
|
-
def self.get_build_commands xcodeproj_filename
|
7
|
-
#build_commands=Array.new
|
8
|
-
#build_command=Command.new('xcodebuild build')
|
9
|
-
#build_command[:directory] = File.dirname(xcodeproj_filename)
|
10
|
-
|
11
|
-
#name=xcodeproj_filename.gsub('.xcodeproj','')
|
12
|
-
#build_commands << "xcodebuild clean -scheme #{name} -destination \"name=iPhone 6\""
|
13
|
-
#build_commands << "xcodebuild build -scheme #{name} -destination \"name=iPhone 6\""
|
14
|
-
#build_commands << build_command
|
15
|
-
end
|
1
|
+
#COMMANDS[:build]=['xcodebuild clean -scheme Hydrogen -destination "name=iPhone 6"',
|
2
|
+
# 'xcodebuild build -scheme Hydrogen -destination "name=iPhone 6"']
|
3
|
+
# COMMANDS[:test]=['xcodebuild test -scheme Hydrogen -destination "name=iPhone 6"'] if RUBY_PLATFORM.include?('darwin')
|
4
|
+
|
5
|
+
class XCodeBuild < Hash
|
6
|
+
def self.get_build_commands xcodeproj_filename
|
7
|
+
#build_commands=Array.new
|
8
|
+
#build_command=Command.new('xcodebuild build')
|
9
|
+
#build_command[:directory] = File.dirname(xcodeproj_filename)
|
10
|
+
|
11
|
+
#name=xcodeproj_filename.gsub('.xcodeproj','')
|
12
|
+
#build_commands << "xcodebuild clean -scheme #{name} -destination \"name=iPhone 6\""
|
13
|
+
#build_commands << "xcodebuild build -scheme #{name} -destination \"name=iPhone 6\""
|
14
|
+
#build_commands << build_command
|
15
|
+
end
|
16
16
|
end
|
data/lib/apps.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
puts __FILE__ if defined?(DEBUG)
|
2
|
-
|
1
|
+
puts __FILE__ if defined?(DEBUG)
|
2
|
+
|
3
3
|
['git','msbuild','nuget','svn','wix','xcodebuild'].each{|name| require_relative("apps/#{name}.rb")}
|
data/lib/base/dir.rb
CHANGED
@@ -1,99 +1,99 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
class Dir
|
4
|
-
def self.make directory
|
5
|
-
FileUtils.mkdir_p directory if !File.exists? directory
|
6
|
-
end
|
7
|
-
def self.remove directory, remove_empty_parents=false
|
8
|
-
begin
|
9
|
-
FileUtils.rm_rf directory if(!Dir.empty?(directory))
|
10
|
-
FileUtils.rm_r directory if(File.exists?(directory))
|
11
|
-
if(remove_empty_parents)
|
12
|
-
parent_dir=File.dirname(directory)
|
13
|
-
Dir.remove parent_dir, true if(Dir.empty?(parent_dir))
|
14
|
-
end
|
15
|
-
rescue
|
16
|
-
end
|
17
|
-
end
|
18
|
-
def self.empty? directory
|
19
|
-
if((Dir.entries(directory) - %w{ . .. }).empty?)
|
20
|
-
return true
|
21
|
-
end
|
22
|
-
false
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.get_latest_mtime directory
|
26
|
-
mtime=Time.new(1980)
|
27
|
-
Dir.chdir(directory) do
|
28
|
-
latest_filename=''
|
29
|
-
Dir.glob('**/*.*').each{|f|
|
30
|
-
if mtime.nil? || File.mtime(f) > mtime
|
31
|
-
mtime=File.mtime(f)
|
32
|
-
latest_filename=f
|
33
|
-
end
|
34
|
-
}
|
35
|
-
puts " latest_mtime #{mtime.to_s} #{latest_filename}" if Environment.default.debug?
|
36
|
-
end
|
37
|
-
mtime
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.zip(directory,files,zipfilename)
|
41
|
-
if Gem::Specification::find_all_by_name('rubyzip').any?
|
42
|
-
require 'zip'
|
43
|
-
File.delete(zipfilename) if(File.exists?(zipfilename))
|
44
|
-
Zip::File.open(zipfilename,Zip::File::CREATE) do |zipfile|
|
45
|
-
Dir.chdir(directory) do
|
46
|
-
count = 0
|
47
|
-
files.each{|source_file|
|
48
|
-
zipfile.add(source_file,"#{directory}/#{source_file}")
|
49
|
-
count = count + 1
|
50
|
-
}
|
51
|
-
puts "added #{count} files to #{zipfilename}"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
else
|
55
|
-
puts "rubyzip gem is not installed 'gem install rubyzip'"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def self.unzip(zipfilename,directory)
|
60
|
-
if Gem::Specification::find_all_by_name('rubyzip').any?
|
61
|
-
require 'zip'
|
62
|
-
count = 0
|
63
|
-
Zip::File.open(zipfilename) do |zip_file|
|
64
|
-
zip_file.each do |entry|
|
65
|
-
dest = "#{directory}/#{entry.to_s}"
|
66
|
-
parent_dir=File.dirname(dest)
|
67
|
-
FileUtils.mkdir_p parent_dir if(!Dir.exists?(parent_dir))
|
68
|
-
entry.extract("#{directory}/#{entry.to_s}")
|
69
|
-
count = count + 1
|
70
|
-
end
|
71
|
-
end
|
72
|
-
puts "extracted #{count} files to #{directory}"
|
73
|
-
else
|
74
|
-
puts "rubyzip gem is not installed 'gem install rubyzip'"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def self.copy_files(src_dir,glob_pattern,exclude_patterns,target_dir)
|
79
|
-
if(Dir.exists?(src_dir))
|
80
|
-
Dir.chdir(src_dir) do
|
81
|
-
Dir.glob(glob_pattern).each{|f|
|
82
|
-
if(File.file?(f))
|
83
|
-
exclude = false
|
84
|
-
if(!exclude_patterns.nil?)
|
85
|
-
exclude_patterns.each{|p|
|
86
|
-
exclude = true if(f.include?(p))
|
87
|
-
}
|
88
|
-
end
|
89
|
-
if(!exclude)
|
90
|
-
dest = "#{target_dir}/#{f}"
|
91
|
-
FileUtils.mkdir_p(File.dirname(dest)) if(!Dir.exists?(File.dirname(dest)))
|
92
|
-
FileUtils.cp(f,dest)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
}
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
class Dir
|
4
|
+
def self.make directory
|
5
|
+
FileUtils.mkdir_p directory if !File.exists? directory
|
6
|
+
end
|
7
|
+
def self.remove directory, remove_empty_parents=false
|
8
|
+
begin
|
9
|
+
FileUtils.rm_rf directory if(!Dir.empty?(directory))
|
10
|
+
FileUtils.rm_r directory if(File.exists?(directory))
|
11
|
+
if(remove_empty_parents)
|
12
|
+
parent_dir=File.dirname(directory)
|
13
|
+
Dir.remove parent_dir, true if(Dir.empty?(parent_dir))
|
14
|
+
end
|
15
|
+
rescue
|
16
|
+
end
|
17
|
+
end
|
18
|
+
def self.empty? directory
|
19
|
+
if((Dir.entries(directory) - %w{ . .. }).empty?)
|
20
|
+
return true
|
21
|
+
end
|
22
|
+
false
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.get_latest_mtime directory
|
26
|
+
mtime=Time.new(1980)
|
27
|
+
Dir.chdir(directory) do
|
28
|
+
latest_filename=''
|
29
|
+
Dir.glob('**/*.*').each{|f|
|
30
|
+
if mtime.nil? || File.mtime(f) > mtime
|
31
|
+
mtime=File.mtime(f)
|
32
|
+
latest_filename=f
|
33
|
+
end
|
34
|
+
}
|
35
|
+
puts " latest_mtime #{mtime.to_s} #{latest_filename}" if Environment.default.debug?
|
36
|
+
end
|
37
|
+
mtime
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.zip(directory,files,zipfilename)
|
41
|
+
if Gem::Specification::find_all_by_name('rubyzip').any?
|
42
|
+
require 'zip'
|
43
|
+
File.delete(zipfilename) if(File.exists?(zipfilename))
|
44
|
+
Zip::File.open(zipfilename,Zip::File::CREATE) do |zipfile|
|
45
|
+
Dir.chdir(directory) do
|
46
|
+
count = 0
|
47
|
+
files.each{|source_file|
|
48
|
+
zipfile.add(source_file,"#{directory}/#{source_file}")
|
49
|
+
count = count + 1
|
50
|
+
}
|
51
|
+
puts "added #{count} files to #{zipfilename}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
else
|
55
|
+
puts "rubyzip gem is not installed 'gem install rubyzip'"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.unzip(zipfilename,directory)
|
60
|
+
if Gem::Specification::find_all_by_name('rubyzip').any?
|
61
|
+
require 'zip'
|
62
|
+
count = 0
|
63
|
+
Zip::File.open(zipfilename) do |zip_file|
|
64
|
+
zip_file.each do |entry|
|
65
|
+
dest = "#{directory}/#{entry.to_s}"
|
66
|
+
parent_dir=File.dirname(dest)
|
67
|
+
FileUtils.mkdir_p parent_dir if(!Dir.exists?(parent_dir))
|
68
|
+
entry.extract("#{directory}/#{entry.to_s}")
|
69
|
+
count = count + 1
|
70
|
+
end
|
71
|
+
end
|
72
|
+
puts "extracted #{count} files to #{directory}"
|
73
|
+
else
|
74
|
+
puts "rubyzip gem is not installed 'gem install rubyzip'"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.copy_files(src_dir,glob_pattern,exclude_patterns,target_dir)
|
79
|
+
if(Dir.exists?(src_dir))
|
80
|
+
Dir.chdir(src_dir) do
|
81
|
+
Dir.glob(glob_pattern).each{|f|
|
82
|
+
if(File.file?(f))
|
83
|
+
exclude = false
|
84
|
+
if(!exclude_patterns.nil?)
|
85
|
+
exclude_patterns.each{|p|
|
86
|
+
exclude = true if(f.include?(p))
|
87
|
+
}
|
88
|
+
end
|
89
|
+
if(!exclude)
|
90
|
+
dest = "#{target_dir}/#{f}"
|
91
|
+
FileUtils.mkdir_p(File.dirname(dest)) if(!Dir.exists?(File.dirname(dest)))
|
92
|
+
FileUtils.cp(f,dest)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
}
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
99
|
end
|
data/lib/base/file.rb
CHANGED
@@ -1,35 +1,35 @@
|
|
1
|
-
puts __FILE__ if defined?(DEBUG)
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
class File
|
6
|
-
def self.amalgamate filename,source
|
7
|
-
File.open(filename,'w'){|file|
|
8
|
-
source.each{|source_file|
|
9
|
-
file.puts IO.read(source_file)
|
10
|
-
}
|
11
|
-
}
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.publish destination, source_dir, source_glob='**/*', overwrite_existing=false
|
15
|
-
|
16
|
-
output = "\n"
|
17
|
-
FileUtils.mkdir_p destination if !File.exists? destination
|
18
|
-
|
19
|
-
files=nil
|
20
|
-
Dir.chdir(source_dir) do
|
21
|
-
files=FileList.new(source_glob).to_a
|
22
|
-
end
|
23
|
-
output = output + "\nfiles: #{files}.to_s"
|
24
|
-
|
25
|
-
Dir.chdir(source_dir) do
|
26
|
-
files.each{|f|
|
27
|
-
file="#{destination}/#{f}"
|
28
|
-
dirname=File.dirname(file)
|
29
|
-
FileUtils.mkdir_p dirname if !File.exists? dirname
|
30
|
-
FileUtils.cp(f,file) if !File.exists? file || overwrite_existing
|
31
|
-
}
|
32
|
-
end
|
33
|
-
output
|
34
|
-
end
|
1
|
+
puts __FILE__ if defined?(DEBUG)
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
class File
|
6
|
+
def self.amalgamate filename,source
|
7
|
+
File.open(filename,'w'){|file|
|
8
|
+
source.each{|source_file|
|
9
|
+
file.puts IO.read(source_file)
|
10
|
+
}
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.publish destination, source_dir, source_glob='**/*', overwrite_existing=false
|
15
|
+
|
16
|
+
output = "\n"
|
17
|
+
FileUtils.mkdir_p destination if !File.exists? destination
|
18
|
+
|
19
|
+
files=nil
|
20
|
+
Dir.chdir(source_dir) do
|
21
|
+
files=FileList.new(source_glob).to_a
|
22
|
+
end
|
23
|
+
output = output + "\nfiles: #{files}.to_s"
|
24
|
+
|
25
|
+
Dir.chdir(source_dir) do
|
26
|
+
files.each{|f|
|
27
|
+
file="#{destination}/#{f}"
|
28
|
+
dirname=File.dirname(file)
|
29
|
+
FileUtils.mkdir_p dirname if !File.exists? dirname
|
30
|
+
FileUtils.cp(f,file) if !File.exists? file || overwrite_existing
|
31
|
+
}
|
32
|
+
end
|
33
|
+
output
|
34
|
+
end
|
35
35
|
end
|