fix issue where entries for different systems override each other

This commit is contained in:
partisan 2025-01-18 20:30:58 +01:00
parent 3bbc65268d
commit e69fec95c8
2 changed files with 19 additions and 21 deletions

18
.gitignore vendored
View file

@ -1,11 +1,7 @@
/mozilla-central
/mozilla-release
/.vscode
/patches
/packages.json
/packages_temp.json
/APKINDEX
/APPINDEX
/browser-amd64-nightly-linux.tar.gz
/browser-amd64-nightly-windows.tar.gz
/sourceforge_config.json
mozilla-central
mozilla-release
.vscode
patches
APPINDEX
browser-amd64-*
sourceforge_config.json

View file

@ -37,8 +37,8 @@ func PackageAPPINDEX(
// For demo, we call `calcChecksum` with a mock package name.
checksum := calcChecksum(fileName)
// Remove existing entry based on P, R, A, o (if you want to deduplicate).
removeExistingEntry(name, release, arch, origin)
// Remove existing entry based on P, R, A, o, and p:
removeExistingEntry(name, release, arch, origin, platform)
// Use current Unix timestamp
timestamp := time.Now().Unix()
@ -100,8 +100,8 @@ func calcChecksum(input string) string {
return fmt.Sprintf("%x", h.Sum(nil))
}
// removeExistingEntry removes an existing entry from APPINDEX if it matches P, R, A, and o fields.
func removeExistingEntry(name, release, arch, origin string) {
// removeExistingEntry removes an existing entry from APPINDEX if it matches P, R, A, o, and p fields.
func removeExistingEntry(name, release, arch, origin, platform string) {
// Read file contents
content, err := os.ReadFile("./APPINDEX")
if err != nil {
@ -118,8 +118,8 @@ func removeExistingEntry(name, release, arch, origin string) {
inEntry := false // true when we're reading lines for a single entry
// Use these to store the P, R, A, o values within the current entry
var pVal, rVal, aVal, oVal string
// We'll store the P, R, A, o, p values within the current entry
var pVal, rVal, aVal, oVal, plVal string
for _, line := range lines {
trimmed := strings.TrimSpace(line)
@ -129,7 +129,7 @@ func removeExistingEntry(name, release, arch, origin string) {
// If we were in an entry previously, check if it should be removed or kept
if inEntry && len(currentEntry) > 0 {
// Decide whether to keep the previous entry
if !(pVal == name && rVal == release && aVal == arch && oVal == origin) {
if !(pVal == name && rVal == release && aVal == arch && oVal == origin && plVal == platform) {
newLines = append(newLines, currentEntry...)
newLines = append(newLines, "") // Blank line to separate entries
}
@ -140,7 +140,7 @@ func removeExistingEntry(name, release, arch, origin string) {
inEntry = true
// Reset these values for the new entry
pVal, rVal, aVal, oVal = "", "", "", ""
pVal, rVal, aVal, oVal, plVal = "", "", "", "", ""
continue
}
@ -148,7 +148,7 @@ func removeExistingEntry(name, release, arch, origin string) {
// Collect lines for this entry
currentEntry = append(currentEntry, trimmed)
// Extract P, R, A, o for matching later
// Extract fields for matching later
switch {
case strings.HasPrefix(trimmed, "P:"):
pVal = strings.TrimPrefix(trimmed, "P:")
@ -158,6 +158,8 @@ func removeExistingEntry(name, release, arch, origin string) {
aVal = strings.TrimPrefix(trimmed, "A:")
case strings.HasPrefix(trimmed, "o:"):
oVal = strings.TrimPrefix(trimmed, "o:")
case strings.HasPrefix(trimmed, "p:"):
plVal = strings.TrimPrefix(trimmed, "p:")
}
} else {
// Lines outside of entries just get appended directly
@ -171,7 +173,7 @@ func removeExistingEntry(name, release, arch, origin string) {
// Handle the last entry if we ended inEntry
if inEntry && len(currentEntry) > 0 {
// Decide whether to keep the final entry
if !(pVal == name && rVal == release && aVal == arch && oVal == origin) {
if !(pVal == name && rVal == release && aVal == arch && oVal == origin && plVal == platform) {
newLines = append(newLines, currentEntry...)
}
}