refactor: minor refinement
This commit is contained in:
+28
-25
@@ -45,7 +45,34 @@ build-declarations-json() {
|
||||
# @cmd Build declaration for a single function
|
||||
# @arg func![`_choice_func`] The function name
|
||||
build-func-declaration() {
|
||||
argc --argc-export bin/$1 | \
|
||||
argc --argc-export bin/$1 | _parse_declaration
|
||||
}
|
||||
|
||||
# @cmd Build shims for the functions
|
||||
# Because Windows OS can't run bash scripts directly, we need to make a shim for each function
|
||||
#
|
||||
# @flag --clear Clear the shims
|
||||
build-win-shims() {
|
||||
funcs=($(_choice_func))
|
||||
for func in "${funcs[@]}"; do
|
||||
echo "Shim bin/${func}.cmd"
|
||||
_win_shim > "bin/${func}.cmd"
|
||||
done
|
||||
}
|
||||
|
||||
# @cmd Install this repo to aichat functions_dir
|
||||
install() {
|
||||
functions_dir="$(aichat --info | grep functions_dir | awk '{print $2}')"
|
||||
if [[ ! -e "$functions_dir" ]]; then
|
||||
ln -s "$(pwd)" "$functions_dir"
|
||||
echo "$functions_dir symlinked"
|
||||
else
|
||||
echo "$functions_dir already exists"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
_parse_declaration() {
|
||||
jq -r '
|
||||
def parse_description(flag_option):
|
||||
if flag_option.describe == "" then
|
||||
@@ -88,30 +115,6 @@ build-func-declaration() {
|
||||
}'
|
||||
}
|
||||
|
||||
# @cmd Build shims for the functions
|
||||
# Because Windows OS can't run bash scripts directly, we need to make a shim for each function
|
||||
#
|
||||
# @flag --clear Clear the shims
|
||||
build-win-shims() {
|
||||
funcs=($(_choice_func))
|
||||
for func in "${funcs[@]}"; do
|
||||
echo "Shim bin/${func}.cmd"
|
||||
_win_shim > "bin/${func}.cmd"
|
||||
done
|
||||
}
|
||||
|
||||
# @cmd Install this repo to aichat functions_dir
|
||||
install() {
|
||||
functions_dir="$(aichat --info | grep functions_dir | awk '{print $2}')"
|
||||
if [[ ! -e "$functions_dir" ]]; then
|
||||
ln -s "$(pwd)" "$functions_dir"
|
||||
echo "$functions_dir symlinked"
|
||||
else
|
||||
echo "$functions_dir already exists"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
_win_shim() {
|
||||
cat <<-'EOF'
|
||||
@echo off
|
||||
|
||||
@@ -71,6 +71,18 @@ main() {
|
||||
eval "$(argc --argc-eval "$0" "$@")"
|
||||
```
|
||||
|
||||
The relationship between flags/options and parameters in function declarations is as follows:
|
||||
|
||||
```sh
|
||||
# @flag --boolean Parameter `{"type": "boolean"}`
|
||||
# @option --string Parameter `{"type": "string"}`
|
||||
# @option --string-enum[foo|bar] Parameter `{"type": "string", "enum": ["foo", "bar"]}`
|
||||
# @option --integer <INT> Parameter `{"type": "integer"}`
|
||||
# @option --number <NUM> Parameter `{"type": "number"}`
|
||||
# @option --array* <VALUE> Parameter `{"type": "array", "items": {"type":"string"}}`
|
||||
# @option --scalar-required! Use `!` to mark a scalar parameter as required.
|
||||
# @option --array-required+ Use `+` to mark a array parameter as required
|
||||
```
|
||||
|
||||
**After creating your function, don't forget to rebuild the function declarations.**
|
||||
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# @describe Use this function to search DuckDuckGo for a query.
|
||||
# @describe Takes in a query string and returns search result.
|
||||
# Use it to answer user questions that require dates, facts, real-time information, or news.
|
||||
# This ensures accurate and up-to-date answers.
|
||||
# @meta require-tools ddgr
|
||||
# @env DDG_MAX_RESULTS=5 The max results to return.
|
||||
# @option --query! The query to search for.
|
||||
# @option --max-results=5 The number of returned results.
|
||||
|
||||
main() {
|
||||
ddgr --num $argc_max_results --json "$argc_query" | \
|
||||
jq -r '.[] | "**[\(.title)](\(.url))**\n\(.abstract)\n"'
|
||||
ddgr -n $DDG_MAX_RESULTS --json "$argc_query" | \
|
||||
jq -r '. as $input |
|
||||
reduce range(0; length) as $i ([]; . + [ $input[$i] | .index = $i ]) |
|
||||
.[] | "### \(.index+1). \u001b]8;;\(.url)\u001b\\\(.title)\u001b]8;;\u001b\\\n\(.abstract)\n"
|
||||
'
|
||||
}
|
||||
|
||||
eval "$(argc --argc-eval "$0" "$@")"
|
||||
|
||||
Reference in New Issue
Block a user