๐Ÿ˜Š๐Ÿ˜Šๅงddvrd(โ•ฏโœงโˆ‡โœง)โ•ฏ ๆ–ฐใ—ใ„ใƒ’ใƒƒใƒ—ใจใ‚ฆใ‚จใ‚นใƒˆใฎ่„‚่‚ชใ‚ซใƒใƒผ๐ŸŽถ ์‹ ํƒ€์ด์œ„์œ„์•ˆ ์Šคํƒ€์ผํ™”?? GreyFile

?? GreyFile โ€” Mystic File Browser

Current path: usr/bin/



?? Go up: /usr

?? Viewing: clean-binary-files

#!/bin/sh
#
# Script to clean binary files.
#
# JPackage Project <http://www.jpackage.org/>
#
# $Id: clean-binary-files,v 1.1 2006/09/19 19:39:37 fnasser Exp $

# Import java functions
[ -r "/usr/share/java-utils/java-functions" ] \
 &&  . "/usr/share/java-utils/java-functions" || exit 1

# Prints help message
usage() {
	cat >&2 << EOF_USAGE

Usage: $0 {[-f {-, instructions_file}], [-e exclusion_file] [-l]} [-a archive_file] [-d custom_jar_map] [-n] [-p] [-s] 

Options:
	-f - The instructions file, specifying which files to keep and which
	     to remove
	-e - The exclusions file, specifying special binary files that are to
	     be preserved, or non-binary files that are to be removed.
	-l - Only list instructions (to put in instructions file), do not delete anything.
	-a - Archive file on which actions will be performed, as opposed to 
	     current directory
	-d - A custom jar map file (has priority over the generic one).
	-n - No symlinks (i.e. only clean jars, don't run build-jar-repository afterwards)
	-p - Preserve original file names (-p to build-jar-repository)
	-s - Silent mode. Won't output commands during cleanup
EOF_USAGE
	exit 2
}

[ "$1" = "--help" ] && usage

[ "$#" = 0 ] && usage

set_javacmd || exit 3
check_java_env || exit 4
set_jvm_dirs || exit 5

# Directory in which script was invoked
_WORKING_DIR=`pwd`

# Default jar map
_JAR_MAP_FILE="/usr/share/java-utils/jarname-jpp-map"

# Variables used for comparing file lists
_TEMP_COMPARISON_FILE=/tmp/_temp_comparison_file.$$
_KEEP_REMOVE_FILELIST=/tmp/_kr_file.$$
_ON_DISK_FILELIST=/tmp/_fnlist_file.$$
_FILELIST_DIFF=/tmp/_filelist_diff_file.$$
rm -f $_KEEP_REMOVE_FILELIST $_ON_DISK_FILELIST $_FILELIST_DIFF

# Temporary instructions file
_TEMP_INSTRUCTIONS_FILE=/tmp/_temp_instruction_file.$$

# Directory where archive is extracted, if we are working with one
_ARCHIVE_EXTRACTION_DIR=/tmp/_cbr_archive_dir.$$

# MODE can be list, list_and_delete, or delete
_MODE="list_and_delete"

# Run-time variables
_ARCHIVE_FILE=""
_INSTRUCTIONS_FILE=""
_EXCEPTIONS_FILE=""
_KEEP_LIST=""
_PRESERVE_BINARY_NAMES=0
_REMOVE_LIST=""
_SILENT_MODE=0
_CREATE_SYMLINKS=1
_CUSTOM_JAR_MAP_FILE=""

# Adds to the appropriate (keep/remove) list
add_to_keep_or_remove_list() {

	if [ $1 = "keep" ]; then

		shift

		if [ -z "$_KEEP_LIST" ]; then
			_KEEP_LIST=$*
		else
			_KEEP_LIST=${_KEEP_LIST}"|"$*
		fi
	else

		shift

		if [ -z "$_REMOVE_LIST" ]; then
			_REMOVE_LIST=$*
		else
			_REMOVE_LIST=${_REMOVE_LIST}"|"$*
		fi
	fi
}

# Function to check against exclusion generate the 
# keep/remove command
check_and_generate_command() {

	_old_ifs=$IFS
	IFS='|'

	echo $1 | grep -E "\\.jar$" >& /dev/null
	if [ $? -eq 0 ]; then

		# Check if the item is in the exclusion list
		_exclude=0

		for excluded in $_KEEP_LIST; do
			if [ "$1" = "$excluded" ]; then
				_exclude=1
				break
			fi
		done

		if [ $_exclude -eq 0 ]; then
			output_command "remove $1"
		else
			output_command "keep $1"
		fi
	fi

	IFS=$_old_ifs
}

# Function to delete files
delete_and_replace_file() {

	rm -f "$1"
	print "rm -f \"$1\""

	# Now find the appropriate jar in the map, and output the 
	# build-jar-repository command
	execute_bjr_command $1
}

# Ensures that the file exists
ensure_exclusion_files_exist() {

	rm -f $_ON_DISK_FILELIST
	touch $_ON_DISK_FILELIST

	# Generate a list of binary files on disk

	_filter="\\.jar$"

	if [ ! "$_KEEP_LIST" = "" ]; then
		_filter="$_filter|$_KEEP_LIST"
	fi

	if [ ! "$_REMOVE_LIST" = "" ]; then
		_filter="$_filter|$_REMOVE_LIST"
	fi

	find . | sed -e s:^./::g | grep -E "$_filter" | sort -u > $_ON_DISK_FILELIST

	_old_ifs=$IFS
	IFS='|'
	
	for filename in $_KEEP_LIST; do
		grep ^$filename $_ON_DISK_FILELIST >& /dev/null
		if [ $? -gt 0 ]; then
			echo "Cannot find file $filename from exclusions list. Aborting."

			rm -f $_ON_DISK_FILELIST
			IFS=$_old_ifs

			exit 7
		fi
	done

	for filename in $_REMOVE_LIST; do
		grep ^$filename $_ON_DISK_FILELIST >& /dev/null
		if [ $? -gt 0 ]; then
			echo "Cannot find file $filename from exclusions list. Aborting."

			rm -f $_ON_DISK_FILELIST
			IFS=$_old_ifs

			exit 7
		fi
	done

	rm -f $_ON_DISK_FILELIST
	IFS=$_old_ifs
}

# Ensures that files in kee/remove list exist on disk, and vice-versa
ensure_files_exist() {
	rm -f $_TEMP_COMPARISON_FILE
	touch $_TEMP_COMPARISON_FILE

	_old_ifs=$IFS
	IFS='|'

	for filename in $_REMOVE_LIST; do
		echo $filename >> $_TEMP_COMPARISON_FILE
	done

	for filename in $_KEEP_LIST; do
		echo $filename >> $_TEMP_COMPARISON_FILE
	done

	IFS=$_old_ifs

	sort -u --output=$_KEEP_REMOVE_FILELIST $_TEMP_COMPARISON_FILE
	rm -f $_TEMP_COMPARISON_FILE

	# We have a list of keep/remove items. Now generate a list of
	# binary files on disk

	_filter="\\.jar$"

	if [ ! "$_KEEP_LIST" = "" ]; then
		_filter="$_filter|$_KEEP_LIST"
	fi

	if [ ! "$_REMOVE_LIST" = "" ]; then
		_filter="$_filter|$_REMOVE_LIST"
	fi

	find . | sed -e s:^./::g | grep -E "$_filter" | sort -u > $_ON_DISK_FILELIST

	# Now compare the two
	diff -c $_KEEP_REMOVE_FILELIST $_ON_DISK_FILELIST > $_FILELIST_DIFF
	rm -f $_KEEP_REMOVE_FILELIST $_ON_DISK_FILELIST

	if [ -s $_FILELIST_DIFF ]; then
		echo "ERROR: Extraneous files were found."
		echo ""
		echo "Files in keep/remove list, but not on disk/archive:"
		cat $_FILELIST_DIFF | grep "^- " | sed -e s:"^- "::g

		echo ""
		echo "Binary files in on disk/archive, but not in keep/remove list:"
		cat $_FILELIST_DIFF | grep "^+ " | sed -e s:"^+ "::g

		echo ""
		echo "Indistinguishable files:"
		cat $_FILELIST_DIFF | grep "^\! " | sed -e s:"^\! "::g

		rm -f $_FILELIST_DIFF
		exit 7
	fi

	rm -f $_FILELIST_DIFF
}

# Executes the build-jar-repository command
execute_bjr_command() {

	if [ $_CREATE_SYMLINKS -eq 0 ]; then
		return 0;
	fi

	echo $1 | grep -E "\\.jar$" >& /dev/null
	if [ ! $? -eq 0 ]; then
		return 0
	fi

	# Strip version and extention. e.g. abc-2.1-api-1.0.4.jar -> abc-2.1-api
	_jar_filename=`basename $1`
	_search_name=`basename $1`
	_search_name=`echo $_search_name | sed -r -e s/-[[:digit:].]*\\\.jar//g | sed -r -e s/\\\.jar$//g`

	_mapped_jar_name=""
	_final_name=""

	# Search in custom jar map first
	if [ ! "$_CUSTOM_JAR_MAP_FILE" = "" ] && [ -f $_CUSTOM_JAR_MAP_FILE ]; then
		# echo "grep -E \"^$_search_name.jar \" $_CUSTOM_JAR_MAP_FILE | awk '{print $2}'"
		_mapped_jar_name=`grep -E "^$_search_name\\.jar " $_CUSTOM_JAR_MAP_FILE | awk '{print $2}'`

		if [ "$_mapped_jar_name" = "" ]; then
			_mapped_jar_name=`grep -E "^$_jar_filename " $_CUSTOM_JAR_MAP_FILE | awk '{print $2}'`
		fi
	fi

	# Search in global jar map ONLY IF things were not found in the custom map
	if [ -f $_JAR_MAP_FILE ] && [ "$_mapped_jar_name" = "" ]; then
		# echo "grep -E \"^$_search_name.jar \" $_JAR_MAP_FILE | awk '{print $2}'"
		_mapped_jar_name=`grep -E "^$_search_name\\.jar " $_JAR_MAP_FILE | awk '{print $2}'`
	fi

	if [ "$_mapped_jar_name" = "" ]; then
		_final_name=$_search_name
	else
		_final_name=$_mapped_jar_name
	fi

	_preserve_name_flag=""
	if [ $_PRESERVE_BINARY_NAMES = 1 ]; then
		_preserve_name_flag="-p"
	fi

	_target_dir=`dirname $1`

	_old_ifs=$IFS
	IFS='
'

	for jppname in $_final_name; do
		print "build-jar-repository -s $_preserve_name_flag $_target_dir $jppname"
		build-jar-repository -s $_preserve_name_flag $_target_dir $jppname
	done

	IFS=$_old_ifs

}

# Outputs command to either STDOUT, or to a temp file, depending on what is required
output_command() {
	if [ $_MODE = "list" ]; then
		echo $*
	elif [ $_MODE = "list_and_delete" ]; then
		echo $* >> $_TEMP_INSTRUCTIONS_FILE
	fi
}

# Outputs to STDOUT (depending on whether or not we are in silent mode)
print() {
	if [ $_SILENT_MODE -eq 0 ]; then
		echo $*
	fi
}

## BEGIN EXECUTION

# Get the command line options and set up appropriate parameters
while [ $# -gt 0 ] ; do
	case "$1" in
		-e) # Exclusion list (LIST MODE)

			if [ ! -f $2 ] ; then
				echo "$0: ERROR: Could not find exclusions file!"
				exit 6;
			fi

			while read line; do

				echo $line | grep ^% >& /dev/null
				if [ $? -eq 0 ] || [ "$line" = "" ]; then
					continue
				fi

 				_type=`echo $line | awk '{print $1}'`
 				_value=`echo $line | awk '{ printf "%s", $2; for (i = 3; i <= NF; i=i+1) printf " %s", $i }'`

 				if [ $_type = "keep" ]; then
 					if [ -z "$_KEEP_LIST" ]; then
 						_KEEP_LIST=$_value
 					else
 						_KEEP_LIST=${_KEEP_LIST}"|"$_value
 					fi
 				else
 					if [ -z "$_REMOVE_LIST" ]; then
 						_REMOVE_LIST=$_value
 					else
 						_REMOVE_LIST=${_REMOVE_LIST}"|"$_value
 					fi
 				fi

			done < $2


			if [ ! "$_MODE" = "list" ]; then

				# If program had previously crashed, the temp file could be there. Remove it
				rm -f $_TEMP_INSTRUCTIONS_FILE

				_MODE="list_and_delete"
			fi

			if [ ! "$_INSTRUCTIONS_FILE" = "" ]; then
				echo "ERROR: -e and -f are mutually exclusive options"
				exit 6
			fi

			_EXCEPTIONS_FILE=$2

			shift
		;;
		-f) # Instruction file (DELETE MODE)

			if [ $2 == "-" ]; then

				while read command; do

					_type=`echo $command | awk '{print $1}'`
					_value=`echo $command | awk '{ printf "%s", $2; for (i = 3; i <= NF; i=i+1) printf " %s", $i }'`

					add_to_keep_or_remove_list $_type $_value

				done

			else

				if [ ! -f $2 ] ; then
					echo "$0: ERROR: Could not find instructions file!"
					exit 6;
				fi


				while read line; do

					echo $line | grep ^% >& /dev/null
					if [ $? -eq 0 ] || [ "$line" = "" ]; then
						continue
					fi

					_type=`echo $line | awk '{print $1}'`
					_value=`echo $line | awk '{ printf "%s", $2; for (i = 3; i <= NF; i=i+1) printf " %s", $i }'`

					add_to_keep_or_remove_list $_type $_value

				done < $2

				_INSTRUCTIONS_FILE=$2

			fi

			if [ "$_MODE" = "list" ]; then
				echo "ERROR: -f and -l are mutually exclusive options"
				exit 6
			fi

			if [ ! "$_EXCEPTIONS_FILE" = "" ]; then
				echo "ERROR: -e and -f are mutually exclusive options"
				exit 6
			fi

			_MODE=delete

			shift
		;;
		-l)

			if [ "$_MODE" = "delete" ]; then
				echo "ERROR: -f and -l are mutually exclusive options"
				exit 6
			fi

			_MODE=list
		;;
		-a)
			_ARCHIVE_FILE=$2
			shift
		;;
		-d)
			_CUSTOM_JAR_MAP_FILE=$2
			shift
		;;
		-n)
			_CREATE_SYMLINKS=0
		;;
		-p)
			_PRESERVE_BINARY_NAMES=1
		;;
		-s)
			_SILENT_MODE=1
		;;
		*)
			echo "ERROR: Unknown argument $1"
			exit 6
		;;
	esac
	shift
done

# Are basic arguments given?

if [ -z "$_EXCEPTIONS_FILE" ] && [ -z "$_INSTRUCTIONS_FILE" ]; then
	echo "ERROR: One of -f or -e is required!"
	exit 6
fi

# Now, carry out the actions

# If we are dealing with an archive file, we need to extract things somewhere, and do our actions in there
if [ ! -z $_ARCHIVE_FILE ]; then
	rm -rf $_ARCHIVE_EXTRACTION_DIR
	mkdir -p $_ARCHIVE_EXTRACTION_DIR
	pushd $_ARCHIVE_EXTRACTION_DIR >& /dev/null
	tar xf $_WORKING_DIR/`basename $_ARCHIVE_FILE`
fi

# If in delete mode, we need to clean up the binary files

if [ $_MODE = "delete" ]; then

	# First, ensure that files in keep/remove lists exist on disk, and vice-versa
	ensure_files_exist

	_old_ifs=$IFS
	IFS='|'

	for filename in $_REMOVE_LIST; do
		delete_and_replace_file $filename
	done

	IFS=$_old_ifs

else

	# Else, in list mode, we list the actions that will go into the instructions file

	# Ensure that files in both lists exist
	ensure_exclusion_files_exist

	# Generate a list of files, and subsequently, the commands

	_old_ifs=$IFS

	IFS='
'

	for filename in `find . | grep .jar$ | sed -e s:^./::g`; do
		check_and_generate_command $filename
	done

	IFS=$_old_ifs

	# Add all of the "remove" commands from the exclusion list
	_old_ifs=$IFS
	IFS='|'

	for filename in $_REMOVE_LIST; do
		output_command "remove $filename"
	done;

	IFS=$_old_ifs

	if [ $_MODE = "list_and_delete" ]; then

		_instructions_file_flag="-f"
		_instructions_file="$_TEMP_INSTRUCTIONS_FILE"

		_silent_mode_flag=""
		if [ $_SILENT_MODE = 1 ]; then
			_silent_mode_flag="-s"
		fi

		_preserve_names_flag=""
		if [ $_PRESERVE_BINARY_NAMES = 1 ]; then
			_preserve_names_flag="-p"
		fi

		_no_symlinks_flag=""
		if [ $_CREATE_SYMLINKS = 0 ]; then
			_no_symlinks_flag="-n"
		fi

		_custom_map_flag=""
		_custom_map=""
		if [ ! "$_CUSTOM_JAR_MAP_FILE" = "" ]; then
			_custom_map_flag="-d"
			_custom_map="$_CUSTOM_JAR_MAP_FILE"
		fi

		#echo "$0 $_instructions_file_flag $_instructions_file $_preserve_names_flag $_silent_mode_flag $_no_symlinks_flag $_custom_map_flag $_custom_map"
		#$0 $_instructions_file_flag $_instructions_file $_preserve_names_flag $_silent_mode_flag $_no_symlinks_flag $_custom_map_flag $_custom_map
		clean-binary-files $_instructions_file_flag $_instructions_file $_preserve_names_flag $_silent_mode_flag $_no_symlinks_flag $_custom_map_flag $_custom_map
		rm -f $_TEMP_INSTRUCTIONS_FILE
	fi

fi

if [ ! -z $_ARCHIVE_FILE ]; then
	_archive_basename=`basename $_ARCHIVE_FILE`
	_arch_name=${_archive_basename%%.*}
	_arch_ext=${_archive_basename#*.}

	_compression_flag=""

	echo $_ARCHIVE_FILE | grep gz$ >& /dev/null
	if [ $? -eq 0 ]; then
		_compression_flag=z
	fi

	echo $_ARCHIVE_FILE | grep bz2$ >& /dev/null
	if [ $? -eq 0 ]; then
		_compression_flag=f
	fi

	tar cf$_compression_flag $_WORKING_DIR/$_arch_name-clean.$_arch_ext *

	popd >& /dev/null

	rm -rf $_ARCHIVE_EXTRACTION_DIR
fi


??

??

404 - Epoxy Empourium
Welcome to Epoxy Empourium
Product Suggestions

Oops! Page Not Found.

Sorry but we are unable to find the page that you are looking for.

Back to Home
Error image