diff --git a/update_settings.sh b/update_settings.sh index 8f4e0ff..491a99b 100755 --- a/update_settings.sh +++ b/update_settings.sh @@ -1,9 +1,49 @@ -REPLACEMENT="s/'default': true/'default': false/" +DEFAULT_TRUE="'default': true" +DEFAULT_FALSE="'default': false" +TELEMETRY_ENABLE="'telemetry.enableTelemetry':" +TELEMETRY_CRASH_REPORTER="'telemetry.enableCrashReporter':" -if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - sed -i '' -E "$REPLACEMENT" src/vs/platform/telemetry/common/telemetryService.ts - sed -i '' -E "$REPLACEMENT" src/vs/workbench/services/crashReporter/electron-browser/crashReporterService.ts -else - sed -i -E "$REPLACEMENT" src/vs/platform/telemetry/common/telemetryService.ts - sed -i -E "$REPLACEMENT" src/vs/workbench/services/crashReporter/electron-browser/crashReporterService.ts -fi \ No newline at end of file +replace () { + echo $1 + if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then + sed -i '' -E "$1" $2 + else + sed -i -E "$1" $2 + fi +} + +update_setting () { + local FILENAME="$2" + # check that the file exists + if [ ! -f $FILENAME ]; then + echo "File to update setting in does not exist ${FILENAME}" + return + fi + + # go through lines of file, looking for block that contains setting + local SETTING="$1" + local LINE_NUM=0 + while read -r line; do + local LINE_NUM=$(( $LINE_NUM + 1 )) + if [[ $line == *"$SETTING"* ]]; then + local IN_SETTING=1 + fi + if [[ $line == *"$DEFAULT_TRUE"* && "$IN_SETTING" == "1" ]]; then + local FOUND=1 + break + fi + done < $FILENAME + + if [[ "$FOUND" != "1" ]]; then + echo "$DEFAULT_TRUE not found for setting $SETTING in file $FILENAME" + return + fi + + # construct line-aware replacement string + local DEFAULT_TRUE_TO_FALSE="${LINE_NUM}s/${DEFAULT_TRUE}/${DEFAULT_FALSE}/" + + replace "$DEFAULT_TRUE_TO_FALSE" $FILENAME +} + +update_setting "$TELEMETRY_ENABLE" src/vs/platform/telemetry/common/telemetryService.ts +update_setting "$TELEMETRY_CRASH_REPORTER" src/vs/workbench/electron-browser/main.contribution.ts