#!/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 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 } print_help() { echo "Usage: $0 " echo "(most likely pkgs/development/lua-modules/generated-packages.nix)" echo "" echo " -c to set the list of luarocks package to generate" exit 1 } if [ $# -lt 1 ]; then print_help exit 1 fi trap exit_trap EXIT 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:+--only-server=$3}" pkg_version="${4:-}" lua_version="${5:+--lua-dir=$(nix path-info nixpkgs.$5)/bin}" echo "looking at $lua_pkg_name (version $pkg_version) from server [$server]" >&2 cmd="luarocks nix $server $lua_version $lua_pkg_name $pkg_version" echo "Running $cmd" >&2 drv="$nix_pkg_name = $($cmd)" if [ $? -ne 0 ]; then echo "Failed to convert $pkg" >&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 while IFS=, read -r nix_pkg_name lua_pkg_name server pkg_version luaversion 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" "$pkg_version" "$luaversion" done < "$CSV_FILE" # close the set echo "$FOOTER" | tee -a "$TMP_FILE" cp "$TMP_FILE" "$GENERATED_NIXFILE"