[140569] users/ryandesign/scripts/housekeeping-xcode
ryandesign at macports.org
ryandesign at macports.org
Wed Sep 23 11:33:22 PDT 2015
Revision: 140569
https://trac.macports.org/changeset/140569
Author: ryandesign at macports.org
Date: 2015-09-23 11:33:22 -0700 (Wed, 23 Sep 2015)
Log Message:
-----------
housekeeping-xcode: new script to delete unneeded Xcode caches
Added Paths:
-----------
users/ryandesign/scripts/housekeeping-xcode
Added: users/ryandesign/scripts/housekeeping-xcode
===================================================================
--- users/ryandesign/scripts/housekeeping-xcode (rev 0)
+++ users/ryandesign/scripts/housekeeping-xcode 2015-09-23 18:33:22 UTC (rev 140569)
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+# Removes cache data for versions of Xcode that are no longer installed.
+
+if [ $(id -u) -ne 0 ]; then
+ echo "$(basename "$0") must be run as root" 1>&2
+ exit 1
+fi
+
+UI_PREFIX="---> "
+
+PLISTBUDDY="/usr/libexec/PlistBuddy"
+if [ ! -x "$PLISTBUDDY" ]; then
+ # PlistBuddy is not installed on older systems.
+ # Find newest executable PlistBuddy in installer receipts.
+ for PLISTBUDDY in $(stat -f '%Sm%N' -t '%Y%m%d%H%M%S' /Library/Receipts/*.pkg/Contents/Resources/PlistBuddy | sort -r | sed 's/^..............//'); do
+ if [ -x "$PLISTBUDDY" ]; then
+ break
+ fi
+ done
+ if [ ! -x "$PLISTBUDDY" ]; then
+ echo "Could not find PlistBuddy" 1>&2
+ exit 1
+ fi
+fi
+
+MDFIND="/usr/bin/mdfind"
+if [ ! -x "$MDFIND" ]; then
+ echo "Could not find mdfind" 1>&2
+ exit 1
+fi
+
+
+XCODE_PATHS_INSTALLED=($($MDFIND kMDItemCFBundleIdentifier=com.apple.dt.Xcode))
+XCODE_VERSIONS_INSTALLED=()
+
+for ((I=0; I<${#XCODE_PATHS_INSTALLED[@]}; ++I)); do
+ XCODE_VERSIONS_INSTALLED[$I]="$($PLISTBUDDY -c 'Print CFBundleShortVersionString' -c 'Print ProductBuildVersion' "${XCODE_PATHS_INSTALLED[$I]}/Contents/version.plist" | paste -d - - -)"
+done
+
+XCODE_VERSIONS_WITH_CACHES=($(ls -1d /private/var/folders/*/*/C/com.apple.DeveloperTools/* | sed 's,^.*/,,' | sort -u))
+
+DELETED_K=0
+KEPT_K=0
+for ((C=0; C<${#XCODE_VERSIONS_WITH_CACHES[@]}; ++C)); do
+ SIZE_K="$(du -cks /private/var/folders/*/*/C/com.apple.DeveloperTools/"${XCODE_VERSIONS_WITH_CACHES[$C]}" | tail -n 1 | awk '{print $1}')"
+ SIZE_H="$(echo "scale=1;$SIZE_K/1024" | bc)M"
+ INSTALLED=0
+ for ((I=0; I<${#XCODE_PATHS_INSTALLED[@]}; ++I)); do
+ if [ "${XCODE_VERSIONS_WITH_CACHES[$C]}" == "${XCODE_VERSIONS_INSTALLED[$I]}" ]; then
+ INSTALLED=1
+ echo "$UI_PREFIX Keeping $SIZE_H of caches for Xcode ${XCODE_VERSIONS_INSTALLED[$I]} which is installed at ${XCODE_PATHS_INSTALLED[$I]}"
+ KEPT_K=$(($KEPT_K + $SIZE_K))
+ break
+ fi
+ done
+ if [ $INSTALLED -eq 0 ]; then
+ echo "$UI_PREFIX Deleting $SIZE_H of caches for Xcode ${XCODE_VERSIONS_WITH_CACHES[$C]} which is no longer installed"
+ DELETED_K=$(($DELETED_K + $SIZE_K))
+ rm -rf /private/var/folders/*/*/C/com.apple.DeveloperTools/"${XCODE_VERSIONS_WITH_CACHES[$C]}"
+ fi
+done
+
+if [[ $DELETED_K -gt 0 || $KEPT_K -gt 0 ]]; then
+ echo
+fi
+if [ $DELETED_K -gt 0 ]; then
+ DELETED_H="$(echo "scale=1;$DELETED_K/1024" | bc)M"
+ echo "$UI_PREFIX Deleted a total of $DELETED_H of Xcode caches"
+fi
+if [ $KEPT_K -gt 0 ]; then
+ KEPT_H="$(echo "scale=1;$KEPT_K/1024" | bc)M"
+ echo "$UI_PREFIX Kept a total of $KEPT_H of Xcode caches"
+fi
Property changes on: users/ryandesign/scripts/housekeeping-xcode
___________________________________________________________________
Added: svn:executable
+ *
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20150923/90983cb4/attachment.html>
More information about the macports-changes
mailing list