69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package linuxmodules
|
||
|
||
import (
|
||
"fmt"
|
||
"rubric/utils"
|
||
"strings"
|
||
)
|
||
|
||
// Module описывает один раздел справочника Linux
|
||
type Module struct {
|
||
Key string
|
||
Aliases []string
|
||
Title string
|
||
Description string
|
||
Run func()
|
||
}
|
||
|
||
// All — список всех модулей в порядке меню
|
||
var All = []Module{
|
||
IntroModule,
|
||
FilesModule,
|
||
StreamsModule,
|
||
BashModule,
|
||
ProcessesModule,
|
||
UsersModule,
|
||
KernelModule,
|
||
DisksModule,
|
||
ScriptsModule,
|
||
BootModule,
|
||
LogsModule,
|
||
BackupModule,
|
||
NetworkModule,
|
||
SecurityModule,
|
||
PackagesModule,
|
||
PerformanceModule,
|
||
SysconfigModule,
|
||
NetfsModule,
|
||
ToolsModule,
|
||
}
|
||
|
||
// Find ищет модуль по ключу или алиасу
|
||
func Find(key string) (Module, bool) {
|
||
key = strings.ToLower(strings.TrimSpace(key))
|
||
for _, m := range All {
|
||
if m.Key == key {
|
||
return m, true
|
||
}
|
||
for _, a := range m.Aliases {
|
||
if a == key {
|
||
return m, true
|
||
}
|
||
}
|
||
}
|
||
return Module{}, false
|
||
}
|
||
|
||
// ListModules выводит краткий список модулей
|
||
func ListModules() {
|
||
fmt.Printf("\n%s%sРазделы справочника Linux:%s\n\n",
|
||
utils.ColorBold, utils.ColorCyan, utils.ColorReset)
|
||
for i, m := range All {
|
||
fmt.Printf(" %s%d.%s %-12s — %s\n",
|
||
utils.ColorDim, i+1, utils.ColorReset,
|
||
utils.ColorYellow+utils.ColorBold+m.Key+utils.ColorReset,
|
||
m.Title,
|
||
)
|
||
}
|
||
fmt.Println()
|
||
}
|