| Index: go/src/infra/tools/cipd/common/common.go
|
| diff --git a/go/src/infra/tools/cipd/common.go b/go/src/infra/tools/cipd/common/common.go
|
| similarity index 52%
|
| rename from go/src/infra/tools/cipd/common.go
|
| rename to go/src/infra/tools/cipd/common/common.go
|
| index e4c2859eb2f84ce73d9bbc8f6d6a23ab3e01a9b2..338cf05d1240237639ac42a41d78d03007607dd6 100644
|
| --- a/go/src/infra/tools/cipd/common.go
|
| +++ b/go/src/infra/tools/cipd/common/common.go
|
| @@ -2,25 +2,17 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -package cipd
|
| +/*
|
| +Package common defines structures and functions used by all other cipd/ packages.
|
| +*/
|
| +package common
|
|
|
| import (
|
| - "encoding/json"
|
| "fmt"
|
| - "io"
|
| - "io/ioutil"
|
| "regexp"
|
| "strings"
|
| -
|
| - "infra/libs/build"
|
| )
|
|
|
| -// Name of the directory inside the package reserved for cipd stuff.
|
| -const packageServiceDir = ".cipdpkg"
|
| -
|
| -// Name of the directory inside an installation root reserved for cipd stuff.
|
| -const siteServiceDir = ".cipd"
|
| -
|
| // packageNameRe is a regular expression for a package name: <word>/<word/<word>
|
| // Package names must be lower case.
|
| var packageNameRe = regexp.MustCompile(`^([a-z0-9_\-]+/)*[a-z0-9_\-]+$`)
|
| @@ -28,16 +20,15 @@ var packageNameRe = regexp.MustCompile(`^([a-z0-9_\-]+/)*[a-z0-9_\-]+$`)
|
| // instanceTagKeyRe is a regular expression for a tag key.
|
| var instanceTagKeyRe = regexp.MustCompile(`^[a-z0-9_\-]+$`)
|
|
|
| -// Name of the manifest file inside the package.
|
| -const manifestName = packageServiceDir + "/manifest.json"
|
| -
|
| -// Format version to write to the manifest file.
|
| -const manifestFormatVersion = "1"
|
| +// Pin uniquely identifies an instance of some package.
|
| +type Pin struct {
|
| + PackageName string `json:"package"`
|
| + InstanceID string `json:"instance_id"`
|
| +}
|
|
|
| -// Manifest defines structure of manifest.json file.
|
| -type Manifest struct {
|
| - FormatVersion string `json:"format_version"`
|
| - PackageName string `json:"package_name"`
|
| +// String converts pin to a human readable string.
|
| +func (pin Pin) String() string {
|
| + return fmt.Sprintf("%s:%s", pin.PackageName, pin.InstanceID)
|
| }
|
|
|
| // ValidatePackageName returns error if a string doesn't look like a valid package name.
|
| @@ -62,6 +53,17 @@ func ValidateInstanceID(s string) error {
|
| return nil
|
| }
|
|
|
| +// ValidatePin returns error if package name of instance id of a pin are not valid.
|
| +func ValidatePin(pin Pin) error {
|
| + if err := ValidatePackageName(pin.PackageName); err != nil {
|
| + return err
|
| + }
|
| + if err := ValidateInstanceID(pin.InstanceID); err != nil {
|
| + return err
|
| + }
|
| + return nil
|
| +}
|
| +
|
| // ValidateInstanceTag returns error if a string doesn't look like a valid tag.
|
| func ValidateInstanceTag(t string) error {
|
| chunks := strings.SplitN(t, ":", 2)
|
| @@ -76,43 +78,3 @@ func ValidateInstanceTag(t string) error {
|
| }
|
| return nil
|
| }
|
| -
|
| -// DefaultServiceURL returns URL to a backend to use by default.
|
| -func DefaultServiceURL() string {
|
| - if build.ReleaseBuild {
|
| - return "https://chrome-infra-packages.appspot.com"
|
| - }
|
| - return "https://chrome-infra-packages-dev.appspot.com"
|
| -}
|
| -
|
| -// readManifest reads and decodes manifest JSON from io.Reader.
|
| -func readManifest(r io.Reader) (Manifest, error) {
|
| - blob, err := ioutil.ReadAll(r)
|
| - if err != nil {
|
| - return Manifest{}, err
|
| - }
|
| - manifest := Manifest{}
|
| - err = json.Unmarshal(blob, &manifest)
|
| - if err != nil {
|
| - return Manifest{}, err
|
| - }
|
| - return manifest, nil
|
| -}
|
| -
|
| -// writeManifest encodes and writes manifest JSON to io.Writer.
|
| -func writeManifest(m *Manifest, w io.Writer) error {
|
| - data, err := json.MarshalIndent(m, "", " ")
|
| - if err != nil {
|
| - return err
|
| - }
|
| - _, err = w.Write(data)
|
| - return err
|
| -}
|
| -
|
| -// userAgent returns user agent string to send with each request.
|
| -func userAgent() string {
|
| - if build.ReleaseBuild {
|
| - return "cipd 1.0 release"
|
| - }
|
| - return "cipd 1.0 testing"
|
| -}
|
|
|