mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 09:55:40 +00:00
cmd/gio: replace errorf with a main function returning errors
While we're here, split the usage print out to its own function and don't display the usage when a package is missing. Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
+18
-18
@@ -4,6 +4,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"image"
|
"image"
|
||||||
@@ -45,40 +46,43 @@ type buildInfo struct {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
flag.Usage = func() {
|
flag.Usage = func() {
|
||||||
fmt.Fprintf(os.Stderr, "Gio is a tool for building and packaging Gio (gioui.org) programs.\n\n")
|
mainUsage(os.Stderr)
|
||||||
fmt.Fprintf(os.Stderr, "Usage:\n\n\tgio [flags] <pkg>\n\n")
|
|
||||||
flag.PrintDefaults()
|
|
||||||
os.Exit(2)
|
|
||||||
}
|
}
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
if err := mainErr(); err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func mainErr() error {
|
||||||
pkg := flag.Arg(0)
|
pkg := flag.Arg(0)
|
||||||
if pkg == "" {
|
if pkg == "" {
|
||||||
flag.Usage()
|
return errors.New("specify a package")
|
||||||
}
|
}
|
||||||
if *target == "" {
|
if *target == "" {
|
||||||
fmt.Fprintf(os.Stderr, "Please specify -target\n\n")
|
return errors.New("please specify -target")
|
||||||
flag.PrintDefaults()
|
|
||||||
os.Exit(2)
|
|
||||||
}
|
}
|
||||||
switch *target {
|
switch *target {
|
||||||
case "ios", "tvos", "android", "js":
|
case "ios", "tvos", "android", "js":
|
||||||
default:
|
default:
|
||||||
errorf("invalid -target %s\n", *target)
|
return fmt.Errorf("invalid -target %s\n", *target)
|
||||||
}
|
}
|
||||||
switch *buildMode {
|
switch *buildMode {
|
||||||
case "archive", "exe":
|
case "archive", "exe":
|
||||||
default:
|
default:
|
||||||
errorf("invalid -buildmode %s\n", *buildMode)
|
return fmt.Errorf("invalid -buildmode %s\n", *buildMode)
|
||||||
}
|
}
|
||||||
// Find package name.
|
// Find package name.
|
||||||
name, err := runCmd(exec.Command("go", "list", "-f", "{{.ImportPath}}", pkg))
|
name, err := runCmd(exec.Command("go", "list", "-f", "{{.ImportPath}}", pkg))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errorf("gio: %v", err)
|
return fmt.Errorf("gio: %v", err)
|
||||||
}
|
}
|
||||||
name = path.Base(name)
|
name = path.Base(name)
|
||||||
dir, err := runCmd(exec.Command("go", "list", "-f", "{{.Dir}}", pkg))
|
dir, err := runCmd(exec.Command("go", "list", "-f", "{{.Dir}}", pkg))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errorf("gio: %v", err)
|
return fmt.Errorf("gio: %v", err)
|
||||||
}
|
}
|
||||||
bi := &buildInfo{
|
bi := &buildInfo{
|
||||||
name: name,
|
name: name,
|
||||||
@@ -105,8 +109,9 @@ func main() {
|
|||||||
bi.ldflags = fmt.Sprintf("-X gioui.org/ui/app.extraArgs=%s", strings.Join(appArgs, "|"))
|
bi.ldflags = fmt.Sprintf("-X gioui.org/ui/app.extraArgs=%s", strings.Join(appArgs, "|"))
|
||||||
}
|
}
|
||||||
if err := build(bi); err != nil {
|
if err := build(bi); err != nil {
|
||||||
errorf("gio: %v", err)
|
return fmt.Errorf("gio: %v", err)
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func build(bi *buildInfo) error {
|
func build(bi *buildInfo) error {
|
||||||
@@ -131,11 +136,6 @@ func build(bi *buildInfo) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func errorf(format string, args ...interface{}) {
|
|
||||||
fmt.Fprintf(os.Stderr, format+"\n", args...)
|
|
||||||
os.Exit(2)
|
|
||||||
}
|
|
||||||
|
|
||||||
func runCmdRaw(cmd *exec.Cmd) ([]byte, error) {
|
func runCmdRaw(cmd *exec.Cmd) ([]byte, error) {
|
||||||
if *printCommands {
|
if *printCommands {
|
||||||
fmt.Printf("%s\n", strings.Join(cmd.Args, " "))
|
fmt.Printf("%s\n", strings.Join(cmd.Args, " "))
|
||||||
|
|||||||
Reference in New Issue
Block a user