generators: refactor toPlist
Address PR comments Refactors - Rename toPLIST -> toPlist
This commit is contained in:
parent
d361371d23
commit
337b58950b
4 changed files with 43 additions and 44 deletions
|
@ -173,54 +173,53 @@ rec {
|
|||
fna);
|
||||
in if fna == {} then "<λ>"
|
||||
else "<λ:{${showFnas}}>"
|
||||
else abort "toPretty: should never happen (v = ${v})";
|
||||
else abort "generators.toPretty: should never happen (v = ${v})";
|
||||
|
||||
# PLIST handling
|
||||
toPLIST = {}: v: let
|
||||
pprExpr = ind: x: with builtins;
|
||||
toPlist = {}: v: let
|
||||
expr = ind: x: with builtins;
|
||||
if isNull x then "" else
|
||||
if isBool x then pprBool ind x else
|
||||
if isInt x then pprInt ind x else
|
||||
if isString x then pprStr ind x else
|
||||
if isList x then pprList ind x else
|
||||
if isAttrs x then pprAttrs ind x else
|
||||
abort "pprExpr: should never happen (v = ${v})";
|
||||
if isBool x then bool ind x else
|
||||
if isInt x then int ind x else
|
||||
if isString x then str ind x else
|
||||
if isList x then list ind x else
|
||||
if isAttrs x then attrs ind x else
|
||||
abort "generators.toPlist: should never happen (v = ${v})";
|
||||
|
||||
pprLiteral = ind: x: ind + x;
|
||||
literal = ind: x: ind + x;
|
||||
|
||||
pprBool = ind: x: pprLiteral ind (if x then "<true/>" else "<false/>");
|
||||
pprInt = ind: x: pprLiteral ind "<integer>${toString x}</integer>";
|
||||
pprStr = ind: x: pprLiteral ind "<string>${x}</string>";
|
||||
pprKey = ind: x: pprLiteral ind "<key>${x}</key>";
|
||||
bool = ind: x: literal ind (if x then "<true/>" else "<false/>");
|
||||
int = ind: x: literal ind "<integer>${toString x}</integer>";
|
||||
str = ind: x: literal ind "<string>${x}</string>";
|
||||
key = ind: x: literal ind "<key>${x}</key>";
|
||||
|
||||
pprIndent = ind: pprExpr "\t${ind}";
|
||||
indent = ind: expr "\t${ind}";
|
||||
|
||||
pprItem = ind: libStr.concatMapStringsSep "\n" (pprIndent ind);
|
||||
item = ind: libStr.concatMapStringsSep "\n" (indent ind);
|
||||
|
||||
pprList = ind: x: libStr.concatStringsSep "\n" [
|
||||
(pprLiteral ind "<array>")
|
||||
(pprItem ind x)
|
||||
(pprLiteral ind "</array>")
|
||||
list = ind: x: libStr.concatStringsSep "\n" [
|
||||
(literal ind "<array>")
|
||||
(item ind x)
|
||||
(literal ind "</array>")
|
||||
];
|
||||
|
||||
pprAttrs = ind: x: libStr.concatStringsSep "\n" [
|
||||
(pprLiteral ind "<dict>")
|
||||
(pprAttr ind x)
|
||||
(pprLiteral ind "</dict>")
|
||||
attrs = ind: x: libStr.concatStringsSep "\n" [
|
||||
(literal ind "<dict>")
|
||||
(attr ind x)
|
||||
(literal ind "</dict>")
|
||||
];
|
||||
|
||||
pprAttr = let attrFilter = name: value: name != "_module" && value != null;
|
||||
attr = let attrFilter = name: value: name != "_module" && value != null;
|
||||
in ind: x: libStr.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList
|
||||
(name: value: lib.optional (attrFilter name value) [
|
||||
(pprKey "\t${ind}" name)
|
||||
(pprExpr "\t${ind}" value)
|
||||
(key "\t${ind}" name)
|
||||
(expr "\t${ind}" value)
|
||||
]) x));
|
||||
|
||||
in ''
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
${pprExpr "" v}
|
||||
</plist>'';
|
||||
in ''<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
${expr "" v}
|
||||
</plist>'';
|
||||
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
let
|
||||
|
||||
inherit (lib.generators) toPLIST;
|
||||
inherit (lib.generators) toPlist;
|
||||
|
||||
Info = {
|
||||
CFBundleIdentifier = platformName;
|
||||
|
@ -286,11 +286,11 @@ let
|
|||
in
|
||||
|
||||
runCommand "MacOSX.platform" {} ''
|
||||
install -D ${writeText "Info.plist" (toPLIST {} Info)} $out/Info.plist
|
||||
install -D ${writeText "version.plist" (toPLIST {} Version)} $out/version.plist
|
||||
install -D ${writeText "Architectures.xcspec" (toPLIST {} Architectures)} $out/Developer/Library/Xcode/Specifications/Architectures.xcspec
|
||||
install -D ${writeText "PackageTypes.xcspec" (toPLIST {} PackageTypes)} $out/Developer/Library/Xcode/Specifications/PackageTypes.xcspec
|
||||
install -D ${writeText "ProductTypes.xcspec" (toPLIST {} ProductTypes)} $out/Developer/Library/Xcode/Specifications/ProductTypes.xcspec
|
||||
install -D ${writeText "Info.plist" (toPlist {} Info)} $out/Info.plist
|
||||
install -D ${writeText "version.plist" (toPlist {} Version)} $out/version.plist
|
||||
install -D ${writeText "Architectures.xcspec" (toPlist {} Architectures)} $out/Developer/Library/Xcode/Specifications/Architectures.xcspec
|
||||
install -D ${writeText "PackageTypes.xcspec" (toPlist {} PackageTypes)} $out/Developer/Library/Xcode/Specifications/PackageTypes.xcspec
|
||||
install -D ${writeText "ProductTypes.xcspec" (toPlist {} ProductTypes)} $out/Developer/Library/Xcode/Specifications/ProductTypes.xcspec
|
||||
|
||||
mkdir -p $out/Developer/SDKs/
|
||||
cd $out/Developer/SDKs/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ runCommand, lib, toolchainName, sdkName, writeText }:
|
||||
|
||||
let
|
||||
inherit (lib.generators) toPLIST;
|
||||
inherit (lib.generators) toPlist;
|
||||
|
||||
# TODO: expose MACOSX_DEPLOYMENT_TARGET in nix so we can use it here.
|
||||
version = "10.10";
|
||||
|
@ -24,6 +24,6 @@ in
|
|||
runCommand "MacOSX${version}.sdk" {
|
||||
inherit version;
|
||||
} ''
|
||||
install -D ${writeText "SDKSettings.plist" (toPLIST {} SDKSettings)} $out/SDKSettings.plist
|
||||
install -D ${writeText "SystemVersion.plist" (toPLIST {} SystemVersion)} $out/System/Library/CoreServices/SystemVersion.plist
|
||||
install -D ${writeText "SDKSettings.plist" (toPlist {} SDKSettings)} $out/SDKSettings.plist
|
||||
install -D ${writeText "SystemVersion.plist" (toPlist {} SystemVersion)} $out/System/Library/CoreServices/SystemVersion.plist
|
||||
''
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
let
|
||||
|
||||
inherit (lib) getBin optionalString;
|
||||
inherit (lib.generators) toPLIST;
|
||||
inherit (lib.generators) toPlist;
|
||||
|
||||
ToolchainInfo = {
|
||||
Identifier = toolchainName;
|
||||
|
@ -24,7 +24,7 @@ runCommand "nixpkgs.xctoolchain" {
|
|||
nativeBuildInputs = [ makeWrapper ];
|
||||
} (''
|
||||
mkdir -p $out
|
||||
install -D ${writeText "ToolchainInfo.plist" (toPLIST {} ToolchainInfo)} $out/ToolchainInfo.plist
|
||||
install -D ${writeText "ToolchainInfo.plist" (toPlist {} ToolchainInfo)} $out/ToolchainInfo.plist
|
||||
|
||||
mkdir -p $out/usr/include
|
||||
mkdir -p $out/usr/lib
|
||||
|
|
Loading…
Reference in a new issue