-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_paths.go
46 lines (38 loc) · 1.57 KB
/
generate_paths.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package main
import (
"fmt"
"os"
"strings"
)
// Функция для преобразования "huawei_" в корректное имя типа
func toTypeName(protoFile string) string {
// Удаляем префикс "huawei_"
withoutPrefix := strings.TrimPrefix(protoFile, "huawei-")
//fmt.Println(withoutPrefix)
// Заменяем дефисы на пробелы
withoutDashes := strings.ReplaceAll(withoutPrefix, "-", " ")
// Делаем каждое слово с заглавной буквы
titleCase := strings.Title(withoutDashes)
// Убираем пробелы, чтобы получить PascalCase
return strings.ReplaceAll(titleCase, " ", "")
}
func main() {
// Получение списка файлов из переменной окружения
protoFiles := os.Getenv("PROTO_FILES")
if protoFiles == "" {
fmt.Println("PROTO_FILES environment variable is not set")
os.Exit(1)
}
// Разбиваем список файлов
files := strings.Split(protoFiles, " ")
// Генерация строк
for _, file := range files {
// Преобразуем имя файла в формат PascalCase для имени типа
typeName := toTypeName(file)
// Преобразуем имя файла (замена дефисов на подчеркивания для пакета)
packageName := strings.ReplaceAll(file, "-", "_")
// Формируем строку
fmt.Printf(`PathKey{ProtoPath: "%s.%s", Version: "1.0"}: []reflect.Type{reflect.TypeOf((*%s.%s)(nil))},`+"\n",
packageName, typeName, packageName, typeName)
}
}