mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 20:08:12 +02:00
122 lines
3.0 KiB
ObjectPascal
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.
|
|
|
|
|