This commit is contained in:
shin- 2013-03-13 11:14:37 -07:00
Родитель 070bc0bb6d
Коммит c3622a963d
2 изменённых файлов: 48 добавлений и 28 удалений

Просмотреть файл

@ -92,6 +92,24 @@ func (store *Store) Paths() ([]string, error) {
return paths, nil return paths, nil
} }
func (store *Store) RemoveInPath(pth string) error {
images, err := store.List(pth)
if err != nil {
return err
}
for _, img := range images {
if err = store.Remove(img); err != nil {
return err
}
}
return nil
}
func (store *Store) Remove(img *Image) error {
_, err := store.orm.Delete(img)
return err
}
func (store *Store) List(pth string) ([]*Image, error) { func (store *Store) List(pth string) ([]*Image, error) {
pth = path.Clean(pth) pth = path.Clean(pth)
images, err := store.orm.Select(Image{}, "select images.* from images, paths where Path=? and paths.Image=images.Id", pth) images, err := store.orm.Select(Image{}, "select images.* from images, paths where Path=? and paths.Image=images.Id", pth)

Просмотреть файл

@ -360,34 +360,36 @@ func (srv *Server) CmdPort(stdin io.ReadCloser, stdout io.Writer, args ...string
} }
// 'docker rmi NAME' removes all images with the name NAME // 'docker rmi NAME' removes all images with the name NAME
// func (srv *Server) CmdRmi(stdin io.ReadCloser, stdout io.Writer, args ...string) error { func (srv *Server) CmdRmi(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
// cmd := rcli.Subcmd(stdout, "rmimage", "[OPTIONS] IMAGE", "Remove an image") cmd := rcli.Subcmd(stdout, "rmimage", "[OPTIONS] IMAGE", "Remove an image")
// fl_regexp := cmd.Bool("r", false, "Use IMAGE as a regular expression instead of an exact name") fl_all := cmd.Bool("a", false, "Use IMAGE as a path and remove ALL images in this path")
// if err := cmd.Parse(args); err != nil { if err := cmd.Parse(args); err != nil {
// cmd.Usage() cmd.Usage()
// return nil return nil
// } }
// if cmd.NArg() < 1 { if cmd.NArg() < 1 {
// cmd.Usage() cmd.Usage()
// return nil return nil
// } }
// for _, name := range cmd.Args() { for _, name := range cmd.Args() {
// var err error var err error
// if *fl_regexp { if *fl_all {
// err = srv.images.DeleteMatch(name) err = srv.images.RemoveInPath(name)
// } else { } else {
// image := srv.images.Find(name) image, err := srv.images.Get(name)
// if image == nil { if err != nil {
// return errors.New("No such image: " + name) return err
// } } else if image == nil {
// err = srv.images.Delete(name) return errors.New("No such image: " + name)
// } }
// if err != nil { err = srv.images.Remove(image)
// return err }
// } if err != nil {
// } return err
// return nil }
// } }
return nil
}
func (srv *Server) CmdRm(stdin io.ReadCloser, stdout io.Writer, args ...string) error { func (srv *Server) CmdRm(stdin io.ReadCloser, stdout io.Writer, args ...string) error {
cmd := rcli.Subcmd(stdout, "rm", "[OPTIONS] CONTAINER", "Remove a container") cmd := rcli.Subcmd(stdout, "rm", "[OPTIONS] CONTAINER", "Remove a container")