Commit 38fb7426 authored by D Anzorge's avatar D Anzorge
Browse files

rustPlatform.importCargoLock: fix [package] section handling

Members of the [package] table in Cargo.toml can be either subtables, or
values like strings and bools. Python is happy to check for membership
of "workspace" in a string, since Python strings are iterables, but if
the value is a bool, Python will throw an exception.
parent d7fa40f3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ let

  # Replaces values inherited by workspace members.
  replaceWorkspaceValues = writers.writePython3 "replace-workspace-values"
    { libraries = with python3Packages; [ tomli tomli-w ]; flakeIgnore = [ "E501" ]; }
    { libraries = with python3Packages; [ tomli tomli-w ]; flakeIgnore = [ "E501" "W503" ]; }
    (builtins.readFile ./replace-workspace-values.py);

  # Fetch and unpack a crate.
+5 −1
Original line number Diff line number Diff line
@@ -18,7 +18,11 @@ def load_file(path: str) -> dict[str, Any]:
def replace_key(
    workspace_manifest: dict[str, Any], table: dict[str, Any], section: str, key: str
) -> bool:
    if "workspace" in table[key] and table[key]["workspace"] is True:
    if (
        isinstance(table[key], dict)
        and "workspace" in table[key]
        and table[key]["workspace"] is True
    ):
        print("replacing " + key)

        replaced = table[key]
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
  v1 = callPackage ./v1 { };
  gitDependencyWorkspaceInheritance = callPackage ./git-dependency-workspace-inheritance {
    replaceWorkspaceValues = writers.writePython3 "replace-workspace-values"
      { libraries = with python3Packages; [ tomli tomli-w ]; flakeIgnore = [ "E501" ]; }
      { libraries = with python3Packages; [ tomli tomli-w ]; flakeIgnore = [ "E501" "W503" ]; }
      (builtins.readFile ../../replace-workspace-values.py);
  };
}
+7 −0
Original line number Diff line number Diff line
[package]
name = "im_using_workspaces"
version = { workspace = true }
publish = false
keywords = [
    "workspace",
    "other_thing",
    "third_thing",
]

[dependencies]
foo = { workspace = true, features = ["cat"] }
+7 −0
Original line number Diff line number Diff line
[package]
name = "im_using_workspaces"
version = "1.0.0"
publish = false
keywords = [
    "workspace",
    "other_thing",
    "third_thing",
]

[dependencies]
bar = "1.0.0"