// Copyright 2019 Drone.IO Inc. All rights reserved. // Use of this source code is governed by the Polyform License // that can be found in the LICENSE file. package labels import ( "fmt" "time" "git.awesome-for.me/liuzhiguo/drone-go/drone" ) // now returns the current time. var now = time.Now // FromRepo returns container labels derived from the // Repository metadata. func FromRepo(v *drone.Repo) map[string]string { return map[string]string{ "io.drone.repo.namespace": v.Namespace, "io.drone.repo.name": v.Name, "io.drone.repo.slug": v.Slug, } } // FromBuild returns container labels derived from the // Build metadata. func FromBuild(v *drone.Build) map[string]string { return map[string]string{ "io.drone.build.number": fmt.Sprint(v.Number), } } // FromStage returns container labels derived from the // Stage metadata. func FromStage(v *drone.Stage) map[string]string { return map[string]string{ "io.drone.stage.name": v.Name, "io.drone.stage.number": fmt.Sprint(v.Number), } } // FromStep returns container labels derived from the // Step metadata. func FromStep(v *drone.Step) map[string]string { return map[string]string{ "io.drone.step.number": fmt.Sprint(v.Number), "io.drone.step.name": v.Name, } } // FromSystem returns container labels derived from the // System metadata. func FromSystem(v *drone.System) map[string]string { return map[string]string{ "io.drone": "true", "io.drone.protected": "false", "io.drone.system.host": v.Host, "io.drone.system.proto": v.Proto, "io.drone.system.version": v.Version, } } // WithTimeout returns container labels that define // timeout and expiration values. func WithTimeout(v *drone.Repo) map[string]string { return map[string]string{ "io.drone.ttl": fmt.Sprint(time.Duration(v.Timeout) * time.Minute), "io.drone.expires": fmt.Sprint(now().Add(time.Duration(v.Timeout)*time.Minute + time.Hour).Unix()), "io.drone.created": fmt.Sprint(now().Unix()), } } // Combine is a helper function combines one or more maps of // labels into a single map. func Combine(labels ...map[string]string) map[string]string { c := map[string]string{} for _, e := range labels { for k, v := range e { c[k] = v } } return c }