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 +}