Добавление удаленного вызова функции из клиента
continuous-integration/drone/tag Build is passing Details

This commit is contained in:
Александр Федорюк 2023-04-18 15:36:25 +03:00
parent 2f5388989f
commit f78cf77a8d
5 changed files with 49 additions and 6 deletions

View File

@ -6,7 +6,7 @@ platform:
arch: amd64
steps:
- name: build
image: golang:1.20.2-alpine3.17
image: golang:1.20.3-alpine3.17
commands:
- go get
- CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -a -installsuffix cgo -o ./yt-cli-linux-386 ./main.go
@ -82,4 +82,4 @@ steps:
trigger:
event:
- tag
- tag

6
.gitignore vendored
View File

@ -1,4 +1,6 @@
.vscode
__debug_bin
yt-cli
fax-server-asterisk.yml
yt-cli\
!.drone.yml
/*.yml
/*.conf

10
lib/call-function.go Normal file
View File

@ -0,0 +1,10 @@
package lib
func CallFunction(funcName string) {
if funcName == "" {
panic(`should be set name function for call`)
}
if _, _, err := client.Call(funcName, nil, AppConfig.Payload); err != nil {
panic(err)
}
}

View File

@ -3,6 +3,7 @@ package lib
import (
"fmt"
"os"
"path/filepath"
)
type Config struct {
@ -35,6 +36,9 @@ type Config struct {
VerifyAccessToken bool
VerifyAccessTokenPath string
CallFunction string // Вызываемая функция
Payload []byte // Бинарные данные
}
var AppConfig Config
@ -137,13 +141,36 @@ func parseArgs(args []string) {
AppConfig.Filename = args[1]
parseArgs(args[2:])
} else {
panic(fmt.Errorf("error count arguments for parameters file"))
panic(fmt.Errorf("error count arguments for parameters upload-settings"))
}
case "--token":
if len(args) > 1 {
AppConfig.VerifyAccessToken = true
AppConfig.VerifyAccessTokenPath = args[1]
parseArgs(args[2:])
} else {
panic(fmt.Errorf("error count arguments for parameters token"))
}
case "--call":
if len(args) > 1 {
AppConfig.CallFunction = args[1]
parseArgs(args[2:])
} else {
panic(fmt.Errorf("error count arguments for parameters call"))
}
case "--file":
if len(args) > 1 {
var fullpath string
var err error
fullpath, err = filepath.Abs(args[1])
if err != nil {
panic(fmt.Errorf("file not found"))
}
AppConfig.Payload, err = os.ReadFile(fullpath)
if err != nil {
panic(fmt.Errorf("file not found"))
}
parseArgs(args[2:])
} else {
panic(fmt.Errorf("error count arguments for parameters file"))
}
@ -168,12 +195,14 @@ func PrintHelp() {
--set <name> <value> - Установить параметр
--get <name> - получить значение параметра
--domain <name> - Доменное имя
--function <name> <path> - установить функцию для указанного ройтинга
--function <name> <path> - установить функцию для указанного роутинга
--method <name> - метод, на который присваивается функция
--proxy <path> <proxyAddr> - проксирование запроса на другой адрес по указанному пути
--static-file <path> <file> - установка статичного файла по конкретному пути
--static-dir <path> <dir> - установка статичных файлов с вложенными файлами по конкретному пути рекурсивно с вложениями
--upload-settings <file> - файл настроек для массовой установки значений
--token <path> - установить проверку JWT для указанного пути и его вложений
--call <func-name> - вызвать функцию, которой передаются данные из файла в --file. Если нет параметра --file, данные не передаются
--file <path/name>
`)
}

View File

@ -35,6 +35,8 @@ func main() {
lib.ConfigUpload(lib.AppConfig.Filename)
} else if lib.AppConfig.VerifyAccessToken {
lib.SetToken(lib.AppConfig.Domain, lib.AppConfig.VerifyAccessTokenPath)
} else if lib.AppConfig.CallFunction != "" {
lib.CallFunction(lib.AppConfig.CallFunction)
} else {
lib.PrintHelp()
}