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.
This commit is contained in:
mnv 2024-10-24 18:30:00 +05:30 committed by GitHub
parent eeb01c18c1
commit 23027ec890
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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