fpc/utils/fpcm/getrev.pp
pierre 402e2bbe0e Improve revision.inc regeneration program
git-svn-id: trunk@23994 -
2013-03-25 13:06:00 +00:00

122 lines
3.0 KiB
ObjectPascal

program getrev;
{ The purpose of this program is to
parse the output of svn info several files
and to extract the lastest date and revision
The program expects a single parameter,
being the name of the text file }
procedure Usage;
begin
Writeln(paramstr(0),' requires exactly one parameter');
Writeln('This paramaeter must be the name of the file');
Writeln('Generated by svn info files > filename');
halt(1);
end;
var
filename, fileurl, line, date, lastdate,
revision, oldrevstring, olddate : string;
f : text;
p, io : longint;
rev, lastrev, oldrev : longint;
begin
if paramcount<>1 then
Usage;
filename:=paramstr(1);
{$i-}
assign(f,filename);
reset(f);
io:=ioresult;
if io<>0 then
begin
Writeln('Unable to open ',filename,' for reading, io=',io);
halt(2);
end;
lastrev:=0;
lastdate:='0';
while not eof(f) do
begin
readln(f,line);
p:=pos('URL: ',line);
if p>0 then
begin
fileurl:=copy(line,p+length('URL: '),length(line));
writeln('fileurl=',fileurl);
end;
p:=pos('Last Changed Date: ',line);
if p>0 then
begin
date:=copy(line,p+length('Last Changed Date: '),length(line));
p:=pos(' ',date);
if p>0 then
date:=copy(date,1,p-1);
writeln('date=',date);
if date>lastdate then
lastdate:=date;
end;
p:=pos('Last Changed Rev: ',line);
if p>0 then
begin
revision:=copy(line,p+length('Last Changed Rev: '),length(line));
writeln('rev=',revision);
val(revision,rev);
if rev>lastrev then
lastrev:=rev;
end;
end;
close(f);
assign(f,'revision.inc');
io:=ioresult;
reset(f);
io:=ioresult;
if io<>0 then
begin
Writeln('revision.inc reset failed, io=',io);
end
else
begin
readln(f,oldrevstring);
close(f);
writeln('oldrevstring ',oldrevstring);
if oldrevstring[1]='''' then
oldrevstring:=copy(oldrevstring,2,length(oldrevstring));
p:=length(oldrevstring);
if oldrevstring[p]='''' then
oldrevstring:=copy(oldrevstring,1,p-1);
p:=pos(' rev ',oldrevstring);
if p>0 then
begin
val(copy(oldrevstring,p+5,length(oldrevstring)),oldrev);
olddate:=copy(oldrevstring,1,p-1);
Writeln('Old values ',olddate,' ',oldrev);
if (olddate >= lastdate) and (oldrev >= lastrev) then
begin
Writeln('New values ',lastdate,' ',lastrev);
Writeln('Keeing old values');
lastrev:=oldrev;
lastdate:=olddate;
end;
end;
end;
Writeln('revision.inc set to ''',lastdate,' rev ',lastrev,'''');
assign(f,'revision.inc');
rewrite(f);
io:=ioresult;
if io <> 0 then
begin
Writeln('Error opening revision.inc for writing');
halt(3);
end;
Writeln(f,'''',lastdate,' rev ',lastrev,'''');
close(f);
end.