OK so no one has used ruby to drive clearcase… might have to be a pet
project to create a gem for this; gem’s gem. heh
Now my problem is a very simple one and I don’t seem to be typing the
right things into google or looking up the right things in anvil to find
it so I thought I could ask you guys for some ideas…
Problem:
I want to parse the STDIN generated when I do a clearcase update and for
every line that contains:
Loading “path_to_a_file.txt” (0 bytes)
What I want to get from this line is the filename (stuff in the quotes)
so I can send it to a method to be zipped. Initially before I try to zip
the file it would be nice to do some debugging by printing the filenames
into a text file. This is what I have so far:
def updateView
Dir.chdir(“f:”)
Dir.chdir(getPathToView)
system(“cleartool update -rename #{getPathToView}”) if viewCreated?
parseOutput
print “\nUpdated #{getPathToView}\n”
end
def parseOutput
$stdin.each { |line|
if line =~ [^Loading]
file = line.match(/".*"/)
zipUp(file)
puts “matched!”
end
}
end
def zipUp(file)
Zip::ZipFile::open(“updated.zip”, true) { |zf|
zf.add(file, file)
}
end
Ta in anticipation of the flood of help/abuse to ensue, ( ;
Gem
Regards
Gemma Cameron
On 8/23/06, Cameron, Gemma (UK) [email protected] wrote:
OK so no one has used ruby to drive clearcase… might have to be a
pet project to create a gem for this; gem’s gem. heh
This isn’t all that surprising – ClearCase is hella expensive and the
last time that I dealt with it was eight years ago. No other company
I’ve worked for uses it.
Now my problem is a very simple one and I don’t seem to be typing the
right things into google or looking up the right things in anvil to
find it so I thought I could ask you guys for some ideas…
Dir.chdir("f:")
zipUp(file)
puts "matched!"
end
}
end
def zipUp(file)
Zip::ZipFile::open("updated.zip", true) { |zf|
zf.add(file, file)
}
end
A couple of things. It is common Ruby parlance to use underscores in
method names instead of interCaps. So updateView would become
update_view. Second, in your updateView, where are you getting the
“getPathToView” value? Is it another method (like #viewCreated?)? Also,
you probably want to use a pipe – I haven’t done this on Windows – so
look at popen if it’ll work on Windows. Otherwise, do:
def update_view(path_to_view, drive = nil)
Dir.chdir(“#{drive}#{path_to_view}”) do |dir|
if view_created?(path_to_view)
output = cleartool update -rename #{path_to_view}
parse_output output
puts “\nUpdated #{path_to_view}”
end
end
end
def parse_output(input)
input.split($/).each do |line|
if line =~ %r{^Loading} # or /^Loading/
file = line.split(//)[1]
zip_up(file)
puts “Matched #{file}”
end
end
end
def zip_up(file)
Zip::ZipFile::open(“updated.zip”, true) { |zf|
zf.add(file, file)
}
end
Not tested, obviously, since I don’t have CC.
-austin