Removed debug sleep. Added format string to dev->mode

This commit is contained in:
Matthias Fulz 2022-07-02 00:06:27 +02:00
parent 14ddb1b8e6
commit f83d8b6a7d
4 changed files with 818 additions and 22 deletions

View File

@ -17,12 +17,26 @@ package cmd
import (
"fmt"
"os"
"strings"
"gitea.olznet.de/OlzNet/slog"
"gitea.olznet.de/eqmk/qmkenc"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
)
var modeFlags *pflag.FlagSet
func modeFormat(m qmkenc.QEncMode, sm qmkenc.QEncSubMode) string {
output := subViper.GetString("format_string")
output = strings.Replace(output, "%m", fmt.Sprintf("%s", m), -1)
output = strings.Replace(output, "%s", fmt.Sprintf("%s", sm), -1)
return output
}
// devCmd represents the dev command
var devCmd = &cobra.Command{
Use: "dev [unlock|lock|initialize|reset|mode] [flags]",
@ -38,17 +52,26 @@ or retrieving the run mode of the device.`,
switch args[0] {
case "unlock":
err = qmkenc.QCmdUnlock(qdev)
break
case "lock":
err = qmkenc.QCmdLock(qdev)
break
case "initialize":
err = qmkenc.QCmdInitialize(qdev)
break
case "reset":
err = qmkenc.QCmdReset(qdev)
break
case "mode":
m, sm, err := qmkenc.QCmdGetMode(qdev)
if err == nil {
fmt.Printf("M: %s, SM: %s\n", m, sm)
if err != nil {
break
}
if subViper.GetBool("format") {
fmt.Println(modeFormat(m, sm))
return
}
fmt.Printf("M: %s | SM: %s\n", m, sm)
default:
slog.LOG_ERRORFLN("Invalid command: %s", args[0])
return
@ -63,13 +86,28 @@ func init() {
initSubViper()
rootCmd.AddCommand(devCmd)
// Here you will define your flags and configuration settings.
modeFlags = pflag.NewFlagSet("mode", pflag.ExitOnError)
modeFlags.BoolP("format", "f", true, "Output formatted string of the device configuration")
modeFlags.StringP("format_string", "", "Mode: %m | Sub Mode: %s", "Output format [%m=mode %s=sub mode]")
// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// devCmd.PersistentFlags().String("foo", "", "A help for foo")
// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// devCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
var cmd string
reached := false
for i, a := range os.Args {
if a == "dev" {
reached = true
} else {
if reached {
if a[0:1] != "-" {
cmd = os.Args[i]
break
}
}
}
}
switch cmd {
case "mode":
devCmd.Flags().AddFlagSet(modeFlags)
subViper.BindPFlag("format", devCmd.Flags().Lookup("format"))
subViper.BindPFlag("format_string", devCmd.Flags().Lookup("format_string"))
}
}

View File

@ -23,7 +23,6 @@ import (
"path"
"strings"
"syscall"
"time"
"gitea.olznet.de/OlzNet/slog"
"github.com/TheCreeper/go-notify"
@ -160,7 +159,6 @@ to decrypt encrypted logins and passwords transparent for browsers.`,
os.Exit(-1)
}
slog.LOG_DEBUGLN("Open")
time.Sleep(2 * time.Second)
},
PersistentPostRun: func(cmd *cobra.Command, args []string) {
slog.LOG_DEBUGLN("Finished")

20
go.mod
View File

@ -7,6 +7,7 @@ require (
gitea.olznet.de/OlzNet/slog v1.3.0
gitea.olznet.de/eqmk/qmkenc v0.9.1
github.com/TheCreeper/go-notify v0.2.0
github.com/google/go-containerregistry v0.10.0
github.com/manifoldco/promptui v0.9.0
github.com/mitchellh/go-homedir v1.1.0
github.com/spf13/cobra v1.4.0
@ -17,24 +18,37 @@ require (
require (
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
github.com/containerd/stargz-snapshotter/estargz v0.11.4 // indirect
github.com/docker/cli v20.10.16+incompatible // indirect
github.com/docker/distribution v2.8.1+incompatible // indirect
github.com/docker/docker v20.10.16+incompatible // indirect
github.com/docker/docker-credential-helpers v0.6.4 // indirect
github.com/fsnotify/fsnotify v1.5.1 // indirect
github.com/godbus/dbus/v5 v5.0.3 // indirect
github.com/godbus/dbus/v5 v5.0.4 // indirect
github.com/google/go-cmp v0.5.8 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jamesruan/sodium v1.0.14 // indirect
github.com/klauspost/compress v1.15.4 // indirect
github.com/magiconair/properties v1.8.6 // indirect
github.com/mitchellh/mapstructure v1.4.3 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.0.3-0.20220114050600-8b9d41f48198 // indirect
github.com/pelletier/go-toml v1.9.4 // indirect
github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/sirupsen/logrus v1.8.1 // indirect
github.com/spf13/afero v1.8.2 // indirect
github.com/spf13/cast v1.4.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/sstallion/go-hid v0.0.0-20211019232252-c64377bfa49e // indirect
github.com/subosito/gotenv v1.2.0 // indirect
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 // indirect
github.com/vbatts/tar-split v0.11.2 // indirect
golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5 // indirect
golang.org/x/image v0.0.0-20211028202545-6944b10bf410 // indirect
golang.org/x/mobile v0.0.0-20210716004757-34ab1303b554 // indirect
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
golang.org/x/sync v0.0.0-20220513210516-0976fa681c29 // indirect
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
golang.org/x/text v0.3.7 // indirect
gopkg.in/ini.v1 v1.66.4 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect

760
go.sum

File diff suppressed because it is too large Load Diff