HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: //usr/syno/bin/package_config_migrate.sh
#!/bin/sh
# Copyright (c) 2003-2011 Synology Inc. All rights reserved.

GREP=/bin/grep
SED=/bin/sed


Usage()
{
	cat >&2 <<EOF
Usage:
	del  [conf file] [key list]
		delete keys in list from conf file.
		key list is separate by space. can be regular expression.
	move [src conf file] [dst conf file] [key list]
		move keys in list from src file to dst file.
		key list is separate by space. can be regular expression.
EOF
}

Delete()
{
	local confFile="$1"
	local keyList="$2"
	local count=0

	if [ -z "$confFile" ] || [ -z "$keyList" ]; then
		Usage;
		return 1;
	fi

	if [ ! -r "$confFile" ]; then
		echo "Failed to open file $confFile"
		return 1;
	fi

	for key in $keyList; do
		line=`$GREP "^$key=" "$confFile"`
		matched=`$GREP -c "^$key=" "$confFile"`

		if [ -n "$line" ]; then
			$SED -i "/^"$key"=/d" "$confFile"
			count=`expr $count + $matched`
		fi
	done

	echo "Deleted $count keys from file $confFile"
}

Move()
{
	local srcFile="$1"
	local dstFile="$2"
	local keyList="$3"
	local count=0

	if [ -z "$srcFile" ] || [ -z "$dstFile" ] || [ -z "$keyList" ]; then
		Usage;
		return 1;
	fi

	if [ ! -r "$srcFile" ]; then
		echo "Failed to open file $srcFile"
		return 1;
	fi
	if [ ! -r "$dstFile" ]; then
		echo "Failed to open file $dstFile"
		return 1;
	fi

	for key in $keyList; do
		line=`$GREP "^$key=" "$srcFile"`
		lineInDst=`$GREP "^$key=" "$dstFile"`
		matched=`$GREP -c "^$key=" "$srcFile"`

		if [ -n "$line" ]; then
			if [ -n "$lineInDst" ]; then
				# dst already has these keys, delete first
				$SED -i '/^'$key'=/d' "$dstFile"
			fi

			# copy keys from src to dst
			$GREP "^$key=" "$srcFile" >> "$dstFile"

			# remove keys from src file
			$SED -i '/^'$key'=/d' "$srcFile"

			count=`expr $count + $matched`
		fi
	done

	echo "Moved $count keys from $srcFile to $dstFile"
}

case $1 in
h|help|-h|--help)
	Usage;
	exit 1;
	;;
d|del|-d|--del)
	Delete "$2" "$3";
	exit 0;
	;;
m|move|-m|--move)
	Move "$2" "$3" "$4";
	exit 0;
	;;
*)
	Usage;
	exit 1;
	;;
esac

# vim:ts=4