This repository has been archived by the owner on Mar 26, 2024. It is now read-only.
/
tool.go
executable file
·132 lines (119 loc) · 3.54 KB
/
tool.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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
* Copyright © 2019 Hedzr Yeh.
*/
package dex
import (
"bytes"
"github.com/hedzr/cmdr-addons/pkg/plugins/dex/sig"
"net"
"os"
"os/exec"
"text/template"
)
func tplApply(tmpl string, data interface{}) string {
var w = new(bytes.Buffer)
var tpl = template.Must(template.New("y").Parse(tmpl))
if err := tpl.Execute(w, data); err != nil {
pd.log.Errorf("tpl execute error: %v", err)
}
return w.String()
}
func isRootUser() bool {
return os.Getuid() == 0
}
func shellRunAuto(name string, arg ...string) error {
output, err := shellRun(name, arg...)
if err != nil {
pd.log.Fatalf("shellRunAuto err: %v\n\noutput:\n%v", err, output.String())
}
return err
}
func shellRun(name string, arg ...string) (output bytes.Buffer, err error) {
cmd := exec.Command(name, arg...)
// Command.Stdin = strings.NewReader("some input")
cmd.Stdout = &output
err = cmd.Run()
return
}
// IsRunningInDemonizedMode returns true if you are running under demonized mode.
// false means that you're running in normal console/tty mode.
func IsRunningInDemonizedMode() bool {
// return cmdr.GetBoolR(DaemonizedKey)
return sig.IsRunningInDemonizedMode()
}
// SetTermSignals allows an functor to provide a list of Signals
func SetTermSignals(sigfn func() []os.Signal) {
// onSetTermHandler = sig
sig.SetTermSignals(sigfn)
}
// SetSigEmtSignals allows an functor to provide a list of Signals
func SetSigEmtSignals(sigfn func() []os.Signal) {
// onSetSigEmtHandler = sig
sig.SetSigEmtSignals(sigfn)
}
// SetReloadSignals allows an functor to provide a list of Signals
func SetReloadSignals(sigfn func() []os.Signal) {
// onSetReloadHandler = sig
sig.SetReloadSignals(sigfn)
}
// SetHotReloadSignals allows an functor to provide a list of Signals
func SetHotReloadSignals(sigfn func() []os.Signal) {
sig.SetHotReloadSignals(sigfn)
}
// SetOnGetListener returns tcp/http listener for daemon hot-restarting
func SetOnGetListener(fn func() net.Listener) {
sig.SetOnGetListener(fn)
}
// // QuitSignal return a channel for quit signal raising up.
// func QuitSignal() chan os.Signal {
// return sig.QuitSignal()
// }
//
// // SendNilSig sends the POSIX NUL signal
// func SendNilSig(process *os.Process) error {
// return sig.SendNilSig(process)
// }
//
// // SendHUP sends the POSIX HUP signal
// func SendHUP(process *os.Process) error {
// return sig.SendHUP(process)
// }
//
// // SendUSR1 sends the POSIX USR1 signal
// func SendUSR1(process *os.Process) error {
// return sig.SendUSR1(process)
// }
//
// // SendUSR2 sends the POSIX USR2 signal
// func SendUSR2(process *os.Process) error {
// return sig.SendUSR2(process)
// }
//
// // SendTERM sends the POSIX TERM signal
// func SendTERM(process *os.Process) error {
// return sig.SendTERM(process)
// }
//
// // SendQUIT sends the POSIX QUIT signal
// func SendQUIT(process *os.Process) error {
// return sig.SendQUIT(process)
// }
//
// // SendKILL sends the POSIX KILL signal
// func SendKILL(process *os.Process) error {
// return sig.SendKILL(process)
// }
//
//
// // ServeSignals calls handlers for system signals.
// // before invoking ServeSignals(), you should run SetupSignals() at first.
// func ServeSignals() (err error) {
// return sig.ServeSignals()
// }
//
// // HandleSignalCaughtEvent is a shortcut to block the main business logic loop but break it if os signals caught.
// // `stop` channel will be trigger if any hooked os signal caught, such as os.Interrupt;
// // the main business logic loop should trigger `done` once `stop` holds.
// func HandleSignalCaughtEvent() bool {
// return sig.HandleSignalCaughtEvent()
// }