From 35bc3643ca404bf18bab378761dcdb7e34681799 Mon Sep 17 00:00:00 2001 From: DeveloperDurp Date: Wed, 9 Oct 2024 04:59:58 -0500 Subject: [PATCH] Initial commit --- cmd/win/root.go | 19 +++++++++++++++ main.go | 24 ++++++++++++++++++ pkg/ostype/os.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 cmd/win/root.go create mode 100644 main.go create mode 100644 pkg/ostype/os.go diff --git a/cmd/win/root.go b/cmd/win/root.go new file mode 100644 index 0000000..dc2e411 --- /dev/null +++ b/cmd/win/root.go @@ -0,0 +1,19 @@ +package win + +import ( + "github.com/spf13/cobra" +) + +var rootCmd = &cobra.Command{ + Use: "wingoutil", + Short: "DeveloperDurp's Windows Utility - Install Programs, Tweaks, Fixes, and Updates", + Long: `DeveloperDurp's Windows Utility - Install Programs, Tweaks, Fixes, and Updates (Inspired by Chris Titus Tech's winutil)`, +} + +func Execute() error { + err := rootCmd.Execute() + if err != nil { + return err + } + return nil +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..0d50367 --- /dev/null +++ b/main.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + "gitlab.com/developerdurp/wingotil/pkg/ostype" + "log" +) + +func main() { + os, err := ostype.GetOsType() + if err != nil { + log.Fatal(err) + } + + switch os.(type) { + case *ostype.WinVer: + fmt.Println("Windows") + case *ostype.LinVer: + fmt.Println("Linux") + default: + fmt.Println("unable to detect OS version") + } + +} diff --git a/pkg/ostype/os.go b/pkg/ostype/os.go new file mode 100644 index 0000000..5784d9c --- /dev/null +++ b/pkg/ostype/os.go @@ -0,0 +1,63 @@ +package ostype + +import ( + "errors" + "golang.org/x/sys/windows/registry" + "runtime" +) + +type WinVer struct { + CurrentVersion string + ProductName string +} +type LinVer struct { + Distro string + LinuxVersion string +} + +func GetOsType() (interface{}, error) { + + os := runtime.GOOS + switch os { + case "windows": + + winVer, err := GetWinVersion() + if err != nil { + return nil, errors.New("Unable to detect Windows Version") + } + + return winVer, nil + + case "darwin": + return nil, nil + case "linux": + return nil, nil + default: + return nil, errors.New("Unable to detect OS") + } +} + +func GetWinVersion() (*WinVer, error) { + + k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE) + if err != nil { + return nil, err + } + defer k.Close() + + currentVersion, _, err := k.GetStringValue("CurrentVersion") + if err != nil { + return nil, err + } + + productName, _, err := k.GetStringValue("ProductName") + if err != nil { + return nil, err + } + + version := &WinVer{ + CurrentVersion: currentVersion, + ProductName: productName, + } + return version, nil +}