X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=gamepack-manager;h=4a3f63afd49da9df459d62117311db89e536abeb;hb=43dbbf66229eae466bcb2e275719416d7050f420;hp=7d98820d6d7850bcbb77b36cb342009232b30163;hpb=c1f506c43ca6fbae42dd52be352a82dd7e11f9cd;p=xonotic%2Fnetradiant.git diff --git a/gamepack-manager b/gamepack-manager index 7d98820d..4a3f63af 100755 --- a/gamepack-manager +++ b/gamepack-manager @@ -3,8 +3,8 @@ # get usage help this way: # ./gamepack_manager -h -: "${CP:=cp -v}" -: "${CP_R:=cp -r --preserve=timestamps}" +: "${CP:=cp -va}" +: "${CP_R:=cp -Rva}" : "${GIT:=git}" : "${SVN:=svn}" : "${WGET:=wget}" @@ -55,11 +55,13 @@ cat <<\EOF # Usable packs # ####################################################### +AlienArena GPL svn https://svn.code.sf.net/p/alienarena-cc/code/trunk/tools/netradiant_gamepack/AlienArenaPack DarkPlaces GPL svn svn://svn.icculus.org/gtkradiant-gamepacks/DarkPlacesPack/branches/1.5/ Doom3 proprietary svn svn://svn.icculus.org/gtkradiant-gamepacks/Doom3Pack/branches/1.5/ ET proprietary svn svn://svn.icculus.org/gtkradiant-gamepacks/ETPack/branches/1.5/ Heretic2 proprietary svn svn://svn.icculus.org/gtkradiant-gamepacks/Her2Pack/branches/1.5/ JediAcademy proprietary svn svn://svn.icculus.org/gtkradiant-gamepacks/JAPack/branches/1.5/ +Kingpin unknown zip http://download.kingpin.info/kingpin/editing/maps/map_editors/NetRadiant/addon/Kingpinpack.zip Neverball proprietary zip http://ingar.intranifty.net/files/netradiant/gamepacks/NeverballPack.zip Nexuiz GPL gitdir git://git.icculus.org/divverent/nexuiz.git misc/netradiant-NexuizPack master OpenArena GPL git https://github.com/NeonKnightOA/oagamepack.git @@ -71,6 +73,7 @@ Quake2 proprietary svn svn://svn.icculus.org/gtkradiant-gamepacks/ Quake4 proprietary svn svn://svn.icculus.org/gtkradiant-gamepacks/Q4Pack/branches/1.5/ Quake GPL zip http://ingar.intranifty.net/files/netradiant/gamepacks/Quake1Pack.zip Quetoo GPL svn svn://svn.icculus.org/gtkradiant-gamepacks/QuetooPack/branches/1.5/ +SmokinGuns unknown git https://github.com/smokin-guns/smokinguns-mapeditor-support.git Tremulous proprietary zip http://ingar.intranifty.net/files/netradiant/gamepacks/TremulousPack.zip TurtleArena proprietary git https://github.com/Turtle-Arena/turtle-arena-radiant-pack.git UFOAI proprietary svn svn://svn.icculus.org/gtkradiant-gamepacks/UFOAIPack/branches/1.5/ @@ -81,8 +84,50 @@ Xonotic GPL git https://gitlab.com/xonotic/netradiant-xonot EOF } +if command -v gsed >/dev/null +then + SED=gsed +elif sed --help >/dev/null 2>&1 +then + SED=sed +else + printf 'ERROR: GNU sed is missing\n' >&2 + exit 1 +fi + +printRealPath () +{ + if command -v grealpath >/dev/null + then + grealpath "${1}" + elif command -v realpath >/dev/null + then + realpath "${1}" + elif command -v greadlink >/dev/null + then + # test greadlink first as greadlink has the feature on macos + # but readlink only has it on linux, note that it's probably + # the same on bsd + # note: (g)readlink requires the file to be create first + greadlink -f "${1}" + elif command -v readlink >/dev/null + then + # --help and -f options are GNU readlink things + if readlink --help >/dev/null 2>&1 + then + readlink -f "${1}" + else + if ! python -c "import os; print(os.path.realpath('${1}'))" + then + printf 'ERROR: GNU realpath or other way to compute real path of a file is missing\n' >&2 + exit 1 + fi + fi + fi +} + sanitizeDB () { - sed -e 's/#.*//;s/[ \t][ \t][ \t]*/\t/g;s/^[ \t]*//;s/[ \t]*$//' \ + ${SED} -e 's/#.*//;s/[ \t][ \t][ \t]*/\t/g;s/^[ \t]*//;s/[ \t]*$//' \ | grep -v '^$' } @@ -100,7 +145,7 @@ printList () { dedupeList () { printList "${1}" \ | tr '\n' ' ' \ - | sed -e 's/ $//' + | ${SED} -e 's/ $//' } printGamePackDB () { @@ -308,7 +353,12 @@ downloadPack () { ) ${RM_R} "${pack}" ${MKDIR} "${pack}" - ${MV} 'zipdownload/'*'/'* "${pack}/" + if [ -d 'zipdownload/games' ] + then + ${MV} 'zipdownload/'* "${pack}/" + else + ${MV} 'zipdownload/'*'/'* "${pack}/" + fi ${RM_R} 'zipdownload' ;; 'gitdir') @@ -445,7 +495,7 @@ printHelp () { local prog_name tab="$(printf '\t')" - prog_name="$(basename "$(readlink -f "${0}")")" + prog_name='gamepack-manager' cat <<-EOF Usage: ${prog_name} [OPTION] [SELECTION ] [ACTION] @@ -462,13 +512,13 @@ printHelp () { ${tab}${tab}select games by name (default: none) ${tab}${tab}special keyword: all, none ${tab}${tab}available games: - $(printNameList | sed -e 's/^/\t\t\t/') + $(printNameList | ${SED} -e 's/^/\t\t\t/') ${tab}-l, --license LICENSES… ${tab}${tab}select games by license (default: none) ${tab}${tab}special keyword: free, all, none ${tab}${tab}available licenses: - $(printLicenseList | sed -e 's/^/\t\t\t/') + $(printLicenseList | ${SED} -e 's/^/\t\t\t/') ACTIONS: ${tab}-ln, --list-names @@ -621,12 +671,24 @@ done # compatibility with legacy Makefile if [ "${DOWNLOAD_GAMEPACKS}" = 'yes' ] then - ! [ -z "${DOWNLOADDIR}" ] && download_dir="${DOWNLOADDIR}" - ! [ -z "${INSTALLDIR}" ] && install_dir="${INSTALDIR}" + if ! [ -z "${DOWNLOADDIR}" ] + then + download_dir="${DOWNLOADDIR}" + fi + + if ! [ -z "${INSTALLDIR}" ] + then + install_dir="${INSTALLDIR}" + fi + license_list='free' by_license='true' + download_packs='true' + mkdir_download='true' + install_packs='true' + mkdir_install='true' fi if [ -z "${download_dir}" ] @@ -654,13 +716,13 @@ selected_list="$(dedupeList "${selected_list}")" if "${mkdir_download}" then ${MKDIR_P} "${download_dir}" - real_download_dir="$(readlink -f "${download_dir}")" + real_download_dir="$(printRealPath "${download_dir}")" fi if "${mkdir_install}" then ${MKDIR_P} "${install_dir}" - real_install_dir="$(readlink -f "${install_dir}")" + real_install_dir="$(printRealPath "${install_dir}")" fi if "${list_licenses}"