From 5da1a88296b43d1c27f3b102d5335b6443fd85c3 Mon Sep 17 00:00:00 2001 From: HikariKnight <2557889+HikariKnight@users.noreply.github.com> Date: Wed, 5 Apr 2023 13:32:38 +0200 Subject: [PATCH] initial commit to prepare for rewrite into golang for actual use --- .gitignore | 3 +- .goreleaser.yaml | 29 ++++++ cmd/main.go | 1 + go.mod | 5 ++ go.sum | 2 + .../lib}/apply_CHANGES.sh | 0 {lib => old_bash_version/lib}/get_GPU.sh | 0 .../lib}/get_GPU_GROUP.sh | 0 {lib => old_bash_version/lib}/get_GPU_ROM.sh | 0 {lib => old_bash_version/lib}/get_USB_CTL.sh | 0 .../lib}/get_USB_CTL_GROUP.sh | 0 {lib => old_bash_version/lib}/paths.sh | 0 {lib => old_bash_version/lib}/set_CMDLINE.sh | 0 {lib => old_bash_version/lib}/set_DRACUT.sh | 0 .../lib}/set_INITRAMFSTOOLS.sh | 0 .../lib}/set_MKINITCPIO.sh | 0 {lib => old_bash_version/lib}/set_MODPROBE.sh | 0 {lib => old_bash_version/lib}/set_VFIO.sh | 0 vfio-setup => old_bash_version/vfio-setup | 0 vfio-verify => old_bash_version/vfio-verify | 0 pkg/params/params.go | 90 +++++++++++++++++++ 21 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 .goreleaser.yaml create mode 100644 cmd/main.go create mode 100644 go.mod create mode 100644 go.sum rename {lib => old_bash_version/lib}/apply_CHANGES.sh (100%) rename {lib => old_bash_version/lib}/get_GPU.sh (100%) rename {lib => old_bash_version/lib}/get_GPU_GROUP.sh (100%) rename {lib => old_bash_version/lib}/get_GPU_ROM.sh (100%) rename {lib => old_bash_version/lib}/get_USB_CTL.sh (100%) rename {lib => old_bash_version/lib}/get_USB_CTL_GROUP.sh (100%) rename {lib => old_bash_version/lib}/paths.sh (100%) rename {lib => old_bash_version/lib}/set_CMDLINE.sh (100%) rename {lib => old_bash_version/lib}/set_DRACUT.sh (100%) rename {lib => old_bash_version/lib}/set_INITRAMFSTOOLS.sh (100%) rename {lib => old_bash_version/lib}/set_MKINITCPIO.sh (100%) rename {lib => old_bash_version/lib}/set_MODPROBE.sh (100%) rename {lib => old_bash_version/lib}/set_VFIO.sh (100%) rename vfio-setup => old_bash_version/vfio-setup (100%) rename vfio-verify => old_bash_version/vfio-verify (100%) create mode 100644 pkg/params/params.go diff --git a/.gitignore b/.gitignore index f892f21..22508b9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ config/ backup/ utils/ -utils.old/ \ No newline at end of file +utils.old/ +bin/ \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..f2d4dbc --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,29 @@ +before: + hooks: + - go mod tidy +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + hooks: + post: + - upx "{{ .Path }}" +archives: + - replacements: + linux: Linux + amd64: x86_64 +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ incpatch .Version }}-next" +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' + +# modelines, feel free to remove those if you don't want/use them: +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=cnqoj diff --git a/cmd/main.go b/cmd/main.go new file mode 100644 index 0000000..06ab7d0 --- /dev/null +++ b/cmd/main.go @@ -0,0 +1 @@ +package main diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..800350d --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/HikariKnight/quickpassthrough + +go 1.20 + +require github.com/akamensky/argparse v1.4.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..5bf91e2 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/akamensky/argparse v1.4.0 h1:YGzvsTqCvbEZhL8zZu2AiA5nq805NZh75JNj4ajn1xc= +github.com/akamensky/argparse v1.4.0/go.mod h1:S5kwC7IuDcEr5VeXtGPRVZ5o/FdhcMlQz4IZQuw64xA= diff --git a/lib/apply_CHANGES.sh b/old_bash_version/lib/apply_CHANGES.sh similarity index 100% rename from lib/apply_CHANGES.sh rename to old_bash_version/lib/apply_CHANGES.sh diff --git a/lib/get_GPU.sh b/old_bash_version/lib/get_GPU.sh similarity index 100% rename from lib/get_GPU.sh rename to old_bash_version/lib/get_GPU.sh diff --git a/lib/get_GPU_GROUP.sh b/old_bash_version/lib/get_GPU_GROUP.sh similarity index 100% rename from lib/get_GPU_GROUP.sh rename to old_bash_version/lib/get_GPU_GROUP.sh diff --git a/lib/get_GPU_ROM.sh b/old_bash_version/lib/get_GPU_ROM.sh similarity index 100% rename from lib/get_GPU_ROM.sh rename to old_bash_version/lib/get_GPU_ROM.sh diff --git a/lib/get_USB_CTL.sh b/old_bash_version/lib/get_USB_CTL.sh similarity index 100% rename from lib/get_USB_CTL.sh rename to old_bash_version/lib/get_USB_CTL.sh diff --git a/lib/get_USB_CTL_GROUP.sh b/old_bash_version/lib/get_USB_CTL_GROUP.sh similarity index 100% rename from lib/get_USB_CTL_GROUP.sh rename to old_bash_version/lib/get_USB_CTL_GROUP.sh diff --git a/lib/paths.sh b/old_bash_version/lib/paths.sh similarity index 100% rename from lib/paths.sh rename to old_bash_version/lib/paths.sh diff --git a/lib/set_CMDLINE.sh b/old_bash_version/lib/set_CMDLINE.sh similarity index 100% rename from lib/set_CMDLINE.sh rename to old_bash_version/lib/set_CMDLINE.sh diff --git a/lib/set_DRACUT.sh b/old_bash_version/lib/set_DRACUT.sh similarity index 100% rename from lib/set_DRACUT.sh rename to old_bash_version/lib/set_DRACUT.sh diff --git a/lib/set_INITRAMFSTOOLS.sh b/old_bash_version/lib/set_INITRAMFSTOOLS.sh similarity index 100% rename from lib/set_INITRAMFSTOOLS.sh rename to old_bash_version/lib/set_INITRAMFSTOOLS.sh diff --git a/lib/set_MKINITCPIO.sh b/old_bash_version/lib/set_MKINITCPIO.sh similarity index 100% rename from lib/set_MKINITCPIO.sh rename to old_bash_version/lib/set_MKINITCPIO.sh diff --git a/lib/set_MODPROBE.sh b/old_bash_version/lib/set_MODPROBE.sh similarity index 100% rename from lib/set_MODPROBE.sh rename to old_bash_version/lib/set_MODPROBE.sh diff --git a/lib/set_VFIO.sh b/old_bash_version/lib/set_VFIO.sh similarity index 100% rename from lib/set_VFIO.sh rename to old_bash_version/lib/set_VFIO.sh diff --git a/vfio-setup b/old_bash_version/vfio-setup similarity index 100% rename from vfio-setup rename to old_bash_version/vfio-setup diff --git a/vfio-verify b/old_bash_version/vfio-verify similarity index 100% rename from vfio-verify rename to old_bash_version/vfio-verify diff --git a/pkg/params/params.go b/pkg/params/params.go new file mode 100644 index 0000000..08ccf79 --- /dev/null +++ b/pkg/params/params.go @@ -0,0 +1,90 @@ +package params + +import ( + "fmt" + "os" + + "github.com/akamensky/argparse" +) + +/* + The whole purpose of this module is to make a struct + to just carry all our parsed arguments around between functions + + Create a Params struct with all the argparse arguments + pArg := params.NewParams() +*/ + +type Params struct { + Flag map[string]bool + FlagCounter map[string]int + IntList map[string][]int + StringList map[string][]string + String map[string]string +} + +func (p *Params) addFlag(name string, flag bool) { + p.Flag[name] = flag +} + +func (p *Params) addFlagCounter(name string, flag int) { + p.FlagCounter[name] = flag +} + +func (p *Params) addIntList(name string, flag []int) { + p.IntList[name] = flag +} + +func (p *Params) addStringList(name string, flag []string) { + p.StringList[name] = flag +} + +func (p *Params) addString(name string, flag string) { + p.String[name] = flag +} + +func NewParams() *Params { + // Setup the parser for arguments + parser := argparse.NewParser("quickpassthrough", "A utility to help you configure your host for GPU Passthrough") + + // Configure arguments + /*gpu := parser.Flag("g", "gpu", &argparse.Options{ + Required: false, + Help: "List all GPUs. (use -i # to only display results from specified IOMMU group)", + })*/ + + // Parse arguments + err := parser.Parse(os.Args) + if err != nil { + // In case of error print error and print usage + // This can also be done by passing -h or --help flags + fmt.Print(parser.Usage(err)) + os.Exit(4) + } + + // Make our struct + pArg := &Params{ + Flag: make(map[string]bool), + FlagCounter: make(map[string]int), + IntList: make(map[string][]int), + StringList: make(map[string][]string), + String: make(map[string]string), + } + + // Add all parsed arguments to a struct for portability since we will use them all over the program + /*pArg.addFlag("gpu", *gpu) + pArg.addFlag("usb", *usb) + pArg.addFlag("nic", *nic) + pArg.addFlag("sata", *sata) + pArg.addFlagCounter("related", *related) + pArg.addStringList("ignore", *ignore) + pArg.addIntList("iommu_group", *iommu_group) + pArg.addFlag("kernelmodules", *kernelmodules) + pArg.addFlag("legacyoutput", *legacyoutput) + pArg.addFlag("id", *id) + pArg.addFlag("pciaddr", *pciaddr) + pArg.addFlag("rom", *rom) + pArg.addString("format", *format)*/ + + return pArg +}