]> 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 f06ccf7af54becd74d309e7249160761527a3487..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,6 +84,17 @@ 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
@@ -105,21 +119,15 @@ printRealPath ()
                else
                        if ! python -c "import os; print(os.path.realpath('${1}'))"
                        then
-                               printf 'ERROR: no known way to compute real path of a file' >&2
-                               return 1
+                               printf 'ERROR: GNU realpath or other way to compute real path of a file is missing\n' >&2
+                               exit 1
                        fi
                fi
        fi
 }
 
-if "${mkdir_download}"
-then
-       ${MKDIR_P} "${download_dir}"
-       real_download_dir="$(printRealPath "${download_dir}")"
-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 '^$'
 }
 
@@ -137,7 +145,7 @@ printList () {
 dedupeList () {
        printList "${1}" \
        | tr '\n' ' ' \
-       | sed -e 's/ $//'
+       | ${SED} -e 's/ $//'
 }
 
 printGamePackDB () {
@@ -345,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')
@@ -482,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]
@@ -499,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
@@ -700,6 +713,12 @@ fi
 
 selected_list="$(dedupeList "${selected_list}")"
 
+if "${mkdir_download}"
+then
+       ${MKDIR_P} "${download_dir}"
+       real_download_dir="$(printRealPath "${download_dir}")"
+fi
+
 if "${mkdir_install}"
 then
        ${MKDIR_P} "${install_dir}"