code style

This commit is contained in:
sandofree 2026-05-11 13:35:49 +08:00
commit 13bcaf81db

View file

@ -1,31 +1,35 @@
#!/bin/zsh
ds() {
# --- preflight checks ---
if [[ ! $+commands[curl] ]]; then
function ds() {
# Preflight checks
(( $+commands[curl] )) || {
echo "ds: curl must be installed." >&2
return 1
fi
if [[ ! $+commands[jq] ]]; then
}
(( $+commands[jq] )) || {
echo "ds: jq must be installed." >&2
return 1
fi
if [[ -z "$DEEPSEEK_API_KEY" ]]; then
}
[[ -n "$DEEPSEEK_API_KEY" ]] || {
echo "ds: DEEPSEEK_API_KEY is not set." >&2
return 1
fi
if [[ $# -eq 0 ]]; then
echo "ds: usage — ds <natural language query>" >&2
}
(( $# )) || {
echo "Usage: ds <natural language query>" >&2
return 1
fi
}
# --- system prompt ---
local sys_prompt="You're an in-line zsh assistant running on ${OSTYPE}. Your task is to answer the questions without any commentation at all, providing only the code to run in terminal. You can assume that the user understands that they need to fill in placeholders like <PORT>. You're not allowed to explain anything and you're not a chatbot.
You only provide shell commands or code. Keep the responses to one-liner answers as much as possible. Do not decorate the answer with tickmarks."
# System prompt
local sys_prompt="You're an in-line zsh assistant running on ${OSTYPE}. \
Your task is to answer the questions without any commentation at all, \
providing only the code to run in terminal. \
You can assume that the user understands that they need to fill in placeholders like <PORT>. \
You're not allowed to explain anything and you're not a chatbot. \
You only provide shell commands or code. \
Keep the responses to one-liner answers as much as possible. \
Do not decorate the answer with tickmarks."
# --- build JSON payload safely with jq ---
# Build JSON payload safely with jq
local payload
payload=$(jq -n \
payload=$(command jq -n \
--arg system "$sys_prompt" \
--arg user "$*" \
'{
@ -40,9 +44,9 @@ You only provide shell commands or code. Keep the responses to one-liner answers
return 1
}
# --- call DeepSeek API ---
# Call DeepSeek API
local response
response=$(curl https://api.deepseek.com/chat/completions -s \
response=$(command curl https://api.deepseek.com/chat/completions -s \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DEEPSEEK_API_KEY}" \
-d "$payload" 2>&1) || {
@ -50,31 +54,30 @@ You only provide shell commands or code. Keep the responses to one-liner answers
return 1
}
# --- extract result ---
# Extract result
local result
result=$(jq -r '.choices[0].message.content // empty' <<< "$response" 2>/dev/null)
result=$(command jq -r '.choices[0].message.content // empty' <<< "$response" 2>/dev/null)
if [[ -z "$result" ]]; then
local err_msg
err_msg=$(jq -r '.error.message // "unknown error"' <<< "$response" 2>/dev/null)
err_msg=$(command jq -r '.error.message // "unknown error"' <<< "$response" 2>/dev/null)
echo "ds: ${err_msg}" >&2
return 1
fi
# --- copy to system clipboard (cross-platform) ---
# Copy to system clipboard (cross-platform)
if [[ "$OSTYPE" == darwin* ]]; then
print -r -- "$result" | pbcopy
print -r -- "$result" | command pbcopy
elif command -v wl-copy &>/dev/null; then
print -r -- "$result" | wl-copy
print -r -- "$result" | command wl-copy
elif command -v xclip &>/dev/null; then
print -r -- "$result" | xclip -selection clipboard
print -r -- "$result" | command xclip -selection clipboard
fi
# --- echo result to terminal for visibility ---
# Echo result to terminal for visibility
echo "$result"
# --- push into ZLE buffer so it sits on the next prompt line ---
# user can edit it or press Enter to execute immediately.
# Push into ZLE buffer so it sits on the next prompt line
# User can edit it or press Enter to execute immediately.
print -z "$result"
}