mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-21 01:59:07 +00:00
Merge pull request #2050 from justincormack/vendor-remove-cpio
Removed unused vendoring
This commit is contained in:
commit
e69a36b4c0
@ -6,7 +6,6 @@ github.com/Sirupsen/logrus 10f801ebc38b33738c9d17d50860f484a0988ff5
|
||||
github.com/aws/aws-sdk-go fa107560b5f3528a859a1a1511086646731bb1a8
|
||||
github.com/dgrijalva/jwt-go 6c8dedd55f8a2e41f605de6d5d66e51ed1f299fc
|
||||
github.com/docker/docker 8d96619e5a367798cffcb740cfc41e0a505a5232
|
||||
github.com/docker/infrakit cb420e3e50ea60afe58538b1d3cab1cb14059433
|
||||
github.com/go-ini/ini afbc45e87f3ba324c532d12c71918ef52e0fb194
|
||||
github.com/golang/protobuf c9c7427a2a70d2eb3bafa0ab2dc163e45f143317
|
||||
github.com/googleapis/gax-go 8c5154c0fe5bf18cf649634d4c6df50897a32751
|
||||
@ -17,7 +16,6 @@ github.com/packethost/packngo 91d54000aa56874149d348a884ba083c41d38091
|
||||
github.com/radu-matei/azure-sdk-for-go 3b12823551999669c9a325a32472508e0af7978e
|
||||
github.com/radu-matei/azure-vhd-utils e52754d5569d2a643a7775f72ff2a6cf524f4c25
|
||||
github.com/rn/iso9660wrap 4606f848a055435cdef85305960b0e1bb788d506
|
||||
github.com/surma/gocpio fcb68777e7dc4ea43ffce871b552c0d073c17495
|
||||
github.com/vmware/govmomi 6f8ebd89d521d9f9af7a6c2219c4deee511020dd
|
||||
golang.org/x/crypto 573951cbe80bb6352881271bb276f48749eab6f4
|
||||
golang.org/x/net a6577fac2d73be281a500b310739095313165611
|
||||
|
201
vendor/github.com/docker/infrakit/LICENSE
generated
vendored
201
vendor/github.com/docker/infrakit/LICENSE
generated
vendored
@ -1,201 +0,0 @@
|
||||
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 2016 Docker, Inc.
|
||||
|
||||
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.
|
235
vendor/github.com/docker/infrakit/README.md
generated
vendored
235
vendor/github.com/docker/infrakit/README.md
generated
vendored
@ -1,235 +0,0 @@
|
||||
InfraKit
|
||||
========
|
||||
|
||||
[](https://circleci.com/gh/docker/infrakit)
|
||||
[](https://goreportcard.com/report/github.com/docker/infrakit)
|
||||
[](https://codecov.io/github/docker/infrakit?branch=master)
|
||||
|
||||
_InfraKit_ is a toolkit for creating and managing declarative, self-healing infrastructure.
|
||||
It breaks infrastructure automation down into simple, pluggable components. These components work together to actively
|
||||
ensure the infrastructure state matches the user's specifications.
|
||||
Although _InfraKit_ emphasizes primitives for building self-healing infrastructure, it also can be used passively like
|
||||
conventional tools.
|
||||
|
||||
To get started, try the [tutorial](docs/tutorial.md).
|
||||
|
||||
### Who InfraKit is for
|
||||
|
||||
_InfraKit_ is designed to support setup and management of base infrastructure. For example, it can help you manage a
|
||||
system like a cluster or container orchestrator, ideally relieving you of building custom release and maintenance tools.
|
||||
As a result, it is a low-level tool intended to be used by infrastructure operators directly or indirectly
|
||||
(as a toolkit) through a higher-level tool. Since _InfraKit_ is pluggable, it allows you to manage resources in diverse
|
||||
environments while using shared components and consistent interfaces.
|
||||
|
||||
## Plugins
|
||||
_InfraKit_ makes extensive use of _Plugins_ to manage arbitrary systems in diverse environments, which can be composed
|
||||
to meet different needs.
|
||||
|
||||
See the [plugins](docs/plugins) documentation for more details.
|
||||
|
||||
|
||||
## Building
|
||||
### Your Environment
|
||||
|
||||
Make sure you check out the project following a convention for building Go projects. For example,
|
||||
|
||||
```shell
|
||||
|
||||
# Install Go - https://golang.org/dl/
|
||||
# Assuming your go compiler is in /usr/local/go
|
||||
export PATH=/usr/local/go/bin:$PATH
|
||||
|
||||
# Your dev environment
|
||||
mkdir -p ~/go
|
||||
export GOPATH=!$
|
||||
export PATH=$GOPATH/bin:$PATH
|
||||
|
||||
mkdir -p ~/go/src/github.com/docker
|
||||
cd !$
|
||||
git clone git@github.com:docker/infrakit.git
|
||||
cd infrakit
|
||||
```
|
||||
|
||||
We recommended go version 1.7.1 or greater for all platforms.
|
||||
|
||||
Also install a few build tools:
|
||||
```shell
|
||||
make get-tools
|
||||
```
|
||||
|
||||
### Running tests
|
||||
```shell
|
||||
$ make ci
|
||||
```
|
||||
|
||||
### Binaries
|
||||
```shell
|
||||
$ make binaries
|
||||
```
|
||||
Executables will be placed in the `./build` directory.
|
||||
This will produce binaries for tools and several reference Plugin implementations:
|
||||
+ [`infrakit`](cmd/cli/README.md): a command line interface to interact with plugins
|
||||
+ [`infrakit-group-default`](cmd/group/README.md): the default [Group plugin](./pkg/spi/group)
|
||||
+ [`infrakit-instance-file`](examples/instance/file): an Instance plugin using dummy files to represent instances
|
||||
+ [`infrakit-instance-terraform`](examples/instance/terraform):
|
||||
an Instance plugin integrating [Terraform](https://www.terraform.io)
|
||||
+ [`infrakit-instance-vagrant`](examples/instance/vagrant):
|
||||
an Instance plugin using [Vagrant](https://www.vagrantup.com/)
|
||||
+ [`infrakit-instance-maas`](examples/instance/maas):
|
||||
an Instance plugin using [MaaS](https://maas.io)
|
||||
+ [`infrakit-flavor-vanilla`](examples/flavor/vanilla):
|
||||
a Flavor plugin for plain vanilla set up with user data and labels
|
||||
+ [`infrakit-flavor-zookeeper`](examples/flavor/zookeeper):
|
||||
a Flavor plugin for [Apache ZooKeeper](https://zookeeper.apache.org/) ensemble members
|
||||
+ [`infrakit-flavor-swarm`](examples/flavor/swarm):
|
||||
a Flavor plugin for Docker in [Swarm mode](https://docs.docker.com/engine/swarm/).
|
||||
|
||||
All provided binaries have a `help` sub-command to get usage and a `version` sub-command to identify the build revision.
|
||||
|
||||
|
||||
# Design
|
||||
|
||||
## Configuration
|
||||
_InfraKit_ uses JSON for configuration because it is composable and a widely accepted format for many
|
||||
infrastructure SDKs and tools. Since the system is highly component-driven, our JSON format follows
|
||||
simple patterns to support the composition of components.
|
||||
|
||||
A common pattern for a JSON object looks like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"SomeKey": "ValueForTheKey",
|
||||
"Properties": {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
There is only one `Properties` field in this JSON and its value is a JSON object. The opaque
|
||||
JSON value for `Properties` is decoded via the Go `Spec` struct defined within the package of the plugin --
|
||||
for example -- [`vanilla.Spec`](pkg/plugin/flavor/vanilla/flavor.go).
|
||||
|
||||
The JSON above is a _value_, but the type of the value belongs outside the structure. For example, the
|
||||
default Group [Spec](pkg/plugin/group/types/types.go) is composed of an Instance plugin, a Flavor plugin, and an
|
||||
Allocation:
|
||||
|
||||
```json
|
||||
{
|
||||
"ID": "name-of-the-group",
|
||||
"Properties": {
|
||||
"Allocation": {
|
||||
},
|
||||
"Instance": {
|
||||
"Plugin": "name-of-the-instance-plugin",
|
||||
"Properties": {
|
||||
}
|
||||
},
|
||||
"Flavor": {
|
||||
"Plugin": "name-of-the-flavor-plugin",
|
||||
"Properties": {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
The group's Spec has `Instance` and `Flavor` fields which are used to indicate the type, and the value of the
|
||||
fields follow the pattern of `<some_key>` and `Properties` as shown above.
|
||||
|
||||
The `Allocation` determines how the Group is managed. Allocation has two properties:
|
||||
- `Size`: an integer for the number of instances to maintain in the Group
|
||||
- `LogicalIDs`: a list of string identifiers, one will be associated with each Instance
|
||||
|
||||
Exactly one of these fields must be set, which defines whether the Group is treated as 'cattle' (`Size`) or 'pets'
|
||||
(`LogicalIDs`). It is up to the Instance and Flavor plugins to determine how to use `LogicalID` values.
|
||||
|
||||
As an example, if you wanted to manage a Group of NGINX servers, you could
|
||||
write a custom Group plugin for ultimate customization. The most concise configuration looks something like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"ID": "nginx",
|
||||
"Plugin": "my-nginx-group-plugin",
|
||||
"Properties": {
|
||||
"port": 8080
|
||||
}
|
||||
}
|
||||
````
|
||||
|
||||
However, you would likely prefer to use the default Group plugin and implement a Flavor plugin to focus on
|
||||
application-specific behavior. This gives you immediate support for any infrastructure that has an Instance plugin.
|
||||
Your resulting configuration might look something like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"ID": "nginx",
|
||||
"Plugin": "group",
|
||||
"Properties": {
|
||||
"Allocation": {
|
||||
"Size": 10
|
||||
},
|
||||
"Instance": {
|
||||
"Plugin": "aws",
|
||||
"Properties": {
|
||||
"region": "us-west-2",
|
||||
"ami": "ami-123456"
|
||||
}
|
||||
},
|
||||
"Flavor": {
|
||||
"Plugin": "nginx",
|
||||
"Properties": {
|
||||
"port": 8080
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Once the configuration is ready, you will tell a Group plugin to
|
||||
+ watch it
|
||||
+ update it
|
||||
+ destroy it
|
||||
|
||||
Watching the group as specified in the configuration means that the Group plugin will create
|
||||
the instances if they don't already exist. New instances will be created if for any reason
|
||||
existing instances have disappeared such that the state doesn't match your specifications.
|
||||
|
||||
Updating the group tells the Group plugin that your configuration may have changed. It will
|
||||
then determine the changes necessary to ensure the state of the infrastructure matches the new
|
||||
specification.
|
||||
|
||||
## Docs
|
||||
|
||||
Additional documentation can be found [here](docs).
|
||||
|
||||
## Reporting security issues
|
||||
|
||||
The maintainers take security seriously. If you discover a security issue,
|
||||
please bring it to their attention right away!
|
||||
|
||||
Please **DO NOT** file a public issue, instead send your report privately to
|
||||
[security@docker.com](mailto:security@docker.com).
|
||||
|
||||
Security reports are greatly appreciated and we will publicly thank you for it.
|
||||
We also like to send gifts—if you're into Docker schwag, make sure to let
|
||||
us know. We currently do not offer a paid security bounty program, but are not
|
||||
ruling it out in the future.
|
||||
|
||||
|
||||
## Design goals
|
||||
|
||||
_InfraKit_ is currently focused on supporting setup and management of base infrastructure, such as a cluster
|
||||
orchestrator. The image below illustrates an architecture we are working towards supporting - a Docker cluster in Swarm
|
||||
mode.
|
||||
|
||||

|
||||
|
||||
This configuration co-locates _InfraKit_ with Swarm manager nodes and offers high availability of _InfraKit_ itself and
|
||||
Swarm managers (using attached storage). _InfraKit_ is shown managing two groups - managers and workers that will be
|
||||
continuously monitored, and may be modified with rolling updates.
|
||||
|
||||
Countless configurations are possible with _InfraKit_, but we believe achieving support for this configuration will
|
||||
enable a large number of real-world use cases.
|
||||
|
||||
## Copyright and license
|
||||
|
||||
Copyright © 2016 Docker, Inc. All rights reserved. Released under the Apache 2.0
|
||||
license. See [LICENSE](LICENSE) for the full license text.
|
81
vendor/github.com/docker/infrakit/vendor.conf
generated
vendored
81
vendor/github.com/docker/infrakit/vendor.conf
generated
vendored
@ -1,81 +0,0 @@
|
||||
# Vendor configuration for trash (https://github.com/rancher/trash)
|
||||
|
||||
# Install trash with `go get github.com/rancher/trash`
|
||||
# Synchronize the vendor/ directory with `vendor.conf` by running `trash`.
|
||||
# Update dependencies by running `trash -u`.
|
||||
|
||||
# package
|
||||
github.com/docker/infrakit
|
||||
|
||||
github.com/Masterminds/sprig 2.8.0
|
||||
github.com/Microsoft/go-winio 0.3.6
|
||||
github.com/Sirupsen/logrus v0.11.0-5-gabc6f20
|
||||
github.com/aokoli/goutils 1.0.0
|
||||
github.com/armon/go-radix 4239b77
|
||||
github.com/beorn7/perks 4c0e845
|
||||
github.com/beorn7/perks/quantile 4c0e845
|
||||
github.com/coreos/etcd/auth/authpb v3.1.3
|
||||
github.com/coreos/etcd/clientv3 v3.1.3
|
||||
github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes v3.1.3
|
||||
github.com/coreos/etcd/etcdserver/etcdserverpb v3.1.3
|
||||
github.com/coreos/etcd/mvcc/mvccpb v3.1.3
|
||||
github.com/coreos/etcd/pkg/tlsutil v3.1.3
|
||||
github.com/davecgh/go-spew v1.0.0-9-g346938d
|
||||
github.com/docker/distribution v2.6.0-rc.1-4-g7694c31
|
||||
github.com/docker/docker 3a68292
|
||||
github.com/docker/go-connections v0.2.1-10-gf512407
|
||||
github.com/docker/go-units v0.3.1-8-g8a7beac
|
||||
github.com/ghodss/yaml 73d445a93680fa1a78ae23a5839bad48f32ba1ee
|
||||
github.com/golang/glog 23def4e
|
||||
github.com/golang/mock bd3c8e8
|
||||
github.com/golang/protobuf/jsonpb 4bd1920723d7b7c925de087aa32e2187708897f7
|
||||
github.com/golang/protobuf/proto 4bd1920723d7b7c925de087aa32e2187708897f7
|
||||
github.com/gorilla/handlers v1.1-12-ge1b2144
|
||||
github.com/gorilla/mux 757bef9
|
||||
github.com/gorilla/rpc 22c016f
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.1
|
||||
github.com/grpc-ecosystem/grpc-gateway/runtime 84398b94e188ee336f307779b57b3aa91af7063c
|
||||
github.com/grpc-ecosystem/grpc-gateway/utilities 84398b94e188ee336f307779b57b3aa91af7063c
|
||||
github.com/inconshreveable/mousetrap 76626ae
|
||||
github.com/jmespath/go-jmespath 0.2.2-14-gbd40a43
|
||||
github.com/juju/ansiterm 35c59b9
|
||||
github.com/juju/errors 6f54ff6
|
||||
github.com/juju/gomaasapi 31d8415
|
||||
github.com/juju/loggo 3b7ece4
|
||||
github.com/juju/schema e4e0580
|
||||
github.com/juju/utils 8f0eda3
|
||||
github.com/juju/version 1f41e27
|
||||
github.com/lunixbochs/vtclean 4fbf763
|
||||
github.com/mattn/go-colorable d228849
|
||||
github.com/mattn/go-isatty 30a891c
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.0
|
||||
github.com/nightlyone/lockfile 1d49c98
|
||||
github.com/opencontainers/runc v1.0.0-rc2-137-g43c4300
|
||||
github.com/pkg/errors v0.8.0-2-g248dadf
|
||||
github.com/pmezard/go-difflib v1.0.0
|
||||
github.com/prometheus/client_golang/prometheus v0.8.0
|
||||
github.com/prometheus/client_model 6f38060
|
||||
github.com/prometheus/common 49fee29
|
||||
github.com/prometheus/procfs a1dba9c
|
||||
github.com/satori/go.uuid v1.1.0
|
||||
github.com/spf13/afero 06b7e5f
|
||||
github.com/spf13/cobra 6e91dde
|
||||
github.com/spf13/pflag 5ccb023
|
||||
github.com/stretchr/testify v1.1.4-4-g976c720
|
||||
github.com/twmb/algoimpl 716f8e7
|
||||
github.com/vaughan0/go-ini a98ad7e
|
||||
golang.org/x/crypto/pbkdf2 b07d8c9
|
||||
golang.org/x/net 0dd7c8d
|
||||
golang.org/x/sys b699b70
|
||||
golang.org/x/text a263ba8
|
||||
google.golang.org/grpc v1.0.4
|
||||
google.golang.org/grpc/codes v1.0.4
|
||||
google.golang.org/grpc/credentials v1.0.4
|
||||
google.golang.org/grpc/grpclog v1.0.4
|
||||
google.golang.org/grpc/metadata v1.0.4
|
||||
gopkg.in/inconshreveable/log15.v2 v2.11
|
||||
gopkg.in/juju/names.v2 0847c26
|
||||
gopkg.in/mgo.v2/bson 3f83fa5
|
||||
gopkg.in/mgo.v2/internal 3f83fa5
|
||||
gopkg.in/tylerb/graceful.v1 v1.2.13
|
||||
gopkg.in/yaml.v2 a5b47d3
|
202
vendor/github.com/surma/gocpio/LICENSE
generated
vendored
202
vendor/github.com/surma/gocpio/LICENSE
generated
vendored
@ -1,202 +0,0 @@
|
||||
|
||||
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 2016 Surma
|
||||
|
||||
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.
|
11
vendor/github.com/surma/gocpio/README.md
generated
vendored
11
vendor/github.com/surma/gocpio/README.md
generated
vendored
@ -1,11 +0,0 @@
|
||||
`gocpio` is a simple library similar to Go’s `tar` or `zip` package for
|
||||
accessing cpio archives. It’s not pretty and only implements the new ASCII
|
||||
format. Maybe I’ll refactor and implement other formats some day.
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
* [Reference](http://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt)
|
||||
|
||||
-------
|
||||
Version 1.1.0
|
46
vendor/github.com/surma/gocpio/common.go
generated
vendored
46
vendor/github.com/surma/gocpio/common.go
generated
vendored
@ -1,46 +0,0 @@
|
||||
// Package cpio implements access to cpio archives.
|
||||
// Implementation of the new ASCII formate (SVR4) defined here:
|
||||
// http://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt
|
||||
package cpio
|
||||
|
||||
const (
|
||||
VERSION = "1.1.0"
|
||||
)
|
||||
|
||||
// Header represents file meta data in an archive.
|
||||
// Some fields may not be populated.
|
||||
type Header struct {
|
||||
Mode int64 // permission and mode bits.
|
||||
Uid int // user id of owner.
|
||||
Gid int // group id of owner.
|
||||
Mtime int64 // modified time; seconds since epoch.
|
||||
Size int64 // length in bytes.
|
||||
Devmajor int64 // major number of character or block device.
|
||||
Devminor int64 // minor number of character or block device.
|
||||
Type int64
|
||||
Name string // name of header file entry.
|
||||
}
|
||||
|
||||
func (h *Header) IsTrailer() bool {
|
||||
return h.Name == trailer.Name &&
|
||||
h.Uid == trailer.Uid &&
|
||||
h.Gid == trailer.Gid &&
|
||||
h.Mtime == trailer.Mtime
|
||||
}
|
||||
|
||||
// File types
|
||||
const (
|
||||
TYPE_SOCK = 014
|
||||
TYPE_SYMLINK = 012
|
||||
TYPE_REG = 010
|
||||
TYPE_BLK = 006
|
||||
TYPE_DIR = 004
|
||||
TYPE_CHAR = 002
|
||||
TYPE_FIFO = 001
|
||||
)
|
||||
|
||||
var (
|
||||
trailer = Header{
|
||||
Name: "TRAILER!!!",
|
||||
}
|
||||
)
|
181
vendor/github.com/surma/gocpio/reader.go
generated
vendored
181
vendor/github.com/surma/gocpio/reader.go
generated
vendored
@ -1,181 +0,0 @@
|
||||
package cpio
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Reader struct {
|
||||
r io.Reader
|
||||
pos int64
|
||||
remaining_bytes int
|
||||
}
|
||||
|
||||
func NewReader(r io.Reader) *Reader {
|
||||
return &Reader{
|
||||
r: r,
|
||||
}
|
||||
}
|
||||
|
||||
func disassemble(mode int64) (fmode int64, ftype int64) {
|
||||
fmode = mode & 0xFFF
|
||||
ftype = (mode >> 12) & 0xF
|
||||
return
|
||||
}
|
||||
|
||||
func getPrefix(buf *[]byte, len int) (pre []byte) {
|
||||
pre, *buf = (*buf)[0:len], (*buf)[len:]
|
||||
return
|
||||
}
|
||||
|
||||
func Btoi(s string, base int) (int, error) {
|
||||
i, e := strconv.ParseInt(s, base, 64)
|
||||
return int(i), e
|
||||
}
|
||||
|
||||
var (
|
||||
ErrInvalidHeader = errors.New("Did not find valid magic number")
|
||||
)
|
||||
|
||||
func parseHeader(buf []byte) (*Header, int64, error) {
|
||||
magic := string(getPrefix(&buf, 6))
|
||||
raw_inode := getPrefix(&buf, 8)
|
||||
raw_mode := getPrefix(&buf, 8)
|
||||
raw_uid := getPrefix(&buf, 8)
|
||||
raw_gid := getPrefix(&buf, 8)
|
||||
raw_nlinks := getPrefix(&buf, 8)
|
||||
raw_mtime := getPrefix(&buf, 8)
|
||||
raw_size := getPrefix(&buf, 8)
|
||||
raw_major := getPrefix(&buf, 8)
|
||||
raw_minor := getPrefix(&buf, 8)
|
||||
raw_devmajor := getPrefix(&buf, 8)
|
||||
raw_devminor := getPrefix(&buf, 8)
|
||||
raw_namelen := getPrefix(&buf, 8)
|
||||
raw_check := getPrefix(&buf, 8)
|
||||
|
||||
_, _, _, _, _ = raw_inode, raw_nlinks, raw_major, raw_minor, raw_check
|
||||
|
||||
if magic != "070701" {
|
||||
return nil, 0, ErrInvalidHeader
|
||||
}
|
||||
|
||||
hdr := &Header{}
|
||||
|
||||
mode, e := strconv.ParseInt(string(raw_mode), 16, 64)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
hdr.Mode, hdr.Type = disassemble(mode)
|
||||
|
||||
hdr.Uid, e = Btoi(string(raw_uid), 16)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
hdr.Gid, e = Btoi(string(raw_gid), 16)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
hdr.Mtime, e = strconv.ParseInt(string(raw_mtime), 16, 64)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
hdr.Size, e = strconv.ParseInt(string(raw_size), 16, 64)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
hdr.Devmajor, e = strconv.ParseInt(string(raw_devmajor), 16, 64)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
hdr.Devminor, e = strconv.ParseInt(string(raw_devminor), 16, 64)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
namelen, e := strconv.ParseInt(string(raw_namelen), 16, 64)
|
||||
if e != nil {
|
||||
return nil, 0, e
|
||||
}
|
||||
|
||||
return hdr, namelen, nil
|
||||
}
|
||||
|
||||
func (r *Reader) Next() (*Header, error) {
|
||||
e := r.skipRest()
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
e = r.skipPadding(4)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
|
||||
raw_hdr := make([]byte, 110)
|
||||
_, e = r.countedRead(raw_hdr)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
|
||||
hdr, namelen, e := parseHeader(raw_hdr)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
|
||||
bname := make([]byte, namelen)
|
||||
_, e = r.countedRead(bname)
|
||||
if e != nil {
|
||||
return nil, e
|
||||
}
|
||||
|
||||
hdr.Name = string(bname[0 : namelen-1]) //Exclude terminating zero
|
||||
r.remaining_bytes = int(hdr.Size)
|
||||
return hdr, r.skipPadding(4)
|
||||
}
|
||||
|
||||
func (r *Reader) skipRest() error {
|
||||
buf := make([]byte, 1)
|
||||
for ; r.remaining_bytes > 0; r.remaining_bytes-- {
|
||||
_, e := r.countedRead(buf)
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Skips to the next position which is a multiple of mod.
|
||||
func (r *Reader) skipPadding(mod int64) error {
|
||||
numBytesToRead := ((mod - (r.pos % mod)) % mod)
|
||||
buf := make([]byte, numBytesToRead)
|
||||
_, e := r.countedRead(buf)
|
||||
return e
|
||||
}
|
||||
|
||||
func (r *Reader) Read(b []byte) (n int, e error) {
|
||||
if r.remaining_bytes == 0 {
|
||||
return 0, io.EOF
|
||||
}
|
||||
|
||||
if len(b) > r.remaining_bytes {
|
||||
b = b[0:r.remaining_bytes]
|
||||
}
|
||||
n, e = r.countedRead(b)
|
||||
r.remaining_bytes -= n
|
||||
return
|
||||
}
|
||||
|
||||
func (r *Reader) countedRead(b []byte) (n int, e error) {
|
||||
if len(b) == 0 {
|
||||
return
|
||||
}
|
||||
n, e = r.r.Read(b)
|
||||
r.pos += int64(n)
|
||||
return
|
||||
}
|
118
vendor/github.com/surma/gocpio/writer.go
generated
vendored
118
vendor/github.com/surma/gocpio/writer.go
generated
vendored
@ -1,118 +0,0 @@
|
||||
package cpio
|
||||
|
||||
import (
|
||||
"io"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// A writer enables sequential writing of cpio archives.
|
||||
// A call to WriteHeader begins a new file. Every call to
|
||||
// write afterwards appends to that file, writing at most
|
||||
// hdr.Size bytes in total.
|
||||
type Writer struct {
|
||||
w io.Writer
|
||||
inode int64
|
||||
length int64
|
||||
remaining_bytes int
|
||||
}
|
||||
|
||||
func NewWriter(w io.Writer) *Writer {
|
||||
return &Writer{
|
||||
w: w,
|
||||
inode: 721,
|
||||
}
|
||||
}
|
||||
|
||||
func assemble(mode, typev int64) int64 {
|
||||
return mode&0xFFF | ((typev & 0xF) << 12)
|
||||
}
|
||||
|
||||
func (w *Writer) WriteHeader(hdr *Header) error {
|
||||
// Bring last file to the defined length
|
||||
e := w.zeros(int64(w.remaining_bytes))
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
e = w.pad(4)
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
bname := []byte(hdr.Name)
|
||||
nlinks := 1
|
||||
if hdr.Type == TYPE_DIR {
|
||||
nlinks = 2
|
||||
}
|
||||
shdr := fmt.Sprintf("%s%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x",
|
||||
"070701",
|
||||
w.inode,
|
||||
assemble(hdr.Mode, hdr.Type),
|
||||
hdr.Uid,
|
||||
hdr.Gid,
|
||||
nlinks,
|
||||
hdr.Mtime,
|
||||
hdr.Size,
|
||||
3, // major
|
||||
1, // minor
|
||||
hdr.Devmajor,
|
||||
hdr.Devminor,
|
||||
len(bname)+1, // +1 for terminating zero
|
||||
0) // check
|
||||
_, e = w.countedWrite([]byte(shdr))
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
|
||||
_, e = w.countedWrite(bname)
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
|
||||
_, e = w.countedWrite([]byte{0})
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
w.inode++
|
||||
w.remaining_bytes = int(hdr.Size)
|
||||
return w.pad(4)
|
||||
}
|
||||
|
||||
func (w *Writer) zeros(num int64) error {
|
||||
for ; num > 0; num-- {
|
||||
_, e := w.countedWrite([]byte{0})
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Brings the length of the file to a multiple of mod
|
||||
func (w *Writer) pad(mod int64) error {
|
||||
|
||||
return w.zeros((mod - (w.length % mod)) % mod)
|
||||
}
|
||||
|
||||
func (w *Writer) Write(b []byte) (n int, e error) {
|
||||
if len(b) > w.remaining_bytes {
|
||||
b = b[0:w.remaining_bytes]
|
||||
}
|
||||
n, e = w.countedWrite(b)
|
||||
w.remaining_bytes -= n
|
||||
return
|
||||
}
|
||||
|
||||
func (w *Writer) countedWrite(b []byte) (n int, e error) {
|
||||
n, e = w.w.Write(b)
|
||||
w.length += int64(n)
|
||||
return n, e
|
||||
}
|
||||
|
||||
// Writes trailer
|
||||
// Does not close underlying writer
|
||||
func (w *Writer) Close() error {
|
||||
e := w.WriteHeader(&trailer)
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
return w.pad(512)
|
||||
}
|
Loading…
Reference in New Issue
Block a user