mirror of
https://github.com/clearlinux/clr-installer.git
synced 2026-09-02 03:31:38 +00:00
We are relying on clr-boot-manager's cmdline-removal feature which prevents a kernel argument to be added to the boot manager kernel entry. Signed-off-by: Leandro Dorileo <leandro.maciel.dorileo@intel.com>
137 lines
3.8 KiB
Go
137 lines
3.8 KiB
Go
// Copyright © 2018 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
package tui
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/VladimirMarkelov/clui"
|
|
)
|
|
|
|
// KernelCMDLine is the Page implementation for the kernel cmd line configuration page
|
|
type KernelCMDLine struct {
|
|
BasePage
|
|
addKernelArgEdit *clui.EditField
|
|
remKernelArgEdit *clui.EditField
|
|
}
|
|
|
|
const (
|
|
kernelArgsHelp = `Note: The boot manager tool will first include the "Add Extra Arguments"
|
|
items, then the "Remove Arguments" items are removed. The final
|
|
argument list contains the kernel bundle's configured arguments
|
|
and the ones configured by the user.`
|
|
)
|
|
|
|
// GetConfiguredValue Returns the string representation of currently value set
|
|
func (pp *KernelCMDLine) GetConfiguredValue() string {
|
|
result := ""
|
|
|
|
if pp.getModel().KernelArguments != nil {
|
|
values := []string{}
|
|
|
|
addKernelArgs := strings.Join(pp.getModel().KernelArguments.Add, " ")
|
|
remKernelArgs := strings.Join(pp.getModel().KernelArguments.Remove, " ")
|
|
|
|
if addKernelArgs != "" {
|
|
values = append(values, fmt.Sprintf("Add: %s", addKernelArgs))
|
|
}
|
|
|
|
if remKernelArgs != "" {
|
|
values = append(values, fmt.Sprintf("Remove: %s", remKernelArgs))
|
|
}
|
|
|
|
result = strings.Join(values, " | ")
|
|
}
|
|
|
|
if result == "" {
|
|
return "No kernel command line configuration defined"
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
// Activate sets the kernel cmd line configuration with the current model's value
|
|
func (pp *KernelCMDLine) Activate() {
|
|
if pp.getModel().KernelArguments == nil {
|
|
return
|
|
}
|
|
|
|
addKernelArgs := strings.Join(pp.getModel().KernelArguments.Add, " ")
|
|
remKernelArgs := strings.Join(pp.getModel().KernelArguments.Remove, " ")
|
|
|
|
pp.addKernelArgEdit.SetTitle(addKernelArgs)
|
|
pp.remKernelArgEdit.SetTitle(remKernelArgs)
|
|
}
|
|
|
|
func newKernelCMDLine(tui *Tui) (Page, error) {
|
|
page := &KernelCMDLine{}
|
|
page.setupMenu(tui, TuiPageKernelCMDLine, "Kernel Command Line", NoButtons, TuiPageMenu)
|
|
|
|
clui.CreateLabel(page.content, 2, 2, "Add or Remove Extra Kernel Command Line Arguments",
|
|
Fixed)
|
|
|
|
helpLabel := clui.CreateLabel(page.content, 2, 5, kernelArgsHelp, Fixed)
|
|
helpLabel.SetMultiline(true)
|
|
|
|
frm := clui.CreateFrame(page.content, AutoSize, AutoSize, BorderNone, Fixed)
|
|
frm.SetPack(clui.Horizontal)
|
|
|
|
lblFrm := clui.CreateFrame(frm, 20, AutoSize, BorderNone, Fixed)
|
|
lblFrm.SetPack(clui.Vertical)
|
|
lblFrm.SetPaddings(1, 0)
|
|
|
|
newFieldLabel(lblFrm, "Add Extra Arguments:")
|
|
|
|
newFieldLabel(lblFrm, "Remove Arguments:")
|
|
|
|
fldFrm := clui.CreateFrame(frm, 30, AutoSize, BorderNone, Fixed)
|
|
fldFrm.SetPack(clui.Vertical)
|
|
|
|
iframe := clui.CreateFrame(fldFrm, 5, 2, BorderNone, Fixed)
|
|
iframe.SetPack(clui.Vertical)
|
|
|
|
page.addKernelArgEdit = clui.CreateEditField(iframe, 1, "", Fixed)
|
|
|
|
iframe = clui.CreateFrame(fldFrm, 5, 2, BorderNone, Fixed)
|
|
iframe.SetPack(clui.Vertical)
|
|
|
|
page.remKernelArgEdit = clui.CreateEditField(iframe, 1, "", Fixed)
|
|
|
|
btnFrm := clui.CreateFrame(fldFrm, 30, 1, BorderNone, Fixed)
|
|
btnFrm.SetPack(clui.Horizontal)
|
|
btnFrm.SetGaps(1, 1)
|
|
btnFrm.SetPaddings(2, 0)
|
|
|
|
cancelBtn := CreateSimpleButton(btnFrm, AutoSize, AutoSize, "Cancel", Fixed)
|
|
cancelBtn.OnClick(func(ev clui.Event) {
|
|
page.GotoPage(TuiPageMenu)
|
|
})
|
|
|
|
confirmBtn := CreateSimpleButton(btnFrm, AutoSize, AutoSize, "Confirm", Fixed)
|
|
|
|
confirmBtn.OnClick(func(ev clui.Event) {
|
|
addKernelArguments := page.addKernelArgEdit.Title()
|
|
remKernelArguments := page.remKernelArgEdit.Title()
|
|
|
|
if addKernelArguments != "" {
|
|
page.getModel().AddExtraKernelArguments(strings.Split(addKernelArguments, " "))
|
|
}
|
|
|
|
if remKernelArguments != "" {
|
|
page.getModel().RemoveKernelArguments(strings.Split(remKernelArguments, " "))
|
|
}
|
|
|
|
done := page.addKernelArgEdit.Title() != "" || page.remKernelArgEdit.Title() != ""
|
|
page.SetDone(done)
|
|
|
|
page.GotoPage(TuiPageMenu)
|
|
})
|
|
|
|
page.activated = page.addKernelArgEdit
|
|
|
|
return page, nil
|
|
}
|