fix: use 'diskutil info` to calculate the disk size on macOS (#12764)
Ilya Mashchenko committed
Apr 27, 2022 at 10:49 UTC
e408ed4bf719f720211bbf4aee3098b3291b652a
1 file changed
+14
-9
daemon/system-info.sh
+14
-9
@@ -332,18 +332,23 @@ DISK_SIZE="unknown"
332
DISK_DETECTION="none"
333
334
if [ "${KERNEL_NAME}" = "Darwin" ]; then
335
- types='hfs'
335
+ if DISK_SIZE=$(diskutil info / 2>/dev/null | awk '/Disk Size/ {total += substr($5,2,length($5))} END { print total }') &&
336
+ [ -n "$DISK_SIZE" ] && [ "$DISK_SIZE" != "0" ]; then
337
+ DISK_DETECTION="diskutil"
338
+ else
339
+ types='hfs'
340
337
- if (lsvfs | grep -q apfs); then
338
- types="${types},apfs"
339
- fi
341
+ if (lsvfs | grep -q apfs); then
342
+ types="${types},apfs"
343
+ fi
344
341
- if (lsvfs | grep -q ufs); then
342
- types="${types},ufs"
343
- fi
345
+ if (lsvfs | grep -q ufs); then
346
+ types="${types},ufs"
347
+ fi
348
345
- DISK_DETECTION="df"
346
- DISK_SIZE=$(($(/bin/df -k -t ${types} | tail -n +2 | sed -E 's/\/dev\/disk([[:digit:]]*)s[[:digit:]]*/\/dev\/disk\1/g' | sort -k 1 | awk -F ' ' '{s=$NF;for(i=NF-1;i>=1;i--)s=s FS $i;print s}' | uniq -f 9 | awk '{print $8}' | tr '\n' '+' | rev | cut -f 2- -d '+' | rev) * 1024))
349
+ DISK_DETECTION="df"
350
+ DISK_SIZE=$(($(/bin/df -k -t ${types} | tail -n +2 | sed -E 's/\/dev\/disk([[:digit:]]*)s[[:digit:]]*/\/dev\/disk\1/g' | sort -k 1 | awk -F ' ' '{s=$NF;for(i=NF-1;i>=1;i--)s=s FS $i;print s}' | uniq -f 9 | awk '{print $8}' | tr '\n' '+' | rev | cut -f 2- -d '+' | rev) * 1024))
351
+ fi
352
elif [ "${KERNEL_NAME}" = FreeBSD ]; then
353
types='ufs'
354