Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

disable copilot - adding a start and backup option. #77

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions 43_awk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,27 @@ cat example1.txt | awk '{print $1,$2,$3}'
cat example1.txt | awk '{if(!$3) {print $1,$2} else {print $1,$3;print $1,$2}}'
```

## CSV

```sh
awk -F "," '{print $1}'
```

## Prepending text

```sh
# prepending text to output
cat example1.txt | awk '{print "stdout:" $0;}'
```

## Trimming

```sh
# white space

# replace a character
```

## Processing LDD output

```sh
Expand Down
1 change: 1 addition & 0 deletions 67_disable_copilot_for_workspace/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
backups
2 changes: 2 additions & 0 deletions 67_disable_copilot_for_workspace/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ A script to disable extensions by workspace.

TODO:

* Can I get to work on linux as well?
* Test if workspace folder exists.
* Seems to be a problem with vscode caching.
* Get it to load a set of extensions to install and disable from a config file
* Write it in golang
* Get a list of all installed extensions and run against a whitelist.

## Examples

Expand Down
59 changes: 51 additions & 8 deletions 67_disable_copilot_for_workspace/disable-copilot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,28 @@ OPTIONS:
--disable disable extension
--status current extension status
--start start workspace
--backup backup workspace db

Examples:
$SCRIPT_NAME --help

list all the workspaces
$SCRIPT_NAME --list

list a set of workspaces
$SCRIPT_NAME --list --workspace=\/shell_examples

status of copilot for workspace
$SCRIPT_NAME --status --workspace=shell_examples

disable copilot for workspace
$SCRIPT_NAME --disable --workspace=shell_examples

enable copilot for workspace
$SCRIPT_NAME --enable --workspace=shell_examples

start vscode in folder
$SCRIPT_NAME --start --workspace=shell_examples
EOF
}

Expand Down Expand Up @@ -74,6 +92,9 @@ case $i in
--start)
START=true
;;
--backup)
BACKUP=true
;;
-w=*|--workspace=*)
WORKSPACE="${i#*=}"
shift # past argument=value
Expand All @@ -94,6 +115,7 @@ _supported=false
case "${OSTYPE}" in
MAC)
_supported=true
WORKSPACE_BASE_PATH="$HOME/Library/Application Support/Code/User/workspaceStorage"
;;
LINUX)
;;
Expand All @@ -113,15 +135,14 @@ fi
check_prerequisites sqlite3 jq

if [[ $LIST == true ]]; then
PROJECT=
find $HOME/Library/Application\ Support/Code/User/workspaceStorage -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s .
PROJECT="${WORKSPACE}$"
find "${WORKSPACE_BASE_PATH}" -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s .
else

if [ $ENABLE == false ] && [ $DISABLE == false ] && [ $STATUS == false ] && [ $START == false ]; then
if [ $ENABLE == false ] && [ $DISABLE == false ] && [ $STATUS == false ] && [ $START == false ] && [ $BACKUP == false ]; then
help
exit 0
else

if [[ -z ${WORKSPACE} ]]; then
>&2 echo "--workspace is not set"
exit 1
Expand All @@ -135,7 +156,7 @@ else
echo "Searching..."
OUTFILE=$(mktemp)
echo "PROJECT='${PROJECT}'"
DBPATH=$(dirname "$(find $HOME/Library/Application\ Support/Code/User/workspaceStorage -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].filename' | tail -n 1)")
DBPATH=$(dirname "$(find "${WORKSPACE_BASE_PATH}" -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].filename' | head -n 1)")
DBFILE="${DBPATH}/state.vscdb"

echo "DBPATH='${DBPATH}'"
Expand All @@ -155,7 +176,7 @@ else
echo "Searching..."
OUTFILE=$(mktemp)
echo "PROJECT='${PROJECT}'"
DBPATH=$(dirname "$(find $HOME/Library/Application\ Support/Code/User/workspaceStorage -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].filename' | tail -n 1)")
DBPATH=$(dirname "$(find "${WORKSPACE_BASE_PATH}" -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].filename' | head -n 1)")
DBFILE="${DBPATH}/state.vscdb"

echo "DBPATH='${DBPATH}'"
Expand All @@ -175,7 +196,7 @@ else
if [[ $STATUS == true ]]; then
echo "Searching..."
echo "PROJECT='${PROJECT}'"
DBPATH=$(dirname "$(find $HOME/Library/Application\ Support/Code/User/workspaceStorage -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].filename' | tail -n 1)")
DBPATH=$(dirname "$(find "${WORKSPACE_BASE_PATH}" -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].filename' | head -n 1)")
DBFILE="${DBPATH}/state.vscdb"

echo "DBPATH='${DBPATH}'"
Expand All @@ -188,7 +209,7 @@ else
if [[ $START == true ]]; then
echo "Searching..."
echo "PROJECT='${PROJECT}'"
WORKSPACEPATH=$(find $HOME/Library/Application\ Support/Code/User/workspaceStorage -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].folder' | tail -n 1)
WORKSPACEPATH=$(find "${WORKSPACE_BASE_PATH}" -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s '.' | jq --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r '.[].folder' | head -n 1)

echo "WORKSPACEPATH='${WORKSPACEPATH}'"
REALWORKSPACEPATH="${WORKSPACEPATH//file:\/\//}"
Expand All @@ -197,5 +218,27 @@ else
code "${REALWORKSPACEPATH}"
fi

if [[ $BACKUP == true ]]; then
# TODO: Compare backup db to one with extension disabled.
echo "Searching..."
echo "PROJECT='${PROJECT}'"
# use @tsv but then awk has to process tabs
WORKSPACEPATHS=$(find "${WORKSPACE_BASE_PATH}" -iname "workspace.json" -exec jq --arg filename {} -c '. | {"folder": .folder, "filename": $filename}' {} \; | jq -s -c '.' | jq -c --arg project "${PROJECT}" '.[] | select(.folder != null) | select(.folder | test(".*\( $project )"))' | jq -s -r -c '.[0] | [.filename, .folder] | @csv')
echo "WORKSPACEPATHS=${WORKSPACEPATHS}"
WORKSPACEJSON=$(echo ${WORKSPACEPATHS} | awk -F "," '{print $1}')
WORKSPACEFOLDER=$(echo ${WORKSPACEPATHS} | awk -F "," '{print $2}')

DBFILE=$(dirname "$WORKSPACEJSON")/state.vscdb
WORKSPACENAME=$(basename $WORKSPACEFOLDER)

echo "DBFILE=${DBFILE}"
echo "WORKSPACEFOLDER=${WORKSPACEFOLDER}"
echo "WORKSPACENAME=${WORKSPACENAME}"

#echo "${DBFILE} ./backups/db"
#mkdir -p ./backups/db
#cp "${DBFILE}" ./backups/db
fi

fi
fi