netcaptain/cmd/ncpt/app_ship_cmds.go

68 lines
1.4 KiB
Go

package main
import (
"fmt"
"os"
"os/exec"
"strings"
"git.bullercodeworks.com/brian/netcaptain/internal/cli"
)
func (a *AppState) listShips(parms []string) int {
files := cli.ListFiles(a.ShipsDir)
for _, v := range files {
fmt.Println(strings.TrimSuffix(v, ".json"))
}
return 0
}
func (a *AppState) validateShip(parms []string) int {
if a.Ship == nil {
cli.PrintErr("No ship given")
return 1
}
a.Ship.LoadArgs(parms)
if err := a.Ship.Load(); err != nil {
cli.PrintErr(fmt.Sprintf("Error loading ship: %s", err.Error()))
return 1
}
if !a.Ship.IsValid() {
cli.PrintErr("Ship is not valid")
return 1
}
return 0
}
func (a *AppState) editShip(parms []string) int {
if a.Ship == nil {
cli.PrintErr("Ship name must be provided.")
return 1
}
cmd := exec.Command(os.Getenv("EDITOR"), a.Ship.FilePath())
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
err := cmd.Run()
if err != nil {
cli.PrintErr(fmt.Sprintf("Error editing Ship (%s)", a.Ship.Name))
return 1
}
return 0
}
func (a *AppState) editHold(parms []string) int {
if a.Ship == nil {
cli.PrintErr("Ship name must be provided.")
return 1
}
cmd := exec.Command(os.Getenv("EDITOR"), a.Ship.HoldFilePath())
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
err := cmd.Run()
if err != nil {
cli.PrintErr(fmt.Sprintf("Error editing Hold (%s)", a.Ship.Name))
return 1
}
return 0
}