Commit 8438431b authored by nicoo's avatar nicoo
Browse files

mpvScripts.buildLua: Handle scripts packaged as directories

parent e4baad1e
Loading
Loading
Loading
Loading
+30 −4
Original line number Diff line number Diff line
@@ -2,8 +2,18 @@
, stdenvNoCC }:

let
  inherit (lib) hasPrefix hasSuffix removeSuffix;
  escapedList = with lib; concatMapStringsSep " " (s: "'${escape [ "'" ] s}'");
  fileName = pathStr: lib.last (lib.splitString "/" pathStr);
  nameFromPath = pathStr:
    let fN = fileName pathStr; in
    if hasSuffix ".lua" fN then
      fN
    else if !(hasPrefix "." fN) then
      "${fN}.lua"
    else
      null
  ;
  scriptsDir = "$out/share/mpv/scripts";
in
lib.makeOverridable (
@@ -13,8 +23,8 @@ lib.makeOverridable (
  let
    # either passthru.scriptName, inferred from scriptPath, or from pname
    scriptName = (args.passthru or {}).scriptName or (
      if args ? scriptPath
      then fileName args.scriptPath
      if args ? scriptPath && nameFromPath args.scriptPath != null
      then nameFromPath args.scriptPath
      else "${pname}.lua"
    );
    scriptPath = args.scriptPath or "./${scriptName}";
@@ -26,8 +36,24 @@ lib.makeOverridable (
    outputHashMode = "recursive";
    installPhase = ''
      runHook preInstall

      if [ -d "${scriptPath}" ]; then
        [ -f "${scriptPath}/main.lua" ] || {
          echo "Script directory '${scriptPath}' does not contain 'main.lua'" >&2
          exit 1
        }
        [ ${with builtins; toString (length extraScripts)} -eq 0 ] || {
          echo "mpvScripts.buildLua does not support 'extraScripts'" \
               "when 'scriptPath' is a directory"
          exit 1
        }
        mkdir -p "${scriptsDir}"
        cp -a "${scriptPath}" "${scriptsDir}/${lib.removeSuffix ".lua" scriptName}"
      else
        install -m644 -Dt "${scriptsDir}" \
          ${escapedList ([ scriptPath ] ++ extraScripts)}
      fi

      runHook postInstall
    '';