diff options
author | Oren Rozen <countoren@gmail.com> | 2020-01-29 23:21:53 -0500 |
---|---|---|
committer | Oren Rozen <countoren@gmail.com> | 2020-04-19 21:32:36 -0500 |
commit | a535e7a04ff11615f43a222ad496c6ffd39d176c (patch) | |
tree | 3843c5c1ad0aa639de71a6c573a07c2626a7109f /pkgs/misc/vscode-extensions/updateSettings.nix | |
parent | 3d102d1c906b8fe5be8de3f3e606b182e243c37c (diff) | |
download | nixpkgs-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar nixpkgs-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.gz nixpkgs-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.bz2 nixpkgs-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.lz nixpkgs-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.xz nixpkgs-a535e7a04ff11615f43a222ad496c6ffd39d176c.tar.zst nixpkgs-a535e7a04ff11615f43a222ad496c6ffd39d176c.zip |
add updateSettings drv which will union nix settings configurations into the a vscode settings file
Diffstat (limited to 'pkgs/misc/vscode-extensions/updateSettings.nix')
-rw-r--r-- | pkgs/misc/vscode-extensions/updateSettings.nix | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/pkgs/misc/vscode-extensions/updateSettings.nix b/pkgs/misc/vscode-extensions/updateSettings.nix new file mode 100644 index 00000000000..e3b09582ffe --- /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}'' + )) |