Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 43 lines 1.4 kB view raw
1# Updates the vscode setting file base on a nix expression 2# should run from the workspace root. 3{ 4 writeShellScriptBin, 5 lib, 6 jq, 7}: 8##User Input 9{ 10 settings ? { }, 11 # if marked as true will create an empty json file if does not exist 12 createIfDoesNotExists ? true, 13 vscodeSettingsFile ? ".vscode/settings.json", 14 userSettingsFolder ? "", 15 symlinkFromUserSetting ? false, 16}: 17let 18 19 updateVSCodeSettingsCmd = '' 20 ( 21 echo 'updateSettings.nix: Updating ${vscodeSettingsFile}...' 22 oldSettings=$(cat ${vscodeSettingsFile}) 23 echo $oldSettings' ${builtins.toJSON settings}' | ${jq}/bin/jq -s add > ${vscodeSettingsFile} 24 )''; 25 26 createEmptySettingsCmd = ''mkdir -p .vscode && echo "{}" > ${vscodeSettingsFile}''; 27 fileName = builtins.baseNameOf vscodeSettingsFile; 28 symlinkFromUserSettingCmd = lib.optionalString symlinkFromUserSetting ''&& mkdir -p "${userSettingsFolder}" && ln -sfv "$(pwd)/${vscodeSettingsFile}" "${userSettingsFolder}/" ''; 29in 30 31writeShellScriptBin ''vscodeNixUpdate-${lib.removeSuffix ".json" (fileName)}'' ( 32 lib.optionalString (settings != { }) ( 33 if createIfDoesNotExists then 34 '' 35 [ ! -f "${vscodeSettingsFile}" ] && ${createEmptySettingsCmd} 36 ${updateVSCodeSettingsCmd} ${symlinkFromUserSettingCmd} 37 '' 38 else 39 '' 40 [ -f "${vscodeSettingsFile}" ] && ${updateVSCodeSettingsCmd} ${symlinkFromUserSettingCmd} 41 '' 42 ) 43)