Class: L5MTools::SVN
- Inherits:
-
Object
show all
- Extended by:
- FileUtils
- Includes:
- Tools
- Defined in:
- lib/l5m-tools/svn.rb
Constant Summary
collapse
- IGNORE_FILES =
YAML::load(File.open(File.expand_path('~/svn_ingore.yaml'), 'rb') { |f| f.read } )
- SPERATE =
"------------------------------------------------------------------------"
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Tools
#ask, #change_directory, #copy_with_replace, #copy_with_replace_without_puts, #duplicate_and_replace, #replace, #send_mail, #to_file, #user_home
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_id, *arguments, &block) ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/l5m-tools/svn.rb', line 31
def method_missing(method_id, *arguments, &block)
self.class.class_eval %{
def #{method_id}(packz, options={}, svn_options=[], &b)
rs = ''
packz.each{|pac|
next unless change_to_package_directory(pac)
rs << SVN.#{method_id}(*svn_options)
}
rs
end
}, __FILE__, __LINE__
puts
send(method_id, arguments[0], arguments[1], arguments[2], &block)
end
|
Class Method Details
.method_missing(method_id, *arguments, &block) ⇒ Object
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/l5m-tools/svn.rb', line 19
def method_missing(method_id, *arguments, &block)
self.class_eval %{
def self.#{method_id}(*args, &b)
cmd = "svn #{method_id} "
cmd << args.join(" ") if args
`\#{cmd}`
end
}, __FILE__, __LINE__
send(method_id, *arguments, &block)
end
|
Instance Method Details
#change_to_package_directory(package) ⇒ Object
46
47
48
|
# File 'lib/l5m-tools/svn.rb', line 46
def change_to_package_directory package
change_directory "#{WORKSPACE}/#{package}"
end
|
#log(packages, options = {}, svn_options = []) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/l5m-tools/svn.rb', line 51
def log packages, options={}, svn_options=[]
log = ''
usr = options[:username] || ''
date = options[:date] || Date.today.strftime("%F")
reverse = options[:reverse]
packages.each{|pac|
next unless change_to_package_directory(pac)
commits = SVN.log("-q", "-r", "HEAD:{#{date}}") .split($/).delete_if{|c| c[0] == '-' || (usr != '' && c.split("|")[1].strip != usr)}.collect! {|c| c.split("|")[0].strip[1..-1]}.sort!
commits.reverse! if reverse
commits.each{|c|
log << SVN.log("-v", "-r", c).gsub!(/(#{$/}){2,}/m,$/+$/)
}
}
log.gsub!(/(#{SPERATE}#{$/}#{SPERATE})/m, SPERATE)
log
end
|
#run(*args, &block) ⇒ Object
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/l5m-tools/svn.rb', line 93
def run(*args, &block)
cmd = args.shift
cmd = args.shift if 'svn' == cmd
if index = (args.index '--')
args , svn_args = args[0...index], args[(index+1)..-1]
end
options = {username:((args.option! '--user') || SVN_USER), reverse:(args.delete('-r')), date: (args.option!('--date')), mail:(args.delete('-e') || args.delete('--email')) }
options[:sendto] = args.option!('-s') || SENDER_EMAIL
options[:title] = args.option!('--title') || "svn #{cmd} @#{Time.now.strftime("%F %T")}"
packages = args.empty? ? PACKAGES : args
result = send cmd, packages, options, svn_args
send_mail(options[:sendto], options[:title] , result) if options[:mail]
block.call(result) if block_given?
result
end
|
#status(packages, options = {}, svn_options = []) ⇒ Object
Also known as:
st
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/l5m-tools/svn.rb', line 68
def status packages, options={}, svn_options=[]
status = ''
packages.each{|pac|
innert_dirs =(pac.include?("tag"))?["src", "WebContent"]:["src"];
lines = [];
innert_dirs.each{|d|
next unless change_to_package_directory("#{pac}/#{d}")
lines += (SVN.status).split($/)
}
lines -= IGNORE_FILES[pac] unless IGNORE_FILES[pac].nil?
status << "#{pac} #{$/}" << lines.join($/) << "#{$/}" unless lines.empty?
}
status
end
|
#update(packages, options = {}, svn_options = []) ⇒ Object
83
84
85
86
87
88
89
90
91
|
# File 'lib/l5m-tools/svn.rb', line 83
def update packages, options={}, svn_options=[]
log = ''
packages.each{|pac|
next unless change_to_package_directory(pac)
log << pac+"...#{$/}"
log << SVN.update
}
log
end
|