mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-19 14:11:04 +08:00
Go CLI: refactor (#16355)
This commit is contained in:
@@ -20,7 +20,7 @@ func tokenTypeDescription(t int, tok Token) string {
|
||||
func (p *Parser) parseAPILogout() (*Command, error) {
|
||||
cmd := NewCommand("api_logout")
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -55,7 +55,7 @@ func (p *Parser) parseAPILoginUser() (*Command, error) {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -66,7 +66,7 @@ func (p *Parser) parseAPILoginUser() (*Command, error) {
|
||||
func (p *Parser) parseAPIPingServer() (*Command, error) {
|
||||
cmd := NewCommand("api_ping_server")
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -112,7 +112,7 @@ func (p *Parser) parseAPIRegisterCommand() (*Command, error) {
|
||||
cmd.Params["password"] = password
|
||||
p.nextToken() // consume 'password'
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -154,6 +154,10 @@ func (p *Parser) parseAPIListCommands() (*Command, error) {
|
||||
return p.parseAPIListAvailableProviders()
|
||||
case TokenAPI:
|
||||
return p.parseAPIListAPIServers()
|
||||
case TokenEnvs:
|
||||
return p.parseAPIListEnvironments()
|
||||
case TokenVars:
|
||||
return p.parseAPIListVariables()
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown LIST target: %s", p.curToken.Value)
|
||||
}
|
||||
@@ -174,7 +178,7 @@ func (p *Parser) parseAPIListDatasets() (*Command, error) {
|
||||
cmd := NewCommand("api_list_datasets")
|
||||
p.nextToken() // consume DATASETS
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -459,7 +463,7 @@ func (p *Parser) parseAPIListDefaultModels() (*Command, error) {
|
||||
return nil, fmt.Errorf("expected MODELS")
|
||||
}
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -516,13 +520,7 @@ func (p *Parser) parseAPIShowCommands() (*Command, error) {
|
||||
case TokenKey:
|
||||
return p.parseAPIShowKey()
|
||||
case TokenCurrent:
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("show_current"), nil
|
||||
return p.parseAPIShowCurrent()
|
||||
case TokenVar:
|
||||
return p.parseShowVariable()
|
||||
case TokenProvider:
|
||||
@@ -541,6 +539,8 @@ func (p *Parser) parseAPIShowCommands() (*Command, error) {
|
||||
return p.parseUserShowAdmin()
|
||||
case TokenAPI:
|
||||
return p.parseUserShowAPI()
|
||||
case TokenLog:
|
||||
return p.parseAPIShowLogCommands()
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown SHOW target: %s", p.curToken.Value)
|
||||
}
|
||||
@@ -566,6 +566,16 @@ func (p *Parser) parseAPIShowKey() (*Command, error) {
|
||||
return NewCommand("api_show_api_key"), nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIShowCurrent() (*Command, error) {
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("api_show_current"), nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseShowVariable() (*Command, error) {
|
||||
p.nextToken() // consume VAR
|
||||
varName, err := p.parseIdentifier()
|
||||
@@ -577,7 +587,7 @@ func (p *Parser) parseShowVariable() (*Command, error) {
|
||||
cmd.Params["var_name"] = varName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -792,7 +802,7 @@ func (p *Parser) parseCreateRole() (*Command, error) {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -822,7 +832,7 @@ func (p *Parser) parseCreateModelProvider() (*Command, error) {
|
||||
cmd.Params["provider_key"] = providerKey
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -1271,7 +1281,7 @@ func (p *Parser) parseCreateDataset() (*Command, error) {
|
||||
return nil, fmt.Errorf("expected PARSER or PIPELINE")
|
||||
}
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -1289,7 +1299,7 @@ func (p *Parser) parseCreateChat() (*Command, error) {
|
||||
cmd.Params["chat_name"] = chatName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -1436,7 +1446,7 @@ func (p *Parser) parseDropUser() (*Command, error) {
|
||||
cmd.Params["user_name"] = userName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -1454,7 +1464,7 @@ func (p *Parser) parseDropRole() (*Command, error) {
|
||||
cmd.Params["role_name"] = roleName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -1492,7 +1502,7 @@ func (p *Parser) parseDropDataset() (*Command, error) {
|
||||
cmd.Params["dataset_name"] = datasetName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -1510,7 +1520,7 @@ func (p *Parser) parseDropChat() (*Command, error) {
|
||||
cmd.Params["chat_name"] = chatName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -1907,7 +1917,7 @@ func (p *Parser) parseAPISetCommands() (*Command, error) {
|
||||
p.nextToken() // consume SET
|
||||
|
||||
if p.curToken.Type == TokenVar {
|
||||
return p.parseSetVariable()
|
||||
return p.parseAPISetVariable()
|
||||
}
|
||||
if p.curToken.Type == TokenDefault {
|
||||
return p.parseSetDefault()
|
||||
@@ -1919,31 +1929,32 @@ func (p *Parser) parseAPISetCommands() (*Command, error) {
|
||||
return p.parseSetMeta()
|
||||
}
|
||||
if p.curToken.Type == TokenLog {
|
||||
return p.parseSetLog()
|
||||
return p.parseAPISetLog()
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("unknown SET target: %s", p.curToken.Value)
|
||||
}
|
||||
|
||||
func (p *Parser) parseSetVariable() (*Command, error) {
|
||||
func (p *Parser) parseAPISetVariable() (*Command, error) {
|
||||
p.nextToken() // consume VAR
|
||||
varName, err := p.parseIdentifier()
|
||||
|
||||
varName, err := p.parseQuotedString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p.nextToken()
|
||||
|
||||
varValue, err := p.parseVariableValue()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
cmd := NewCommand("set_variable")
|
||||
cmd := NewCommand("api_set_variable")
|
||||
cmd.Params["var_name"] = varName
|
||||
cmd.Params["var_value"] = varValue
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -2030,21 +2041,21 @@ func (p *Parser) parseAPISetAPIKey() (*Command, error) {
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseSetLog() (*Command, error) {
|
||||
func (p *Parser) parseAPISetLog() (*Command, error) {
|
||||
p.nextToken() // consume LOG
|
||||
|
||||
switch p.curToken.Type {
|
||||
case TokenLevel:
|
||||
return p.parseSetLogLevel()
|
||||
return p.parseAPISetLogLevel()
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown log target: %s", p.curToken.Value)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Parser) parseSetLogLevel() (*Command, error) {
|
||||
func (p *Parser) parseAPISetLogLevel() (*Command, error) {
|
||||
p.nextToken() // consume LEVEL
|
||||
|
||||
cmd := NewCommand("set_log_level")
|
||||
cmd := NewCommand("api_set_log_level")
|
||||
switch p.curToken.Type {
|
||||
case TokenDebug:
|
||||
cmd.Params["level"] = "debug"
|
||||
@@ -2059,23 +2070,31 @@ func (p *Parser) parseSetLogLevel() (*Command, error) {
|
||||
case TokenPanic:
|
||||
cmd.Params["level"] = "panic"
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown log target: %s", p.curToken.Value)
|
||||
return nil, fmt.Errorf("unknown log level: %s", p.curToken.Value)
|
||||
}
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseResetCommand() (*Command, error) {
|
||||
func (p *Parser) parseAPIResetCommands() (*Command, error) {
|
||||
p.nextToken() // consume RESET
|
||||
|
||||
if p.curToken.Type != TokenDefault {
|
||||
return nil, fmt.Errorf("expected DEFAULT")
|
||||
switch p.curToken.Type {
|
||||
case TokenDefault:
|
||||
return p.parseAPIResetDefaultModel()
|
||||
case TokenKey:
|
||||
return p.parseAPIResetKey()
|
||||
default:
|
||||
return nil, fmt.Errorf("unknown RESET target: %s", p.curToken.Value)
|
||||
}
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIResetDefaultModel() (*Command, error) {
|
||||
p.nextToken() // consume DEFAULT
|
||||
|
||||
var modelType string
|
||||
switch p.curToken.Type {
|
||||
@@ -2106,13 +2125,23 @@ func (p *Parser) parseResetCommand() (*Command, error) {
|
||||
}
|
||||
p.nextToken() // pass MODEL
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIResetKey() (*Command, error) {
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("api_unset_api_key"), nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseImportCommand() (*Command, error) {
|
||||
p.nextToken() // consume IMPORT
|
||||
documentPaths, err := p.parseQuotedString()
|
||||
@@ -2140,7 +2169,7 @@ func (p *Parser) parseImportCommand() (*Command, error) {
|
||||
cmd.Params["dataset_name"] = datasetName
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -2519,7 +2548,7 @@ func (p *Parser) parseEnableCommand() (*Command, error) {
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -2562,7 +2591,7 @@ func (p *Parser) parseDisableCommand() (*Command, error) {
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -3006,7 +3035,7 @@ func (p *Parser) parseASRCommand() (*Command, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -3421,7 +3450,7 @@ func (p *Parser) parseParseDataset() (*Command, error) {
|
||||
cmd.Params["method"] = method
|
||||
|
||||
p.nextToken()
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -3455,7 +3484,7 @@ func (p *Parser) parseParseDocs() (*Command, error) {
|
||||
cmd.Params["documents"] = documents
|
||||
cmd.Params["dataset_id"] = datasetID
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -3584,10 +3613,6 @@ func (p *Parser) parseUserStatement() (*Command, error) {
|
||||
return p.parseCreateCommand()
|
||||
case TokenDrop:
|
||||
return p.parseDropCommand()
|
||||
case TokenUnset:
|
||||
return p.parseUnsetCommand()
|
||||
case TokenReset:
|
||||
return p.parseResetCommand()
|
||||
case TokenList:
|
||||
return p.parseAPIListCommands()
|
||||
case TokenParse:
|
||||
@@ -3609,21 +3634,6 @@ func (p *Parser) parseUserStatement() (*Command, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Parser) parseUnsetCommand() (*Command, error) {
|
||||
p.nextToken() // consume UNSET
|
||||
|
||||
if p.curToken.Type != TokenKey {
|
||||
return nil, fmt.Errorf("expected TOKEN after UNSET")
|
||||
}
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
return NewCommand("api_unset_api_key"), nil
|
||||
}
|
||||
|
||||
// parseGetCommand parses: GET CHUNK or GET METADATA
|
||||
func (p *Parser) parseGetCommand() (*Command, error) {
|
||||
p.nextToken() // consume GET
|
||||
@@ -4061,7 +4071,7 @@ func (p *Parser) parseUserStartIngestion() (*Command, error) {
|
||||
cmd.Params["dataset_id"] = datasetID
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -4112,7 +4122,7 @@ func (p *Parser) parseUserStopIngestion() (*Command, error) {
|
||||
cmd.Params["tasks"] = tasks
|
||||
p.nextToken()
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -4138,7 +4148,7 @@ func (p *Parser) parseAPIListIngestionTasks() (*Command, error) {
|
||||
cmd.Params["dataset_id"] = datasetID
|
||||
}
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -4164,7 +4174,7 @@ func (p *Parser) parseUserRemoveTask() (*Command, error) {
|
||||
|
||||
cmd.Params["tasks"] = tasks
|
||||
|
||||
// Semicolon is optional for UNSET TOKEN
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
@@ -4201,6 +4211,30 @@ func (p *Parser) parseUserShowAPI() (*Command, error) {
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIShowLogCommands() (*Command, error) {
|
||||
p.nextToken() // consume LOG
|
||||
|
||||
switch p.curToken.Type {
|
||||
case TokenLevel:
|
||||
return p.parseShowLogLevel()
|
||||
default:
|
||||
return nil, fmt.Errorf("expected LEVEL after LOG")
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Parser) parseShowLogLevel() (*Command, error) {
|
||||
p.nextToken() // consume LEVEL
|
||||
|
||||
cmd := NewCommand("api_show_log_level")
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIListAPIServers() (*Command, error) {
|
||||
p.nextToken() // consume API
|
||||
|
||||
@@ -4221,6 +4255,32 @@ func (p *Parser) parseAPIListAPIServers() (*Command, error) {
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIListEnvironments() (*Command, error) {
|
||||
p.nextToken() // consume Envs
|
||||
|
||||
cmd := NewCommand("api_list_environments")
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseAPIListVariables() (*Command, error) {
|
||||
p.nextToken() // consume Variables
|
||||
|
||||
cmd := NewCommand("api_list_variables")
|
||||
|
||||
// Semicolon is optional
|
||||
if p.curToken.Type == TokenSemicolon {
|
||||
p.nextToken()
|
||||
}
|
||||
|
||||
return cmd, nil
|
||||
}
|
||||
|
||||
func (p *Parser) parseExplainCommand() (*Command, error) {
|
||||
p.nextToken() // consume EXPLAIN
|
||||
|
||||
|
||||
Reference in New Issue
Block a user