IDE: Move sub-functions of CreateIDEMakeOptions into private methods in TLazarusBuilder.

git-svn-id: trunk@44049 -
This commit is contained in:
juha 2014-02-13 15:54:50 +00:00
parent 4228a0acd2
commit 0d30fd1fe1

View File

@ -170,8 +170,11 @@ type
procedure CleanAll; procedure CleanAll;
procedure CheckRevisionInc; procedure CheckRevisionInc;
procedure RestoreBackup; procedure RestoreBackup;
// Method used by SaveIDEMakeOptions : // Methods used by SaveIDEMakeOptions :
function BreakExtraOptions: string; function BreakExtraOptions: string;
// Methods used by CreateIDEMakeOptions :
procedure BackupExe(Flags: TBuildLazarusFlags);
procedure AppendExtraOption(const AddOption: string; EncloseIfSpace: boolean = True);
// This is used by MakeLazarus, IsWriteProtected and SaveIDEMakeOptions // This is used by MakeLazarus, IsWriteProtected and SaveIDEMakeOptions
function CreateIDEMakeOptions(Flags: TBuildLazarusFlags): TModalResult; function CreateIDEMakeOptions(Flags: TBuildLazarusFlags): TModalResult;
public public
@ -513,81 +516,73 @@ begin
end; end;
end; end;
function TLazarusBuilder.CreateIDEMakeOptions(Flags: TBuildLazarusFlags): TModalResult; procedure TLazarusBuilder.BackupExe(Flags: TBuildLazarusFlags);
var
Ext: String;
BackupFilename: String;
Backup2Filename: String;
AltFilename: String;
begin
if not FileExistsUTF8(fTargetFilename) then exit;
// the exe already exists
Ext:=ExtractFileExt(fTargetFilename);
AltFilename:=LeftStr(fTargetFilename,length(fTargetFilename)-length(Ext))+'.new'+Ext;
if blfBackupOldExe in Flags then begin
// always delete the lazarus.new exe, so that users/startlazarus are not
// confused which one is the newest
if FileExistsUTF8(AltFilename) then begin
if DeleteFileUTF8(AltFilename) then
debugln(['Note: deleted file "',AltFilename,'"'])
else
debugln(['WARNING: unable to delete file "',AltFilename,'"']);
end;
procedure BackupExe(var ExeFilename: string); // try to rename the old exe
var BackupFilename:=GetBackupExeFilename(fTargetFilename);
Ext: String; if FileExistsUTF8(BackupFilename) then
BackupFilename: String; if DeleteFileUTF8(BackupFilename) then begin
Backup2Filename: String; debugln(['Note: deleted backup "',BackupFilename,'"']);
AltFilename: String; end else begin
begin // unable to delete old backup file, maybe an old IDE is still running
if not FileExistsUTF8(ExeFilename) then exit; // => try to backup the backup
// the exe already exists Backup2Filename:=LeftStr(fTargetFilename,length(fTargetFilename)-length(Ext))+'.old2'+Ext;
Ext:=ExtractFileExt(ExeFilename); if FileExistsUTF8(Backup2Filename) then begin
AltFilename:=LeftStr(ExeFilename,length(ExeFilename)-length(Ext))+'.new'+Ext; if DeleteFileUTF8(Backup2Filename) then
if blfBackupOldExe in Flags then begin debugln(['Note: deleted backup "',Backup2Filename,'"'])
// always delete the lazarus.new exe, so that users/startlazarus are not else
// confused which one is the newest debugln(['WARNING: unable to delete old backup file "'+Backup2Filename+'"']);
if FileExistsUTF8(AltFilename) then begin
if DeleteFileUTF8(AltFilename) then
debugln(['Note: deleted file "',AltFilename,'"'])
else
debugln(['WARNING: unable to delete file "',AltFilename,'"']);
end;
// try to rename the old exe
BackupFilename:=GetBackupExeFilename(ExeFilename);
if FileExistsUTF8(BackupFilename) then
if DeleteFileUTF8(BackupFilename) then begin
debugln(['Note: deleted backup "',BackupFilename,'"']);
end else begin
// unable to delete old backup file, maybe an old IDE is still running
// => try to backup the backup
Backup2Filename:=LeftStr(ExeFilename,length(ExeFilename)-length(Ext))+'.old2'+Ext;
if FileExistsUTF8(Backup2Filename) then begin
if DeleteFileUTF8(Backup2Filename) then
debugln(['Note: deleted backup "',Backup2Filename,'"'])
else
debugln(['WARNING: unable to delete old backup file "'+Backup2Filename+'"']);
end;
if not FileExistsUTF8(Backup2Filename) then begin
if RenameFileUTF8(BackupFilename,Backup2Filename) then
debugln(['Note: renamed old backup file "'+BackupFilename+'" to "',Backup2Filename,'"'])
else
debugln(['WARNING: unable to rename old backup file "'+BackupFilename+'" to "',Backup2Filename,'"']);
end; end;
end; if not FileExistsUTF8(Backup2Filename) then begin
if not FileExistsUTF8(BackupFilename) then begin if RenameFileUTF8(BackupFilename,Backup2Filename) then
if RenameFileUTF8(ExeFilename,BackupFilename) then debugln(['Note: renamed old backup file "'+BackupFilename+'" to "',Backup2Filename,'"'])
debugln(['Note: renamed file "'+ExeFilename+'" to "',BackupFilename,'"']) else
else debugln(['WARNING: unable to rename old backup file "'+BackupFilename+'" to "',Backup2Filename,'"']);
debugln(['WARNING: unable to rename file "'+ExeFilename+'" to "',BackupFilename,'"']);
end; end;
end; end;
if (not (blfReplaceExe in Flags)) and FileExistsUTF8(ExeFilename) then begin if not FileExistsUTF8(BackupFilename) then begin
// backup didn't work => use another file name if RenameFileUTF8(fTargetFilename,BackupFilename) then
ExeFilename:=AltFilename; debugln(['Note: renamed file "'+fTargetFilename+'" to "',BackupFilename,'"'])
else
debugln(['WARNING: unable to rename file "'+fTargetFilename+'" to "',BackupFilename,'"']);
end; end;
end; end;
if (not (blfReplaceExe in Flags)) and FileExistsUTF8(fTargetFilename) then
fTargetFilename:=AltFilename; // backup didn't work => use another file name
end;
procedure AppendExtraOption(const AddOption: string; EncloseIfSpace: boolean); procedure TLazarusBuilder.AppendExtraOption(const AddOption: string; EncloseIfSpace: boolean);
begin begin
if AddOption='' then exit; if AddOption='' then exit;
if fExtraOptions<>'' then if fExtraOptions<>'' then
fExtraOptions:=fExtraOptions+' '; fExtraOptions:=fExtraOptions+' ';
if EncloseIfSpace and (Pos(' ',AddOption)>0) then if EncloseIfSpace and (Pos(' ',AddOption)>0) then
fExtraOptions:=fExtraOptions+'"'+AddOption+'"' fExtraOptions:=fExtraOptions+'"'+AddOption+'"'
else else
fExtraOptions:=fExtraOptions+AddOption; fExtraOptions:=fExtraOptions+AddOption;
//DebugLn(['AppendExtraOption ',fExtraOptions]); //DebugLn(['AppendExtraOption ',fExtraOptions]);
end; end;
procedure AppendExtraOption(const AddOption: string);
begin
AppendExtraOption(AddOption,true);
end;
function TLazarusBuilder.CreateIDEMakeOptions(Flags: TBuildLazarusFlags): TModalResult;
var var
MakeIDECfgFilename: string; MakeIDECfgFilename: string;
TargetDirectory: string; TargetDirectory: string;
@ -729,7 +724,7 @@ begin
fTargetFilename:=TrimFilename(AppendPathDelim(TargetDirectory)+fTargetFilename); fTargetFilename:=TrimFilename(AppendPathDelim(TargetDirectory)+fTargetFilename);
// backup old exe // backup old exe
BackupExe(fTargetFilename); BackupExe(Flags);
// check if target file is default // check if target file is default
NewTargetDirectoryIsDefault:= NewTargetDirectoryIsDefault:=