#! /usr/bin/env bash # ============================================================================== # 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)" # ============================================================================== # Help # ============================================================================== show_help() { cat </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_cmd}" --list-extensions } >"${extensions_file}" echo "Extensions list dumped to ${extensions_file}" } # 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 echo "Error: ${extensions_file} not found" exit 1 fi # Read extensions file, skip comments and empty lines while IFS= read -r line; do if [[ -n "${line}" && ! "${line}" =~ ^[[:space:]]*# ]]; then echo "Installing extension: ${line}" "${cursor_cmd}" --install-extension "${line}" fi done <"${extensions_file}" echo "Extensions installation complete!" } # ============================================================================== # 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 } # Run main function. main "$@"