about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOren Rozen <countoren@gmail.com>2020-01-29 23:21:53 -0500
committerOren Rozen <countoren@gmail.com>2020-04-19 21:32:36 -0500
commita535e7a04ff11615f43a222ad496c6ffd39d176c (patch)
tree3843c5c1ad0aa639de71a6c573a07c2626a7109f
parent3d102d1c906b8fe5be8de3f3e606b182e243c37c (diff)
downloadnixlib-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar
nixlib-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.gz
nixlib-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.bz2
nixlib-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.lz
nixlib-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.xz
nixlib-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.zst
nixlib-a535e7a04ff11615f43a222ad496c6ffd39d176c.zip
add updateSettings drv which will union nix settings configurations into the a vscode settings file
-rw-r--r--pkgs/misc/vscode-extensions/updateSettings.nix33
-rw-r--r--pkgs/misc/vscode-extensions/updateSettingsTest.nix6
2 files changed, 39 insertions, 0 deletions
diff --git a/pkgs/misc/vscode-extensions/updateSettings.nix b/pkgs/misc/vscode-extensions/updateSettings.nix
new file mode 100644
index 000000000000..e3b09582ffe3
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/updateSettings.nix
@@ -0,0 +1,33 @@
+# Updates the vscode setting file base on a nix expression
+# should run from the workspace root.
+{ writeShellScriptBin
+, lib
+, jq
+}:
+##User Input
+{ settings      ? {}
+# if marked as true will create an empty json file if does not exists
+, createIfDoesNotExists ? true
+, vscodeSettingsFile ? .vscode/settings.json
+}:
+let
+  #VSCode Settings file
+  vscodeSettingsFileStr = toString vscodeSettingsFile;
+
+  updateVSCodeSettingsCmd = ''
+  (
+    echo 'updateSettings.nix: Updating ${vscodeSettingsFileStr}...' 
+    oldSettings=$(cat ${vscodeSettingsFileStr})
+    echo $oldSettings' ${builtins.toJSON settings}' | ${jq}/bin/jq -s add > ${vscodeSettingsFileStr}
+  )'';
+
+  createEmptySettingsCmd = ''mkdir -p .vscode && echo "{}" > ${vscodeSettingsFileStr}'';
+in 
+  writeShellScriptBin ''vscodeNixUpdate-${lib.removeSuffix ".json" (builtins.baseNameOf vscodeSettingsFileStr)}''
+  (lib.optionalString (settings != {}) 
+  (if createIfDoesNotExists then ''
+    [ ! -f "${vscodeSettingsFileStr}" ] && ${createEmptySettingsCmd}
+    ${updateVSCodeSettingsCmd}
+  ''
+  else ''[ -f "${vscodeSettingsFileStr}" ] && ${updateVSCodeSettingsCmd}''
+  ))
diff --git a/pkgs/misc/vscode-extensions/updateSettingsTest.nix b/pkgs/misc/vscode-extensions/updateSettingsTest.nix
new file mode 100644
index 000000000000..097b9cad1661
--- /dev/null
+++ b/pkgs/misc/vscode-extensions/updateSettingsTest.nix
@@ -0,0 +1,6 @@
+with import <nixpkgs>{};
+callPackage (import ./updateSettings.nix) {} {
+  settings = {
+    a = "fdsdf";
+  };
+}