func do()

in cmd/path/main.go [37:75]


func do(cmd string, a args) error {
	if a.specFile == "" {
		return fmt.Errorf("all subcommands require the --spec-file argument")
	}

	b, err := os.ReadFile(a.specFile)
	if err != nil {
		return err
	}

	var s archive.Spec
	if err := json.Unmarshal(b, &s); err != nil {
		return err
	}

	var p string
	switch cmd {
	case "dir":
		p = s.Dir(a.bundleDir)
	case "full-path":
		var err error
		p, err = s.FullPath(a.bundleDir)
		if err != nil {
			return err
		}
	case "basename":
		var err error
		p, err = s.Basename()
		if err != nil {
			return err
		}
	default:
		return fmt.Errorf("command not recognized")
	}

	fmt.Printf("%s", p)

	return nil
}