Refactor and split tui into smaller files

This commit is contained in:
HikariKnight 2023-04-08 19:38:25 +02:00
parent b339dab29f
commit 123d1ca18a
12 changed files with 603 additions and 508 deletions

View file

@ -0,0 +1,61 @@
package internal
import (
"bufio"
"bytes"
"fmt"
"io"
"os/exec"
"regexp"
"strings"
"github.com/HikariKnight/ls-iommu/pkg/errorcheck"
"github.com/charmbracelet/bubbles/list"
)
func getIOMMU(args ...string) []string {
var stdout, stderr bytes.Buffer
// Configure the ls-iommu command
cmd := exec.Command("utils/ls-iommu", args...)
cmd.Stderr = &stderr
cmd.Stdout = &stdout
// Execute the command
err := cmd.Run()
// If ls-iommu returns an error then IOMMU is disabled
errorcheck.ErrorCheck(err, "IOMMU disabled in either UEFI/BIOS or in bootloader!")
// Read the output
var items []string
output, _ := io.ReadAll(&stdout)
// Parse the output line by line
scanner := bufio.NewScanner(strings.NewReader(string(output)))
for scanner.Scan() {
// Write the objects into the list
items = append(items, scanner.Text())
}
// Return our list of items
return items
}
func iommuList2ListItem(stringList []string) []list.Item {
// Make the []list.Item struct
items := []list.Item{}
deviceID := regexp.MustCompile(`\[[a-f0-9]{4}:[a-f0-9]{4}\]\s+`)
// Parse the output line by line
for _, v := range stringList {
// Get the current line and split by :
objects := strings.Split(v, ": ")
// Write the objects into the list
items = append(items, item{title: deviceID.ReplaceAllString(objects[2], ""), desc: fmt.Sprintf("%s: %s: DeviceID: %s", objects[0], objects[1], objects[3])})
}
// Return our list of items
return items
}