]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - gamepack-manager
library-bundler: rely on gcp instead of cp on macos
[xonotic/netradiant.git] / gamepack-manager
index 7d98820d6d7850bcbb77b36cb342009232b30163..4a3f63afd49da9df459d62117311db89e536abeb 100755 (executable)
@@ -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 <ARGUMENTS>] [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}"