Unverified Commit e31c8b22 authored by toonn's avatar toonn Committed by GitHub
Browse files

Merge pull request #223407 from AngryAnt/toplist-path

lib.toPlist: Add support for path values
parents 7d76bc7e e932e984
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -101,3 +101,7 @@ end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
charset = unset

[lib/tests/*.plist]
indent_style = tab
insert_final_newline = unset
+2 −0
Original line number Diff line number Diff line
@@ -355,6 +355,7 @@ rec {
  # PLIST handling
  toPlist = {}: v: let
    isFloat = builtins.isFloat or (x: false);
    isPath = x: builtins.typeOf x == "path";
    expr = ind: x:  with builtins;
      if x == null  then "" else
      if isBool x   then bool ind x else
@@ -362,6 +363,7 @@ rec {
      if isString x then str ind x else
      if isList x   then list ind x else
      if isAttrs x  then attrs ind x else
      if isPath x   then str ind (toString x) else
      if isFloat x  then float ind x else
      abort "generators.toPlist: should never happen (v = ${v})";

+24 −0
Original line number Diff line number Diff line
@@ -919,6 +919,30 @@ runTests {
    expected  = "«foo»";
  };

  testToPlist =
    let
      deriv = derivation { name = "test"; builder = "/bin/sh"; system = "aarch64-linux"; };
    in {
    expr = mapAttrs (const (generators.toPlist { })) {
      value = {
        nested.values = rec {
          int = 42;
          float = 0.1337;
          bool = true;
          emptystring = "";
          string = "fn\${o}\"r\\d";
          newlinestring = "\n";
          path = /. + "/foo";
          null_ = null;
          list = [ 3 4 "test" ];
          emptylist = [];
          attrs = { foo = null; "foo b/ar" = "baz"; };
          emptyattrs = {};
        };
      };
    };
    expected = { value = builtins.readFile ./test-to-plist-expected.plist; };
  };

  testToLuaEmptyAttrSet = {
    expr = generators.toLua {} {};
+46 −0
Original line number Diff line number Diff line
<?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">
<dict>
	<key>nested</key>
	<dict>
		<key>values</key>
		<dict>
			<key>attrs</key>
			<dict>
				<key>foo b/ar</key>
				<string>baz</string>
			</dict>
			<key>bool</key>
			<true/>
			<key>emptyattrs</key>
			<dict>

			</dict>
			<key>emptylist</key>
			<array>

			</array>
			<key>emptystring</key>
			<string></string>
			<key>float</key>
			<real>0.133700</real>
			<key>int</key>
			<integer>42</integer>
			<key>list</key>
			<array>
				<integer>3</integer>
				<integer>4</integer>
				<string>test</string>
			</array>
			<key>newlinestring</key>
			<string>
</string>
			<key>path</key>
			<string>/foo</string>
			<key>string</key>
			<string>fn${o}"r\d</string>
		</dict>
	</dict>
</dict>
</plist>
 No newline at end of file