-
Notifications
You must be signed in to change notification settings - Fork 22
/
args.go
113 lines (97 loc) · 2.09 KB
/
args.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
// Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
//
//----------------------------------------
// 当前进程的命令行参数获取
package process
import (
"fmt"
"github.com/energye/energy/v2/logger"
"os"
"strings"
)
// Args
// 当前进程命令行参数解析实例
var Args = parse()
type _args struct {
isMain bool
size int
value map[string]PRCESS_TYPE
}
func parse() *_args {
var args = &_args{value: make(map[string]PRCESS_TYPE, len(os.Args))}
args.size = len(os.Args)
for _, v := range os.Args {
a := strings.Split(v, "=")
if len(a) == 2 {
args.value[strings.Replace(a[0], "--", "", 1)] = PRCESS_TYPE(a[1])
}
}
if v, ok := args.value["type"]; ok {
args.isMain = v == PT_MAIN
} else {
args.isMain = true
}
return args
}
func (m *_args) Size() int {
return m.size
}
// ProcessType
// 返回进程类型
func (m *_args) ProcessType() PRCESS_TYPE {
if v, ok := m.value["type"]; ok {
return v
}
return PT_MAIN
}
func (m *_args) IsMain() bool {
return m.isMain
}
func (m *_args) IsRender() bool {
if v, ok := m.value["type"]; ok {
return v == PT_RENDERER
}
return false
}
func (m *_args) IsGPU() bool {
if v, ok := m.value["type"]; ok {
return v == PT_GPU
}
return false
}
func (m *_args) IsUtility() bool {
if v, ok := m.value["type"]; ok {
return v == PT_UTILITY
}
return false
}
// Args
// 根据name返回指定的命令行参数值
func (m *_args) Args(name string) string {
if v, ok := m.value[name]; ok {
return string(v)
}
return ""
}
// Print
// 打印到控制台
func (m *_args) Print() {
logger.Debug("command line:", m.size)
for key, value := range m.value {
fmt.Printf("args = [%v = %v]\n", key, value)
}
}
type PRCESS_TYPE string
const (
PT_MAIN PRCESS_TYPE = "" // main
PT_GPU = "gpu-process" // gpu
PT_UTILITY = "utility" // utility
PT_RENDERER = "renderer" // renderer
PT_DEVTOOLS = "devtools" //
)