| @@ -1,10 +1,26 @@ | |||
| #!/bin/sh | |||
| # Copyright (C) 2008 Jonathan Moore Liles # | |||
| # # | |||
| # This program is free software; you can redistribute it and/or modify it # | |||
| # under the terms of the GNU General Public License as published by the # | |||
| # Free Software Foundation; either version 2 of the License, or (at your # | |||
| # option) any later version. # | |||
| # # | |||
| # This program is distributed in the hope that it will be useful, but WITHOUT # | |||
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # | |||
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # | |||
| # more details. # | |||
| # # | |||
| # You should have received a copy of the GNU General Public License along # | |||
| # with This program; see the file COPYING. If not,write to the Free Software # | |||
| # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # | |||
| ## remove-unused-sources | |||
| # | |||
| # April 2008, Jonathan Moore Liles | |||
| # | |||
| # Simple script to scan a compacted Non-DAW session and remove all | |||
| # Simple script to scan a compacted Non-DAW project and remove all | |||
| # unused sources from disk. | |||
| # | |||
| # USAGE: | |||
| @@ -17,7 +33,8 @@ | |||
| # delete all unused sources! You have been warned. | |||
| # | |||
| SESSION="$1" | |||
| DRY_RUN=no | |||
| ONLY_COMPACTED=no | |||
| fatal () | |||
| { | |||
| @@ -27,9 +44,14 @@ fatal () | |||
| exit 1 | |||
| } | |||
| cleanup () | |||
| { | |||
| rm -f "${TEMP}/all-sources" "${TEMP}/used-sources" | |||
| } | |||
| set_diff () | |||
| { | |||
| diff --new-line-format '' --old-line-format '%L' --unchanged-line-format '' "$1" "$2" | |||
| diff --new-line-format '' --old-line-format '%L' --unchanged-line-format '' "$1" "$2" | |||
| } | |||
| remove_sources () | |||
| @@ -37,26 +59,40 @@ remove_sources () | |||
| local FILE | |||
| while read FILE | |||
| do | |||
| echo "Removing source \"${FILE}\"..." | |||
| rm -f ./"${FILE}" ./"${FILE}-"*.peak | |||
| if [ $DRY_RUN = yes ] | |||
| then | |||
| echo "Would remove: ${FILE}" | |||
| else | |||
| echo "Removing unused source \"${FILE}\"..." | |||
| rm -f ./"${FILE}" ./"${FILE}-"*.peak | |||
| fi | |||
| done | |||
| } | |||
| cleanup () | |||
| { | |||
| rm -f "${TEMP}/all-sources" "${TEMP}/used-sources" | |||
| } | |||
| [ $# -gt 0 ] || fatal "Usage: $0 [--dry-run] path/to/project" | |||
| if [ "$1" = --dry-run ] | |||
| then | |||
| DRY_RUN=yes | |||
| shift 1 | |||
| fi | |||
| PROJECT="$1" | |||
| cd "$PROJECT" || fatal "No such project" | |||
| cd "$SESSION" || fatal "No such session" | |||
| [ -f history ] && [ -f info ] || fatal "Not a Non-DAW project?" | |||
| [ -f history ] || fatal "Not a Non-DAW session?" | |||
| [ -f .lock ] && fatal "Project appears to be in use" | |||
| grep -qv 'create' history && fatal "Not a compacted session" | |||
| if [ $ONLY_COMPACTED = yes ] | |||
| then | |||
| grep -v '\(^\{\|\}$\)\|create' history && fatal "Not a compacted project" | |||
| fi | |||
| echo "Scanning \"${SESSION}\"..." | |||
| echo "Scanning \"${PROJECT}\"..." | |||
| sed -n 's/^Region.* :source "\([^"]\+\)".*$/\1/p' history | sort | uniq > "${TEMP}/used-sources" | |||
| sed -n 's/^\s\+Audio_Region.* :source "\([^"]\+\)".*$/\1/p' history | sort | uniq > "${TEMP}/used-sources" | |||
| cd sources || fatal "Can't change to source directory" | |||