From 23027ec8900ea4c14d0c93862aef7c61ea85d547 Mon Sep 17 00:00:00 2001 From: mnv Date: Thu, 24 Oct 2024 18:30:00 +0530 Subject: [PATCH] coffee.plugin.zsh: improve CoffeeScript compilation utilities Features: - Add check for CoffeeScript compiler installation - Add input validation for all functions - Add proper error messages with usage information - Add clipboard operation feedback Improvements: - Replace aliases with proper functions for better control - Use local variables to prevent namespace pollution - Add proper quoting and option handling - Add error output redirection - Export functions for subshell availability The previous implementation lacked error checking and could fail silently in various scenarios. This update makes the functions more robust and user-friendly while maintaining the original functionality. --- plugins/coffee/coffee.plugin.zsh | 64 ++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/plugins/coffee/coffee.plugin.zsh b/plugins/coffee/coffee.plugin.zsh index 6d1ce5ce4..a6661df94 100644 --- a/plugins/coffee/coffee.plugin.zsh +++ b/plugins/coffee/coffee.plugin.zsh @@ -1,16 +1,58 @@ #!/bin/zsh -# compile a string of coffeescript and print to output -cf () { - coffee -peb "$1" -} -# compile & copy to clipboard -cfc () { - cf "$1" | clipcopy +# Check if coffee is installed +if ! command -v coffee >/dev/null 2>&1; then + echo "Error: CoffeeScript compiler not found. Please install it with 'npm install -g coffee-script'" >&2 + return 1 +fi + +# Compile a string of CoffeeScript and print to output +cf() { + if [[ -z "$1" ]]; then + echo "Error: No input provided" >&2 + echo "Usage: cf 'CoffeeScript code'" >&2 + return 1 + fi + coffee -peb -- "$1" 2>/dev/null || { + echo "Error: Failed to compile CoffeeScript" >&2 + return 1 + } } -# compile from clipboard & print -alias cfp='cf "$(clippaste)"' +# Compile & copy to clipboard +cfc() { + if [[ -z "$1" ]]; then + echo "Error: No input provided" >&2 + echo "Usage: cfc 'CoffeeScript code'" >&2 + return 1 + fi + local result + result=$(cf "$1") || return 1 + echo "$result" | clipcopy && echo "Compiled code copied to clipboard" +} -# compile from clipboard and copy to clipboard -alias cfpc='cfp | clipcopy' +# Compile from clipboard & print +cfp() { + local input + input=$(clippaste) + if [[ -z "$input" ]]; then + echo "Error: Clipboard is empty" >&2 + return 1 + fi + cf "$input" +} + +# Compile from clipboard and copy back to clipboard +cfpc() { + local input result + input=$(clippaste) + if [[ -z "$input" ]]; then + echo "Error: Clipboard is empty" >&2 + return 1 + fi + result=$(cf "$input") || return 1 + echo "$result" | clipcopy && echo "Compiled code copied to clipboard" +} + +# Export the functions +export -f cf cfc cfp cfpc