-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
73 lines (66 loc) · 2.04 KB
/
main.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package main
import (
"flag"
"fmt"
"os"
"path"
"runtime"
"github.com/sirupsen/logrus"
)
const OPENCD_CONFIG = "opencd.yaml"
var VERSION string
var LOGFILE string // "opencd.log"
var log = logrus.New()
func init() {
log.SetReportCaller(true)
log.SetFormatter(&logrus.TextFormatter{
FullTimestamp: true,
TimestampFormat: "2006/01/02 15:04:00",
CallerPrettyfier: func(f *runtime.Frame) (string, string) {
_, filename := path.Split(f.File)
filename = fmt.Sprintf("[ %s:%d]", filename, f.Line)
return "", filename
},
})
file, err := os.OpenFile(LOGFILE, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err == nil {
log.SetOutput(file)
} else {
log.Info("Не удалось открыть файл логов, используется стандартный stderr")
}
}
func main() {
if len(os.Args) > 1 {
switch os.Args[1] {
case "deploy":
err := checkComponents()
if err != nil {
errShutdown(err)
}
config, err := readOpencdFile()
if err != nil {
errShutdown(err)
}
deployCommand := flag.NewFlagSet("deploy", flag.ExitOnError)
stage := deployCommand.String("s", "merge", "запускает обновление проекта;\nдопустимые флаги [merge, docker];\nmerge - полный цикл сборки;\ndocker - сборка и запуск контейнеров в текущем состоянии.\n")
env := deployCommand.String("e", "", "название окружения для обновления проекта;\nпараметр opencd.name.")
deployCommand.Parse(os.Args[2:])
for _, item := range config.Environments {
if item.Name == *env {
deploy(item, config.Settings, *stage)
os.Exit(0)
}
}
fmt.Println("не указано окружение для обновления проекта. Подробнее - opencd help")
os.Exit(1)
case "version":
version()
case "help":
fmt.Print(MENU_TEXT)
default:
fmt.Println("неверная команда")
}
} else {
fmt.Print("неверная команда\n", MENU_TEXT)
}
}