mkpk

Систем за управљање пакетима који користи mk из система Plan9
git clone https://git.sr.ht/~strahinja/mkpk
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

mkpk (1349B)


      1 #!/bin/sh
      2 
      3 usage()
      4 {
      5 	cat <<! >&2
      6 Usage: ${0##*/} [operation] [package]
      7 operations: [ build | fetch | info | install | list | uninstall | update | upgrade ]
      8 !
      9 }
     10 
     11 error()
     12 {
     13 	local format=$1 args
     14 	shift
     15 	printf "%s: ${format}\n" "${0##*/}" $* >&2
     16 	exit 1
     17 }
     18 
     19 if [ "$(id -u)" -ne 0 ]; then
     20 	case "$1" in
     21 		list|info|"")	;;
     22 		*)		error "You must be root to $1";;
     23 	esac
     24 fi
     25 case "$1" in
     26 	update)	;;
     27 	*)	if [ $# -lt 2 ]; then
     28 			usage
     29 			exit 1
     30 		fi;;
     31 esac
     32 
     33 command=$1
     34 package=$2
     35 version=$3
     36 mkpklib=${mkpklib:-/lib/mkpk}
     37 MK=${MK:-/plan9/bin/mk}
     38 eval $("${MK}" -f "${mkpklib}"/vars.mk mkpklib="${mkpklib}")
     39 
     40 files=defaults
     41 case ${command} in
     42 	update)		files=update;;
     43 	fetch)		files=fetch;;
     44 	build)		files=build;;
     45 	list)		files=listfiles;;
     46 	info)		files=info;;
     47 	install)	files=install;;
     48 	upgrade)	files="fetch build uninstall install";;
     49 	uninstall)	files=uninstall;;
     50 	*)		usage
     51 			exit 1;;
     52 esac
     53 
     54 for file in $files
     55 do
     56 	if [ "${package}" = "mkpk" ] && [ "${file}" = "uninstall" ]; then
     57 		eval $("${MK}" -f "${mkpklib}"/vars.mk mkpklib="${mkpklib}")
     58 		ln -sf "$(find ${SRCBASEDIR} -name 'mkpk-*' -type d -prune \
     59 			| sed 's,'${SRCBASEDIR}'/,,g' | recent)" "${SRCBASEDIR}/mkpk"
     60 		mkpklib=${SRCBASEDIR}/mkpk/lib
     61 		RECENT=${SRCBASEDIR}/mkpk/recent
     62 		export mkpklib RECENT
     63 	fi
     64 	"${MK}" -f "${mkpklib}"/${file}.mk mkpklib="${mkpklib}" \
     65 		PKGBASE="${package}"
     66 done