Skip to content
Merged
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
83 changes: 83 additions & 0 deletions .vscodeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Source code files - only include compiled output
src/extension/src/
src/extension/__mocks__/
src/extension/*.test.ts
src/extension/*.test.js
src/extension/*.spec.ts
src/extension/*.spec.js

# Development dependencies
src/extension/node_modules/
src/web-view/node_modules/

# Development config files
src/extension/tsconfig.json
src/extension/jest.config.js
src/extension/.gitignore
src/extension/yarn.lock
src/extension/package-lock.json

# Web view source (keep only built output)
src/web-view/src/
src/web-view/public/
src/web-view/node_modules/
src/web-view/package.json
src/web-view/package-lock.json
src/web-view/yarn.lock
src/web-view/tsconfig.json
src/web-view/vite.config.ts
src/web-view/.gitignore

# Old build outputs (no longer used)
src/extension/out/

# Development files
.env
.env.*
!.env.example

# VS Code specific
.vscode-test/
.vscode-test-web/

# Git
.git/
.gitignore

# Documentation and development (keep README for marketplace)
CLAUDE.md

# CI/CD
.github/
.gitlab-ci.yml
.travis.yml
.circleci/

# IDE files
.idea/
*.swp
*.swo
*~

# OS files
.DS_Store
Thumbs.db

# Temporary files
tmp/
temp/
*.tmp

# Source maps
*.map

# Other development files
justfile
.devcontainer/

# Test coverage
coverage/
.nyc_output/

# Logs
*.log
14 changes: 9 additions & 5 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ root_dir := justfile_directory()
extension_dir := root_dir + "/src/extension"
web_view_dir := root_dir + "/src/web-view"

deps: deps-extension deps-web-view
deps: deps-root deps-extension deps-web-view

deps-root:
cd "{{ root_dir }}" && yarn install

deps-extension:
cd "{{ extension_dir }}" && yarn install
Expand All @@ -13,21 +16,22 @@ deps-web-view:
cd "{{ web_view_dir }}" && yarn install

install-package:
cd "{{ extension_dir }}" && yarn install-package
cd "{{ root_dir }}" && yarn install-package

clean-build:
rm -rf "{{ web_view_dir }}/dist"
rm -rf "{{ extension_dir }}/web-view-dist"
rm -rf "{{ extension_dir }}/out"
rm -rf "{{ root_dir }}/out"

package: clean-build
cd "{{ web_view_dir }}" && yarn build
cp -r "{{ web_view_dir }}/dist" "{{ extension_dir }}/web-view-dist"
cd "{{ extension_dir }}" && yarn compile && yarn package
cd "{{ extension_dir }}" && yarn compile
cd "{{ root_dir }}" && yarn package

publish target="both":
#!/usr/bin/env bash
cd "{{ extension_dir }}"
cd "{{ root_dir }}"
if [ "{{ target }}" = "vsce" ] || [ "{{ target }}" = "both" ]; then
echo "Publishing to VS Code Marketplace..."
if [ -n "$VSCE_ACCESS_TOKEN" ]; then
Expand Down
228 changes: 228 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
{
"name": "quick-command-buttons",
"displayName": "Quick Command Buttons",
"description": "Add customizable buttons to quickly execute commands in VS Code",
"version": "0.1.1",
"publisher": "KubrickCode",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/KubrickCode/quick-command-buttons.git"
},
"engines": {
"vscode": "^1.90.0"
},
"categories": [
"Other"
],
"keywords": [
"commands",
"buttons",
"quick",
"shortcuts",
"productivity"
],
"activationEvents": [
"onStartupFinished"
],
"main": "./out/src/main.js",
"contributes": {
"commands": [
{
"command": "quickCommandButtons.refresh",
"title": "Refresh Quick Command Buttons",
"icon": "$(refresh)"
},
{
"command": "quickCommandButtons.refreshTree",
"title": "Refresh Tree View"
},
{
"command": "quickCommandButtons.executeFromTree",
"title": "Execute Command from Tree"
},
{
"command": "quickCommandButtons.showAllCommands",
"title": "Show All Quick Commands",
"category": "Quick Commands"
},
{
"command": "quickCommandButtons.openConfig",
"title": "Open Configuration UI",
"category": "Quick Commands",
"icon": "$(gear)"
}
],
"viewsContainers": {
"activitybar": [
{
"id": "quickCommandsContainer",
"title": "Quick Commands",
"icon": "$(terminal)"
}
]
},
"views": {
"quickCommandsContainer": [
{
"id": "quickCommandsTree",
"name": "Commands"
}
]
},
"menus": {
"view/title": [
{
"command": "quickCommandButtons.refreshTree",
"when": "view == quickCommandsTree",
"group": "navigation"
},
{
"command": "quickCommandButtons.openConfig",
"when": "view == quickCommandsTree",
"group": "navigation"
}
]
},
"keybindings": [
{
"command": "quickCommandButtons.showAllCommands",
"key": "ctrl+shift+;",
"mac": "cmd+shift+;"
}
],
"configuration": {
"title": "Quick Command Buttons",
"properties": {
"quickCommandButtons.refreshButton": {
"type": "object",
"default": {
"icon": "$(refresh)",
"color": "#00BCD4",
"enabled": true
},
"description": "Configuration for the refresh button",
"properties": {
"icon": {
"type": "string",
"default": "$(refresh)",
"description": "Icon for the refresh button (supports $(icon-name) syntax)"
},
"color": {
"type": "string",
"default": "#00BCD4",
"description": "Color for the refresh button"
},
"enabled": {
"type": "boolean",
"default": true,
"description": "Enable/disable the refresh button"
}
}
},
"quickCommandButtons.buttons": {
"type": "array",
"default": [
{
"name": "$(terminal) Terminal",
"command": "workbench.action.terminal.new",
"useVsCodeApi": true,
"color": "#2196F3",
"shortcut": "t"
},
{
"name": "$(git-branch) Git",
"color": "#FF9800",
"shortcut": "g",
"group": [
{
"name": "$(git-commit) Status",
"command": "git status",
"shortcut": "s"
},
{
"name": "$(diff) Diff",
"command": "git diff",
"shortcut": "d"
},
{
"name": "$(arrow-circle-up) Push",
"command": "git push",
"shortcut": "p"
}
]
}
],
"description": "Configuration for quick command buttons",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Button label (supports $(icon-name) syntax)"
},
"command": {
"type": "string",
"description": "Command to execute (for single buttons)"
},
"useVsCodeApi": {
"type": "boolean",
"default": false,
"description": "Use VS Code API instead of terminal"
},
"color": {
"type": "string",
"description": "Button text color"
},
"shortcut": {
"type": "string",
"description": "Single key shortcut for quick access (e.g. 'q', '1', 'F1')"
},
"terminalName": {
"type": "string",
"description": "Custom terminal name"
},
"executeAll": {
"type": "boolean",
"default": false,
"description": "Execute all commands in group simultaneously"
},
"group": {
"type": "array",
"description": "Sub-commands for grouped buttons (supports infinite nesting)",
"items": {
"$ref": "#/properties/quickCommandButtons.buttons/items"
}
}
},
"required": [
"name"
],
"anyOf": [
{
"required": [
"command"
]
},
{
"required": [
"group"
]
}
]
}
}
}
}
},
"scripts": {
"package": "vsce package --out versions/",
"install-package": "code --install-extension versions/quick-command-buttons-$npm_package_version.vsix",
"vsce-publish": "vsce publish",
"ovsx-publish": "ovsx publish"
},
"devDependencies": {
"@vscode/vsce": "3.0.0"
},
"dependencies": {}
}
Loading