feat: add shell scripting with variables

Implemented roadmap #9: Shell scripts execution with variables.

Features:
- set <name> <value> - Set shell variable
- unset <name> - Remove variable
- vars - List all variables
- Variable substitution in all commands

Variable syntax:
- $VAR or ${VAR} - Shell variables
- $ENV:VARNAME - Environment variables

Variables expand before command execution, enabling:
- Dynamic key paths: put $BASE/$ID '{"data":"value"}'
- Reusable values: set TOKEN xyz && auth $TOKEN
- Script parameterization in batch files

Example batch script:
  set USER alice
  set KEY_PREFIX users
  put $KEY_PREFIX/$USER '{"name":"$USER"}'
  get $KEY_PREFIX/$USER

Variables are session-scoped and work in both interactive
and batch modes. Environment variables can be injected using
$ENV:HOME syntax.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-06 00:01:36 +03:00
parent bd73a1c477
commit efaa5cdcc9
5 changed files with 106 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ type KVSClient struct {
httpClient *http.Client
profiles map[string]Profile
activeProfile string
variables map[string]string // Shell variables for scripting
}
// NewKVSClient creates a new KVS client instance
@@ -25,7 +26,8 @@ func NewKVSClient(baseURL string) *KVSClient {
httpClient: &http.Client{
Timeout: 30 * time.Second,
},
profiles: make(map[string]Profile),
profiles: make(map[string]Profile),
variables: make(map[string]string),
}
}