mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-02 18:23:44 +00:00
mpvScripts.buildLua: Handle scripts packaged as directories
This commit is contained in:
parent
e4baad1ea2
commit
8438431b9f
@ -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
|
||||
install -m644 -Dt "${scriptsDir}" \
|
||||
${escapedList ([ scriptPath ] ++ extraScripts)}
|
||||
|
||||
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
|
||||
'';
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user