Skip to content

Commit cd4ab8b

Browse files
committed
Added deamon capabilities
Former-commit-id: b3e538220f32a063fa0abc8fe9d71dfbf68b868f [formerly d1b16fa949949e48ab3a3f14d9495bf9384796c4] Former-commit-id: 214faf12188ddfdfb8c152676d78bc2ba33769b3
1 parent 19f197f commit cd4ab8b

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

main.go

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,13 @@ import (
1515
"github.com/kardianos/osext"
1616
//"github.com/sanbornm/go-selfupdate/selfupdate" #included in update.go to change heavily
1717
//"github.com/sanderhahn/gozip"
18-
"github.com/vharitonsky/iniflags"
1918
"runtime/debug"
2019
"text/template"
2120
"time"
21+
22+
"github.com/kardianos/service"
23+
24+
"github.com/vharitonsky/iniflags"
2225
)
2326

2427
var (
@@ -80,8 +83,61 @@ func launchSelfLater() {
8083
log.Println("Done waiting 5 secs. Now launching...")
8184
}
8285

86+
var logger service.Logger
87+
88+
type program struct{}
89+
90+
func (p *program) Start(s service.Service) error {
91+
// Start should not block. Do the actual work async.
92+
go p.run()
93+
return nil
94+
}
95+
func (p *program) run() {
96+
startDaemon()
97+
}
98+
func (p *program) Stop(s service.Service) error {
99+
// Stop should not block. Return with a few seconds.
100+
<-time.After(time.Second * 13)
101+
return nil
102+
}
103+
83104
func main() {
105+
svcConfig := &service.Config{
106+
Name: "ArduinoCreateBridge",
107+
DisplayName: "Arduino Create Bridge",
108+
Description: "A bridge that allows Arduino Create to operate on the boards connected to the computer",
109+
}
110+
111+
prg := &program{}
112+
s, err := service.New(prg, svcConfig)
113+
if err != nil {
114+
log.Fatal(err)
115+
}
116+
if len(os.Args) > 1 {
117+
err = service.Control(s, os.Args[1])
118+
if err != nil {
119+
log.Fatal(err)
120+
}
121+
return
122+
}
123+
124+
logger, err = s.Logger(nil)
125+
if err != nil {
126+
log.Fatal(err)
127+
}
128+
129+
err = s.Install()
130+
if err != nil {
131+
logger.Error(err)
132+
}
133+
134+
err = s.Run()
135+
if err != nil {
136+
logger.Error(err)
137+
}
138+
}
84139

140+
func startDaemon() {
85141
go func() {
86142

87143
// autoextract self

0 commit comments

Comments
 (0)