From 7103681fca5dd4cc43a4d29bd2bc6dedf005a11f Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 20 Dec 2017 15:58:31 +0100 Subject: dateibeziehungen.pas: tGenerischeAbhaengigkeit.generiereErben: ein wenig optimiert --- Make.lps | 136 ++++++++++++++++++++++++++++++--------------------- dateibeziehungen.pas | 90 +++++++++++++++++++--------------- 2 files changed, 130 insertions(+), 96 deletions(-) diff --git a/Make.lps b/Make.lps index c6ab4f8..c6d62d4 100644 --- a/Make.lps +++ b/Make.lps @@ -7,33 +7,33 @@ - - - + + + - + - + - + - - - - + + + + @@ -42,10 +42,10 @@ - - - - + + + + @@ -62,10 +62,10 @@ - + - + @@ -103,10 +103,11 @@ - - - - + + + + + @@ -131,105 +132,126 @@ - + - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - + + - - + - + - - + + - - + + - - + + - + - - + + - + - + + + + + + + + + + + + + + + + + + + + + diff --git a/dateibeziehungen.pas b/dateibeziehungen.pas index b83fd88..151eb79 100644 --- a/dateibeziehungen.pas +++ b/dateibeziehungen.pas @@ -565,23 +565,55 @@ end; procedure tGenerischeAbhaengigkeit.generiereErben(var es: tExpliziteAbhaengigkeiten); var - i,j: longint; - s: string; - neuSums: tMyStringList; + i,j,befCnt: longint; + s: string; + neuSums: tMyStringList; begin neuSums:=tMyStringList.create; for i:=0 to matchCount-1 do begin + befCnt:=0; es.add(tExpliziteAbhaengigkeit.create); for j:=0 to quellen[i].count-1 do es.last.quellen.add(quellen[i][j]); for j:=0 to ziele[i].count-1 do es.last.ziele.add(ziele[i][j]); - for j:=0 to befehleFkt.count-1 do begin + + neuSums.clear; + for j:=0 to quellen[i].count-1 do + neuSums.add(escapeStringToRegex(escape(quellen[i][j].name,'$','\'),rtShell,'"/')); + for j:=0 to ziele[i].count-1 do + neuSums.add(escapeStringToRegex(escape(ziele[i][j].name,'$','\'),rtShell,'"/')); + neuSums.sort; + neuSums.uniq('-'); + neuSums.appendTo( // Quell- und Zielsummen entfernen + es.last.befehle, + argMax, + 'sed "/ ', + '\$/d; / ', + '\$/d" -i "'+escape(_pruefSummenDatei,'"\','\')+'"' + ); + + neuSums.clear; + for j:=0 to quellen[i].count-1 do + neuSums.add(quellen[i][j].name); + neuSums.sort; + neuSums.uniq('-'); + neuSums.appendTo( // Quellsummen erzeugen + es.last.befehle, + argMax, + 'sha512sum "', + '" "', + '" >> "'+escape(_pruefSummenDatei,'"\','\')+'"' + ); + + for j:=0 to befehleFkt.count-1 do begin // eigentliche Befehle ausführen s:=befehleFkt[j]; - if quellErsetzung(s,rtKein,quellen[i],quellen[i].count) then + if quellErsetzung(s,rtKein,quellen[i],quellen[i].count) then begin es.last.befehle.add(s); + inc(befCnt); + end; end; - if es.last.befehle.count=0 then + if befCnt=0 then fehler( 'Keine Befehle auszuführen für explizite Abhängigkeit!'#10+ 'Befehle:'#10+ @@ -589,39 +621,19 @@ begin 'Quellen:'#10+ quellen[i].toString ); - if quellen[i].count + ziele[i].count > 0 then begin - // sha512summen erneuern - - s:='sed "'; - for j:=0 to quellen[i].count-1 do - s:=s+'/\s'+escapeStringToRegex(escape(quellen[i][j].name,'$','\'),rtShell,'"/')+'\$/d; '; - for j:=0 to ziele[i].count-1 do - s:=s+'/\s'+escapeStringToRegex(escape(ziele[i][j].name,'$','\'),rtShell,'"/')+'\$/d; '; - s:=s+'" -i "'+escape(_pruefSummenDatei,'"\','\')+'"'; - es.last.befehle.insert(0,s); // _vorher_ Quellen und Ziele entfernen ... - - s:='sha512sum'; - neuSums.clear; - for j:=0 to quellen[i].count-1 do - neuSums.add(quellen[i][j].name); - neuSums.sort; - neuSums.uniq('-'); - for j:=0 to neuSums.count-1 do - s:=s+' "'+escape(neuSums[j],'"\','\')+'"'; - s:=s+' >> "'+escape(_pruefSummenDatei,'"\','\')+'"'; - es.last.befehle.insert(1,s); // ... und Quellen aktualisieren - - s:='sha512sum'; - neuSums.clear; - for j:=0 to ziele[i].count-1 do - neuSums.add(ziele[i][j].name); - neuSums.sort; - neuSums.uniq('-'); - for j:=0 to neuSums.count-1 do - s:=s+' "'+escape(neuSums[j],'"\','\')+'"'; - s:=s+' >> "'+escape(_pruefSummenDatei,'"\','\')+'"'; - es.last.befehle.add(s); // _nachher_ Ziele aktualisieren - end; + + neuSums.clear; + for j:=0 to ziele[i].count-1 do + neuSums.add(ziele[i][j].name); + neuSums.sort; + neuSums.uniq('-'); + neuSums.appendTo( // Zielsummen erzeugen + es.last.befehle, + argMax, + 'sha512sum "', + '" "', + '" >> "'+escape(_pruefSummenDatei,'"\','\')+'"' + ); end; neuSums.free; end; -- cgit v1.2.3-54-g00ecf