mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
|
package graph
|
||
|
|
||
|
import (
|
||
|
"github.com/docker/docker/engine"
|
||
|
"github.com/docker/docker/pkg/parsers"
|
||
|
)
|
||
|
|
||
|
// CmdTag assigns a new name and tag to an existing image. If the tag already exists,
|
||
|
// it is changed and the image previously referenced by the tag loses that reference.
|
||
|
// This may cause the old image to be garbage-collected if its reference count reaches zero.
|
||
|
//
|
||
|
// Syntax: image_tag NEWNAME OLDNAME
|
||
|
// Example: image_tag shykes/myapp:latest shykes/myapp:1.42.0
|
||
|
func (s *TagStore) CmdTag(job *engine.Job) engine.Status {
|
||
|
if len(job.Args) != 2 {
|
||
|
return job.Errorf("usage: %s NEWNAME OLDNAME", job.Name)
|
||
|
}
|
||
|
var (
|
||
|
newName = job.Args[0]
|
||
|
oldName = job.Args[1]
|
||
|
)
|
||
|
newRepo, newTag := parsers.ParseRepositoryTag(newName)
|
||
|
// FIXME: Set should either parse both old and new name, or neither.
|
||
|
// the current prototype is inconsistent.
|
||
|
if err := s.Set(newRepo, newTag, oldName, true); err != nil {
|
||
|
return job.Error(err)
|
||
|
}
|
||
|
return engine.StatusOK
|
||
|
}
|
||
|
|
||
|
// FIXME: merge into CmdTag above, and merge "image_tag" and "tag" into a single job.
|
||
|
func (s *TagStore) CmdTagLegacy(job *engine.Job) engine.Status {
|
||
|
if len(job.Args) != 2 && len(job.Args) != 3 {
|
||
|
return job.Errorf("Usage: %s IMAGE REPOSITORY [TAG]\n", job.Name)
|
||
|
}
|
||
|
var tag string
|
||
|
if len(job.Args) == 3 {
|
||
|
tag = job.Args[2]
|
||
|
}
|
||
|
if err := s.Set(job.Args[1], tag, job.Args[0], job.GetenvBool("force")); err != nil {
|
||
|
return job.Error(err)
|
||
|
}
|
||
|
return engine.StatusOK
|
||
|
}
|