Fixed Broken Shit
This commit is contained in:
232
includes/vendor/build-script/yourls-build.sh
vendored
Normal file
232
includes/vendor/build-script/yourls-build.sh
vendored
Normal file
@ -0,0 +1,232 @@
|
||||
#!/bin/bash
|
||||
|
||||
####################################################################
|
||||
# This file is part of YOURLS
|
||||
#
|
||||
# List (and remove) unneeded files for production
|
||||
#
|
||||
# Run this script when adding, updating or removing a 3rd party
|
||||
# library that goes in the `vendor` directory.
|
||||
#
|
||||
# Typical use:
|
||||
#
|
||||
# $ composer update --no-dev --prefer-dist
|
||||
# $ ./includes/vendor/build-script/yourls-build.sh ./includes/vendor
|
||||
# $ commit & push
|
||||
#
|
||||
####################################################################
|
||||
|
||||
|
||||
## OPTIONS ##########################################################
|
||||
|
||||
# This directories in /vendor won't be cleaned up
|
||||
# Must be explicit names, case sensitive, no wildcard eg "README.*"
|
||||
#
|
||||
PRESERVE_IN_VENDOR=(
|
||||
'composer'
|
||||
'build-script'
|
||||
'symfony'
|
||||
)
|
||||
|
||||
# Files & dirs to keep in each library directory
|
||||
# Must be explicit names, case sensitive, no wildcard eg "README.*"
|
||||
#
|
||||
PRESERVE_IN_LIB=(
|
||||
'src'
|
||||
'library'
|
||||
'lib'
|
||||
'Psr'
|
||||
'README.md'
|
||||
'readme.md'
|
||||
'certificates'
|
||||
)
|
||||
|
||||
# Nothing to edit past this line !
|
||||
|
||||
|
||||
## VARS #############################################################
|
||||
|
||||
# Default values.
|
||||
TESTRUN=true
|
||||
|
||||
# Colors and fancyness
|
||||
RED='\033[0;31m'
|
||||
NORM='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
GREEN='\033[0;32m'
|
||||
PURPLE='\033[0;35m'
|
||||
|
||||
# Set Script Name variable
|
||||
SCRIPT=`basename ${BASH_SOURCE[0]}`
|
||||
|
||||
|
||||
## FUNCS ############################################################
|
||||
|
||||
# Print help
|
||||
rtfm () {
|
||||
echo -e "\nUsage: "
|
||||
echo -e " ${BOLD}${SCRIPT}${NORM} [-dh] <directory to cleanup>"
|
||||
echo -e ""
|
||||
echo -e "Examples: "
|
||||
echo -e " ${BOLD}${SCRIPT}${NORM} [-dh] ."
|
||||
echo -e " ${BOLD}${SCRIPT}${NORM} [-dh] /some/path/to/clean"
|
||||
echo -e ""
|
||||
echo -e "Options:"
|
||||
echo -e " ${BOLD}-h${NORM} Display this ${BOLD}H${NORM}elp message"
|
||||
echo -e " ${BOLD}-d${NORM} Actually ${BOLD}D${NORM}elete files flagged by this script"
|
||||
echo -e ""
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# in_array NEEDLE HAYSTACK
|
||||
# Return 0/1
|
||||
in_array () {
|
||||
local e
|
||||
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
|
||||
return 1
|
||||
}
|
||||
|
||||
|
||||
# Cleans the mess
|
||||
cleanup () {
|
||||
# Return if function called with no parameter
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
return
|
||||
fi
|
||||
|
||||
# Directory we are in
|
||||
CUR=$1
|
||||
|
||||
# Loop over each file and delete those we don't want to keep
|
||||
echo -e "${PURPLE}Cleaning: $(basename $(dirname "$CUR"))/$(basename "$CUR") ${NORM}"
|
||||
for FILE in $(ls -A $CUR)
|
||||
do
|
||||
|
||||
if in_array $FILE "${PRESERVE_IN_LIB[@]}"
|
||||
then
|
||||
echo -e "${GREEN}+${NORM} KEEP: $FILE"
|
||||
else
|
||||
echo -e "${RED}-${NORM} DEL : $FILE"
|
||||
maybe_delete "${CUR}${FILE}"
|
||||
fi
|
||||
|
||||
done;
|
||||
|
||||
# If directory is empty, delete
|
||||
if [ ! "$(ls -A $CUR)" ]
|
||||
then
|
||||
echo -e "${RED}-${NORM} del : $(basename "$CUR") (empty dir)"
|
||||
maybe_delete "$CUR"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
}
|
||||
|
||||
# Delete file if not in test run
|
||||
maybe_delete () {
|
||||
if [ "$TESTRUN" = false ]
|
||||
then
|
||||
rm -rf "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
# Check the number of arguments. If none are passed, print help and exit.
|
||||
args_or_die () {
|
||||
if [ $1 -eq 0 ]; then
|
||||
rtfm
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
## WORK #############################################################
|
||||
|
||||
# We should have some arguments
|
||||
args_or_die "$#"
|
||||
|
||||
# Check options
|
||||
while getopts "dh" opt; do
|
||||
case $opt in
|
||||
d)
|
||||
TESTRUN=false
|
||||
;;
|
||||
h)
|
||||
rtfm
|
||||
;;
|
||||
\?)
|
||||
rtfm
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $((OPTIND-1)) #This tells getopts to move on to the next argument.
|
||||
|
||||
# Again, we should have some arguments after dealing with options if any
|
||||
# Yes, this isn't perfect, there should be one test. Will do.
|
||||
args_or_die "$#"
|
||||
|
||||
# Check for valid dir
|
||||
if [ ! -d "$1" ]
|
||||
then
|
||||
echo -e "Need a valid directory, '${RED}$1${NORM}' is not."
|
||||
rtfm
|
||||
else
|
||||
# Resolve directory (expand '.' or '../stuff' as full path)
|
||||
TARGETDIR=$(cd "$1"; pwd)
|
||||
fi
|
||||
|
||||
# Dry run notice if applicable
|
||||
if [ "$TESTRUN" = true ]
|
||||
then
|
||||
echo -e "Test mode. ${RED}Nothing will be deleted${NORM}.\n"
|
||||
echo -e "Use with ${RED}-d${NORM} if you are OK with the proposed changes (or clean up manually).\n"
|
||||
fi
|
||||
|
||||
|
||||
# 1. Get list of all directories in target directory, except the one
|
||||
# listed in PRESERVE_IN_VENDOR that we don't want to touch
|
||||
#
|
||||
VENDORS=($(ls -d $TARGETDIR/*/))
|
||||
TEMP=(${VENDORS[@]})
|
||||
|
||||
for (( i=0; i<${#VENDORS[@]}; i++ ))
|
||||
do
|
||||
DIR=$(basename "${VENDORS[i]}")
|
||||
if in_array "$DIR" "${PRESERVE_IN_VENDOR[@]}"
|
||||
then
|
||||
unset TEMP[$i]
|
||||
fi
|
||||
done
|
||||
|
||||
VENDORS=(${TEMP[@]})
|
||||
|
||||
# 2. Loop over each directory and clean up
|
||||
#
|
||||
for DIR in ${VENDORS[@]}
|
||||
do
|
||||
SUBDIRS=$(ls -d $DIR*/ 2>/dev/null)
|
||||
if [ ! -z "$SUBDIRS" ]
|
||||
then
|
||||
# This VENDORS directory has subdirectory: process each subdir
|
||||
for SUBDIR in $SUBDIRS
|
||||
do
|
||||
cleanup $SUBDIR
|
||||
done;
|
||||
else
|
||||
# This directory contains no subdirectory
|
||||
cleanup $DIR
|
||||
fi
|
||||
done
|
||||
|
||||
# Exit reminder
|
||||
if [ "$TESTRUN" = true ]
|
||||
then
|
||||
echo -e "(${GREEN}Nothing has been deleted${NORM})\n"
|
||||
else
|
||||
echo -e "... all done $GREEN ;) $NORM\n"
|
||||
fi
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user