more dep syncing
This commit is contained in:
parent
8529972bfb
commit
18b193a519
|
@ -5,4 +5,4 @@ package aws
|
|||
const SDKName = "aws-sdk-go"
|
||||
|
||||
// SDKVersion is the version of this SDK
|
||||
const SDKVersion = "1.10.45"
|
||||
const SDKVersion = "1.10.46"
|
||||
|
|
|
@ -0,0 +1,202 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
package pathdriver
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// PathDriver provides all of the path manipulation functions in a common
|
||||
// interface. The context should call these and never use the `filepath`
|
||||
// package or any other package to manipulate paths.
|
||||
type PathDriver interface {
|
||||
Join(paths ...string) string
|
||||
IsAbs(path string) bool
|
||||
Rel(base, target string) (string, error)
|
||||
Base(path string) string
|
||||
Dir(path string) string
|
||||
Clean(path string) string
|
||||
Split(path string) (dir, file string)
|
||||
Separator() byte
|
||||
Abs(path string) (string, error)
|
||||
Walk(string, filepath.WalkFunc) error
|
||||
FromSlash(path string) string
|
||||
ToSlash(path string) string
|
||||
Match(pattern, name string) (matched bool, err error)
|
||||
}
|
||||
|
||||
// pathDriver is a simple default implementation calls the filepath package.
|
||||
type pathDriver struct{}
|
||||
|
||||
// LocalPathDriver is the exported pathDriver struct for convenience.
|
||||
var LocalPathDriver PathDriver = &pathDriver{}
|
||||
|
||||
func (*pathDriver) Join(paths ...string) string {
|
||||
return filepath.Join(paths...)
|
||||
}
|
||||
|
||||
func (*pathDriver) IsAbs(path string) bool {
|
||||
return filepath.IsAbs(path)
|
||||
}
|
||||
|
||||
func (*pathDriver) Rel(base, target string) (string, error) {
|
||||
return filepath.Rel(base, target)
|
||||
}
|
||||
|
||||
func (*pathDriver) Base(path string) string {
|
||||
return filepath.Base(path)
|
||||
}
|
||||
|
||||
func (*pathDriver) Dir(path string) string {
|
||||
return filepath.Dir(path)
|
||||
}
|
||||
|
||||
func (*pathDriver) Clean(path string) string {
|
||||
return filepath.Clean(path)
|
||||
}
|
||||
|
||||
func (*pathDriver) Split(path string) (dir, file string) {
|
||||
return filepath.Split(path)
|
||||
}
|
||||
|
||||
func (*pathDriver) Separator() byte {
|
||||
return filepath.Separator
|
||||
}
|
||||
|
||||
func (*pathDriver) Abs(path string) (string, error) {
|
||||
return filepath.Abs(path)
|
||||
}
|
||||
|
||||
// Note that filepath.Walk calls os.Stat, so if the context wants to
|
||||
// to call Driver.Stat() for Walk, they need to create a new struct that
|
||||
// overrides this method.
|
||||
func (*pathDriver) Walk(root string, walkFn filepath.WalkFunc) error {
|
||||
return filepath.Walk(root, walkFn)
|
||||
}
|
||||
|
||||
func (*pathDriver) FromSlash(path string) string {
|
||||
return filepath.FromSlash(path)
|
||||
}
|
||||
|
||||
func (*pathDriver) ToSlash(path string) string {
|
||||
return filepath.ToSlash(path)
|
||||
}
|
||||
|
||||
func (*pathDriver) Match(pattern, name string) (bool, error) {
|
||||
return filepath.Match(pattern, name)
|
||||
}
|
|
@ -55,18 +55,17 @@ type (
|
|||
}
|
||||
)
|
||||
|
||||
// Archiver allows the reuse of most utility functions of this package
|
||||
// with a pluggable Untar function. Also, to facilitate the passing of
|
||||
// specific id mappings for untar, an archiver can be created with maps
|
||||
// which will then be passed to Untar operations
|
||||
// Archiver implements the Archiver interface and allows the reuse of most utility functions of
|
||||
// this package with a pluggable Untar function. Also, to facilitate the passing of specific id
|
||||
// mappings for untar, an Archiver can be created with maps which will then be passed to Untar operations.
|
||||
type Archiver struct {
|
||||
Untar func(io.Reader, string, *TarOptions) error
|
||||
IDMappings *idtools.IDMappings
|
||||
IDMappingsVar *idtools.IDMappings
|
||||
}
|
||||
|
||||
// NewDefaultArchiver returns a new Archiver without any IDMappings
|
||||
func NewDefaultArchiver() *Archiver {
|
||||
return &Archiver{Untar: Untar, IDMappings: &idtools.IDMappings{}}
|
||||
return &Archiver{Untar: Untar, IDMappingsVar: &idtools.IDMappings{}}
|
||||
}
|
||||
|
||||
// breakoutError is used to differentiate errors related to breaking out
|
||||
|
@ -1025,8 +1024,8 @@ func (archiver *Archiver) TarUntar(src, dst string) error {
|
|||
}
|
||||
defer archive.Close()
|
||||
options := &TarOptions{
|
||||
UIDMaps: archiver.IDMappings.UIDs(),
|
||||
GIDMaps: archiver.IDMappings.GIDs(),
|
||||
UIDMaps: archiver.IDMappingsVar.UIDs(),
|
||||
GIDMaps: archiver.IDMappingsVar.GIDs(),
|
||||
}
|
||||
return archiver.Untar(archive, dst, options)
|
||||
}
|
||||
|
@ -1039,8 +1038,8 @@ func (archiver *Archiver) UntarPath(src, dst string) error {
|
|||
}
|
||||
defer archive.Close()
|
||||
options := &TarOptions{
|
||||
UIDMaps: archiver.IDMappings.UIDs(),
|
||||
GIDMaps: archiver.IDMappings.GIDs(),
|
||||
UIDMaps: archiver.IDMappingsVar.UIDs(),
|
||||
GIDMaps: archiver.IDMappingsVar.GIDs(),
|
||||
}
|
||||
return archiver.Untar(archive, dst, options)
|
||||
}
|
||||
|
@ -1058,10 +1057,10 @@ func (archiver *Archiver) CopyWithTar(src, dst string) error {
|
|||
return archiver.CopyFileWithTar(src, dst)
|
||||
}
|
||||
|
||||
// if this archiver is set up with ID mapping we need to create
|
||||
// if this Archiver is set up with ID mapping we need to create
|
||||
// the new destination directory with the remapped root UID/GID pair
|
||||
// as owner
|
||||
rootIDs := archiver.IDMappings.RootPair()
|
||||
rootIDs := archiver.IDMappingsVar.RootPair()
|
||||
// Create dst, copy src's content into it
|
||||
logrus.Debugf("Creating dest directory: %s", dst)
|
||||
if err := idtools.MkdirAllAndChownNew(dst, 0755, rootIDs); err != nil {
|
||||
|
@ -1112,7 +1111,7 @@ func (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) {
|
|||
hdr.Name = filepath.Base(dst)
|
||||
hdr.Mode = int64(chmodTarEntry(os.FileMode(hdr.Mode)))
|
||||
|
||||
if err := remapIDs(archiver.IDMappings, hdr); err != nil {
|
||||
if err := remapIDs(archiver.IDMappingsVar, hdr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -1139,6 +1138,11 @@ func (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) {
|
|||
return err
|
||||
}
|
||||
|
||||
// IDMappings returns the IDMappings of the archiver.
|
||||
func (archiver *Archiver) IDMappings() *idtools.IDMappings {
|
||||
return archiver.IDMappingsVar
|
||||
}
|
||||
|
||||
func remapIDs(idMappings *idtools.IDMappings, hdr *tar.Header) error {
|
||||
ids, err := idMappings.ToHost(idtools.IDPair{UID: hdr.Uid, GID: hdr.Gid})
|
||||
hdr.Uid, hdr.Gid = ids.UID, ids.GID
|
||||
|
|
|
@ -27,23 +27,23 @@ var (
|
|||
// path (from before being processed by utility functions from the path or
|
||||
// filepath stdlib packages) ends with a trailing `/.` or `/`. If the cleaned
|
||||
// path already ends in a `.` path segment, then another is not added. If the
|
||||
// clean path already ends in a path separator, then another is not added.
|
||||
func PreserveTrailingDotOrSeparator(cleanedPath, originalPath string) string {
|
||||
// clean path already ends in the separator, then another is not added.
|
||||
func PreserveTrailingDotOrSeparator(cleanedPath string, originalPath string, sep byte) string {
|
||||
// Ensure paths are in platform semantics
|
||||
cleanedPath = normalizePath(cleanedPath)
|
||||
originalPath = normalizePath(originalPath)
|
||||
cleanedPath = strings.Replace(cleanedPath, "/", string(sep), -1)
|
||||
originalPath = strings.Replace(originalPath, "/", string(sep), -1)
|
||||
|
||||
if !specifiesCurrentDir(cleanedPath) && specifiesCurrentDir(originalPath) {
|
||||
if !hasTrailingPathSeparator(cleanedPath) {
|
||||
if !hasTrailingPathSeparator(cleanedPath, sep) {
|
||||
// Add a separator if it doesn't already end with one (a cleaned
|
||||
// path would only end in a separator if it is the root).
|
||||
cleanedPath += string(filepath.Separator)
|
||||
cleanedPath += string(sep)
|
||||
}
|
||||
cleanedPath += "."
|
||||
}
|
||||
|
||||
if !hasTrailingPathSeparator(cleanedPath) && hasTrailingPathSeparator(originalPath) {
|
||||
cleanedPath += string(filepath.Separator)
|
||||
if !hasTrailingPathSeparator(cleanedPath, sep) && hasTrailingPathSeparator(originalPath, sep) {
|
||||
cleanedPath += string(sep)
|
||||
}
|
||||
|
||||
return cleanedPath
|
||||
|
@ -52,14 +52,14 @@ func PreserveTrailingDotOrSeparator(cleanedPath, originalPath string) string {
|
|||
// assertsDirectory returns whether the given path is
|
||||
// asserted to be a directory, i.e., the path ends with
|
||||
// a trailing '/' or `/.`, assuming a path separator of `/`.
|
||||
func assertsDirectory(path string) bool {
|
||||
return hasTrailingPathSeparator(path) || specifiesCurrentDir(path)
|
||||
func assertsDirectory(path string, sep byte) bool {
|
||||
return hasTrailingPathSeparator(path, sep) || specifiesCurrentDir(path)
|
||||
}
|
||||
|
||||
// hasTrailingPathSeparator returns whether the given
|
||||
// path ends with the system's path separator character.
|
||||
func hasTrailingPathSeparator(path string) bool {
|
||||
return len(path) > 0 && os.IsPathSeparator(path[len(path)-1])
|
||||
func hasTrailingPathSeparator(path string, sep byte) bool {
|
||||
return len(path) > 0 && path[len(path)-1] == sep
|
||||
}
|
||||
|
||||
// specifiesCurrentDir returns whether the given path specifies
|
||||
|
@ -72,10 +72,10 @@ func specifiesCurrentDir(path string) bool {
|
|||
// basename by first cleaning the path but preserves a trailing "." if the
|
||||
// original path specified the current directory.
|
||||
func SplitPathDirEntry(path string) (dir, base string) {
|
||||
cleanedPath := filepath.Clean(normalizePath(path))
|
||||
cleanedPath := filepath.Clean(filepath.FromSlash(path))
|
||||
|
||||
if specifiesCurrentDir(path) {
|
||||
cleanedPath += string(filepath.Separator) + "."
|
||||
cleanedPath += string(os.PathSeparator) + "."
|
||||
}
|
||||
|
||||
return filepath.Dir(cleanedPath), filepath.Base(cleanedPath)
|
||||
|
@ -106,19 +106,24 @@ func TarResourceRebase(sourcePath, rebaseName string) (content io.ReadCloser, er
|
|||
// Separate the source path between its directory and
|
||||
// the entry in that directory which we are archiving.
|
||||
sourceDir, sourceBase := SplitPathDirEntry(sourcePath)
|
||||
|
||||
filter := []string{sourceBase}
|
||||
opts := TarResourceRebaseOpts(sourceBase, rebaseName)
|
||||
|
||||
logrus.Debugf("copying %q from %q", sourceBase, sourceDir)
|
||||
return TarWithOptions(sourceDir, opts)
|
||||
}
|
||||
|
||||
return TarWithOptions(sourceDir, &TarOptions{
|
||||
// TarResourceRebaseOpts does not preform the Tar, but instead just creates the rebase
|
||||
// parameters to be sent to TarWithOptions (the TarOptions struct)
|
||||
func TarResourceRebaseOpts(sourceBase string, rebaseName string) *TarOptions {
|
||||
filter := []string{sourceBase}
|
||||
return &TarOptions{
|
||||
Compression: Uncompressed,
|
||||
IncludeFiles: filter,
|
||||
IncludeSourceDir: true,
|
||||
RebaseNames: map[string]string{
|
||||
sourceBase: rebaseName,
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// CopyInfo holds basic info about the source
|
||||
|
@ -281,7 +286,7 @@ func PrepareArchiveCopy(srcContent io.Reader, srcInfo, dstInfo CopyInfo) (dstDir
|
|||
srcBase = srcInfo.RebaseName
|
||||
}
|
||||
return dstDir, RebaseArchiveEntries(srcContent, srcBase, dstBase), nil
|
||||
case assertsDirectory(dstInfo.Path):
|
||||
case assertsDirectory(dstInfo.Path, os.PathSeparator):
|
||||
// The destination does not exist and is asserted to be created as a
|
||||
// directory, but the source content is not a directory. This is an
|
||||
// error condition since you cannot create a directory from a file
|
||||
|
@ -351,6 +356,9 @@ func RebaseArchiveEntries(srcContent io.Reader, oldBase, newBase string) io.Read
|
|||
return rebased
|
||||
}
|
||||
|
||||
// TODO @gupta-ak. These might have to be changed in the future to be
|
||||
// continuity driver aware as well to support LCOW.
|
||||
|
||||
// CopyResource performs an archive copy from the given source path to the
|
||||
// given destination path. The source path MUST exist and the destination
|
||||
// path's parent directory must exist.
|
||||
|
@ -365,8 +373,8 @@ func CopyResource(srcPath, dstPath string, followLink bool) error {
|
|||
dstPath = normalizePath(dstPath)
|
||||
|
||||
// Clean the source and destination paths.
|
||||
srcPath = PreserveTrailingDotOrSeparator(filepath.Clean(srcPath), srcPath)
|
||||
dstPath = PreserveTrailingDotOrSeparator(filepath.Clean(dstPath), dstPath)
|
||||
srcPath = PreserveTrailingDotOrSeparator(filepath.Clean(srcPath), srcPath, os.PathSeparator)
|
||||
dstPath = PreserveTrailingDotOrSeparator(filepath.Clean(dstPath), dstPath, os.PathSeparator)
|
||||
|
||||
if srcInfo, err = CopyInfoSourcePath(srcPath, followLink); err != nil {
|
||||
return err
|
||||
|
@ -429,7 +437,8 @@ func ResolveHostSourcePath(path string, followLink bool) (resolvedPath, rebaseNa
|
|||
// resolvedDirPath will have been cleaned (no trailing path separators) so
|
||||
// we can manually join it with the base path element.
|
||||
resolvedPath = resolvedDirPath + string(filepath.Separator) + basePath
|
||||
if hasTrailingPathSeparator(path) && filepath.Base(path) != filepath.Base(resolvedPath) {
|
||||
if hasTrailingPathSeparator(path, os.PathSeparator) &&
|
||||
filepath.Base(path) != filepath.Base(resolvedPath) {
|
||||
rebaseName = filepath.Base(path)
|
||||
}
|
||||
}
|
||||
|
@ -442,11 +451,13 @@ func GetRebaseName(path, resolvedPath string) (string, string) {
|
|||
// linkTarget will have been cleaned (no trailing path separators and dot) so
|
||||
// we can manually join it with them
|
||||
var rebaseName string
|
||||
if specifiesCurrentDir(path) && !specifiesCurrentDir(resolvedPath) {
|
||||
if specifiesCurrentDir(path) &&
|
||||
!specifiesCurrentDir(resolvedPath) {
|
||||
resolvedPath += string(filepath.Separator) + "."
|
||||
}
|
||||
|
||||
if hasTrailingPathSeparator(path) && !hasTrailingPathSeparator(resolvedPath) {
|
||||
if hasTrailingPathSeparator(path, os.PathSeparator) &&
|
||||
!hasTrailingPathSeparator(resolvedPath, os.PathSeparator) {
|
||||
resolvedPath += string(filepath.Separator)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
// +build !windows
|
||||
|
||||
package system
|
||||
|
||||
// InitLCOW does nothing since LCOW is a windows only feature
|
||||
func InitLCOW(experimental bool) {
|
||||
}
|
|
@ -8,9 +8,10 @@ import "os"
|
|||
// on build number. @jhowardmsft
|
||||
var lcowSupported = false
|
||||
|
||||
func init() {
|
||||
// InitLCOW sets whether LCOW is supported or not
|
||||
func InitLCOW(experimental bool) {
|
||||
// LCOW initialization
|
||||
if os.Getenv("LCOW_SUPPORTED") != "" {
|
||||
if experimental && os.Getenv("LCOW_SUPPORTED") != "" {
|
||||
lcowSupported = true
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
package system
|
||||
|
||||
import "runtime"
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"github.com/containerd/continuity/pathdriver"
|
||||
)
|
||||
|
||||
const defaultUnixPathEnv = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
|
||||
|
@ -19,3 +26,35 @@ func DefaultPathEnv(platform string) string {
|
|||
return defaultUnixPathEnv
|
||||
|
||||
}
|
||||
|
||||
// CheckSystemDriveAndRemoveDriveLetter verifies that a path, if it includes a drive letter,
|
||||
// is the system drive.
|
||||
// On Linux: this is a no-op.
|
||||
// On Windows: this does the following>
|
||||
// CheckSystemDriveAndRemoveDriveLetter verifies and manipulates a Windows path.
|
||||
// This is used, for example, when validating a user provided path in docker cp.
|
||||
// If a drive letter is supplied, it must be the system drive. The drive letter
|
||||
// is always removed. Also, it translates it to OS semantics (IOW / to \). We
|
||||
// need the path in this syntax so that it can ultimately be contatenated with
|
||||
// a Windows long-path which doesn't support drive-letters. Examples:
|
||||
// C: --> Fail
|
||||
// C:\ --> \
|
||||
// a --> a
|
||||
// /a --> \a
|
||||
// d:\ --> Fail
|
||||
func CheckSystemDriveAndRemoveDriveLetter(path string, driver pathdriver.PathDriver) (string, error) {
|
||||
if runtime.GOOS != "windows" || LCOWSupported() {
|
||||
return path, nil
|
||||
}
|
||||
|
||||
if len(path) == 2 && string(path[1]) == ":" {
|
||||
return "", fmt.Errorf("No relative path specified in %q", path)
|
||||
}
|
||||
if !driver.IsAbs(path) || len(path) < 2 {
|
||||
return filepath.FromSlash(path), nil
|
||||
}
|
||||
if string(path[1]) == ":" && !strings.EqualFold(string(path[0]), "c") {
|
||||
return "", fmt.Errorf("The specified path is not on the system drive (C:)")
|
||||
}
|
||||
return filepath.FromSlash(path[2:]), nil
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
// +build !windows
|
||||
|
||||
package system
|
||||
|
||||
// CheckSystemDriveAndRemoveDriveLetter verifies that a path, if it includes a drive letter,
|
||||
// is the system drive. This is a no-op on Linux.
|
||||
func CheckSystemDriveAndRemoveDriveLetter(path string) (string, error) {
|
||||
return path, nil
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
// +build windows
|
||||
|
||||
package system
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// CheckSystemDriveAndRemoveDriveLetter verifies and manipulates a Windows path.
|
||||
// This is used, for example, when validating a user provided path in docker cp.
|
||||
// If a drive letter is supplied, it must be the system drive. The drive letter
|
||||
// is always removed. Also, it translates it to OS semantics (IOW / to \). We
|
||||
// need the path in this syntax so that it can ultimately be concatenated with
|
||||
// a Windows long-path which doesn't support drive-letters. Examples:
|
||||
// C: --> Fail
|
||||
// C:\ --> \
|
||||
// a --> a
|
||||
// /a --> \a
|
||||
// d:\ --> Fail
|
||||
func CheckSystemDriveAndRemoveDriveLetter(path string) (string, error) {
|
||||
if len(path) == 2 && string(path[1]) == ":" {
|
||||
return "", fmt.Errorf("No relative path specified in %q", path)
|
||||
}
|
||||
if !filepath.IsAbs(path) || len(path) < 2 {
|
||||
return filepath.FromSlash(path), nil
|
||||
}
|
||||
if string(path[1]) == ":" && !strings.EqualFold(string(path[0]), "c") {
|
||||
return "", fmt.Errorf("The specified path is not on the system drive (C:)")
|
||||
}
|
||||
return filepath.FromSlash(path[2:]), nil
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -20,7 +20,7 @@
|
|||
"basePath": "/",
|
||||
"rootUrl": "https://www.googleapis.com/",
|
||||
"servicePath": "",
|
||||
"batchPath": "batch/oauth2/v2",
|
||||
"batchPath": "batch",
|
||||
"parameters": {
|
||||
"alt": {
|
||||
"type": "string",
|
||||
|
|
|
@ -21,38 +21,38 @@
|
|||
{
|
||||
"checksumSHA1": "AH7jcN7pvaPDU6UjHdpT081DDGk=",
|
||||
"path": "cloud.google.com/go/compute/metadata",
|
||||
"revision": "58d5b92c85a97c78b82bdcb43e8d192c4ab0a239",
|
||||
"revisionTime": "2017-09-08T12:01:57Z"
|
||||
"revision": "0b124d8375f8cf5cb1004fa21571940a58c8a0e9",
|
||||
"revisionTime": "2017-09-15T18:33:45Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "/ixPd+hSgsbAjBI/fPqmHtTFRM8=",
|
||||
"path": "cloud.google.com/go/iam",
|
||||
"revision": "58d5b92c85a97c78b82bdcb43e8d192c4ab0a239",
|
||||
"revisionTime": "2017-09-08T12:01:57Z"
|
||||
"revision": "0b124d8375f8cf5cb1004fa21571940a58c8a0e9",
|
||||
"revisionTime": "2017-09-15T18:33:45Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "vXPMGAHxvqWSpSFqqUfZBZS1dBo=",
|
||||
"path": "cloud.google.com/go/internal",
|
||||
"revision": "58d5b92c85a97c78b82bdcb43e8d192c4ab0a239",
|
||||
"revisionTime": "2017-09-08T12:01:57Z"
|
||||
"revision": "0b124d8375f8cf5cb1004fa21571940a58c8a0e9",
|
||||
"revisionTime": "2017-09-15T18:33:45Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "MCns2LLZtUZEx6JWyYBrcbSuTXg=",
|
||||
"path": "cloud.google.com/go/internal/optional",
|
||||
"revision": "58d5b92c85a97c78b82bdcb43e8d192c4ab0a239",
|
||||
"revisionTime": "2017-09-08T12:01:57Z"
|
||||
"revision": "0b124d8375f8cf5cb1004fa21571940a58c8a0e9",
|
||||
"revisionTime": "2017-09-15T18:33:45Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "P0DmgQq10tIKBxGrPwdOGXEGk0A=",
|
||||
"path": "cloud.google.com/go/internal/version",
|
||||
"revision": "58d5b92c85a97c78b82bdcb43e8d192c4ab0a239",
|
||||
"revisionTime": "2017-09-08T12:01:57Z"
|
||||
"revision": "0b124d8375f8cf5cb1004fa21571940a58c8a0e9",
|
||||
"revisionTime": "2017-09-15T18:33:45Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "QHbGgo+9M+l/RmOV1EA2p/miarI=",
|
||||
"path": "cloud.google.com/go/storage",
|
||||
"revision": "58d5b92c85a97c78b82bdcb43e8d192c4ab0a239",
|
||||
"revisionTime": "2017-09-08T12:01:57Z"
|
||||
"revision": "0b124d8375f8cf5cb1004fa21571940a58c8a0e9",
|
||||
"revisionTime": "2017-09-15T18:33:45Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "ayQzpLsnDmiaVeKWQeySiIvAjiA=",
|
||||
|
@ -217,196 +217,196 @@
|
|||
"revisionTime": "2017-09-03T09:52:15Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "5S+et8ZM3+9XGjhS/ZzEDb6lfdE=",
|
||||
"checksumSHA1": "fXhvoy6YMNQ+MzKIp0AyYTik9MA=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "Y9W+4GimK4Fuxq+vyIskVYFRnX4=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/awserr",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "yyYr41HZ1Aq0hWc3J5ijXwYEcac=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/awsutil",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "n98FANpNeRT5kf6pizdpI7nm6Sw=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/client",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "ieAJ+Cvp/PKv1LpUEnUXpc3OI6E=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/client/metadata",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "7/8j/q0TWtOgXyvEcv4B2Dhl00o=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/corehandlers",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "Y+cPwQL0dZMyqp3wI+KJWmA9KQ8=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/credentials",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "u3GOAJLmdvbuNUeUEcZSEAOeL/0=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "NUJUTWlc1sV8b7WjfiYc4JZbXl0=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "JEYqmF83O5n5bHkupAzA6STm0no=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/credentials/stscreds",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "ZdtYh3ZHSgP/WEIaqwJHTEhpkbs=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/defaults",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "/EXbk/z2TWjWc1Hvb4QYs3Wmhb8=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/ec2metadata",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "PinnnEkhXyxcdFrOB+L/PxtVhYI=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/endpoints",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "n/tgGgh0wICYu+VDYSqlsRy4w9s=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/request",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "SK5Mn4Ga9+equOQTYA1DTSb3LWY=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/session",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "iywvraxbXf3A/FOzFWjKfBBEQRA=",
|
||||
"path": "github.com/aws/aws-sdk-go/aws/signer/v4",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "04ypv4x12l4q0TksA1zEVsmgpvw=",
|
||||
"path": "github.com/aws/aws-sdk-go/internal/shareddefaults",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "wk7EyvDaHwb5qqoOP/4d3cV0708=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "1QmQ3FqV37w0Zi44qv8pA1GeR0A=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/ec2query",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "O6hcK24yI6w7FA+g4Pbr+eQ7pys=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/json/jsonutil",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "R00RL5jJXRYq1iiK1+PGvMfvXyM=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/jsonrpc",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "ZqY5RWavBLWTo6j9xqdyBEaNFRk=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/query",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "Drt1JfLMa0DQEZLWrnMlTWaIcC8=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/query/queryutil",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "VCTh+dEaqqhog5ncy/WTt9+/gFM=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/rest",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "ODo+ko8D6unAxZuN1jGzMcN4QCc=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/restxml",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "0qYPUga28aQVkxZgBR3Z86AbGUQ=",
|
||||
"path": "github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "Qk98eGaCDibYSf0u3E2q7fAGnbY=",
|
||||
"path": "github.com/aws/aws-sdk-go/service/dynamodb",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "jUnnkPjga3FkOTMYHoYl+kQ8tZU=",
|
||||
"path": "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "E3UN74VVqzHAgT0VUmfKX+d+PJ0=",
|
||||
"path": "github.com/aws/aws-sdk-go/service/ec2",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "H41YeQoLzuR1gQvBytlaL/gql+A=",
|
||||
"path": "github.com/aws/aws-sdk-go/service/iam",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "SEKg+cGyOj6dKdK5ltUHsoL4R4Y=",
|
||||
"path": "github.com/aws/aws-sdk-go/service/s3",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "MerduaV3PxtZAWvOGpgoBIglo38=",
|
||||
"path": "github.com/aws/aws-sdk-go/service/sts",
|
||||
"revision": "ad2c5a3ad38848175fca3225d0f7a94c426e4894",
|
||||
"revisionTime": "2017-09-14T23:55:56Z"
|
||||
"revision": "8d2831dd9188c8f7a1c9719564d23f879bba0179",
|
||||
"revisionTime": "2017-09-15T23:47:43Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "oTmBS67uxM6OXB/+OJUAG9LK4jw=",
|
||||
|
@ -480,6 +480,12 @@
|
|||
"revision": "c806b484b8611fc587b6abc07f8bb0f7824a78d6",
|
||||
"revisionTime": "2017-08-08T22:01:06Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "GqIrOttKaO7k6HIaHQLPr3cY7rY=",
|
||||
"path": "github.com/containerd/continuity/pathdriver",
|
||||
"revision": "35d55c5e8dd23b32037d56cf97174aff3efdfa83",
|
||||
"revisionTime": "2017-09-13T16:46:42Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "7BC2/27NId9xaPDB5w3nWN2mn9A=",
|
||||
"path": "github.com/coreos/etcd/auth/authpb",
|
||||
|
@ -579,164 +585,164 @@
|
|||
{
|
||||
"checksumSHA1": "P2SUyZzCzHMkb3tfts/32MzCM6A=",
|
||||
"path": "github.com/docker/docker/api/types",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "jVJDbe0IcyjoKc2xbohwzQr+FF0=",
|
||||
"path": "github.com/docker/docker/api/types/blkiodev",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "wyg5aht8yEIRsgW/PzDvy9yIF7U=",
|
||||
"path": "github.com/docker/docker/api/types/container",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "S4SWOa0XduRd8ene8Alwih2Nwcw=",
|
||||
"path": "github.com/docker/docker/api/types/filters",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "uJeLBKpHZXP+bWhXP4HhpyUTWYI=",
|
||||
"path": "github.com/docker/docker/api/types/mount",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "Gskp+nvbVe8Gk1xPLHylZvNmqTg=",
|
||||
"path": "github.com/docker/docker/api/types/network",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "r2vWq7Uc3ExKzMqYgH0b4AKjLKY=",
|
||||
"path": "github.com/docker/docker/api/types/registry",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "VTxWyFud/RedrpllGdQonVtGM/A=",
|
||||
"path": "github.com/docker/docker/api/types/strslice",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "WNhyKx+2cJ5Gx3jdCeDr0J43F3Y=",
|
||||
"path": "github.com/docker/docker/api/types/swarm",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "mi8EDCDjtrZEONRXPG7VHJosDwY=",
|
||||
"path": "github.com/docker/docker/api/types/swarm/runtime",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "uDPQ3nHsrvGQc9tg/J9OSC4N5dQ=",
|
||||
"path": "github.com/docker/docker/api/types/versions",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "mZ6S+W3VaotYJZnuJim6PNV04C8=",
|
||||
"path": "github.com/docker/docker/opts",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "PU7y8na4nFN2BSMdq1w5yxrwPo4=",
|
||||
"checksumSHA1": "UVWAKMlz7uJkCwDBka0kfL3fLJc=",
|
||||
"path": "github.com/docker/docker/pkg/archive",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "/rhDgzb51QH29Dn6v9lr/NQrLbs=",
|
||||
"path": "github.com/docker/docker/pkg/fileutils",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "OSFbrnYeBqJzNJ5CsHzQpfCzpR0=",
|
||||
"path": "github.com/docker/docker/pkg/homedir",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "5UI7YJZQYPQhSj3HTUT6h5j7SeE=",
|
||||
"path": "github.com/docker/docker/pkg/idtools",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "jsjQr20W2W6Gewf8Un3D8IKu2I8=",
|
||||
"path": "github.com/docker/docker/pkg/ioutils",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "kp20bhjkvJ06uW6DRfVIZbCj8SY=",
|
||||
"path": "github.com/docker/docker/pkg/jsonlog",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "d7KXgDaJPBbQ8LFKwdwNU2yZz3k=",
|
||||
"path": "github.com/docker/docker/pkg/jsonmessage",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "ndnAFCfsGC3upNQ6jAEwzxcurww=",
|
||||
"path": "github.com/docker/docker/pkg/longpath",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "w8pyOX/u8XwXRmPWlpKpBBwwYUg=",
|
||||
"path": "github.com/docker/docker/pkg/mount",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "cS0+jrjme0j9GX8LLcioQ7ZOBsQ=",
|
||||
"path": "github.com/docker/docker/pkg/pools",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "txf3EORYff4hO6PEvwBm2lyh1MU=",
|
||||
"path": "github.com/docker/docker/pkg/promise",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "H1rrbVmeE1z2TnkF7tSrfh+qUOY=",
|
||||
"path": "github.com/docker/docker/pkg/stdcopy",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "VULoWaiGaUMvB1LCKO5WNqU1xi8=",
|
||||
"checksumSHA1": "UEMAKQqAyL9hs6RWxesQuYMQ3+I=",
|
||||
"path": "github.com/docker/docker/pkg/system",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "dLlr8QsbOA1BkgdKXNWdqrYsx3E=",
|
||||
"path": "github.com/docker/docker/pkg/term",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "NcljihOPc95QOyQAdufyy3eqKSU=",
|
||||
"path": "github.com/docker/docker/pkg/term/windows",
|
||||
"revision": "5c10698d5c5223f9cb49704124be592e3d39d0df",
|
||||
"revisionTime": "2017-09-15T13:39:20Z"
|
||||
"revision": "a5f9783c930834b8e6035fb0ad9c22fd4bbfc355",
|
||||
"revisionTime": "2017-09-15T23:49:48Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "JbiWTzH699Sqz25XmDlsARpMN9w=",
|
||||
|
@ -1563,74 +1569,74 @@
|
|||
{
|
||||
"checksumSHA1": "dzy9lJFRFg4ewapupNs5pbhJQxQ=",
|
||||
"path": "google.golang.org/api/compute/v1",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "/y0saWnM+kTnSvZrNlvoNOgj0Uo=",
|
||||
"path": "google.golang.org/api/gensupport",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "BWKmb7kGYbfbvXO6E7tCpTh9zKE=",
|
||||
"path": "google.golang.org/api/googleapi",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "1K0JxrUfDqAB3MyRiU1LKjfHyf4=",
|
||||
"path": "google.golang.org/api/googleapi/internal/uritemplates",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "Mr2fXhMRzlQCgANFm91s536pG7E=",
|
||||
"path": "google.golang.org/api/googleapi/transport",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "RkKB3QeabYUaOm6JukEekXMNA2M=",
|
||||
"checksumSHA1": "g9xWra2wrCn40g/IWToJpNDN/i0=",
|
||||
"path": "google.golang.org/api/iam/v1",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "dENAVft6XToomTHrm5J2zFt4hgU=",
|
||||
"path": "google.golang.org/api/internal",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "slcGOTGSdukEPPSN81Q5WZGmhog=",
|
||||
"path": "google.golang.org/api/iterator",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "1D3XnZy4TWLBstH2IzOHZHLS9HA=",
|
||||
"checksumSHA1": "QYFBVWO0ZiQQ74rzTsrvQccfzx4=",
|
||||
"path": "google.golang.org/api/oauth2/v2",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "Y3CG3ZFIYfF6AhvpiBMBAGcZMV4=",
|
||||
"path": "google.golang.org/api/option",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "TGfdoT48AYtv72z9lOewZzzYwKk=",
|
||||
"path": "google.golang.org/api/storage/v1",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "a4x7iUjDZxTMoskp8RoBnt4bRrc=",
|
||||
"path": "google.golang.org/api/transport/http",
|
||||
"revision": "39c3dd417c5a443607650f18e829ad308da08dd2",
|
||||
"revisionTime": "2017-09-15T00:03:48Z"
|
||||
"revision": "272693b6005d0c0dc1c7933ce47dd51ee50dbedc",
|
||||
"revisionTime": "2017-09-16T00:03:21Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "WPEbk80NB3Esdh4Yk0PXr2K7xVU=",
|
||||
|
|
Loading…
Reference in New Issue