summary refs log blame commit diff
path: root/maintainers/scripts/update-luarocks-packages
blob: e7ab61b1a9c73da13b556b820b215fd3cf224fdc (plain) (tree)






























































                                                                                                            
                                                       











                         

                     
                              
                    
 


                                                                                












                                           
                                                            
  








                                                                    





                                   
#!/usr/bin/env nix-shell
#!nix-shell -p nix-prefetch-scripts luarocks-nix -i bash

# You'll likely want to use
# ``
# nixpkgs $ maintainers/scripts/update-luarocks-packages pkgs/development/lua-modules/generated-packages.nix
# ``
# to update all libraries in that folder.
# to debug, redirect stderr to stdout with 2>&1


# stop the script upon C-C
set -eu -o pipefail

if [ $# -lt 1 ]; then
	print_help
    exit 1
fi

CSV_FILE="maintainers/scripts/luarocks-packages.csv"
TMP_FILE="$(mktemp)"

exit_trap()
{
  local lc="$BASH_COMMAND" rc=$?
  test $rc -eq 0 || echo -e "*** error $rc: $lc.\nGenerated temporary file in $TMP_FILE" >&2
}
trap exit_trap EXIT

print_help() {
    echo "Usage: $0 <GENERATED_FILE>"
    echo "(most likely pkgs/development/lua-modules/generated-packages.nix)"
	echo ""
	echo " -c <CSV_FILE> to set the list of luarocks package to generate"
	exit 1
}


while getopts ":hc:" opt; do
  case $opt in
    h)
      print_help
      ;;
    c)
      echo "Loading package list from $OPTARG !" >&2
      CSV_FILE="$OPTARG"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
  shift $((OPTIND-1))
done

GENERATED_NIXFILE="$1"

HEADER="
/* ${GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
Regenerate it with:
nixpkgs$ ${0} ${GENERATED_NIXFILE}

These packages are manually refined in lua-overrides.nix
*/
{ self, stdenv, fetchurl, fetchgit, pkgs, ... } @ args:
self: super:
with self;
{
"

FOOTER="
}
/* GENERATED */
"


function convert_pkg () {
    nix_pkg_name="$1"
    lua_pkg_name="$2"
    server="${3:+--server=$3}"
    version="${4:-}"

    echo "looking at $lua_pkg_name (version $version) from server [$server]" >&2
    cmd="luarocks nix $server $lua_pkg_name $version"
    drv="$nix_pkg_name = $($cmd)"
    if [ $? -ne 0 ]; then
        echo "Failed to convert $pkg" >&2
        echo "$drv" >&2
    else
        echo "$drv" | tee -a "$TMP_FILE"
    fi
}

# params needed when called via callPackage
echo "$HEADER" | tee "$TMP_FILE"

# list of packages with format
# name,server,version
while IFS=, read -r nix_pkg_name lua_pkg_name server version
do
    if [ "${nix_pkg_name:0:1}" == "#" ]; then
        echo "Skipping comment ${nix_pkg_name}" >&2
        continue
    fi
    if [ -z "$lua_pkg_name" ]; then
        echo "Using nix_name as lua_pkg_name" >&2
        lua_pkg_name="$nix_pkg_name"
    fi
    convert_pkg "$nix_pkg_name" "$lua_pkg_name" "$server" "$version"
done < "$CSV_FILE"

# close the set
echo "$FOOTER" | tee -a "$TMP_FILE"

cp "$TMP_FILE" "$GENERATED_NIXFILE"