summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/utils/commandUtils.ts
diff options
context:
space:
mode:
authorSeth Troisi <[email protected]>2025-04-30 00:26:07 +0000
committerSeth Troisi <[email protected]>2025-04-30 22:17:08 +0000
commit5f5edb4c9bac24c4875ffc1a5a97ad8cf11f4436 (patch)
tree376f7f0863d0db0c354ec6f2212d16f9c20cd995 /packages/cli/src/ui/utils/commandUtils.ts
parent68a3020044b3c8567641c8fdcd5a369366dab981 (diff)
Added bang(!) commands as a shell passthrough
Diffstat (limited to 'packages/cli/src/ui/utils/commandUtils.ts')
-rw-r--r--packages/cli/src/ui/utils/commandUtils.ts16
1 files changed, 12 insertions, 4 deletions
diff --git a/packages/cli/src/ui/utils/commandUtils.ts b/packages/cli/src/ui/utils/commandUtils.ts
index 89e207d9..64046658 100644
--- a/packages/cli/src/ui/utils/commandUtils.ts
+++ b/packages/cli/src/ui/utils/commandUtils.ts
@@ -16,11 +16,19 @@ export const isAtCommand = (query: string): boolean =>
// Check if starts with @ OR has a space, then @, then a non-space character.
query.startsWith('@') || /\s@\S/.test(query);
+const control_symbols: string[] = ['/', '@', '!', '?', '$'];
/**
- * Checks if a query string represents a slash command (starts with '/').
+ * Returns the first word of query with optional leading slash, ampersand, bang.
*
* @param query The input query string.
- * @returns True if the query is a slash command, false otherwise.
+ * @returns optional leading symbol and first word of query
*/
-export const isSlashCommand = (query: string): boolean =>
- query.trim().startsWith('/');
+export const getCommandFromQuery = (
+ query: string,
+): [string | undefined, string] => {
+ const word = query.trim().split(/\s/, 1)[0];
+ if (word.length > 0 && control_symbols.includes(word[0])) {
+ return [word[0], word.slice(1)];
+ }
+ return [undefined, word];
+};