Skip to content

Commit af4b172

Browse files
authored
fix: Preserve partial Apple identity overrides (#550)
1 parent f83a182 commit af4b172

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

src/install.sh

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -396,23 +396,27 @@ generateAddress() {
396396

397397
generateSerial() {
398398

399+
local generated generatedSN generatedMLB
400+
399401
restoreState SN "sn" || return 1
400402
restoreState MLB "mlb" || return 1
401403

402404
[ -n "$SN" ] && [ -n "$MLB" ] && return 0
403405

404-
# Generate the serial and board serial as one matched pair and persist both;
405-
# changing either independently would create an inconsistent Apple identity.
406-
# Generate unique serial numbers for machine
407-
SN=$(/usr/local/bin/macserial --num 1 --model "${MODEL}" 2>/dev/null)
406+
# Generate a serial pair and use only the values that are still missing,
407+
# preserving any serial or board serial supplied by the user or restored from state.
408+
generated=$(/usr/local/bin/macserial --num 1 --model "${MODEL}" 2>/dev/null)
409+
410+
generated="${generated##*$'\n'}"
411+
[[ "$generated" != *" | "* ]] && error "$generated" && return 1
408412

409-
SN="${SN##*$'\n'}"
410-
[[ "$SN" != *" | "* ]] && error "$SN" && return 1
413+
generatedMLB=${generated#*|}
414+
generatedMLB="${generatedMLB#"${generatedMLB%%[![:space:]]*}"}"
415+
generatedSN="${generated%%|*}"
416+
generatedSN="${generatedSN%"${generatedSN##*[![:space:]]}"}"
411417

412-
MLB=${SN#*|}
413-
MLB="${MLB#"${MLB%%[![:space:]]*}"}"
414-
SN="${SN%%|*}"
415-
SN="${SN%"${SN##*[![:space:]]}"}"
418+
[ -n "$SN" ] || SN="$generatedSN"
419+
[ -n "$MLB" ] || MLB="$generatedMLB"
416420

417421
writeState "sn" "$SN" || return 1
418422
writeState "mlb" "$MLB" || return 1

0 commit comments

Comments
 (0)