From de50c9c4e8d0276890cfb521e5b57da58cf470aa Mon Sep 17 00:00:00 2001 From: shin- Date: Tue, 12 Mar 2013 05:57:19 -0700 Subject: [PATCH] 'docker run' works with paths as well as image IDs --- fs/store.go | 20 ++++++++++++++++++++ server/server.go | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/fs/store.go b/fs/store.go index b0fdadcc1..fab4924d3 100644 --- a/fs/store.go +++ b/fs/store.go @@ -101,6 +101,26 @@ func (store *Store) List(pth string) ([]*Image, error) { return store.imageList(images), nil } +func (store *Store) Find(pth string) (*Image, error) { + pth = path.Clean(pth) + img, err := store.Get(pth) + if err != nil { + return nil, err + } else if img != nil { + return img, nil + } + + images, err := store.orm.Select(Image{}, "select images.* from images, paths where Path=? and paths.Image=images.Id order by images.Created desc limit 1", pth) + if err != nil { + return nil, err + } else if len(images) < 1 { + return nil, nil + } + img = images[0].(*Image) + img.store = store + return img, nil +} + func (store *Store) Get(id string) (*Image, error) { img, err := store.orm.Get(Image{}, id) if img == nil { diff --git a/server/server.go b/server/server.go index cbec3edc0..d28aeaf7c 100644 --- a/server/server.go +++ b/server/server.go @@ -835,7 +835,7 @@ func (srv *Server) CmdRun(stdin io.ReadCloser, stdout io.Writer, args ...string) cmdline = []string{"/bin/bash", "-i"} } // Find the image - img, err := srv.images.Get(name) + img, err := srv.images.Find(name) if err != nil { return err } else if img == nil {