preparation for v0.2.0 #3

Merged
suyono merged 32 commits from wip2 into main 2024-09-22 11:44:07 +10:00
8 changed files with 64 additions and 25 deletions
Showing only changes of commit f2bfd6e60b - Show all commits

View File

@ -23,7 +23,7 @@ func SplitArgs(args []string) ([]string, []string, error) {
return nil, nil, errors.New("invalid argument")
}
selfArgs = args[1:i]
selfArgs = args[:i]
childArgs = args[i+1:]
break
}

View File

@ -71,11 +71,13 @@ func main() {
app.version.Cmd(rootCmd)
selfArgs, childArgs, err = cli.SplitArgs(os.Args)
if selfArgs, childArgs, err = cli.SplitArgs(os.Args); err != nil {
selfArgs = os.Args
}
app.childArgs = childArgs
app.err = err
rootCmd.SetArgs(selfArgs)
rootCmd.SetArgs(selfArgs[1:])
if err := rootCmd.Execute(); err != nil {
log.Println(err)
os.Exit(1)

View File

@ -35,24 +35,26 @@ func main() {
)
if selfArgs, childArgs, err = cli.SplitArgs(os.Args); err == nil {
flagSet = pflag.NewFlagSet(selfArgs[0], pflag.ExitOnError)
flagSet.Bool(NoWaitFlag, false, "do not wait for the child process")
flagSet.Count(NoWaitFlag, "do not wait for the child process")
if err = flagSet.Parse(selfArgs[1:]); err != nil {
log.Printf("invalid argument: %+v", err)
return
}
} else {
flagSet = pflag.NewFlagSet(os.Args[0], pflag.ExitOnError)
flagSet.Bool(NoWaitFlag, false, "do not wait for the child process")
if err = flagSet.Parse(selfArgs[1:]); err != nil {
flagSet.Count(NoWaitFlag, "do not wait for the child process")
if err = flagSet.Parse(os.Args[1:]); err != nil {
log.Printf("invalid argument: %+v", err)
return
}
}
viper.BindPFlag(NoWaitFlag, flagSet.Lookup(NoWaitFlag))
noWait = viper.GetBool(NoWaitFlag)
_ = viper.BindPFlag(NoWaitFlag, flagSet.Lookup(NoWaitFlag))
if viper.GetInt(NoWaitFlag) > 0 {
noWait = true
}
viper.SetEnvPrefix(wingmate.EnvPrefix)
viper.BindEnv(EnvDummyPath)
_ = viper.BindEnv(EnvDummyPath)
viper.SetDefault(EnvDummyPath, DummyPath)
exePath = viper.GetString(EnvDummyPath)

View File

@ -58,21 +58,23 @@ func main() {
}
viper.SetEnvPrefix(wingmate.EnvPrefix)
viper.BindEnv(EnvStartSecs)
_ = viper.BindEnv(EnvStartSecs)
viper.SetDefault(EnvStartSecs, EnvDefaultStartSecs)
rootCmd.PersistentFlags().StringP(pidFileFlag, "p", "", "location of pid file")
rootCmd.MarkFlagRequired(pidFileFlag)
viper.BindPFlag(pidFileFlag, rootCmd.PersistentFlags().Lookup(pidFileFlag))
_ = rootCmd.MarkFlagRequired(pidFileFlag)
_ = viper.BindPFlag(pidFileFlag, rootCmd.PersistentFlags().Lookup(pidFileFlag))
app.version.Flag(rootCmd)
app.version.Cmd(rootCmd)
selfArgs, childArgs, err = cli.SplitArgs(os.Args)
if selfArgs, childArgs, err = cli.SplitArgs(os.Args); err != nil {
selfArgs = os.Args
}
app.childArgs = childArgs
app.err = err
rootCmd.SetArgs(selfArgs)
rootCmd.SetArgs(selfArgs[1:])
if err := rootCmd.Execute(); err != nil {
log.Println(err)
os.Exit(1)
@ -111,7 +113,10 @@ check:
}
if err = unix.Kill(pid, syscall.Signal(0)); err != nil {
return err
if !errors.Is(err, unix.ESRCH) {
return err
}
break check
}
select {

View File

@ -1,6 +1,8 @@
package config
import (
"fmt"
"io"
"os/exec"
"strings"
)
@ -10,14 +12,26 @@ func getVersion(binPath string) (string, error) {
outBytes []byte
err error
output string
stdout io.ReadCloser
n int
)
cmd := exec.Command(binPath, "version")
outBytes, err = cmd.Output()
if err != nil {
return "", err
if stdout, err = cmd.StdoutPipe(); err != nil {
return "", fmt.Errorf("setting up stdout reader: %w", err)
}
output = string(outBytes)
if err = cmd.Start(); err != nil {
return "", fmt.Errorf("starting process: %w", err)
}
outBytes = make([]byte, 1024)
if n, err = stdout.Read(outBytes); err != nil {
return "", fmt.Errorf("reading stdout: %w", err)
}
_ = cmd.Wait()
output = string(outBytes[:n])
output = strings.TrimRight(output, versionTrimRightCutSet)
return output, nil
}

View File

@ -6,3 +6,22 @@ service:
spawner:
command: [ "wmspawner" ]
user: "1200"
bgtest:
command:
- "wmstarter"
- "--no-wait"
- "--"
- "wmexec"
- "--setsid"
- "--"
- "wmbg"
- "--name"
- "test-run"
- "--pause"
- "10"
- "--log-path"
- "/var/log/wmbg.log"
- "--pid-file"
- "/var/run/wmbg.pid"
pidfile: "/var/run/wmbg.pid"

View File

@ -63,9 +63,7 @@ cron:
iwg.Wait()
if err = cmd.Wait(); err != nil {
wingmate.Log().Error().Str(cronTag, cron.Name()).Msgf("got error when waiting: %+v", err)
}
_ = cmd.Wait()
}
fail:

View File

@ -69,9 +69,8 @@ service:
iwg.Wait()
if err = cmd.Wait(); err != nil {
wingmate.Log().Error().Str(serviceTag, task.Name()).Msgf("got error when waiting: %+v", err)
}
_ = cmd.Wait()
fail:
if failStatus {
time.Sleep(time.Second)