41 lines
860 B
Go
41 lines
860 B
Go
package cli
|
|
|
|
import (
|
|
"errors"
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
|
|
"werkdock/internal/store"
|
|
)
|
|
|
|
// rmiCmd is `docker rmi IMAGE...`: every image named is removed, a
|
|
// failure is reported per image and the others are still tried, as
|
|
// docker does. Exit 125 if any failed.
|
|
func rmiCmd(args []string) int {
|
|
fs := flag.NewFlagSet("rmi", flag.ContinueOnError)
|
|
fs.SetOutput(io.Discard)
|
|
if err := fs.Parse(args); err != nil {
|
|
return fail(err)
|
|
}
|
|
if len(fs.Args()) == 0 {
|
|
return fail(errors.New("rmi needs an IMAGE (werkdock rmi IMAGE...)"))
|
|
}
|
|
st, err := store.Default()
|
|
if err != nil {
|
|
return fail(err)
|
|
}
|
|
code := 0
|
|
for _, reference := range fs.Args() {
|
|
removed, err := st.Remove(reference)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "werkdock: %v\n", err)
|
|
code = exitCLIError
|
|
continue
|
|
}
|
|
fmt.Printf("Untagged: %s\n", removed)
|
|
}
|
|
return code
|
|
}
|