Documentation ¶
Index ¶
Constants ¶
const ( // PullStatusDownloading represents downloading status. PullStatusDownloading = "downloading" // PullStatusWaiting represents waiting status. PullStatusWaiting = "waiting" // PullStatusResolving represents resolving status. PullStatusResolving = "resolving" // PullStatusResolved represents resolved status. PullStatusResolved = "resolved" // PullStatusExists represents exist status. PullStatusExists = "exists" // PullStatusDone represents done status. PullStatusDone = "done" // PushStatusUploading represents uploading status. PushStatusUploading = "uploading" )
Variables ¶
This section is empty.
Functions ¶
func ProcessStatus ¶
func ProcessStatus(short bool, msg JSONMessage) string
ProcessStatus returns the status of download or upload image
NOTE: if the stdout is not terminal, it should only show the reference and status without progress bar.
func PushProcess ¶
func PushProcess(ctx context.Context, ongoing *PushJobs, stream *JSONStream)
PushProcess translates upload progress to json stream
Types ¶
type Formater ¶
type Formater interface { // BeginWrite write some data at the stream beginning. BeginWrite() ([]byte, error) // EndWrite write some data at the stream ending. EndWrite() ([]byte, error) // Write write a object be serialized. Write(o interface{}) ([]byte, error) }
Formater define the data's format via stream transfer.
type JSONError ¶
type JSONError struct { Code int `json:"code,omitempty"` Message string `json:"message,omitempty"` }
JSONError wraps a concrete Code and Message as error.
type JSONMessage ¶
type JSONMessage struct { ID string `json:"id,omitempty"` Status string `json:"status,omitempty"` Detail *ProgressDetail `json:"progressDetail,omitempty"` Error *JSONError `json:"errorDetail,omitempty"` ErrorMessage string `json:"error,omitempty"` StartedAt time.Time `json:"started_at,omitempty"` UpdatedAt time.Time `json:"updated_at,omitempty"` }
JSONMessage defines a message struct for jsonstream. It describes id, status, progress detail, started and updated.
type JSONStream ¶
type JSONStream struct {
// contains filtered or unexported fields
}
JSONStream represents a stream transfer, the data be encoded with json.
func New ¶
func New(out io.Writer, f Formater) *JSONStream
New creates a 'JSONStream' instance and use a goroutine to recv/send data.
func (*JSONStream) WriteObject ¶
func (s *JSONStream) WriteObject(obj interface{}) error
WriteObject writes a object to client via stream tranfer.
type ProgressDetail ¶
ProgressDetail represents the status.
type PushJobs ¶
type PushJobs struct {
// contains filtered or unexported fields
}
PushJobs defines a job in upload progress
func NewPushJobs ¶
func NewPushJobs(tracker docker.StatusTracker) *PushJobs
NewPushJobs news a PushJobs