From 65bee1192e4677c693e007e9f59dec5fe3314a02 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Wed, 19 Feb 2025 19:29:34 +0000 Subject: [PATCH] chore(cursor): improve setup script --- cursor/extensions.txt | 2 +- cursor/setup.sh | 164 +++++++++++++++++++++++++++--------------- 2 files changed, 106 insertions(+), 60 deletions(-) diff --git a/cursor/extensions.txt b/cursor/extensions.txt index a07d44f..1de095f 100644 --- a/cursor/extensions.txt +++ b/cursor/extensions.txt @@ -1,5 +1,5 @@ # Cursor Extensions -# Generated on Wed Feb 19 19:05:55 GMT 2025 +# Generated on Wed Feb 19 19:29:16 GMT 2025 alefragnani.project-manager antiantisepticeye.vscode-color-picker diff --git a/cursor/setup.sh b/cursor/setup.sh index 176180a..1cb164f 100755 --- a/cursor/setup.sh +++ b/cursor/setup.sh @@ -1,44 +1,73 @@ #! /usr/bin/env bash -# Define source directory +# ============================================================================== +# Settings +# ============================================================================== + +# List of config files to symlink from current directory. +CONFIG_SOURCES=( + "settings.json" + "keybindings.json" + "snippets" +) + +# Detect current script directory. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -_CURSOR_CONFIG_DIR="" -# Determine OS and set config directory -cursor_config_dir() { - if [[ -n "${_CURSOR_CONFIG_DIR}" ]]; then - echo "${_CURSOR_CONFIG_DIR}" - return - fi +# ============================================================================== +# Help +# ============================================================================== +show_help() { + cat </dev/null 2>&1; then - echo "Error: cursor command not found" +# Find the cursor CLI command +find_cursor_cmd() { + local cursor_cmd="" + + # Check for cursor CLI in multiple possible locations + for cmd in "cursor" "/Applications/Cursor.app/Contents/Resources/app/bin/cursor" "${HOME}/Applications/Cursor.app/Contents/Resources/app/bin/cursor"; do + if command -v "${cmd}" >/dev/null 2>&1; then + cursor_cmd="${cmd}" + break + fi + done + + if [[ -z "${cursor_cmd}" ]]; then + echo "Error: cursor command not found" >&2 exit 1 fi + echo "${cursor_cmd}" +} + +# Dump installed extensions to extensions.txt +do_dump_extensions() { + local cursor_cmd + cursor_cmd="$(find_cursor_cmd)" local extensions_file="${SCRIPT_DIR}/extensions.txt" local current_date current_date="$(date)" + { echo "# Cursor Extensions" echo "# Generated on ${current_date}" echo - cursor --list-extensions + "${cursor_cmd}" --list-extensions } >"${extensions_file}" echo "Extensions list dumped to ${extensions_file}" } -# Function to install extensions +# Install extensions from extensions.txt do_install_extensions() { + local cursor_cmd + cursor_cmd="$(find_cursor_cmd)" local extensions_file="${SCRIPT_DIR}/extensions.txt" if [[ ! -f "${extensions_file}" ]]; then @@ -104,39 +147,42 @@ do_install_extensions() { # Read extensions file, skip comments and empty lines while IFS= read -r line; do - if [[ -n "${line}" && ! "${line}" =~ ^# ]]; then + if [[ -n "${line}" && ! "${line}" =~ ^[[:space:]]*# ]]; then echo "Installing extension: ${line}" - cursor --install-extension "${line}" + "${cursor_cmd}" --install-extension "${line}" fi done <"${extensions_file}" echo "Extensions installation complete!" } -# Help message function -show_help() { - echo "Available commands: symlink (or link), dump-extensions, install-extensions" +# ============================================================================== +# Main +# ============================================================================== + +main() { + case "${1:-}" in + "config" | "conf") + do_symlink + ;; + "dump-extensions" | "dump") + do_dump_extensions + ;; + "extensions" | "ext") + do_install_extensions + ;; + "") + echo "Error: No command provided" + show_help + exit 1 + ;; + *) + echo "Error: Unknown command '$1'" + show_help + exit 1 + ;; + esac } -# Main command handler -case "${1:-}" in -"symlink" | "link") - do_symlink - ;; -"dump-extensions" | "dump") - do_dump_extensions - ;; -"install-extensions" | "install") - do_install_extensions - ;; -"") - echo "Error: No command provided" - show_help - exit 1 - ;; -*) - echo "Error: Unknown command '$1'" - show_help - exit 1 - ;; -esac +# Run main function. +main "$@"