blob: 42c6a0d02e5b8a4c33cffea38708b1e3042ac8da [file] [log] [blame]
#!/bin/bash
set -euo pipefail
function find_workspace_root() {
local original_wd=$(pwd)
while true; do
if [ $(pwd) = "/" ]; then
break
fi
if [ -d ".vscode" ]; then
pwd
break
fi
cd ..
done
cd "$original_wd"
}
SCRIPT_PATH=$(realpath "$0")
SCRIPT_FOLDER=$(dirname "$SCRIPT_PATH")
WORKSPACE_ROOT=$(find_workspace_root)
if [ -z "$WORKSPACE_ROOT" ]; then
echo "Could not find .vscode/ folder. Please create one in the root of your"
echo "workspace and re-run this script."
exit 1
fi
VSCODE_FOLDER="$WORKSPACE_ROOT/.vscode"
REPO_FOLDER="$WORKSPACE_ROOT/.repo"
if ! [ -d "$REPO_FOLDER" ]; then
echo ".repo/ folder is not in the same location as .vscode/ - this will"
echo "cause problems."
echo "Exiting..."
exit 1
fi
if ! command -v code > /dev/null; then
echo "Could not find 'code' command."
echo ""
echo "1. Open VSCode"
echo "2. Open the command palette (View > Command Palette)"
echo "3. Type 'install' and select 'Shell Command: Install code command in PATH'"
echo "4. Restart your shell"
exit 1
fi
echo "Installing LLDB VSCode extension"
code --install-extension 'vadimcn.vscode-lldb@1.7.3'
function files_equal() {
local file_a="$1"
local file_b="$2"
if ! [ -f "$file_a" ]; then
false
return
fi
if ! [ -f "$file_b" ]; then
false
return
fi
local md5_a=$(md5sum $file_a | cut -d' ' -f1)
local md5_b=$(md5sum $file_b | cut -d' ' -f1)
[[ "$md5_a" == "$md5_b" ]]
}
function copy_file() {
local file="$1"
local source="$SCRIPT_FOLDER/$file"
local dest="$VSCODE_FOLDER/$file"
if files_equal "$source" "$dest"; then
echo "Skipping copying of $file"
return
fi
if [ -f "$dest" ]; then
echo "Backing up previous $file to $file.old"
mv "$dest" "$dest.old"
fi
echo "Copying $file"
cp "$source" "$dest"
}
copy_file 'tasks.json'
copy_file 'launch.json'
echo "Done!"