Copy disabled (too large)
Download .txt
Showing preview only (24,294K chars total). Download the full file to get everything.
Repository: fabric8io/kansible
Branch: master
Commit: 457ddca2ac23
Files: 3439
Total size: 22.4 MB
Directory structure:
gitextract_2u8aug_v/
├── .dockerignore
├── .gitignore
├── BUILDING.md
├── Dockerfile
├── Dockerfile.scratch
├── Jenkinsfile
├── LICENSE
├── Makefile
├── README.md
├── add-headers.sh
├── ansible/
│ ├── ansible.go
│ └── variables.go
├── circle.yml
├── cmd/
│ ├── kill.go
│ ├── pod.go
│ ├── rc.go
│ ├── root.go
│ ├── run.go
│ └── version.go
├── glide.yaml
├── header.txt
├── headers.yml
├── k8s/
│ └── k8s.go
├── kansible.go
├── log/
│ └── log.go
├── ssh/
│ └── ssh.go
├── tools/
│ └── create-intellij-idea-golib.sh
├── vendor/
│ ├── bitbucket.org/
│ │ └── ww/
│ │ └── goautoneg/
│ │ ├── Makefile
│ │ ├── README.txt
│ │ ├── autoneg.go
│ │ └── autoneg_test.go
│ ├── github.com/
│ │ ├── Masterminds/
│ │ │ ├── semver/
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── appveyor.yml
│ │ │ │ ├── benchmark_test.go
│ │ │ │ ├── collection.go
│ │ │ │ ├── collection_test.go
│ │ │ │ ├── constraints.go
│ │ │ │ ├── constraints_test.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── version.go
│ │ │ │ └── version_test.go
│ │ │ └── vcs/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.md
│ │ │ ├── bzr.go
│ │ │ ├── bzr_test.go
│ │ │ ├── git.go
│ │ │ ├── git_test.go
│ │ │ ├── hg.go
│ │ │ ├── hg_test.go
│ │ │ ├── repo.go
│ │ │ ├── repo_test.go
│ │ │ ├── svn.go
│ │ │ ├── svn_test.go
│ │ │ ├── vcs_local_lookup.go
│ │ │ ├── vcs_remote_lookup.go
│ │ │ └── vcs_remote_lookup_test.go
│ │ ├── beorn7/
│ │ │ └── perks/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── histogram/
│ │ │ │ ├── bench_test.go
│ │ │ │ ├── histogram.go
│ │ │ │ └── histogram_test.go
│ │ │ ├── quantile/
│ │ │ │ ├── bench_test.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── exampledata.txt
│ │ │ │ ├── stream.go
│ │ │ │ └── stream_test.go
│ │ │ └── topk/
│ │ │ ├── topk.go
│ │ │ └── topk_test.go
│ │ ├── blang/
│ │ │ └── semver/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── examples/
│ │ │ │ └── main.go
│ │ │ ├── json.go
│ │ │ ├── json_test.go
│ │ │ ├── semver.go
│ │ │ ├── semver_test.go
│ │ │ ├── sort.go
│ │ │ ├── sort_test.go
│ │ │ ├── sql.go
│ │ │ └── sql_test.go
│ │ ├── cloudfoundry-incubator/
│ │ │ └── candiedyaml/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── api.go
│ │ │ ├── candiedyaml_suite_test.go
│ │ │ ├── decode.go
│ │ │ ├── decode_test.go
│ │ │ ├── emitter.go
│ │ │ ├── encode.go
│ │ │ ├── encode_test.go
│ │ │ ├── fixtures/
│ │ │ │ └── specification/
│ │ │ │ ├── example2_1.yaml
│ │ │ │ ├── example2_10.yaml
│ │ │ │ ├── example2_11.yaml
│ │ │ │ ├── example2_12.yaml
│ │ │ │ ├── example2_13.yaml
│ │ │ │ ├── example2_14.yaml
│ │ │ │ ├── example2_15.yaml
│ │ │ │ ├── example2_15_dumped.yaml
│ │ │ │ ├── example2_16.yaml
│ │ │ │ ├── example2_17.yaml
│ │ │ │ ├── example2_17_control.yaml
│ │ │ │ ├── example2_17_hexesc.yaml
│ │ │ │ ├── example2_17_quoted.yaml
│ │ │ │ ├── example2_17_single.yaml
│ │ │ │ ├── example2_17_tie_fighter.yaml
│ │ │ │ ├── example2_17_unicode.yaml
│ │ │ │ ├── example2_18.yaml
│ │ │ │ ├── example2_19.yaml
│ │ │ │ ├── example2_2.yaml
│ │ │ │ ├── example2_20.yaml
│ │ │ │ ├── example2_21.yaml
│ │ │ │ ├── example2_22.yaml
│ │ │ │ ├── example2_23.yaml
│ │ │ │ ├── example2_23_application.yaml
│ │ │ │ ├── example2_23_non_date.yaml
│ │ │ │ ├── example2_23_picture.yaml
│ │ │ │ ├── example2_24.yaml
│ │ │ │ ├── example2_24_dumped.yaml
│ │ │ │ ├── example2_25.yaml
│ │ │ │ ├── example2_26.yaml
│ │ │ │ ├── example2_27.yaml
│ │ │ │ ├── example2_27_dumped.yaml
│ │ │ │ ├── example2_28.yaml
│ │ │ │ ├── example2_3.yaml
│ │ │ │ ├── example2_4.yaml
│ │ │ │ ├── example2_5.yaml
│ │ │ │ ├── example2_6.yaml
│ │ │ │ ├── example2_7.yaml
│ │ │ │ ├── example2_8.yaml
│ │ │ │ ├── example2_9.yaml
│ │ │ │ ├── example_empty.yaml
│ │ │ │ └── types/
│ │ │ │ ├── map.yaml
│ │ │ │ ├── map_mixed_tags.yaml
│ │ │ │ ├── merge.yaml
│ │ │ │ ├── omap.yaml
│ │ │ │ ├── pairs.yaml
│ │ │ │ ├── seq.yaml
│ │ │ │ ├── set.yaml
│ │ │ │ ├── v.yaml
│ │ │ │ └── value.yaml
│ │ │ ├── libyaml-LICENSE
│ │ │ ├── parser.go
│ │ │ ├── parser_test.go
│ │ │ ├── reader.go
│ │ │ ├── reader_test.go
│ │ │ ├── resolver.go
│ │ │ ├── resolver_test.go
│ │ │ ├── run_parser.go
│ │ │ ├── scanner.go
│ │ │ ├── scanner_test.go
│ │ │ ├── tags.go
│ │ │ ├── writer.go
│ │ │ ├── yaml_definesh.go
│ │ │ ├── yaml_privateh.go
│ │ │ └── yamlh.go
│ │ ├── davecgh/
│ │ │ └── go-spew/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── cov_report.sh
│ │ │ ├── spew/
│ │ │ │ ├── common.go
│ │ │ │ ├── common_test.go
│ │ │ │ ├── config.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── dump.go
│ │ │ │ ├── dump_test.go
│ │ │ │ ├── dumpcgo_test.go
│ │ │ │ ├── dumpnocgo_test.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── format.go
│ │ │ │ ├── format_test.go
│ │ │ │ ├── internal_test.go
│ │ │ │ ├── spew.go
│ │ │ │ ├── spew_test.go
│ │ │ │ └── testdata/
│ │ │ │ └── dumpcgo.go
│ │ │ └── test_coverage.txt
│ │ ├── docker/
│ │ │ ├── docker/
│ │ │ │ ├── .dockerignore
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .mailmap
│ │ │ │ ├── AUTHORS
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── Dockerfile.simple
│ │ │ │ ├── LICENSE
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── Makefile
│ │ │ │ ├── NOTICE
│ │ │ │ ├── README.md
│ │ │ │ ├── ROADMAP.md
│ │ │ │ ├── VERSION
│ │ │ │ ├── api/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── api_unit_test.go
│ │ │ │ │ ├── client/
│ │ │ │ │ │ ├── attach.go
│ │ │ │ │ │ ├── build.go
│ │ │ │ │ │ ├── cli.go
│ │ │ │ │ │ ├── client.go
│ │ │ │ │ │ ├── commit.go
│ │ │ │ │ │ ├── cp.go
│ │ │ │ │ │ ├── create.go
│ │ │ │ │ │ ├── diff.go
│ │ │ │ │ │ ├── events.go
│ │ │ │ │ │ ├── exec.go
│ │ │ │ │ │ ├── export.go
│ │ │ │ │ │ ├── help.go
│ │ │ │ │ │ ├── hijack.go
│ │ │ │ │ │ ├── history.go
│ │ │ │ │ │ ├── images.go
│ │ │ │ │ │ ├── import.go
│ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ ├── inspect.go
│ │ │ │ │ │ ├── kill.go
│ │ │ │ │ │ ├── load.go
│ │ │ │ │ │ ├── login.go
│ │ │ │ │ │ ├── logout.go
│ │ │ │ │ │ ├── logs.go
│ │ │ │ │ │ ├── network.go
│ │ │ │ │ │ ├── pause.go
│ │ │ │ │ │ ├── port.go
│ │ │ │ │ │ ├── ps.go
│ │ │ │ │ │ ├── pull.go
│ │ │ │ │ │ ├── push.go
│ │ │ │ │ │ ├── rename.go
│ │ │ │ │ │ ├── restart.go
│ │ │ │ │ │ ├── rm.go
│ │ │ │ │ │ ├── rmi.go
│ │ │ │ │ │ ├── run.go
│ │ │ │ │ │ ├── save.go
│ │ │ │ │ │ ├── search.go
│ │ │ │ │ │ ├── service.go
│ │ │ │ │ │ ├── start.go
│ │ │ │ │ │ ├── stats.go
│ │ │ │ │ │ ├── stats_unit_test.go
│ │ │ │ │ │ ├── stop.go
│ │ │ │ │ │ ├── tag.go
│ │ │ │ │ │ ├── top.go
│ │ │ │ │ │ ├── unpause.go
│ │ │ │ │ │ ├── utils.go
│ │ │ │ │ │ ├── version.go
│ │ │ │ │ │ └── wait.go
│ │ │ │ │ ├── common.go
│ │ │ │ │ ├── server/
│ │ │ │ │ │ ├── form.go
│ │ │ │ │ │ ├── form_test.go
│ │ │ │ │ │ ├── profiler.go
│ │ │ │ │ │ ├── server.go
│ │ │ │ │ │ ├── server_experimental.go
│ │ │ │ │ │ ├── server_linux.go
│ │ │ │ │ │ ├── server_linux_test.go
│ │ │ │ │ │ ├── server_stub.go
│ │ │ │ │ │ └── server_windows.go
│ │ │ │ │ └── types/
│ │ │ │ │ ├── stats.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── builder/
│ │ │ │ │ ├── bflag.go
│ │ │ │ │ ├── bflag_test.go
│ │ │ │ │ ├── command/
│ │ │ │ │ │ └── command.go
│ │ │ │ │ ├── dispatchers.go
│ │ │ │ │ ├── evaluator.go
│ │ │ │ │ ├── internals.go
│ │ │ │ │ ├── internals_linux.go
│ │ │ │ │ ├── internals_windows.go
│ │ │ │ │ ├── job.go
│ │ │ │ │ ├── job_test.go
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── dumper/
│ │ │ │ │ │ │ └── main.go
│ │ │ │ │ │ ├── json_test.go
│ │ │ │ │ │ ├── line_parsers.go
│ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ ├── parser_test.go
│ │ │ │ │ │ ├── testfiles/
│ │ │ │ │ │ │ ├── ADD-COPY-with-JSON/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── brimstone-consuldock/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── brimstone-docker-consul/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── continueIndent/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── cpuguy83-nagios/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── docker/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── escapes/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── flags/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── influxdb/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-json-inside-string/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-json-inside-string-double/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-single-quotes/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-unterminated-bracket/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-unterminated-string/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── kartar-entrypoint-oddities/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── lk4d4-the-edge-case-generator/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── mail/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── multiple-volumes/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── mumble/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── nginx/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── tf2/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── weechat/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ └── znc/
│ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ └── result
│ │ │ │ │ │ ├── testfiles-negative/
│ │ │ │ │ │ │ ├── env_no_value/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ └── shykes-nested-json/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ └── utils.go
│ │ │ │ │ ├── shell_parser.go
│ │ │ │ │ ├── shell_parser_test.go
│ │ │ │ │ ├── support.go
│ │ │ │ │ ├── support_test.go
│ │ │ │ │ └── words
│ │ │ │ ├── cliconfig/
│ │ │ │ │ ├── config.go
│ │ │ │ │ └── config_test.go
│ │ │ │ ├── contrib/
│ │ │ │ │ ├── README
│ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ ├── apparmor/
│ │ │ │ │ │ └── docker
│ │ │ │ │ ├── builder/
│ │ │ │ │ │ ├── deb/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── build.sh
│ │ │ │ │ │ │ ├── debian-jessie/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── debian-stretch/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── debian-wheezy/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── generate.sh
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-precise/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-trusty/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-utopic/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-vivid/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ └── ubuntu-debootstrap-wily/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ └── rpm/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── build.sh
│ │ │ │ │ │ ├── centos-7/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── fedora-20/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── fedora-21/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── fedora-22/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── generate.sh
│ │ │ │ │ │ └── oraclelinux-7/
│ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ ├── check-config.sh
│ │ │ │ │ ├── completion/
│ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ ├── bash/
│ │ │ │ │ │ │ └── docker
│ │ │ │ │ │ ├── fish/
│ │ │ │ │ │ │ └── docker.fish
│ │ │ │ │ │ └── zsh/
│ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ └── _docker
│ │ │ │ │ ├── desktop-integration/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── chromium/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ └── gparted/
│ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ ├── docker-device-tool/
│ │ │ │ │ │ └── device_tool.go
│ │ │ │ │ ├── dockerize-disk.sh
│ │ │ │ │ ├── download-frozen-image.sh
│ │ │ │ │ ├── host-integration/
│ │ │ │ │ │ ├── Dockerfile.dev
│ │ │ │ │ │ ├── Dockerfile.min
│ │ │ │ │ │ ├── manager/
│ │ │ │ │ │ │ ├── systemd
│ │ │ │ │ │ │ └── upstart
│ │ │ │ │ │ ├── manager.go
│ │ │ │ │ │ └── manager.sh
│ │ │ │ │ ├── httpserver/
│ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ └── server.go
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── openrc/
│ │ │ │ │ │ │ ├── docker.confd
│ │ │ │ │ │ │ └── docker.initd
│ │ │ │ │ │ ├── systemd/
│ │ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ │ ├── docker.service
│ │ │ │ │ │ │ └── docker.socket
│ │ │ │ │ │ ├── sysvinit-debian/
│ │ │ │ │ │ │ ├── docker
│ │ │ │ │ │ │ └── docker.default
│ │ │ │ │ │ ├── sysvinit-redhat/
│ │ │ │ │ │ │ ├── docker
│ │ │ │ │ │ │ └── docker.sysconfig
│ │ │ │ │ │ └── upstart/
│ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ └── docker.conf
│ │ │ │ │ ├── mkimage/
│ │ │ │ │ │ ├── .febootstrap-minimize
│ │ │ │ │ │ ├── busybox-static
│ │ │ │ │ │ ├── debootstrap
│ │ │ │ │ │ ├── mageia-urpmi
│ │ │ │ │ │ └── rinse
│ │ │ │ │ ├── mkimage-alpine.sh
│ │ │ │ │ ├── mkimage-arch-pacman.conf
│ │ │ │ │ ├── mkimage-arch.sh
│ │ │ │ │ ├── mkimage-busybox.sh
│ │ │ │ │ ├── mkimage-crux.sh
│ │ │ │ │ ├── mkimage-debootstrap.sh
│ │ │ │ │ ├── mkimage-rinse.sh
│ │ │ │ │ ├── mkimage-yum.sh
│ │ │ │ │ ├── mkimage.sh
│ │ │ │ │ ├── mkseccomp.pl
│ │ │ │ │ ├── mkseccomp.sample
│ │ │ │ │ ├── nuke-graph-directory.sh
│ │ │ │ │ ├── project-stats.sh
│ │ │ │ │ ├── report-issue.sh
│ │ │ │ │ ├── reprepro/
│ │ │ │ │ │ └── suites.sh
│ │ │ │ │ ├── syntax/
│ │ │ │ │ │ ├── kate/
│ │ │ │ │ │ │ └── Dockerfile.xml
│ │ │ │ │ │ ├── nano/
│ │ │ │ │ │ │ ├── Dockerfile.nanorc
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── textmate/
│ │ │ │ │ │ │ ├── Docker.tmbundle/
│ │ │ │ │ │ │ │ ├── Preferences/
│ │ │ │ │ │ │ │ │ └── Dockerfile.tmPreferences
│ │ │ │ │ │ │ │ ├── Syntaxes/
│ │ │ │ │ │ │ │ │ └── Dockerfile.tmLanguage
│ │ │ │ │ │ │ │ └── info.plist
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ └── REVIEWERS
│ │ │ │ │ │ └── vim/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── doc/
│ │ │ │ │ │ │ └── dockerfile.txt
│ │ │ │ │ │ ├── ftdetect/
│ │ │ │ │ │ │ └── dockerfile.vim
│ │ │ │ │ │ └── syntax/
│ │ │ │ │ │ └── dockerfile.vim
│ │ │ │ │ ├── udev/
│ │ │ │ │ │ └── 80-docker.rules
│ │ │ │ │ └── vagrant-docker/
│ │ │ │ │ └── README.md
│ │ │ │ ├── daemon/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── archive.go
│ │ │ │ │ ├── attach.go
│ │ │ │ │ ├── changes.go
│ │ │ │ │ ├── commit.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_experimental.go
│ │ │ │ │ ├── config_linux.go
│ │ │ │ │ ├── config_stub.go
│ │ │ │ │ ├── config_windows.go
│ │ │ │ │ ├── container.go
│ │ │ │ │ ├── container_unit_test.go
│ │ │ │ │ ├── container_unix.go
│ │ │ │ │ ├── container_windows.go
│ │ │ │ │ ├── create.go
│ │ │ │ │ ├── daemon.go
│ │ │ │ │ ├── daemon_aufs.go
│ │ │ │ │ ├── daemon_btrfs.go
│ │ │ │ │ ├── daemon_devicemapper.go
│ │ │ │ │ ├── daemon_no_aufs.go
│ │ │ │ │ ├── daemon_overlay.go
│ │ │ │ │ ├── daemon_test.go
│ │ │ │ │ ├── daemon_unit_test.go
│ │ │ │ │ ├── daemon_unix.go
│ │ │ │ │ ├── daemon_windows.go
│ │ │ │ │ ├── daemon_zfs.go
│ │ │ │ │ ├── debugtrap_unix.go
│ │ │ │ │ ├── debugtrap_unsupported.go
│ │ │ │ │ ├── debugtrap_windows.go
│ │ │ │ │ ├── delete.go
│ │ │ │ │ ├── events/
│ │ │ │ │ │ ├── events.go
│ │ │ │ │ │ └── events_test.go
│ │ │ │ │ ├── exec.go
│ │ │ │ │ ├── exec_linux.go
│ │ │ │ │ ├── exec_windows.go
│ │ │ │ │ ├── execdriver/
│ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ ├── driver_linux.go
│ │ │ │ │ │ ├── execdrivers/
│ │ │ │ │ │ │ ├── execdrivers_linux.go
│ │ │ │ │ │ │ └── execdrivers_windows.go
│ │ │ │ │ │ ├── lxc/
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ │ ├── info_test.go
│ │ │ │ │ │ │ ├── init.go
│ │ │ │ │ │ │ ├── lxc_init_linux.go
│ │ │ │ │ │ │ ├── lxc_init_unsupported.go
│ │ │ │ │ │ │ ├── lxc_template.go
│ │ │ │ │ │ │ └── lxc_template_unit_test.go
│ │ │ │ │ │ ├── native/
│ │ │ │ │ │ │ ├── create.go
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ ├── driver_unsupported.go
│ │ │ │ │ │ │ ├── driver_unsupported_nocgo.go
│ │ │ │ │ │ │ ├── exec.go
│ │ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ │ ├── init.go
│ │ │ │ │ │ │ └── template/
│ │ │ │ │ │ │ └── default_template.go
│ │ │ │ │ │ ├── pipes.go
│ │ │ │ │ │ ├── termconsole.go
│ │ │ │ │ │ ├── utils.go
│ │ │ │ │ │ └── windows/
│ │ │ │ │ │ ├── checkoptions.go
│ │ │ │ │ │ ├── clean.go
│ │ │ │ │ │ ├── exec.go
│ │ │ │ │ │ ├── getpids.go
│ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ ├── namedpipes.go
│ │ │ │ │ │ ├── pauseunpause.go
│ │ │ │ │ │ ├── run.go
│ │ │ │ │ │ ├── stats.go
│ │ │ │ │ │ ├── stdconsole.go
│ │ │ │ │ │ ├── terminatekill.go
│ │ │ │ │ │ ├── ttyconsole.go
│ │ │ │ │ │ ├── unsupported.go
│ │ │ │ │ │ └── windows.go
│ │ │ │ │ ├── export.go
│ │ │ │ │ ├── graphdriver/
│ │ │ │ │ │ ├── aufs/
│ │ │ │ │ │ │ ├── aufs.go
│ │ │ │ │ │ │ ├── aufs_test.go
│ │ │ │ │ │ │ ├── dirs.go
│ │ │ │ │ │ │ ├── migrate.go
│ │ │ │ │ │ │ ├── mount.go
│ │ │ │ │ │ │ ├── mount_linux.go
│ │ │ │ │ │ │ └── mount_unsupported.go
│ │ │ │ │ │ ├── btrfs/
│ │ │ │ │ │ │ ├── btrfs.go
│ │ │ │ │ │ │ ├── btrfs_test.go
│ │ │ │ │ │ │ ├── dummy_unsupported.go
│ │ │ │ │ │ │ ├── version.go
│ │ │ │ │ │ │ ├── version_none.go
│ │ │ │ │ │ │ └── version_test.go
│ │ │ │ │ │ ├── devmapper/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── deviceset.go
│ │ │ │ │ │ │ ├── devmapper_doc.go
│ │ │ │ │ │ │ ├── devmapper_test.go
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ └── mount.go
│ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ ├── driver_linux.go
│ │ │ │ │ │ ├── driver_unsupported.go
│ │ │ │ │ │ ├── driver_windows.go
│ │ │ │ │ │ ├── fsdiff.go
│ │ │ │ │ │ ├── graphtest/
│ │ │ │ │ │ │ └── graphtest.go
│ │ │ │ │ │ ├── overlay/
│ │ │ │ │ │ │ ├── copy.go
│ │ │ │ │ │ │ ├── overlay.go
│ │ │ │ │ │ │ ├── overlay_test.go
│ │ │ │ │ │ │ └── overlay_unsupported.go
│ │ │ │ │ │ ├── vfs/
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ ├── driver_unsupported.go
│ │ │ │ │ │ │ └── vfs_test.go
│ │ │ │ │ │ ├── windows/
│ │ │ │ │ │ │ └── windows.go
│ │ │ │ │ │ └── zfs/
│ │ │ │ │ │ ├── MAINTAINERS
│ │ │ │ │ │ ├── zfs.go
│ │ │ │ │ │ ├── zfs_freebsd.go
│ │ │ │ │ │ ├── zfs_linux.go
│ │ │ │ │ │ ├── zfs_test.go
│ │ │ │ │ │ └── zfs_unsupported.go
│ │ │ │ │ ├── history.go
│ │ │ │ │ ├── image_delete.go
│ │ │ │ │ ├── info.go
│ │ │ │ │ ├── inspect.go
│ │ │ │ │ ├── kill.go
│ │ │ │ │ ├── list.go
│ │ │ │ │ ├── logdrivers_linux.go
│ │ │ │ │ ├── logdrivers_windows.go
│ │ │ │ │ ├── logger/
│ │ │ │ │ │ ├── copier.go
│ │ │ │ │ │ ├── copier_test.go
│ │ │ │ │ │ ├── factory.go
│ │ │ │ │ │ ├── fluentd/
│ │ │ │ │ │ │ └── fluentd.go
│ │ │ │ │ │ ├── gelf/
│ │ │ │ │ │ │ ├── gelf.go
│ │ │ │ │ │ │ └── gelf_unsupported.go
│ │ │ │ │ │ ├── journald/
│ │ │ │ │ │ │ ├── journald.go
│ │ │ │ │ │ │ └── journald_unsupported.go
│ │ │ │ │ │ ├── jsonfilelog/
│ │ │ │ │ │ │ ├── jsonfilelog.go
│ │ │ │ │ │ │ └── jsonfilelog_test.go
│ │ │ │ │ │ ├── logger.go
│ │ │ │ │ │ └── syslog/
│ │ │ │ │ │ ├── syslog.go
│ │ │ │ │ │ └── syslog_unsupported.go
│ │ │ │ │ ├── logs.go
│ │ │ │ │ ├── monitor.go
│ │ │ │ │ ├── network/
│ │ │ │ │ │ └── settings.go
│ │ │ │ │ ├── pause.go
│ │ │ │ │ ├── rename.go
│ │ │ │ │ ├── resize.go
│ │ │ │ │ ├── restart.go
│ │ │ │ │ ├── start.go
│ │ │ │ │ ├── state.go
│ │ │ │ │ ├── state_test.go
│ │ │ │ │ ├── stats.go
│ │ │ │ │ ├── stats_collector_unix.go
│ │ │ │ │ ├── stats_collector_windows.go
│ │ │ │ │ ├── stats_linux.go
│ │ │ │ │ ├── stats_windows.go
│ │ │ │ │ ├── stop.go
│ │ │ │ │ ├── top.go
│ │ │ │ │ ├── unpause.go
│ │ │ │ │ ├── utils_nounix.go
│ │ │ │ │ ├── utils_test.go
│ │ │ │ │ ├── utils_unix.go
│ │ │ │ │ ├── volumes.go
│ │ │ │ │ ├── volumes_linux.go
│ │ │ │ │ ├── volumes_linux_unit_test.go
│ │ │ │ │ ├── volumes_unit_test.go
│ │ │ │ │ ├── volumes_windows.go
│ │ │ │ │ └── wait.go
│ │ │ │ ├── docker/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── daemon.go
│ │ │ │ │ ├── daemon_unix.go
│ │ │ │ │ ├── daemon_windows.go
│ │ │ │ │ ├── docker.go
│ │ │ │ │ ├── docker_windows.go
│ │ │ │ │ ├── flags.go
│ │ │ │ │ └── log.go
│ │ │ │ ├── dockerinit/
│ │ │ │ │ └── dockerinit.go
│ │ │ │ ├── docs/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Dockerfile
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── article-img/
│ │ │ │ │ │ ├── ipv6_basic_host_config.gliffy
│ │ │ │ │ │ ├── ipv6_ndp_proxying.gliffy
│ │ │ │ │ │ ├── ipv6_routed_network_example.gliffy
│ │ │ │ │ │ ├── ipv6_slash64_subnet_config.gliffy
│ │ │ │ │ │ └── ipv6_switched_network_example.gliffy
│ │ │ │ │ ├── articles/
│ │ │ │ │ │ ├── ambassador_pattern_linking.md
│ │ │ │ │ │ ├── b2d_volume_resize.md
│ │ │ │ │ │ ├── baseimages.md
│ │ │ │ │ │ ├── basics.md
│ │ │ │ │ │ ├── certificates.md
│ │ │ │ │ │ ├── cfengine_process_management.md
│ │ │ │ │ │ ├── chef.md
│ │ │ │ │ │ ├── configuring.md
│ │ │ │ │ │ ├── dockerfile_best-practices.md
│ │ │ │ │ │ ├── dsc.md
│ │ │ │ │ │ ├── host_integration.md
│ │ │ │ │ │ ├── https/
│ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ ├── Makefile
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── make_certs.sh
│ │ │ │ │ │ │ └── parsedocs.sh
│ │ │ │ │ │ ├── https.md
│ │ │ │ │ │ ├── networking.md
│ │ │ │ │ │ ├── puppet.md
│ │ │ │ │ │ ├── registry_mirror.md
│ │ │ │ │ │ ├── runmetrics.md
│ │ │ │ │ │ ├── security.md
│ │ │ │ │ │ ├── systemd.md
│ │ │ │ │ │ └── using_supervisord.md
│ │ │ │ │ ├── docker-hub/
│ │ │ │ │ │ ├── accounts.md
│ │ │ │ │ │ ├── builds.md
│ │ │ │ │ │ ├── home.md
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── official_repos.md
│ │ │ │ │ │ ├── repos.md
│ │ │ │ │ │ └── userguide.md
│ │ │ │ │ ├── examples/
│ │ │ │ │ │ ├── apt-cacher-ng.Dockerfile
│ │ │ │ │ │ ├── apt-cacher-ng.md
│ │ │ │ │ │ ├── couchdb_data_volumes.md
│ │ │ │ │ │ ├── mongodb/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── mongodb.md
│ │ │ │ │ │ ├── nodejs_web_app.md
│ │ │ │ │ │ ├── postgresql_service.Dockerfile
│ │ │ │ │ │ ├── postgresql_service.md
│ │ │ │ │ │ ├── running_redis_service.md
│ │ │ │ │ │ ├── running_riak_service.Dockerfile
│ │ │ │ │ │ ├── running_riak_service.md
│ │ │ │ │ │ ├── running_ssh_service.Dockerfile
│ │ │ │ │ │ ├── running_ssh_service.md
│ │ │ │ │ │ └── supervisord.conf
│ │ │ │ │ ├── extend/
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── plugin_api.md
│ │ │ │ │ │ ├── plugins.md
│ │ │ │ │ │ └── plugins_volume.md
│ │ │ │ │ ├── installation/
│ │ │ │ │ │ ├── SUSE.md
│ │ │ │ │ │ ├── amazon.md
│ │ │ │ │ │ ├── archlinux.md
│ │ │ │ │ │ ├── azure.md
│ │ │ │ │ │ ├── binaries.md
│ │ │ │ │ │ ├── centos.md
│ │ │ │ │ │ ├── cruxlinux.md
│ │ │ │ │ │ ├── debian.md
│ │ │ │ │ │ ├── fedora.md
│ │ │ │ │ │ ├── frugalware.md
│ │ │ │ │ │ ├── gentoolinux.md
│ │ │ │ │ │ ├── google.md
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── joyent.md
│ │ │ │ │ │ ├── mac.md
│ │ │ │ │ │ ├── oracle.md
│ │ │ │ │ │ ├── rackspace.md
│ │ │ │ │ │ ├── rhel.md
│ │ │ │ │ │ ├── softlayer.md
│ │ │ │ │ │ ├── ubuntulinux.md
│ │ │ │ │ │ └── windows.md
│ │ │ │ │ ├── introduction/
│ │ │ │ │ │ └── understanding-docker.md
│ │ │ │ │ ├── misc/
│ │ │ │ │ │ ├── faq.md
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── release-notes.md
│ │ │ │ │ │ └── search.md
│ │ │ │ │ ├── project/
│ │ │ │ │ │ ├── advanced-contributing.md
│ │ │ │ │ │ ├── coding-style.md
│ │ │ │ │ │ ├── create-pr.md
│ │ │ │ │ │ ├── doc-style.md
│ │ │ │ │ │ ├── find-an-issue.md
│ │ │ │ │ │ ├── get-help.md
│ │ │ │ │ │ ├── images/
│ │ │ │ │ │ │ ├── existing_issue.snagproj
│ │ │ │ │ │ │ └── proposal.snagproj
│ │ │ │ │ │ ├── make-a-contribution.md
│ │ │ │ │ │ ├── review-pr.md
│ │ │ │ │ │ ├── set-up-dev-env.md
│ │ │ │ │ │ ├── set-up-git.md
│ │ │ │ │ │ ├── software-req-win.md
│ │ │ │ │ │ ├── software-required.md
│ │ │ │ │ │ ├── test-and-docs.md
│ │ │ │ │ │ ├── who-written-for.md
│ │ │ │ │ │ └── work-issue.md
│ │ │ │ │ ├── reference/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── docker-io_api.md
│ │ │ │ │ │ │ ├── docker_io_accounts_api.md
│ │ │ │ │ │ │ ├── docker_remote_api.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.0.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.1.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.10.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.11.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.12.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.13.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.14.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.15.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.16.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.17.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.18.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.19.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.2.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.20.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.3.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.4.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.5.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.6.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.7.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.8.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.9.md
│ │ │ │ │ │ │ ├── hub_registry_spec.md
│ │ │ │ │ │ │ ├── images/
│ │ │ │ │ │ │ │ └── event_state.gliffy
│ │ │ │ │ │ │ ├── registry_api.md
│ │ │ │ │ │ │ ├── registry_api_client_libraries.md
│ │ │ │ │ │ │ └── remote_api_client_libraries.md
│ │ │ │ │ │ ├── builder.md
│ │ │ │ │ │ ├── commandline/
│ │ │ │ │ │ │ ├── attach.md
│ │ │ │ │ │ │ ├── build.md
│ │ │ │ │ │ │ ├── cli.md
│ │ │ │ │ │ │ ├── commit.md
│ │ │ │ │ │ │ ├── cp.md
│ │ │ │ │ │ │ ├── create.md
│ │ │ │ │ │ │ ├── daemon.md
│ │ │ │ │ │ │ ├── diff.md
│ │ │ │ │ │ │ ├── events.md
│ │ │ │ │ │ │ ├── exec.md
│ │ │ │ │ │ │ ├── export.md
│ │ │ │ │ │ │ ├── history.md
│ │ │ │ │ │ │ ├── images.md
│ │ │ │ │ │ │ ├── import.md
│ │ │ │ │ │ │ ├── info.md
│ │ │ │ │ │ │ ├── inspect.md
│ │ │ │ │ │ │ ├── kill.md
│ │ │ │ │ │ │ ├── load.md
│ │ │ │ │ │ │ ├── login.md
│ │ │ │ │ │ │ ├── logout.md
│ │ │ │ │ │ │ ├── logs.md
│ │ │ │ │ │ │ ├── pause.md
│ │ │ │ │ │ │ ├── port.md
│ │ │ │ │ │ │ ├── ps.md
│ │ │ │ │ │ │ ├── pull.md
│ │ │ │ │ │ │ ├── push.md
│ │ │ │ │ │ │ ├── rename.md
│ │ │ │ │ │ │ ├── restart.md
│ │ │ │ │ │ │ ├── rm.md
│ │ │ │ │ │ │ ├── rmi.md
│ │ │ │ │ │ │ ├── run.md
│ │ │ │ │ │ │ ├── save.md
│ │ │ │ │ │ │ ├── search.md
│ │ │ │ │ │ │ ├── start.md
│ │ │ │ │ │ │ ├── stats.md
│ │ │ │ │ │ │ ├── stop.md
│ │ │ │ │ │ │ ├── tag.md
│ │ │ │ │ │ │ ├── top.md
│ │ │ │ │ │ │ ├── unpause.md
│ │ │ │ │ │ │ ├── version.md
│ │ │ │ │ │ │ └── wait.md
│ │ │ │ │ │ ├── glossary.md
│ │ │ │ │ │ ├── logging/
│ │ │ │ │ │ │ ├── fluentd.md
│ │ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ │ └── journald.md
│ │ │ │ │ │ └── run.md
│ │ │ │ │ ├── static_files/
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── terms/
│ │ │ │ │ │ ├── container.md
│ │ │ │ │ │ ├── filesystem.md
│ │ │ │ │ │ ├── image.md
│ │ │ │ │ │ ├── layer.md
│ │ │ │ │ │ ├── registry.md
│ │ │ │ │ │ └── repository.md
│ │ │ │ │ ├── touch-up.sh
│ │ │ │ │ └── userguide/
│ │ │ │ │ ├── dockerhub.md
│ │ │ │ │ ├── dockerimages.md
│ │ │ │ │ ├── dockerizing.md
│ │ │ │ │ ├── dockerlinks.md
│ │ │ │ │ ├── dockerrepos.md
│ │ │ │ │ ├── dockervolumes.md
│ │ │ │ │ ├── index.md
│ │ │ │ │ ├── labels-custom-metadata.md
│ │ │ │ │ ├── level1.md
│ │ │ │ │ ├── level2.md
│ │ │ │ │ └── usingdocker.md
│ │ │ │ ├── experimental/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── compose_swarm_networking.md
│ │ │ │ │ ├── networking.md
│ │ │ │ │ ├── networking_api.md
│ │ │ │ │ └── plugins_network.md
│ │ │ │ ├── graph/
│ │ │ │ │ ├── export.go
│ │ │ │ │ ├── graph.go
│ │ │ │ │ ├── graph_test.go
│ │ │ │ │ ├── graph_unix.go
│ │ │ │ │ ├── graph_windows.go
│ │ │ │ │ ├── history.go
│ │ │ │ │ ├── import.go
│ │ │ │ │ ├── list.go
│ │ │ │ │ ├── load.go
│ │ │ │ │ ├── load_unsupported.go
│ │ │ │ │ ├── mutex.go
│ │ │ │ │ ├── pools_test.go
│ │ │ │ │ ├── pull.go
│ │ │ │ │ ├── pull_v1.go
│ │ │ │ │ ├── pull_v2.go
│ │ │ │ │ ├── push.go
│ │ │ │ │ ├── push_v1.go
│ │ │ │ │ ├── push_v2.go
│ │ │ │ │ ├── registry.go
│ │ │ │ │ ├── service.go
│ │ │ │ │ ├── tags/
│ │ │ │ │ │ ├── tags.go
│ │ │ │ │ │ └── tags_unit_test.go
│ │ │ │ │ ├── tags.go
│ │ │ │ │ └── tags_unit_test.go
│ │ │ │ ├── hack/
│ │ │ │ │ ├── .vendor-helpers.sh
│ │ │ │ │ ├── dind
│ │ │ │ │ ├── generate-authors.sh
│ │ │ │ │ ├── install.sh
│ │ │ │ │ ├── make/
│ │ │ │ │ │ ├── .build-deb/
│ │ │ │ │ │ │ ├── compat
│ │ │ │ │ │ │ ├── control
│ │ │ │ │ │ │ ├── docker-engine.bash-completion
│ │ │ │ │ │ │ ├── docker-engine.install
│ │ │ │ │ │ │ ├── docker-engine.manpages
│ │ │ │ │ │ │ ├── docker-engine.postinst
│ │ │ │ │ │ │ ├── docs
│ │ │ │ │ │ │ └── rules
│ │ │ │ │ │ ├── .build-rpm/
│ │ │ │ │ │ │ └── docker-engine.spec
│ │ │ │ │ │ ├── .dockerinit
│ │ │ │ │ │ ├── .dockerinit-gccgo
│ │ │ │ │ │ ├── .ensure-emptyfs
│ │ │ │ │ │ ├── .ensure-frozen-images
│ │ │ │ │ │ ├── .ensure-httpserver
│ │ │ │ │ │ ├── .go-autogen
│ │ │ │ │ │ ├── .go-compile-test-dir
│ │ │ │ │ │ ├── .integration-daemon-setup
│ │ │ │ │ │ ├── .integration-daemon-start
│ │ │ │ │ │ ├── .integration-daemon-stop
│ │ │ │ │ │ ├── .resources-windows/
│ │ │ │ │ │ │ └── docker.exe.manifest
│ │ │ │ │ │ ├── .validate
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── binary
│ │ │ │ │ │ ├── build-deb
│ │ │ │ │ │ ├── build-rpm
│ │ │ │ │ │ ├── cover
│ │ │ │ │ │ ├── cross
│ │ │ │ │ │ ├── dynbinary
│ │ │ │ │ │ ├── dyngccgo
│ │ │ │ │ │ ├── gccgo
│ │ │ │ │ │ ├── release-deb
│ │ │ │ │ │ ├── release-rpm
│ │ │ │ │ │ ├── sign-repos
│ │ │ │ │ │ ├── test-docker-py
│ │ │ │ │ │ ├── test-integration-cli
│ │ │ │ │ │ ├── test-unit
│ │ │ │ │ │ ├── tgz
│ │ │ │ │ │ ├── ubuntu
│ │ │ │ │ │ ├── validate-dco
│ │ │ │ │ │ ├── validate-gofmt
│ │ │ │ │ │ ├── validate-lint
│ │ │ │ │ │ ├── validate-pkg
│ │ │ │ │ │ ├── validate-test
│ │ │ │ │ │ ├── validate-toml
│ │ │ │ │ │ └── validate-vet
│ │ │ │ │ ├── make.sh
│ │ │ │ │ ├── release.sh
│ │ │ │ │ └── vendor.sh
│ │ │ │ ├── image/
│ │ │ │ │ ├── image.go
│ │ │ │ │ └── spec/
│ │ │ │ │ └── v1.md
│ │ │ │ ├── integration-cli/
│ │ │ │ │ ├── check_test.go
│ │ │ │ │ ├── docker_api_attach_test.go
│ │ │ │ │ ├── docker_api_containers_test.go
│ │ │ │ │ ├── docker_api_events_test.go
│ │ │ │ │ ├── docker_api_exec_resize_test.go
│ │ │ │ │ ├── docker_api_exec_test.go
│ │ │ │ │ ├── docker_api_images_test.go
│ │ │ │ │ ├── docker_api_info_test.go
│ │ │ │ │ ├── docker_api_inspect_test.go
│ │ │ │ │ ├── docker_api_logs_test.go
│ │ │ │ │ ├── docker_api_network_test.go
│ │ │ │ │ ├── docker_api_resize_test.go
│ │ │ │ │ ├── docker_api_service_test.go
│ │ │ │ │ ├── docker_api_stats_test.go
│ │ │ │ │ ├── docker_api_test.go
│ │ │ │ │ ├── docker_api_version_test.go
│ │ │ │ │ ├── docker_cli_attach_test.go
│ │ │ │ │ ├── docker_cli_attach_unix_test.go
│ │ │ │ │ ├── docker_cli_build_test.go
│ │ │ │ │ ├── docker_cli_build_unix_test.go
│ │ │ │ │ ├── docker_cli_by_digest_test.go
│ │ │ │ │ ├── docker_cli_commit_test.go
│ │ │ │ │ ├── docker_cli_config_test.go
│ │ │ │ │ ├── docker_cli_cp_from_container_test.go
│ │ │ │ │ ├── docker_cli_cp_test.go
│ │ │ │ │ ├── docker_cli_cp_to_container_test.go
│ │ │ │ │ ├── docker_cli_cp_utils.go
│ │ │ │ │ ├── docker_cli_create_test.go
│ │ │ │ │ ├── docker_cli_daemon_experimental_test.go
│ │ │ │ │ ├── docker_cli_daemon_test.go
│ │ │ │ │ ├── docker_cli_diff_test.go
│ │ │ │ │ ├── docker_cli_events_test.go
│ │ │ │ │ ├── docker_cli_events_unix_test.go
│ │ │ │ │ ├── docker_cli_exec_test.go
│ │ │ │ │ ├── docker_cli_exec_unix_test.go
│ │ │ │ │ ├── docker_cli_experimental_test.go
│ │ │ │ │ ├── docker_cli_export_import_test.go
│ │ │ │ │ ├── docker_cli_help_test.go
│ │ │ │ │ ├── docker_cli_history_test.go
│ │ │ │ │ ├── docker_cli_images_test.go
│ │ │ │ │ ├── docker_cli_import_test.go
│ │ │ │ │ ├── docker_cli_info_test.go
│ │ │ │ │ ├── docker_cli_inspect_experimental_test.go
│ │ │ │ │ ├── docker_cli_inspect_test.go
│ │ │ │ │ ├── docker_cli_kill_test.go
│ │ │ │ │ ├── docker_cli_links_test.go
│ │ │ │ │ ├── docker_cli_links_unix_test.go
│ │ │ │ │ ├── docker_cli_login_test.go
│ │ │ │ │ ├── docker_cli_logs_test.go
│ │ │ │ │ ├── docker_cli_nat_test.go
│ │ │ │ │ ├── docker_cli_network_test.go
│ │ │ │ │ ├── docker_cli_pause_test.go
│ │ │ │ │ ├── docker_cli_port_test.go
│ │ │ │ │ ├── docker_cli_port_unix_test.go
│ │ │ │ │ ├── docker_cli_proxy_test.go
│ │ │ │ │ ├── docker_cli_ps_test.go
│ │ │ │ │ ├── docker_cli_pull_test.go
│ │ │ │ │ ├── docker_cli_push_test.go
│ │ │ │ │ ├── docker_cli_rename_test.go
│ │ │ │ │ ├── docker_cli_restart_test.go
│ │ │ │ │ ├── docker_cli_rm_test.go
│ │ │ │ │ ├── docker_cli_rmi_test.go
│ │ │ │ │ ├── docker_cli_run_test.go
│ │ │ │ │ ├── docker_cli_run_unix_test.go
│ │ │ │ │ ├── docker_cli_save_load_test.go
│ │ │ │ │ ├── docker_cli_save_load_unix_test.go
│ │ │ │ │ ├── docker_cli_search_test.go
│ │ │ │ │ ├── docker_cli_service_test.go
│ │ │ │ │ ├── docker_cli_start_test.go
│ │ │ │ │ ├── docker_cli_start_volume_driver_unix_test.go
│ │ │ │ │ ├── docker_cli_stats_test.go
│ │ │ │ │ ├── docker_cli_tag_test.go
│ │ │ │ │ ├── docker_cli_top_test.go
│ │ │ │ │ ├── docker_cli_version_test.go
│ │ │ │ │ ├── docker_cli_wait_test.go
│ │ │ │ │ ├── docker_test_vars.go
│ │ │ │ │ ├── docker_test_vars_cli.go
│ │ │ │ │ ├── docker_test_vars_daemon.go
│ │ │ │ │ ├── docker_utils.go
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ └── https/
│ │ │ │ │ │ ├── ca.pem
│ │ │ │ │ │ ├── client-cert.pem
│ │ │ │ │ │ ├── client-key.pem
│ │ │ │ │ │ ├── client-rogue-cert.pem
│ │ │ │ │ │ ├── client-rogue-key.pem
│ │ │ │ │ │ ├── server-cert.pem
│ │ │ │ │ │ ├── server-key.pem
│ │ │ │ │ │ ├── server-rogue-cert.pem
│ │ │ │ │ │ └── server-rogue-key.pem
│ │ │ │ │ ├── registry.go
│ │ │ │ │ ├── requirements.go
│ │ │ │ │ ├── requirements_unix.go
│ │ │ │ │ ├── test_vars_exec.go
│ │ │ │ │ ├── test_vars_noexec.go
│ │ │ │ │ ├── test_vars_unix.go
│ │ │ │ │ ├── test_vars_windows.go
│ │ │ │ │ └── utils.go
│ │ │ │ ├── links/
│ │ │ │ │ ├── links.go
│ │ │ │ │ └── links_test.go
│ │ │ │ ├── man/
│ │ │ │ │ ├── Dockerfile
│ │ │ │ │ ├── Dockerfile.5.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── docker-attach.1.md
│ │ │ │ │ ├── docker-build.1.md
│ │ │ │ │ ├── docker-commit.1.md
│ │ │ │ │ ├── docker-cp.1.md
│ │ │ │ │ ├── docker-create.1.md
│ │ │ │ │ ├── docker-diff.1.md
│ │ │ │ │ ├── docker-events.1.md
│ │ │ │ │ ├── docker-exec.1.md
│ │ │ │ │ ├── docker-export.1.md
│ │ │ │ │ ├── docker-history.1.md
│ │ │ │ │ ├── docker-images.1.md
│ │ │ │ │ ├── docker-import.1.md
│ │ │ │ │ ├── docker-info.1.md
│ │ │ │ │ ├── docker-inspect.1.md
│ │ │ │ │ ├── docker-kill.1.md
│ │ │ │ │ ├── docker-load.1.md
│ │ │ │ │ ├── docker-login.1.md
│ │ │ │ │ ├── docker-logout.1.md
│ │ │ │ │ ├── docker-logs.1.md
│ │ │ │ │ ├── docker-pause.1.md
│ │ │ │ │ ├── docker-port.1.md
│ │ │ │ │ ├── docker-ps.1.md
│ │ │ │ │ ├── docker-pull.1.md
│ │ │ │ │ ├── docker-push.1.md
│ │ │ │ │ ├── docker-rename.1.md
│ │ │ │ │ ├── docker-restart.1.md
│ │ │ │ │ ├── docker-rm.1.md
│ │ │ │ │ ├── docker-rmi.1.md
│ │ │ │ │ ├── docker-run.1.md
│ │ │ │ │ ├── docker-save.1.md
│ │ │ │ │ ├── docker-search.1.md
│ │ │ │ │ ├── docker-start.1.md
│ │ │ │ │ ├── docker-stats.1.md
│ │ │ │ │ ├── docker-stop.1.md
│ │ │ │ │ ├── docker-tag.1.md
│ │ │ │ │ ├── docker-top.1.md
│ │ │ │ │ ├── docker-unpause.1.md
│ │ │ │ │ ├── docker-version.1.md
│ │ │ │ │ ├── docker-wait.1.md
│ │ │ │ │ ├── docker.1.md
│ │ │ │ │ └── md2man-all.sh
│ │ │ │ ├── opts/
│ │ │ │ │ ├── envfile.go
│ │ │ │ │ ├── envfile_test.go
│ │ │ │ │ ├── ip.go
│ │ │ │ │ ├── ip_test.go
│ │ │ │ │ ├── opts.go
│ │ │ │ │ ├── opts_test.go
│ │ │ │ │ ├── ulimit.go
│ │ │ │ │ └── ulimit_test.go
│ │ │ │ ├── pkg/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── archive/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── archive.go
│ │ │ │ │ │ ├── archive_test.go
│ │ │ │ │ │ ├── archive_unix.go
│ │ │ │ │ │ ├── archive_unix_test.go
│ │ │ │ │ │ ├── archive_windows.go
│ │ │ │ │ │ ├── archive_windows_test.go
│ │ │ │ │ │ ├── changes.go
│ │ │ │ │ │ ├── changes_linux.go
│ │ │ │ │ │ ├── changes_other.go
│ │ │ │ │ │ ├── changes_posix_test.go
│ │ │ │ │ │ ├── changes_test.go
│ │ │ │ │ │ ├── changes_unix.go
│ │ │ │ │ │ ├── changes_windows.go
│ │ │ │ │ │ ├── copy.go
│ │ │ │ │ │ ├── copy_test.go
│ │ │ │ │ │ ├── diff.go
│ │ │ │ │ │ ├── diff_test.go
│ │ │ │ │ │ ├── example_changes.go
│ │ │ │ │ │ ├── time_linux.go
│ │ │ │ │ │ ├── time_unsupported.go
│ │ │ │ │ │ ├── utils_test.go
│ │ │ │ │ │ ├── wrap.go
│ │ │ │ │ │ └── wrap_test.go
│ │ │ │ │ ├── broadcastwriter/
│ │ │ │ │ │ ├── broadcastwriter.go
│ │ │ │ │ │ └── broadcastwriter_test.go
│ │ │ │ │ ├── chrootarchive/
│ │ │ │ │ │ ├── archive.go
│ │ │ │ │ │ ├── archive_test.go
│ │ │ │ │ │ ├── archive_unix.go
│ │ │ │ │ │ ├── archive_windows.go
│ │ │ │ │ │ ├── diff_unix.go
│ │ │ │ │ │ ├── diff_windows.go
│ │ │ │ │ │ ├── init_unix.go
│ │ │ │ │ │ └── init_windows.go
│ │ │ │ │ ├── devicemapper/
│ │ │ │ │ │ ├── attach_loopback.go
│ │ │ │ │ │ ├── devmapper.go
│ │ │ │ │ │ ├── devmapper_log.go
│ │ │ │ │ │ ├── devmapper_wrapper.go
│ │ │ │ │ │ ├── devmapper_wrapper_deferred_remove.go
│ │ │ │ │ │ ├── devmapper_wrapper_no_deferred_remove.go
│ │ │ │ │ │ ├── ioctl.go
│ │ │ │ │ │ └── log.go
│ │ │ │ │ ├── directory/
│ │ │ │ │ │ ├── directory_linux.go
│ │ │ │ │ │ ├── directory_test.go
│ │ │ │ │ │ └── directory_windows.go
│ │ │ │ │ ├── fileutils/
│ │ │ │ │ │ ├── fileutils.go
│ │ │ │ │ │ └── fileutils_test.go
│ │ │ │ │ ├── graphdb/
│ │ │ │ │ │ ├── conn_sqlite3.go
│ │ │ │ │ │ ├── conn_sqlite3_unix.go
│ │ │ │ │ │ ├── conn_sqlite3_windows.go
│ │ │ │ │ │ ├── conn_unsupported.go
│ │ │ │ │ │ ├── graphdb.go
│ │ │ │ │ │ ├── graphdb_test.go
│ │ │ │ │ │ ├── sort.go
│ │ │ │ │ │ ├── sort_test.go
│ │ │ │ │ │ └── utils.go
│ │ │ │ │ ├── homedir/
│ │ │ │ │ │ ├── homedir.go
│ │ │ │ │ │ └── homedir_test.go
│ │ │ │ │ ├── httputils/
│ │ │ │ │ │ ├── httputils.go
│ │ │ │ │ │ ├── mimetype.go
│ │ │ │ │ │ ├── resumablerequestreader.go
│ │ │ │ │ │ └── resumablerequestreader_test.go
│ │ │ │ │ ├── ioutils/
│ │ │ │ │ │ ├── fmt.go
│ │ │ │ │ │ ├── fmt_test.go
│ │ │ │ │ │ ├── readers.go
│ │ │ │ │ │ ├── readers_test.go
│ │ │ │ │ │ ├── scheduler.go
│ │ │ │ │ │ ├── scheduler_gccgo.go
│ │ │ │ │ │ ├── writeflusher.go
│ │ │ │ │ │ ├── writers.go
│ │ │ │ │ │ └── writers_test.go
│ │ │ │ │ ├── jsonlog/
│ │ │ │ │ │ ├── jsonlog.go
│ │ │ │ │ │ ├── jsonlog_marshalling.go
│ │ │ │ │ │ ├── jsonlog_marshalling_test.go
│ │ │ │ │ │ ├── jsonlog_test.go
│ │ │ │ │ │ ├── jsonlogbytes.go
│ │ │ │ │ │ └── jsonlogbytes_test.go
│ │ │ │ │ ├── jsonmessage/
│ │ │ │ │ │ ├── jsonmessage.go
│ │ │ │ │ │ └── jsonmessage_test.go
│ │ │ │ │ ├── listenbuffer/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── buffer.go
│ │ │ │ │ │ └── listen_buffer_test.go
│ │ │ │ │ ├── mflag/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── example/
│ │ │ │ │ │ │ └── example.go
│ │ │ │ │ │ ├── flag.go
│ │ │ │ │ │ └── flag_test.go
│ │ │ │ │ ├── mount/
│ │ │ │ │ │ ├── flags.go
│ │ │ │ │ │ ├── flags_freebsd.go
│ │ │ │ │ │ ├── flags_linux.go
│ │ │ │ │ │ ├── flags_unsupported.go
│ │ │ │ │ │ ├── mount.go
│ │ │ │ │ │ ├── mount_test.go
│ │ │ │ │ │ ├── mounter_freebsd.go
│ │ │ │ │ │ ├── mounter_linux.go
│ │ │ │ │ │ ├── mounter_unsupported.go
│ │ │ │ │ │ ├── mountinfo.go
│ │ │ │ │ │ ├── mountinfo_freebsd.go
│ │ │ │ │ │ ├── mountinfo_linux.go
│ │ │ │ │ │ ├── mountinfo_linux_test.go
│ │ │ │ │ │ ├── mountinfo_unsupported.go
│ │ │ │ │ │ ├── sharedsubtree_linux.go
│ │ │ │ │ │ └── sharedsubtree_linux_test.go
│ │ │ │ │ ├── namesgenerator/
│ │ │ │ │ │ ├── names-generator.go
│ │ │ │ │ │ └── names-generator_test.go
│ │ │ │ │ ├── nat/
│ │ │ │ │ │ ├── nat.go
│ │ │ │ │ │ ├── nat_test.go
│ │ │ │ │ │ ├── sort.go
│ │ │ │ │ │ └── sort_test.go
│ │ │ │ │ ├── parsers/
│ │ │ │ │ │ ├── filters/
│ │ │ │ │ │ │ ├── parse.go
│ │ │ │ │ │ │ └── parse_test.go
│ │ │ │ │ │ ├── kernel/
│ │ │ │ │ │ │ ├── kernel.go
│ │ │ │ │ │ │ ├── kernel_test.go
│ │ │ │ │ │ │ ├── kernel_windows.go
│ │ │ │ │ │ │ ├── uname_linux.go
│ │ │ │ │ │ │ └── uname_unsupported.go
│ │ │ │ │ │ ├── operatingsystem/
│ │ │ │ │ │ │ ├── operatingsystem_linux.go
│ │ │ │ │ │ │ ├── operatingsystem_test.go
│ │ │ │ │ │ │ └── operatingsystem_windows.go
│ │ │ │ │ │ ├── parsers.go
│ │ │ │ │ │ └── parsers_test.go
│ │ │ │ │ ├── pidfile/
│ │ │ │ │ │ ├── pidfile.go
│ │ │ │ │ │ └── pidfile_test.go
│ │ │ │ │ ├── plugins/
│ │ │ │ │ │ ├── client.go
│ │ │ │ │ │ ├── client_test.go
│ │ │ │ │ │ ├── discovery.go
│ │ │ │ │ │ ├── discovery_test.go
│ │ │ │ │ │ ├── pluginrpc-gen/
│ │ │ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ │ │ └── foo.go
│ │ │ │ │ │ │ ├── main.go
│ │ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ │ ├── parser_test.go
│ │ │ │ │ │ │ └── template.go
│ │ │ │ │ │ └── plugins.go
│ │ │ │ │ ├── pools/
│ │ │ │ │ │ ├── pools.go
│ │ │ │ │ │ └── pools_test.go
│ │ │ │ │ ├── progressreader/
│ │ │ │ │ │ ├── progressreader.go
│ │ │ │ │ │ └── progressreader_test.go
│ │ │ │ │ ├── promise/
│ │ │ │ │ │ └── promise.go
│ │ │ │ │ ├── proxy/
│ │ │ │ │ │ ├── network_proxy_test.go
│ │ │ │ │ │ ├── proxy.go
│ │ │ │ │ │ ├── stub_proxy.go
│ │ │ │ │ │ ├── tcp_proxy.go
│ │ │ │ │ │ └── udp_proxy.go
│ │ │ │ │ ├── pubsub/
│ │ │ │ │ │ ├── publisher.go
│ │ │ │ │ │ └── publisher_test.go
│ │ │ │ │ ├── random/
│ │ │ │ │ │ ├── random.go
│ │ │ │ │ │ └── random_test.go
│ │ │ │ │ ├── reexec/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── command_linux.go
│ │ │ │ │ │ ├── command_unsupported.go
│ │ │ │ │ │ ├── command_windows.go
│ │ │ │ │ │ └── reexec.go
│ │ │ │ │ ├── signal/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── signal.go
│ │ │ │ │ │ ├── signal_darwin.go
│ │ │ │ │ │ ├── signal_freebsd.go
│ │ │ │ │ │ ├── signal_linux.go
│ │ │ │ │ │ ├── signal_unix.go
│ │ │ │ │ │ ├── signal_unsupported.go
│ │ │ │ │ │ ├── signal_windows.go
│ │ │ │ │ │ └── trap.go
│ │ │ │ │ ├── sockets/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── tcp_socket.go
│ │ │ │ │ │ └── unix_socket.go
│ │ │ │ │ ├── stdcopy/
│ │ │ │ │ │ ├── stdcopy.go
│ │ │ │ │ │ └── stdcopy_test.go
│ │ │ │ │ ├── streamformatter/
│ │ │ │ │ │ ├── streamformatter.go
│ │ │ │ │ │ └── streamformatter_test.go
│ │ │ │ │ ├── stringid/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── stringid.go
│ │ │ │ │ │ └── stringid_test.go
│ │ │ │ │ ├── stringutils/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── stringutils.go
│ │ │ │ │ │ └── stringutils_test.go
│ │ │ │ │ ├── symlink/
│ │ │ │ │ │ ├── LICENSE.APACHE
│ │ │ │ │ │ ├── LICENSE.BSD
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── fs.go
│ │ │ │ │ │ └── fs_test.go
│ │ │ │ │ ├── sysinfo/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── sysinfo.go
│ │ │ │ │ │ ├── sysinfo_linux.go
│ │ │ │ │ │ ├── sysinfo_linux_test.go
│ │ │ │ │ │ └── sysinfo_windows.go
│ │ │ │ │ ├── system/
│ │ │ │ │ │ ├── errors.go
│ │ │ │ │ │ ├── events_windows.go
│ │ │ │ │ │ ├── filesys.go
│ │ │ │ │ │ ├── filesys_windows.go
│ │ │ │ │ │ ├── lstat.go
│ │ │ │ │ │ ├── lstat_test.go
│ │ │ │ │ │ ├── lstat_windows.go
│ │ │ │ │ │ ├── meminfo.go
│ │ │ │ │ │ ├── meminfo_linux.go
│ │ │ │ │ │ ├── meminfo_linux_test.go
│ │ │ │ │ │ ├── meminfo_unsupported.go
│ │ │ │ │ │ ├── meminfo_windows.go
│ │ │ │ │ │ ├── mknod.go
│ │ │ │ │ │ ├── mknod_windows.go
│ │ │ │ │ │ ├── stat.go
│ │ │ │ │ │ ├── stat_linux.go
│ │ │ │ │ │ ├── stat_test.go
│ │ │ │ │ │ ├── stat_unsupported.go
│ │ │ │ │ │ ├── stat_windows.go
│ │ │ │ │ │ ├── umask.go
│ │ │ │ │ │ ├── umask_windows.go
│ │ │ │ │ │ ├── utimes_darwin.go
│ │ │ │ │ │ ├── utimes_freebsd.go
│ │ │ │ │ │ ├── utimes_linux.go
│ │ │ │ │ │ ├── utimes_test.go
│ │ │ │ │ │ ├── utimes_unsupported.go
│ │ │ │ │ │ ├── xattrs_linux.go
│ │ │ │ │ │ └── xattrs_unsupported.go
│ │ │ │ │ ├── systemd/
│ │ │ │ │ │ ├── booted.go
│ │ │ │ │ │ ├── listendfd.go
│ │ │ │ │ │ └── sd_notify.go
│ │ │ │ │ ├── tailfile/
│ │ │ │ │ │ ├── tailfile.go
│ │ │ │ │ │ └── tailfile_test.go
│ │ │ │ │ ├── tarsum/
│ │ │ │ │ │ ├── builder_context.go
│ │ │ │ │ │ ├── builder_context_test.go
│ │ │ │ │ │ ├── fileinfosums.go
│ │ │ │ │ │ ├── fileinfosums_test.go
│ │ │ │ │ │ ├── tarsum.go
│ │ │ │ │ │ ├── tarsum_spec.md
│ │ │ │ │ │ ├── tarsum_test.go
│ │ │ │ │ │ ├── testdata/
│ │ │ │ │ │ │ ├── 46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457/
│ │ │ │ │ │ │ │ └── json
│ │ │ │ │ │ │ ├── 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/
│ │ │ │ │ │ │ │ └── json
│ │ │ │ │ │ │ └── xattr/
│ │ │ │ │ │ │ └── json
│ │ │ │ │ │ ├── versioning.go
│ │ │ │ │ │ ├── versioning_test.go
│ │ │ │ │ │ └── writercloser.go
│ │ │ │ │ ├── term/
│ │ │ │ │ │ ├── tc_linux_cgo.go
│ │ │ │ │ │ ├── tc_other.go
│ │ │ │ │ │ ├── term.go
│ │ │ │ │ │ ├── term_windows.go
│ │ │ │ │ │ ├── termios_darwin.go
│ │ │ │ │ │ ├── termios_freebsd.go
│ │ │ │ │ │ ├── termios_linux.go
│ │ │ │ │ │ └── winconsole/
│ │ │ │ │ │ ├── console_windows.go
│ │ │ │ │ │ ├── console_windows_test.go
│ │ │ │ │ │ ├── term_emulator.go
│ │ │ │ │ │ └── term_emulator_test.go
│ │ │ │ │ ├── timeoutconn/
│ │ │ │ │ │ ├── timeoutconn.go
│ │ │ │ │ │ └── timeoutconn_test.go
│ │ │ │ │ ├── timeutils/
│ │ │ │ │ │ ├── json.go
│ │ │ │ │ │ ├── json_test.go
│ │ │ │ │ │ ├── utils.go
│ │ │ │ │ │ └── utils_test.go
│ │ │ │ │ ├── tlsconfig/
│ │ │ │ │ │ └── config.go
│ │ │ │ │ ├── truncindex/
│ │ │ │ │ │ ├── truncindex.go
│ │ │ │ │ │ └── truncindex_test.go
│ │ │ │ │ ├── ulimit/
│ │ │ │ │ │ ├── ulimit.go
│ │ │ │ │ │ └── ulimit_test.go
│ │ │ │ │ ├── units/
│ │ │ │ │ │ ├── duration.go
│ │ │ │ │ │ ├── duration_test.go
│ │ │ │ │ │ ├── size.go
│ │ │ │ │ │ └── size_test.go
│ │ │ │ │ ├── urlutil/
│ │ │ │ │ │ ├── urlutil.go
│ │ │ │ │ │ └── urlutil_test.go
│ │ │ │ │ ├── useragent/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── useragent.go
│ │ │ │ │ │ └── useragent_test.go
│ │ │ │ │ └── version/
│ │ │ │ │ ├── version.go
│ │ │ │ │ └── version_test.go
│ │ │ │ ├── project/
│ │ │ │ │ ├── GOVERNANCE.md
│ │ │ │ │ ├── IRC-ADMINISTRATION.md
│ │ │ │ │ ├── ISSUE-TRIAGE.md
│ │ │ │ │ ├── PACKAGERS.md
│ │ │ │ │ ├── PRINCIPLES.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── RELEASE-CHECKLIST.md
│ │ │ │ │ ├── REVIEWING.md
│ │ │ │ │ └── TOOLS.md
│ │ │ │ ├── registry/
│ │ │ │ │ ├── auth.go
│ │ │ │ │ ├── auth_test.go
│ │ │ │ │ ├── authchallenge.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_test.go
│ │ │ │ │ ├── endpoint.go
│ │ │ │ │ ├── endpoint_test.go
│ │ │ │ │ ├── registry.go
│ │ │ │ │ ├── registry_mock_test.go
│ │ │ │ │ ├── registry_test.go
│ │ │ │ │ ├── service.go
│ │ │ │ │ ├── session.go
│ │ │ │ │ ├── token.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── runconfig/
│ │ │ │ │ ├── compare.go
│ │ │ │ │ ├── compare_test.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_test.go
│ │ │ │ │ ├── exec.go
│ │ │ │ │ ├── exec_test.go
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ ├── container_config_1_14.json
│ │ │ │ │ │ ├── container_config_1_17.json
│ │ │ │ │ │ ├── container_config_1_19.json
│ │ │ │ │ │ ├── container_hostconfig_1_14.json
│ │ │ │ │ │ ├── container_hostconfig_1_19.json
│ │ │ │ │ │ ├── valid.env
│ │ │ │ │ │ └── valid.label
│ │ │ │ │ ├── hostconfig.go
│ │ │ │ │ ├── hostconfig_test.go
│ │ │ │ │ ├── hostconfig_unix.go
│ │ │ │ │ ├── hostconfig_windows.go
│ │ │ │ │ ├── merge.go
│ │ │ │ │ ├── merge_test.go
│ │ │ │ │ ├── parse.go
│ │ │ │ │ ├── parse_experimental.go
│ │ │ │ │ ├── parse_stub.go
│ │ │ │ │ ├── parse_test.go
│ │ │ │ │ ├── parse_unix.go
│ │ │ │ │ └── parse_windows.go
│ │ │ │ ├── trust/
│ │ │ │ │ ├── service.go
│ │ │ │ │ └── trusts.go
│ │ │ │ ├── utils/
│ │ │ │ │ ├── experimental.go
│ │ │ │ │ ├── git.go
│ │ │ │ │ ├── git_test.go
│ │ │ │ │ ├── stubs.go
│ │ │ │ │ ├── utils.go
│ │ │ │ │ └── utils_test.go
│ │ │ │ └── volume/
│ │ │ │ ├── drivers/
│ │ │ │ │ ├── adapter.go
│ │ │ │ │ ├── api.go
│ │ │ │ │ ├── extpoint.go
│ │ │ │ │ ├── proxy.go
│ │ │ │ │ └── proxy_test.go
│ │ │ │ ├── local/
│ │ │ │ │ └── local.go
│ │ │ │ └── volume.go
│ │ │ ├── go-units/
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── LICENSE.code
│ │ │ │ ├── LICENSE.docs
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── README.md
│ │ │ │ ├── circle.yml
│ │ │ │ ├── duration.go
│ │ │ │ ├── duration_test.go
│ │ │ │ ├── size.go
│ │ │ │ ├── size_test.go
│ │ │ │ ├── ulimit.go
│ │ │ │ └── ulimit_test.go
│ │ │ └── libcontainer/
│ │ │ ├── .gitignore
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── Dockerfile
│ │ │ ├── LICENSE
│ │ │ ├── MAINTAINERS
│ │ │ ├── MAINTAINERS_GUIDE.md
│ │ │ ├── Makefile
│ │ │ ├── NOTICE
│ │ │ ├── PRINCIPLES.md
│ │ │ ├── README.md
│ │ │ ├── ROADMAP.md
│ │ │ ├── SPEC.md
│ │ │ ├── apparmor/
│ │ │ │ ├── apparmor.go
│ │ │ │ ├── apparmor_disabled.go
│ │ │ │ ├── gen.go
│ │ │ │ └── setup.go
│ │ │ ├── capabilities_linux.go
│ │ │ ├── cgroups/
│ │ │ │ ├── cgroups.go
│ │ │ │ ├── cgroups_test.go
│ │ │ │ ├── cgroups_unsupported.go
│ │ │ │ ├── fs/
│ │ │ │ │ ├── apply_raw.go
│ │ │ │ │ ├── blkio.go
│ │ │ │ │ ├── blkio_test.go
│ │ │ │ │ ├── cpu.go
│ │ │ │ │ ├── cpu_test.go
│ │ │ │ │ ├── cpuacct.go
│ │ │ │ │ ├── cpuset.go
│ │ │ │ │ ├── cpuset_test.go
│ │ │ │ │ ├── devices.go
│ │ │ │ │ ├── devices_test.go
│ │ │ │ │ ├── freezer.go
│ │ │ │ │ ├── freezer_test.go
│ │ │ │ │ ├── fs_unsupported.go
│ │ │ │ │ ├── hugetlb.go
│ │ │ │ │ ├── hugetlb_test.go
│ │ │ │ │ ├── memory.go
│ │ │ │ │ ├── memory_test.go
│ │ │ │ │ ├── net_cls.go
│ │ │ │ │ ├── net_cls_test.go
│ │ │ │ │ ├── net_prio.go
│ │ │ │ │ ├── net_prio_test.go
│ │ │ │ │ ├── perf_event.go
│ │ │ │ │ ├── stats_util_test.go
│ │ │ │ │ ├── util_test.go
│ │ │ │ │ ├── utils.go
│ │ │ │ │ └── utils_test.go
│ │ │ │ ├── stats.go
│ │ │ │ ├── systemd/
│ │ │ │ │ ├── apply_nosystemd.go
│ │ │ │ │ └── apply_systemd.go
│ │ │ │ └── utils.go
│ │ │ ├── configs/
│ │ │ │ ├── cgroup.go
│ │ │ │ ├── config.go
│ │ │ │ ├── config_test.go
│ │ │ │ ├── config_unix.go
│ │ │ │ ├── device.go
│ │ │ │ ├── device_defaults.go
│ │ │ │ ├── hugepage_limit.go
│ │ │ │ ├── interface_priority_map.go
│ │ │ │ ├── mount.go
│ │ │ │ ├── namespaces.go
│ │ │ │ ├── namespaces_syscall.go
│ │ │ │ ├── namespaces_syscall_unsupported.go
│ │ │ │ ├── namespaces_unix.go
│ │ │ │ ├── namespaces_windows.go
│ │ │ │ ├── network.go
│ │ │ │ └── validate/
│ │ │ │ └── config.go
│ │ │ ├── console.go
│ │ │ ├── console_freebsd.go
│ │ │ ├── console_linux.go
│ │ │ ├── console_windows.go
│ │ │ ├── container.go
│ │ │ ├── container_linux.go
│ │ │ ├── container_linux_test.go
│ │ │ ├── container_nouserns_linux.go
│ │ │ ├── container_userns_linux.go
│ │ │ ├── criu_opts.go
│ │ │ ├── criurpc/
│ │ │ │ ├── Makefile
│ │ │ │ ├── criurpc.pb.go
│ │ │ │ └── criurpc.proto
│ │ │ ├── devices/
│ │ │ │ ├── devices_test.go
│ │ │ │ ├── devices_unix.go
│ │ │ │ ├── devices_windows.go
│ │ │ │ └── number.go
│ │ │ ├── docs/
│ │ │ │ └── man/
│ │ │ │ └── nsinit.1.md
│ │ │ ├── error.go
│ │ │ ├── error_test.go
│ │ │ ├── factory.go
│ │ │ ├── factory_linux.go
│ │ │ ├── factory_linux_test.go
│ │ │ ├── generic_error.go
│ │ │ ├── generic_error_test.go
│ │ │ ├── hack/
│ │ │ │ └── validate.sh
│ │ │ ├── init_linux.go
│ │ │ ├── integration/
│ │ │ │ ├── checkpoint_test.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── exec_test.go
│ │ │ │ ├── execin_test.go
│ │ │ │ ├── init_test.go
│ │ │ │ ├── template_test.go
│ │ │ │ └── utils_test.go
│ │ │ ├── label/
│ │ │ │ ├── label.go
│ │ │ │ ├── label_selinux.go
│ │ │ │ └── label_selinux_test.go
│ │ │ ├── netlink/
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── netlink.go
│ │ │ │ ├── netlink_linux.go
│ │ │ │ ├── netlink_linux_armppc64.go
│ │ │ │ ├── netlink_linux_notarm.go
│ │ │ │ ├── netlink_linux_test.go
│ │ │ │ └── netlink_unsupported.go
│ │ │ ├── network_linux.go
│ │ │ ├── notify_linux.go
│ │ │ ├── notify_linux_test.go
│ │ │ ├── nsenter/
│ │ │ │ ├── README.md
│ │ │ │ ├── nsenter.go
│ │ │ │ ├── nsenter_gccgo.go
│ │ │ │ ├── nsenter_test.go
│ │ │ │ ├── nsenter_unsupported.go
│ │ │ │ └── nsexec.c
│ │ │ ├── nsinit/
│ │ │ │ ├── Makefile
│ │ │ │ ├── README.md
│ │ │ │ ├── checkpoint.go
│ │ │ │ ├── config.go
│ │ │ │ ├── exec.go
│ │ │ │ ├── init.go
│ │ │ │ ├── main.go
│ │ │ │ ├── oom.go
│ │ │ │ ├── pause.go
│ │ │ │ ├── restore.go
│ │ │ │ ├── security.go
│ │ │ │ ├── state.go
│ │ │ │ ├── stats.go
│ │ │ │ ├── tty.go
│ │ │ │ └── utils.go
│ │ │ ├── process.go
│ │ │ ├── process_linux.go
│ │ │ ├── restored_process.go
│ │ │ ├── rootfs_linux.go
│ │ │ ├── rootfs_linux_test.go
│ │ │ ├── sample_configs/
│ │ │ │ ├── README.md
│ │ │ │ ├── apparmor.json
│ │ │ │ ├── attach_to_bridge.json
│ │ │ │ ├── host-pid.json
│ │ │ │ ├── minimal.json
│ │ │ │ ├── selinux.json
│ │ │ │ └── userns.json
│ │ │ ├── seccomp/
│ │ │ │ ├── bpf.go
│ │ │ │ ├── context.go
│ │ │ │ ├── filter.go
│ │ │ │ ├── jump_amd64.go
│ │ │ │ └── seccomp.go
│ │ │ ├── selinux/
│ │ │ │ ├── selinux.go
│ │ │ │ └── selinux_test.go
│ │ │ ├── setns_init_linux.go
│ │ │ ├── stacktrace/
│ │ │ │ ├── capture.go
│ │ │ │ ├── capture_test.go
│ │ │ │ ├── frame.go
│ │ │ │ ├── frame_test.go
│ │ │ │ └── stacktrace.go
│ │ │ ├── standard_init_linux.go
│ │ │ ├── stats.go
│ │ │ ├── stats_freebsd.go
│ │ │ ├── stats_linux.go
│ │ │ ├── stats_windows.go
│ │ │ ├── system/
│ │ │ │ ├── linux.go
│ │ │ │ ├── proc.go
│ │ │ │ ├── setns_linux.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_linux_64.go
│ │ │ │ ├── syscall_linux_arm.go
│ │ │ │ ├── sysconfig.go
│ │ │ │ ├── sysconfig_notcgo.go
│ │ │ │ └── xattrs_linux.go
│ │ │ ├── update-vendor.sh
│ │ │ ├── user/
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── lookup.go
│ │ │ │ ├── lookup_unix.go
│ │ │ │ ├── lookup_unsupported.go
│ │ │ │ ├── user.go
│ │ │ │ └── user_test.go
│ │ │ ├── utils/
│ │ │ │ ├── utils.go
│ │ │ │ └── utils_test.go
│ │ │ └── xattr/
│ │ │ ├── errors.go
│ │ │ ├── xattr_linux.go
│ │ │ ├── xattr_test.go
│ │ │ └── xattr_unsupported.go
│ │ ├── emicklei/
│ │ │ └── go-restful/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGES.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── Srcfile
│ │ │ ├── bench_curly_test.go
│ │ │ ├── bench_test.go
│ │ │ ├── bench_test.sh
│ │ │ ├── compress.go
│ │ │ ├── compress_test.go
│ │ │ ├── compressor_cache.go
│ │ │ ├── compressor_pools.go
│ │ │ ├── compressors.go
│ │ │ ├── constants.go
│ │ │ ├── container.go
│ │ │ ├── container_test.go
│ │ │ ├── cors_filter.go
│ │ │ ├── cors_filter_test.go
│ │ │ ├── coverage.sh
│ │ │ ├── curly.go
│ │ │ ├── curly_route.go
│ │ │ ├── curly_test.go
│ │ │ ├── doc.go
│ │ │ ├── doc_examples_test.go
│ │ │ ├── entity_accessors.go
│ │ │ ├── entity_accessors_test.go
│ │ │ ├── examples/
│ │ │ │ ├── .goconvey
│ │ │ │ ├── google_app_engine/
│ │ │ │ │ ├── .goconvey
│ │ │ │ │ ├── app.yaml
│ │ │ │ │ ├── datastore/
│ │ │ │ │ │ ├── .goconvey
│ │ │ │ │ │ ├── app.yaml
│ │ │ │ │ │ └── main.go
│ │ │ │ │ ├── restful-appstats-integration.go
│ │ │ │ │ └── restful-user-service.go
│ │ │ │ ├── home.html
│ │ │ │ ├── restful-CORS-filter.go
│ │ │ │ ├── restful-NCSA-logging.go
│ │ │ │ ├── restful-basic-authentication.go
│ │ │ │ ├── restful-cpuprofiler-service.go
│ │ │ │ ├── restful-curly-router.go
│ │ │ │ ├── restful-encoding-filter.go
│ │ │ │ ├── restful-filters.go
│ │ │ │ ├── restful-form-handling.go
│ │ │ │ ├── restful-hello-world.go
│ │ │ │ ├── restful-html-template.go
│ │ │ │ ├── restful-multi-containers.go
│ │ │ │ ├── restful-options-filter.go
│ │ │ │ ├── restful-path-tail.go
│ │ │ │ ├── restful-pre-post-filters.go
│ │ │ │ ├── restful-resource-functions.go
│ │ │ │ ├── restful-route_test.go
│ │ │ │ ├── restful-routefunction_test.go
│ │ │ │ ├── restful-serve-static.go
│ │ │ │ ├── restful-swagger.go
│ │ │ │ ├── restful-user-resource.go
│ │ │ │ └── restful-user-service.go
│ │ │ ├── filter.go
│ │ │ ├── filter_test.go
│ │ │ ├── install.sh
│ │ │ ├── jsr311.go
│ │ │ ├── jsr311_test.go
│ │ │ ├── log/
│ │ │ │ └── log.go
│ │ │ ├── logger.go
│ │ │ ├── options_filter.go
│ │ │ ├── options_filter_test.go
│ │ │ ├── parameter.go
│ │ │ ├── path_expression.go
│ │ │ ├── path_expression_test.go
│ │ │ ├── request.go
│ │ │ ├── request_test.go
│ │ │ ├── response.go
│ │ │ ├── response_test.go
│ │ │ ├── route.go
│ │ │ ├── route_builder.go
│ │ │ ├── route_builder_test.go
│ │ │ ├── route_test.go
│ │ │ ├── router.go
│ │ │ ├── service_error.go
│ │ │ ├── swagger/
│ │ │ │ ├── CHANGES.md
│ │ │ │ ├── README.md
│ │ │ │ ├── api_declaration_list.go
│ │ │ │ ├── config.go
│ │ │ │ ├── model_builder.go
│ │ │ │ ├── model_builder_test.go
│ │ │ │ ├── model_list.go
│ │ │ │ ├── model_list_test.go
│ │ │ │ ├── model_property_ext.go
│ │ │ │ ├── model_property_ext_test.go
│ │ │ │ ├── model_property_list.go
│ │ │ │ ├── model_property_list_test.go
│ │ │ │ ├── ordered_route_map.go
│ │ │ │ ├── ordered_route_map_test.go
│ │ │ │ ├── postbuild_model_test.go
│ │ │ │ ├── swagger.go
│ │ │ │ ├── swagger_builder.go
│ │ │ │ ├── swagger_test.go
│ │ │ │ ├── swagger_webservice.go
│ │ │ │ ├── test_package/
│ │ │ │ │ └── struct.go
│ │ │ │ └── utils_test.go
│ │ │ ├── tracer_test.go
│ │ │ ├── web_service.go
│ │ │ ├── web_service_container.go
│ │ │ └── web_service_test.go
│ │ ├── evanphx/
│ │ │ └── json-patch/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── merge.go
│ │ │ ├── merge_test.go
│ │ │ ├── patch.go
│ │ │ └── patch_test.go
│ │ ├── fatih/
│ │ │ └── color/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE.md
│ │ │ ├── README.md
│ │ │ ├── color.go
│ │ │ ├── color_test.go
│ │ │ └── doc.go
│ │ ├── fsouza/
│ │ │ └── go-dockerclient/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── AUTHORS
│ │ │ ├── DOCKER-LICENSE
│ │ │ ├── LICENSE
│ │ │ ├── Makefile
│ │ │ ├── README.markdown
│ │ │ ├── auth.go
│ │ │ ├── auth_test.go
│ │ │ ├── build_test.go
│ │ │ ├── change.go
│ │ │ ├── change_test.go
│ │ │ ├── client.go
│ │ │ ├── client_test.go
│ │ │ ├── container.go
│ │ │ ├── container_test.go
│ │ │ ├── env.go
│ │ │ ├── env_test.go
│ │ │ ├── event.go
│ │ │ ├── event_test.go
│ │ │ ├── example_test.go
│ │ │ ├── exec.go
│ │ │ ├── exec_test.go
│ │ │ ├── external/
│ │ │ │ ├── github.com/
│ │ │ │ │ ├── Sirupsen/
│ │ │ │ │ │ └── logrus/
│ │ │ │ │ │ ├── CHANGELOG.md
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── entry.go
│ │ │ │ │ │ ├── entry_test.go
│ │ │ │ │ │ ├── exported.go
│ │ │ │ │ │ ├── formatter.go
│ │ │ │ │ │ ├── formatter_bench_test.go
│ │ │ │ │ │ ├── hook_test.go
│ │ │ │ │ │ ├── hooks.go
│ │ │ │ │ │ ├── json_formatter.go
│ │ │ │ │ │ ├── json_formatter_test.go
│ │ │ │ │ │ ├── logger.go
│ │ │ │ │ │ ├── logrus.go
│ │ │ │ │ │ ├── logrus_test.go
│ │ │ │ │ │ ├── terminal_bsd.go
│ │ │ │ │ │ ├── terminal_linux.go
│ │ │ │ │ │ ├── terminal_notwindows.go
│ │ │ │ │ │ ├── terminal_solaris.go
│ │ │ │ │ │ ├── terminal_windows.go
│ │ │ │ │ │ ├── text_formatter.go
│ │ │ │ │ │ ├── text_formatter_test.go
│ │ │ │ │ │ └── writer.go
│ │ │ │ │ ├── docker/
│ │ │ │ │ │ ├── docker/
│ │ │ │ │ │ │ ├── opts/
│ │ │ │ │ │ │ │ ├── envfile.go
│ │ │ │ │ │ │ │ ├── envfile_test.go
│ │ │ │ │ │ │ │ ├── hosts.go
│ │ │ │ │ │ │ │ ├── hosts_test.go
│ │ │ │ │ │ │ │ ├── hosts_unix.go
│ │ │ │ │ │ │ │ ├── hosts_windows.go
│ │ │ │ │ │ │ │ ├── ip.go
│ │ │ │ │ │ │ │ ├── ip_test.go
│ │ │ │ │ │ │ │ ├── opts.go
│ │ │ │ │ │ │ │ ├── opts_test.go
│ │ │ │ │ │ │ │ ├── opts_unix.go
│ │ │ │ │ │ │ │ └── opts_windows.go
│ │ │ │ │ │ │ └── pkg/
│ │ │ │ │ │ │ ├── archive/
│ │ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ │ ├── archive.go
│ │ │ │ │ │ │ │ ├── archive_test.go
│ │ │ │ │ │ │ │ ├── archive_unix.go
│ │ │ │ │ │ │ │ ├── archive_unix_test.go
│ │ │ │ │ │ │ │ ├── archive_windows.go
│ │ │ │ │ │ │ │ ├── archive_windows_test.go
│ │ │ │ │ │ │ │ ├── changes.go
│ │ │ │ │ │ │ │ ├── changes_linux.go
│ │ │ │ │ │ │ │ ├── changes_other.go
│ │ │ │ │ │ │ │ ├── changes_posix_test.go
│ │ │ │ │ │ │ │ ├── changes_test.go
│ │ │ │ │ │ │ │ ├── changes_unix.go
│ │ │ │ │ │ │ │ ├── changes_windows.go
│ │ │ │ │ │ │ │ ├── copy.go
│ │ │ │ │ │ │ │ ├── copy_test.go
│ │ │ │ │ │ │ │ ├── copy_unix.go
│ │ │ │ │ │ │ │ ├── copy_windows.go
│ │ │ │ │ │ │ │ ├── diff.go
│ │ │ │ │ │ │ │ ├── diff_test.go
│ │ │ │ │ │ │ │ ├── example_changes.go
│ │ │ │ │ │ │ │ ├── time_linux.go
│ │ │ │ │ │ │ │ ├── time_unsupported.go
│ │ │ │ │ │ │ │ ├── utils_test.go
│ │ │ │ │ │ │ │ ├── whiteouts.go
│ │ │ │ │ │ │ │ ├── wrap.go
│ │ │ │ │ │ │ │ └── wrap_test.go
│ │ │ │ │ │ │ ├── fileutils/
│ │ │ │ │ │ │ │ ├── fileutils.go
│ │ │ │ │ │ │ │ ├── fileutils_test.go
│ │ │ │ │ │ │ │ ├── fileutils_unix.go
│ │ │ │ │ │ │ │ └── fileutils_windows.go
│ │ │ │ │ │ │ ├── homedir/
│ │ │ │ │ │ │ │ ├── homedir.go
│ │ │ │ │ │ │ │ └── homedir_test.go
│ │ │ │ │ │ │ ├── idtools/
│ │ │ │ │ │ │ │ ├── idtools.go
│ │ │ │ │ │ │ │ ├── idtools_unix.go
│ │ │ │ │ │ │ │ ├── idtools_unix_test.go
│ │ │ │ │ │ │ │ ├── idtools_windows.go
│ │ │ │ │ │ │ │ ├── usergroupadd_linux.go
│ │ │ │ │ │ │ │ └── usergroupadd_unsupported.go
│ │ │ │ │ │ │ ├── ioutils/
│ │ │ │ │ │ │ │ ├── bytespipe.go
│ │ │ │ │ │ │ │ ├── bytespipe_test.go
│ │ │ │ │ │ │ │ ├── fmt.go
│ │ │ │ │ │ │ │ ├── fmt_test.go
│ │ │ │ │ │ │ │ ├── multireader.go
│ │ │ │ │ │ │ │ ├── multireader_test.go
│ │ │ │ │ │ │ │ ├── readers.go
│ │ │ │ │ │ │ │ ├── readers_test.go
│ │ │ │ │ │ │ │ ├── scheduler.go
│ │ │ │ │ │ │ │ ├── scheduler_gccgo.go
│ │ │ │ │ │ │ │ ├── temp_unix.go
│ │ │ │ │ │ │ │ ├── temp_windows.go
│ │ │ │ │ │ │ │ ├── writeflusher.go
│ │ │ │ │ │ │ │ ├── writers.go
│ │ │ │ │ │ │ │ └── writers_test.go
│ │ │ │ │ │ │ ├── longpath/
│ │ │ │ │ │ │ │ ├── longpath.go
│ │ │ │ │ │ │ │ └── longpath_test.go
│ │ │ │ │ │ │ ├── pools/
│ │ │ │ │ │ │ │ ├── pools.go
│ │ │ │ │ │ │ │ └── pools_test.go
│ │ │ │ │ │ │ ├── promise/
│ │ │ │ │ │ │ │ └── promise.go
│ │ │ │ │ │ │ ├── stdcopy/
│ │ │ │ │ │ │ │ ├── stdcopy.go
│ │ │ │ │ │ │ │ └── stdcopy_test.go
│ │ │ │ │ │ │ └── system/
│ │ │ │ │ │ │ ├── chtimes.go
│ │ │ │ │ │ │ ├── chtimes_test.go
│ │ │ │ │ │ │ ├── chtimes_unix_test.go
│ │ │ │ │ │ │ ├── chtimes_windows_test.go
│ │ │ │ │ │ │ ├── errors.go
│ │ │ │ │ │ │ ├── events_windows.go
│ │ │ │ │ │ │ ├── filesys.go
│ │ │ │ │ │ │ ├── filesys_windows.go
│ │ │ │ │ │ │ ├── lstat.go
│ │ │ │ │ │ │ ├── lstat_unix_test.go
│ │ │ │ │ │ │ ├── lstat_windows.go
│ │ │ │ │ │ │ ├── meminfo.go
│ │ │ │ │ │ │ ├── meminfo_linux.go
│ │ │ │ │ │ │ ├── meminfo_unix_test.go
│ │ │ │ │ │ │ ├── meminfo_unsupported.go
│ │ │ │ │ │ │ ├── meminfo_windows.go
│ │ │ │ │ │ │ ├── mknod.go
│ │ │ │ │ │ │ ├── mknod_windows.go
│ │ │ │ │ │ │ ├── path_unix.go
│ │ │ │ │ │ │ ├── path_windows.go
│ │ │ │ │ │ │ ├── stat.go
│ │ │ │ │ │ │ ├── stat_freebsd.go
│ │ │ │ │ │ │ ├── stat_linux.go
│ │ │ │ │ │ │ ├── stat_solaris.go
│ │ │ │ │ │ │ ├── stat_unix_test.go
│ │ │ │ │ │ │ ├── stat_unsupported.go
│ │ │ │ │ │ │ ├── stat_windows.go
│ │ │ │ │ │ │ ├── syscall_unix.go
│ │ │ │ │ │ │ ├── syscall_windows.go
│ │ │ │ │ │ │ ├── umask.go
│ │ │ │ │ │ │ ├── umask_windows.go
│ │ │ │ │ │ │ ├── utimes_darwin.go
│ │ │ │ │ │ │ ├── utimes_freebsd.go
│ │ │ │ │ │ │ ├── utimes_linux.go
│ │ │ │ │ │ │ ├── utimes_unix_test.go
│ │ │ │ │ │ │ ├── utimes_unsupported.go
│ │ │ │ │ │ │ ├── xattrs_linux.go
│ │ │ │ │ │ │ └── xattrs_unsupported.go
│ │ │ │ │ │ └── go-units/
│ │ │ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ │ │ ├── LICENSE.code
│ │ │ │ │ │ ├── LICENSE.docs
│ │ │ │ │ │ ├── MAINTAINERS
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── circle.yml
│ │ │ │ │ │ ├── duration.go
│ │ │ │ │ │ ├── duration_test.go
│ │ │ │ │ │ ├── size.go
│ │ │ │ │ │ ├── size_test.go
│ │ │ │ │ │ ├── ulimit.go
│ │ │ │ │ │ └── ulimit_test.go
│ │ │ │ │ ├── gorilla/
│ │ │ │ │ │ ├── context/
│ │ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── context.go
│ │ │ │ │ │ │ ├── context_test.go
│ │ │ │ │ │ │ └── doc.go
│ │ │ │ │ │ └── mux/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── bench_test.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── mux.go
│ │ │ │ │ │ ├── mux_test.go
│ │ │ │ │ │ ├── old_test.go
│ │ │ │ │ │ ├── regexp.go
│ │ │ │ │ │ └── route.go
│ │ │ │ │ ├── hashicorp/
│ │ │ │ │ │ └── go-cleanhttp/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── cleanhttp.go
│ │ │ │ │ └── opencontainers/
│ │ │ │ │ └── runc/
│ │ │ │ │ └── libcontainer/
│ │ │ │ │ └── user/
│ │ │ │ │ ├── MAINTAINERS
│ │ │ │ │ ├── lookup.go
│ │ │ │ │ ├── lookup_unix.go
│ │ │ │ │ ├── lookup_unsupported.go
│ │ │ │ │ ├── user.go
│ │ │ │ │ └── user_test.go
│ │ │ │ └── golang.org/
│ │ │ │ └── x/
│ │ │ │ ├── net/
│ │ │ │ │ └── context/
│ │ │ │ │ ├── context.go
│ │ │ │ │ ├── context_test.go
│ │ │ │ │ └── withtimeout_test.go
│ │ │ │ └── sys/
│ │ │ │ └── unix/
│ │ │ │ ├── asm.s
│ │ │ │ ├── asm_darwin_386.s
│ │ │ │ ├── asm_darwin_amd64.s
│ │ │ │ ├── asm_darwin_arm.s
│ │ │ │ ├── asm_darwin_arm64.s
│ │ │ │ ├── asm_dragonfly_386.s
│ │ │ │ ├── asm_dragonfly_amd64.s
│ │ │ │ ├── asm_freebsd_386.s
│ │ │ │ ├── asm_freebsd_amd64.s
│ │ │ │ ├── asm_freebsd_arm.s
│ │ │ │ ├── asm_linux_386.s
│ │ │ │ ├── asm_linux_amd64.s
│ │ │ │ ├── asm_linux_arm.s
│ │ │ │ ├── asm_linux_arm64.s
│ │ │ │ ├── asm_linux_ppc64x.s
│ │ │ │ ├── asm_netbsd_386.s
│ │ │ │ ├── asm_netbsd_amd64.s
│ │ │ │ ├── asm_netbsd_arm.s
│ │ │ │ ├── asm_openbsd_386.s
│ │ │ │ ├── asm_openbsd_amd64.s
│ │ │ │ ├── asm_solaris_amd64.s
│ │ │ │ ├── constants.go
│ │ │ │ ├── creds_test.go
│ │ │ │ ├── env_unix.go
│ │ │ │ ├── env_unset.go
│ │ │ │ ├── export_test.go
│ │ │ │ ├── flock.go
│ │ │ │ ├── flock_linux_32bit.go
│ │ │ │ ├── gccgo.go
│ │ │ │ ├── gccgo_c.c
│ │ │ │ ├── gccgo_linux_amd64.go
│ │ │ │ ├── mkall.sh
│ │ │ │ ├── mkerrors.sh
│ │ │ │ ├── mksyscall.pl
│ │ │ │ ├── mksyscall_solaris.pl
│ │ │ │ ├── mksysctl_openbsd.pl
│ │ │ │ ├── mksysnum_darwin.pl
│ │ │ │ ├── mksysnum_dragonfly.pl
│ │ │ │ ├── mksysnum_freebsd.pl
│ │ │ │ ├── mksysnum_linux.pl
│ │ │ │ ├── mksysnum_netbsd.pl
│ │ │ │ ├── mksysnum_openbsd.pl
│ │ │ │ ├── mmap_unix_test.go
│ │ │ │ ├── race.go
│ │ │ │ ├── race0.go
│ │ │ │ ├── sockcmsg_linux.go
│ │ │ │ ├── sockcmsg_unix.go
│ │ │ │ ├── str.go
│ │ │ │ ├── syscall.go
│ │ │ │ ├── syscall_bsd.go
│ │ │ │ ├── syscall_bsd_test.go
│ │ │ │ ├── syscall_darwin.go
│ │ │ │ ├── syscall_darwin_386.go
│ │ │ │ ├── syscall_darwin_amd64.go
│ │ │ │ ├── syscall_darwin_arm.go
│ │ │ │ ├── syscall_darwin_arm64.go
│ │ │ │ ├── syscall_dragonfly.go
│ │ │ │ ├── syscall_dragonfly_386.go
│ │ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ │ ├── syscall_freebsd.go
│ │ │ │ ├── syscall_freebsd_386.go
│ │ │ │ ├── syscall_freebsd_amd64.go
│ │ │ │ ├── syscall_freebsd_arm.go
│ │ │ │ ├── syscall_freebsd_test.go
│ │ │ │ ├── syscall_linux.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_linux_amd64.go
│ │ │ │ ├── syscall_linux_arm.go
│ │ │ │ ├── syscall_linux_arm64.go
│ │ │ │ ├── syscall_linux_ppc64x.go
│ │ │ │ ├── syscall_netbsd.go
│ │ │ │ ├── syscall_netbsd_386.go
│ │ │ │ ├── syscall_netbsd_amd64.go
│ │ │ │ ├── syscall_netbsd_arm.go
│ │ │ │ ├── syscall_no_getwd.go
│ │ │ │ ├── syscall_openbsd.go
│ │ │ │ ├── syscall_openbsd_386.go
│ │ │ │ ├── syscall_openbsd_amd64.go
│ │ │ │ ├── syscall_solaris.go
│ │ │ │ ├── syscall_solaris_amd64.go
│ │ │ │ ├── syscall_test.go
│ │ │ │ ├── syscall_unix.go
│ │ │ │ ├── syscall_unix_test.go
│ │ │ │ ├── types_darwin.go
│ │ │ │ ├── types_dragonfly.go
│ │ │ │ ├── types_freebsd.go
│ │ │ │ ├── types_linux.go
│ │ │ │ ├── types_netbsd.go
│ │ │ │ ├── types_openbsd.go
│ │ │ │ ├── types_solaris.go
│ │ │ │ ├── zerrors_darwin_386.go
│ │ │ │ ├── zerrors_darwin_amd64.go
│ │ │ │ ├── zerrors_darwin_arm.go
│ │ │ │ ├── zerrors_darwin_arm64.go
│ │ │ │ ├── zerrors_dragonfly_386.go
│ │ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ │ ├── zerrors_freebsd_386.go
│ │ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ │ ├── zerrors_freebsd_arm.go
│ │ │ │ ├── zerrors_linux_386.go
│ │ │ │ ├── zerrors_linux_amd64.go
│ │ │ │ ├── zerrors_linux_arm.go
│ │ │ │ ├── zerrors_linux_arm64.go
│ │ │ │ ├── zerrors_linux_ppc64.go
│ │ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ │ ├── zerrors_netbsd_386.go
│ │ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ │ ├── zerrors_netbsd_arm.go
│ │ │ │ ├── zerrors_openbsd_386.go
│ │ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ │ ├── zerrors_solaris_amd64.go
│ │ │ │ ├── zsyscall_darwin_386.go
│ │ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ │ ├── zsyscall_darwin_arm.go
│ │ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ │ ├── zsyscall_dragonfly_386.go
│ │ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ │ ├── zsyscall_freebsd_386.go
│ │ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ │ ├── zsyscall_linux_386.go
│ │ │ │ ├── zsyscall_linux_amd64.go
│ │ │ │ ├── zsyscall_linux_arm.go
│ │ │ │ ├── zsyscall_linux_arm64.go
│ │ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ │ ├── zsyscall_netbsd_386.go
│ │ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ │ ├── zsyscall_openbsd_386.go
│ │ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ │ ├── zsysctl_openbsd.go
│ │ │ │ ├── zsysnum_darwin_386.go
│ │ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ │ ├── zsysnum_darwin_arm.go
│ │ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ │ ├── zsysnum_dragonfly_386.go
│ │ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ │ ├── zsysnum_freebsd_386.go
│ │ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ │ ├── zsysnum_linux_386.go
│ │ │ │ ├── zsysnum_linux_amd64.go
│ │ │ │ ├── zsysnum_linux_arm.go
│ │ │ │ ├── zsysnum_linux_arm64.go
│ │ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ │ ├── zsysnum_netbsd_386.go
│ │ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ │ ├── zsysnum_openbsd_386.go
│ │ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ │ ├── zsysnum_solaris_amd64.go
│ │ │ │ ├── ztypes_darwin_386.go
│ │ │ │ ├── ztypes_darwin_amd64.go
│ │ │ │ ├── ztypes_darwin_arm.go
│ │ │ │ ├── ztypes_darwin_arm64.go
│ │ │ │ ├── ztypes_dragonfly_386.go
│ │ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ │ ├── ztypes_freebsd_386.go
│ │ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ │ ├── ztypes_freebsd_arm.go
│ │ │ │ ├── ztypes_linux_386.go
│ │ │ │ ├── ztypes_linux_amd64.go
│ │ │ │ ├── ztypes_linux_arm.go
│ │ │ │ ├── ztypes_linux_arm64.go
│ │ │ │ ├── ztypes_linux_ppc64.go
│ │ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ │ ├── ztypes_netbsd_386.go
│ │ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ │ ├── ztypes_netbsd_arm.go
│ │ │ │ ├── ztypes_openbsd_386.go
│ │ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ │ └── ztypes_solaris_amd64.go
│ │ │ ├── image.go
│ │ │ ├── image_test.go
│ │ │ ├── integration_test.go
│ │ │ ├── misc.go
│ │ │ ├── misc_test.go
│ │ │ ├── network.go
│ │ │ ├── network_test.go
│ │ │ ├── signal.go
│ │ │ ├── tar.go
│ │ │ ├── testing/
│ │ │ │ ├── data/
│ │ │ │ │ ├── .dockerignore
│ │ │ │ │ ├── Dockerfile
│ │ │ │ │ ├── barfile
│ │ │ │ │ ├── ca.pem
│ │ │ │ │ ├── cert.pem
│ │ │ │ │ ├── foofile
│ │ │ │ │ ├── key.pem
│ │ │ │ │ ├── server.pem
│ │ │ │ │ └── serverkey.pem
│ │ │ │ ├── server.go
│ │ │ │ └── server_test.go
│ │ │ ├── tls.go
│ │ │ ├── volume.go
│ │ │ └── volume_test.go
│ │ ├── ghodss/
│ │ │ └── yaml/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── fields.go
│ │ │ ├── yaml.go
│ │ │ └── yaml_test.go
│ │ ├── golang/
│ │ │ ├── glog/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README
│ │ │ │ ├── glog.go
│ │ │ │ ├── glog_file.go
│ │ │ │ └── glog_test.go
│ │ │ ├── groupcache/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── byteview.go
│ │ │ │ ├── byteview_test.go
│ │ │ │ ├── consistenthash/
│ │ │ │ │ ├── consistenthash.go
│ │ │ │ │ └── consistenthash_test.go
│ │ │ │ ├── groupcache.go
│ │ │ │ ├── groupcache_test.go
│ │ │ │ ├── groupcachepb/
│ │ │ │ │ ├── groupcache.pb.go
│ │ │ │ │ └── groupcache.proto
│ │ │ │ ├── http.go
│ │ │ │ ├── http_test.go
│ │ │ │ ├── lru/
│ │ │ │ │ ├── lru.go
│ │ │ │ │ └── lru_test.go
│ │ │ │ ├── peers.go
│ │ │ │ ├── singleflight/
│ │ │ │ │ ├── singleflight.go
│ │ │ │ │ └── singleflight_test.go
│ │ │ │ ├── sinks.go
│ │ │ │ └── testpb/
│ │ │ │ ├── test.pb.go
│ │ │ │ └── test.proto
│ │ │ └── protobuf/
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── Make.protobuf
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── jsonpb/
│ │ │ │ ├── jsonpb.go
│ │ │ │ ├── jsonpb_test.go
│ │ │ │ └── jsonpb_test_proto/
│ │ │ │ ├── Makefile
│ │ │ │ ├── more_test_objects.proto
│ │ │ │ └── test_objects.proto
│ │ │ ├── proto/
│ │ │ │ ├── Makefile
│ │ │ │ ├── all_test.go
│ │ │ │ ├── clone.go
│ │ │ │ ├── clone_test.go
│ │ │ │ ├── decode.go
│ │ │ │ ├── encode.go
│ │ │ │ ├── equal.go
│ │ │ │ ├── equal_test.go
│ │ │ │ ├── extensions.go
│ │ │ │ ├── extensions_test.go
│ │ │ │ ├── lib.go
│ │ │ │ ├── message_set.go
│ │ │ │ ├── message_set_test.go
│ │ │ │ ├── pointer_reflect.go
│ │ │ │ ├── pointer_unsafe.go
│ │ │ │ ├── properties.go
│ │ │ │ ├── proto3_proto/
│ │ │ │ │ └── proto3.proto
│ │ │ │ ├── proto3_test.go
│ │ │ │ ├── size2_test.go
│ │ │ │ ├── size_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── golden_test.go
│ │ │ │ │ └── test.proto
│ │ │ │ ├── text.go
│ │ │ │ ├── text_parser.go
│ │ │ │ ├── text_parser_test.go
│ │ │ │ └── text_test.go
│ │ │ └── protoc-gen-go/
│ │ │ ├── Makefile
│ │ │ ├── descriptor/
│ │ │ │ └── Makefile
│ │ │ ├── doc.go
│ │ │ ├── generator/
│ │ │ │ ├── Makefile
│ │ │ │ ├── generator.go
│ │ │ │ └── name_test.go
│ │ │ ├── internal/
│ │ │ │ └── grpc/
│ │ │ │ └── grpc.go
│ │ │ ├── link_grpc.go
│ │ │ ├── main.go
│ │ │ ├── plugin/
│ │ │ │ ├── Makefile
│ │ │ │ └── plugin.pb.golden
│ │ │ └── testdata/
│ │ │ ├── Makefile
│ │ │ ├── extension_base.proto
│ │ │ ├── extension_extra.proto
│ │ │ ├── extension_test.go
│ │ │ ├── extension_user.proto
│ │ │ ├── grpc.proto
│ │ │ ├── imp.pb.go.golden
│ │ │ ├── imp.proto
│ │ │ ├── imp2.proto
│ │ │ ├── imp3.proto
│ │ │ ├── main_test.go
│ │ │ ├── multi/
│ │ │ │ ├── multi1.proto
│ │ │ │ ├── multi2.proto
│ │ │ │ └── multi3.proto
│ │ │ ├── my_test/
│ │ │ │ ├── test.pb.go.golden
│ │ │ │ └── test.proto
│ │ │ └── proto3.proto
│ │ ├── google/
│ │ │ └── gofuzz/
│ │ │ ├── .travis.yml
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── doc.go
│ │ │ ├── example_test.go
│ │ │ ├── fuzz.go
│ │ │ └── fuzz_test.go
│ │ ├── imdario/
│ │ │ └── mergo/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── doc.go
│ │ │ ├── map.go
│ │ │ ├── merge.go
│ │ │ ├── mergo.go
│ │ │ ├── mergo_test.go
│ │ │ └── testdata/
│ │ │ ├── license.yml
│ │ │ └── thing.yml
│ │ ├── inconshreveable/
│ │ │ └── mousetrap/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── trap_others.go
│ │ │ ├── trap_windows.go
│ │ │ └── trap_windows_1.4.go
│ │ ├── juju/
│ │ │ └── ratelimit/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── ratelimit.go
│ │ │ ├── ratelimit_test.go
│ │ │ └── reader.go
│ │ ├── masterzen/
│ │ │ ├── simplexml/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ └── dom/
│ │ │ │ ├── document.go
│ │ │ │ ├── dom_test.go
│ │ │ │ ├── element.go
│ │ │ │ └── namespace.go
│ │ │ ├── winrm/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── LICENSE
│ │ │ │ ├── Makefile
│ │ │ │ ├── README.md
│ │ │ │ ├── development/
│ │ │ │ │ ├── Vagrantfile
│ │ │ │ │ ├── sample_requests.txt
│ │ │ │ │ └── winrm-tests.sh
│ │ │ │ ├── scripts/
│ │ │ │ │ └── test.sh
│ │ │ │ ├── soap/
│ │ │ │ │ ├── header.go
│ │ │ │ │ ├── header_test.go
│ │ │ │ │ ├── message.go
│ │ │ │ │ ├── namespaces.go
│ │ │ │ │ └── namespaces_test.go
│ │ │ │ ├── winrm/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── client_test.go
│ │ │ │ │ ├── command.go
│ │ │ │ │ ├── command_test.go
│ │ │ │ │ ├── endpoint.go
│ │ │ │ │ ├── endpoint_test.go
│ │ │ │ │ ├── fixture_test.go
│ │ │ │ │ ├── http.go
│ │ │ │ │ ├── http_test.go
│ │ │ │ │ ├── parameters.go
│ │ │ │ │ ├── parameters_test.go
│ │ │ │ │ ├── powershell.go
│ │ │ │ │ ├── powershell_test.go
│ │ │ │ │ ├── request.go
│ │ │ │ │ ├── request_test.go
│ │ │ │ │ ├── response.go
│ │ │ │ │ ├── response_test.go
│ │ │ │ │ ├── shell.go
│ │ │ │ │ └── shell_test.go
│ │ │ │ └── winrm.go
│ │ │ └── xmlpath/
│ │ │ ├── LICENSE
│ │ │ ├── all_test.go
│ │ │ ├── doc.go
│ │ │ ├── parser.go
│ │ │ └── path.go
│ │ ├── mattn/
│ │ │ ├── go-colorable/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── _example/
│ │ │ │ │ └── main.go
│ │ │ │ ├── colorable_others.go
│ │ │ │ └── colorable_windows.go
│ │ │ └── go-isatty/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── _example/
│ │ │ │ └── example.go
│ │ │ ├── doc.go
│ │ │ ├── isatty_appengine.go
│ │ │ ├── isatty_bsd.go
│ │ │ ├── isatty_linux.go
│ │ │ ├── isatty_solaris.go
│ │ │ └── isatty_windows.go
│ │ ├── matttproud/
│ │ │ └── golang_protobuf_extensions/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── ext/
│ │ │ │ └── moved.go
│ │ │ ├── pbtest/
│ │ │ │ ├── doc.go
│ │ │ │ ├── example_test.go
│ │ │ │ └── quick.go
│ │ │ └── pbutil/
│ │ │ ├── all_test.go
│ │ │ ├── decode.go
│ │ │ ├── doc.go
│ │ │ ├── encode.go
│ │ │ └── fixtures_test.go
│ │ ├── nu7hatch/
│ │ │ └── gouuid/
│ │ │ ├── .gitignore
│ │ │ ├── COPYING
│ │ │ ├── README.md
│ │ │ ├── example_test.go
│ │ │ ├── uuid.go
│ │ │ └── uuid_test.go
│ │ ├── pborman/
│ │ │ └── uuid/
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── dce.go
│ │ │ ├── doc.go
│ │ │ ├── hash.go
│ │ │ ├── json.go
│ │ │ ├── json_test.go
│ │ │ ├── node.go
│ │ │ ├── seq_test.go
│ │ │ ├── time.go
│ │ │ ├── util.go
│ │ │ ├── uuid.go
│ │ │ ├── uuid_test.go
│ │ │ ├── version1.go
│ │ │ └── version4.go
│ │ ├── prometheus/
│ │ │ ├── client_golang/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── AUTHORS.md
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── LICENSE
│ │ │ │ ├── NOTICE
│ │ │ │ ├── README.md
│ │ │ │ ├── VERSION
│ │ │ │ ├── api/
│ │ │ │ │ └── prometheus/
│ │ │ │ │ ├── api.go
│ │ │ │ │ └── api_test.go
│ │ │ │ ├── examples/
│ │ │ │ │ ├── random/
│ │ │ │ │ │ └── main.go
│ │ │ │ │ └── simple/
│ │ │ │ │ └── main.go
│ │ │ │ └── prometheus/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── README.md
│ │ │ │ ├── benchmark_test.go
│ │ │ │ ├── collector.go
│ │ │ │ ├── counter.go
│ │ │ │ ├── counter_test.go
│ │ │ │ ├── desc.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── example_clustermanager_test.go
│ │ │ │ ├── example_memstats_test.go
│ │ │ │ ├── example_selfcollector_test.go
│ │ │ │ ├── examples_test.go
│ │ │ │ ├── expvar.go
│ │ │ │ ├── expvar_test.go
│ │ │ │ ├── gauge.go
│ │ │ │ ├── gauge_test.go
│ │ │ │ ├── go_collector.go
│ │ │ │ ├── go_collector_test.go
│ │ │ │ ├── histogram.go
│ │ │ │ ├── histogram_test.go
│ │ │ │ ├── http.go
│ │ │ │ ├── http_test.go
│ │ │ │ ├── metric.go
│ │ │ │ ├── metric_test.go
│ │ │ │ ├── process_collector.go
│ │ │ │ ├── process_collector_test.go
│ │ │ │ ├── push.go
│ │ │ │ ├── registry.go
│ │ │ │ ├── registry_test.go
│ │ │ │ ├── summary.go
│ │ │ │ ├── summary_test.go
│ │ │ │ ├── untyped.go
│ │ │ │ ├── value.go
│ │ │ │ ├── vec.go
│ │ │ │ └── vec_test.go
│ │ │ ├── client_model/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── AUTHORS.md
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── LICENSE
│ │ │ │ ├── Makefile
│ │ │ │ ├── NOTICE
│ │ │ │ ├── README.md
│ │ │ │ ├── cpp/
│ │ │ │ │ ├── metrics.pb.cc
│ │ │ │ │ └── metrics.pb.h
│ │ │ │ ├── go/
│ │ │ │ │ └── metrics.pb.go
│ │ │ │ ├── metrics.proto
│ │ │ │ ├── pom.xml
│ │ │ │ ├── python/
│ │ │ │ │ └── prometheus/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── client/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── model/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── metrics_pb2.py
│ │ │ │ ├── ruby/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Gemfile
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── Rakefile
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ └── prometheus/
│ │ │ │ │ │ └── client/
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── metrics.pb.rb
│ │ │ │ │ │ │ └── version.rb
│ │ │ │ │ │ └── model.rb
│ │ │ │ │ └── prometheus-client-model.gemspec
│ │ │ │ ├── setup.py
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── prometheus/
│ │ │ │ └── client/
│ │ │ │ └── Metrics.java
│ │ │ ├── common/
│ │ │ │ ├── README.md
│ │ │ │ ├── expfmt/
│ │ │ │ │ ├── bench_test.go
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── decode_test.go
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── expfmt.go
│ │ │ │ │ ├── fuzz/
│ │ │ │ │ │ └── corpus/
│ │ │ │ │ │ ├── from_test_parse_0
│ │ │ │ │ │ ├── from_test_parse_1
│ │ │ │ │ │ ├── from_test_parse_2
│ │ │ │ │ │ ├── from_test_parse_3
│ │ │ │ │ │ ├── from_test_parse_4
│ │ │ │ │ │ ├── from_test_parse_error_0
│ │ │ │ │ │ ├── from_test_parse_error_1
│ │ │ │ │ │ ├── from_test_parse_error_10
│ │ │ │ │ │ ├── from_test_parse_error_11
│ │ │ │ │ │ ├── from_test_parse_error_12
│ │ │ │ │ │ ├── from_test_parse_error_13
│ │ │ │ │ │ ├── from_test_parse_error_14
│ │ │ │ │ │ ├── from_test_parse_error_15
│ │ │ │ │ │ ├── from_test_parse_error_16
│ │ │ │ │ │ ├── from_test_parse_error_17
│ │ │ │ │ │ ├── from_test_parse_error_18
│ │ │ │ │ │ ├── from_test_parse_error_19
│ │ │ │ │ │ ├── from_test_parse_error_2
│ │ │ │ │ │ ├── from_test_parse_error_3
│ │ │ │ │ │ ├── from_test_parse_error_4
│ │ │ │ │ │ ├── from_test_parse_error_5
│ │ │ │ │ │ ├── from_test_parse_error_6
│ │ │ │ │ │ ├── from_test_parse_error_7
│ │ │ │ │ │ ├── from_test_parse_error_8
│ │ │ │ │ │ ├── from_test_parse_error_9
│ │ │ │ │ │ └── minimal
│ │ │ │ │ ├── fuzz.go
│ │ │ │ │ ├── json_decode.go
│ │ │ │ │ ├── json_decode_test.go
│ │ │ │ │ ├── testdata/
│ │ │ │ │ │ ├── json2
│ │ │ │ │ │ ├── protobuf
│ │ │ │ │ │ └── text
│ │ │ │ │ ├── text_create.go
│ │ │ │ │ ├── text_create_test.go
│ │ │ │ │ ├── text_parse.go
│ │ │ │ │ └── text_parse_test.go
│ │ │ │ ├── model/
│ │ │ │ │ ├── fingerprinting.go
│ │ │ │ │ ├── labels.go
│ │ │ │ │ ├── labels_test.go
│ │ │ │ │ ├── labelset.go
│ │ │ │ │ ├── metric.go
│ │ │ │ │ ├── metric_test.go
│ │ │ │ │ ├── model.go
│ │ │ │ │ ├── signature.go
│ │ │ │ │ ├── signature_test.go
│ │ │ │ │ ├── time.go
│ │ │ │ │ ├── time_test.go
│ │ │ │ │ ├── value.go
│ │ │ │ │ └── value_test.go
│ │ │ │ └── route/
│ │ │ │ └── route.go
│ │ │ └── procfs/
│ │ │ ├── .travis.yml
│ │ │ ├── AUTHORS.md
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── NOTICE
│ │ │ ├── README.md
│ │ │ ├── doc.go
│ │ │ ├── fixtures/
│ │ │ │ ├── 26231/
│ │ │ │ │ ├── cmdline
│ │ │ │ │ ├── fd/
│ │ │ │ │ │ ├── 0
│ │ │ │ │ │ ├── 1
│ │ │ │ │ │ ├── 2
│ │ │ │ │ │ ├── 3
│ │ │ │ │ │ └── 4
│ │ │ │ │ ├── limits
│ │ │ │ │ └── stat
│ │ │ │ ├── 584/
│ │ │ │ │ └── stat
│ │ │ │ └── stat
│ │ │ ├── fs.go
│ │ │ ├── fs_test.go
│ │ │ ├── proc.go
│ │ │ ├── proc_limits.go
│ │ │ ├── proc_limits_test.go
│ │ │ ├── proc_stat.go
│ │ │ ├── proc_stat_test.go
│ │ │ ├── proc_test.go
│ │ │ ├── stat.go
│ │ │ └── stat_test.go
│ │ ├── russross/
│ │ │ └── blackfriday/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.md
│ │ │ ├── block.go
│ │ │ ├── block_test.go
│ │ │ ├── html.go
│ │ │ ├── inline.go
│ │ │ ├── inline_test.go
│ │ │ ├── latex.go
│ │ │ ├── markdown.go
│ │ │ ├── smartypants.go
│ │ │ ├── upskirtref/
│ │ │ │ ├── Amps and angle encoding.html
│ │ │ │ ├── Amps and angle encoding.text
│ │ │ │ ├── Auto links.html
│ │ │ │ ├── Auto links.text
│ │ │ │ ├── Backslash escapes.html
│ │ │ │ ├── Backslash escapes.text
│ │ │ │ ├── Blockquotes with code blocks.html
│ │ │ │ ├── Blockquotes with code blocks.text
│ │ │ │ ├── Code Blocks.html
│ │ │ │ ├── Code Blocks.text
│ │ │ │ ├── Code Spans.html
│ │ │ │ ├── Code Spans.text
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines no empty line before block.html
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines no empty line before block.text
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.html
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.text
│ │ │ │ ├── Horizontal rules.html
│ │ │ │ ├── Horizontal rules.text
│ │ │ │ ├── Inline HTML (Advanced).html
│ │ │ │ ├── Inline HTML (Advanced).text
│ │ │ │ ├── Inline HTML (Simple).html
│ │ │ │ ├── Inline HTML (Simple).text
│ │ │ │ ├── Inline HTML comments.html
│ │ │ │ ├── Inline HTML comments.text
│ │ │ │ ├── Links, inline style.html
│ │ │ │ ├── Links, inline style.text
│ │ │ │ ├── Links, reference style.html
│ │ │ │ ├── Links, reference style.text
│ │ │ │ ├── Links, shortcut references.html
│ │ │ │ ├── Links, shortcut references.text
│ │ │ │ ├── Literal quotes in titles.html
│ │ │ │ ├── Literal quotes in titles.text
│ │ │ │ ├── Markdown Documentation - Basics.html
│ │ │ │ ├── Markdown Documentation - Basics.text
│ │ │ │ ├── Markdown Documentation - Syntax.html
│ │ │ │ ├── Markdown Documentation - Syntax.text
│ │ │ │ ├── Nested blockquotes.html
│ │ │ │ ├── Nested blockquotes.text
│ │ │ │ ├── Ordered and unordered lists.html
│ │ │ │ ├── Ordered and unordered lists.text
│ │ │ │ ├── Strong and em together.html
│ │ │ │ ├── Strong and em together.text
│ │ │ │ ├── Tabs.html
│ │ │ │ ├── Tabs.text
│ │ │ │ ├── Tidyness.html
│ │ │ │ └── Tidyness.text
│ │ │ └── upskirtref_test.go
│ │ ├── shurcooL/
│ │ │ └── sanitized_anchor_name/
│ │ │ ├── .travis.yml
│ │ │ ├── README.md
│ │ │ ├── main.go
│ │ │ └── main_test.go
│ │ ├── spf13/
│ │ │ ├── cobra/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .mailmap
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── bash_completions.go
│ │ │ │ ├── bash_completions.md
│ │ │ │ ├── bash_completions_test.go
│ │ │ │ ├── cobra/
│ │ │ │ │ ├── cmd/
│ │ │ │ │ │ ├── add.go
│ │ │ │ │ │ ├── helpers.go
│ │ │ │ │ │ ├── helpers_test.go
│ │ │ │ │ │ ├── init.go
│ │ │ │ │ │ ├── licenses.go
│ │ │ │ │ │ └── root.go
│ │ │ │ │ └── main.go
│ │ │ │ ├── cobra.go
│ │ │ │ ├── cobra_test.go
│ │ │ │ ├── command.go
│ │ │ │ ├── command_test.go
│ │ │ │ ├── doc_util.go
│ │ │ │ ├── examples_test.go
│ │ │ │ ├── man_docs.go
│ │ │ │ ├── man_docs.md
│ │ │ │ ├── man_docs_test.go
│ │ │ │ ├── md_docs.go
│ │ │ │ ├── md_docs.md
│ │ │ │ └── md_docs_test.go
│ │ │ └── pflag/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bool.go
│ │ │ ├── bool_test.go
│ │ │ ├── count.go
│ │ │ ├── count_test.go
│ │ │ ├── duration.go
│ │ │ ├── example_test.go
│ │ │ ├── export_test.go
│ │ │ ├── flag.go
│ │ │ ├── flag_test.go
│ │ │ ├── float32.go
│ │ │ ├── float64.go
│ │ │ ├── golangflag.go
│ │ │ ├── golangflag_test.go
│ │ │ ├── int.go
│ │ │ ├── int32.go
│ │ │ ├── int64.go
│ │ │ ├── int8.go
│ │ │ ├── int_slice.go
│ │ │ ├── int_slice_test.go
│ │ │ ├── ip.go
│ │ │ ├── ip_test.go
│ │ │ ├── ipmask.go
│ │ │ ├── ipnet.go
│ │ │ ├── ipnet_test.go
│ │ │ ├── string.go
│ │ │ ├── string_slice.go
│ │ │ ├── string_slice_test.go
│ │ │ ├── uint.go
│ │ │ ├── uint16.go
│ │ │ ├── uint32.go
│ │ │ ├── uint64.go
│ │ │ ├── uint8.go
│ │ │ └── verify/
│ │ │ ├── all.sh
│ │ │ ├── gofmt.sh
│ │ │ └── golint.sh
│ │ └── ugorji/
│ │ └── go/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── codec/
│ │ │ ├── 0doc.go
│ │ │ ├── README.md
│ │ │ ├── binc.go
│ │ │ ├── cbor.go
│ │ │ ├── cbor_test.go
│ │ │ ├── codec_test.go
│ │ │ ├── codecgen/
│ │ │ │ ├── README.md
│ │ │ │ ├── gen.go
│ │ │ │ └── z.go
│ │ │ ├── codecgen_test.go
│ │ │ ├── decode.go
│ │ │ ├── encode.go
│ │ │ ├── fast-path.generated.go
│ │ │ ├── fast-path.go.tmpl
│ │ │ ├── fast-path.not.go
│ │ │ ├── gen-dec-array.go.tmpl
│ │ │ ├── gen-dec-map.go.tmpl
│ │ │ ├── gen-helper.generated.go
│ │ │ ├── gen-helper.go.tmpl
│ │ │ ├── gen.generated.go
│ │ │ ├── gen.go
│ │ │ ├── helper.go
│ │ │ ├── helper_internal.go
│ │ │ ├── helper_not_unsafe.go
│ │ │ ├── helper_test.go
│ │ │ ├── helper_unsafe.go
│ │ │ ├── json.go
│ │ │ ├── msgpack.go
│ │ │ ├── noop.go
│ │ │ ├── prebuild.go
│ │ │ ├── prebuild.sh
│ │ │ ├── py_test.go
│ │ │ ├── rpc.go
│ │ │ ├── simple.go
│ │ │ ├── test-cbor-goldens.json
│ │ │ ├── test.py
│ │ │ ├── tests.sh
│ │ │ ├── time.go
│ │ │ └── values_test.go
│ │ └── msgpack.org.md
│ ├── golang.org/
│ │ └── x/
│ │ ├── crypto/
│ │ │ ├── .gitattributes
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── README
│ │ │ ├── bcrypt/
│ │ │ │ ├── base64.go
│ │ │ │ ├── bcrypt.go
│ │ │ │ └── bcrypt_test.go
│ │ │ ├── blowfish/
│ │ │ │ ├── block.go
│ │ │ │ ├── blowfish_test.go
│ │ │ │ ├── cipher.go
│ │ │ │ └── const.go
│ │ │ ├── bn256/
│ │ │ │ ├── bn256.go
│ │ │ │ ├── bn256_test.go
│ │ │ │ ├── constants.go
│ │ │ │ ├── curve.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── gfp12.go
│ │ │ │ ├── gfp2.go
│ │ │ │ ├── gfp6.go
│ │ │ │ ├── optate.go
│ │ │ │ └── twist.go
│ │ │ ├── cast5/
│ │ │ │ ├── cast5.go
│ │ │ │ └── cast5_test.go
│ │ │ ├── codereview.cfg
│ │ │ ├── curve25519/
│ │ │ │ ├── const_amd64.s
│ │ │ │ ├── cswap_amd64.s
│ │ │ │ ├── curve25519.go
│ │ │ │ ├── curve25519_test.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── freeze_amd64.s
│ │ │ │ ├── ladderstep_amd64.s
│ │ │ │ ├── mont25519_amd64.go
│ │ │ │ ├── mul_amd64.s
│ │ │ │ └── square_amd64.s
│ │ │ ├── hkdf/
│ │ │ │ ├── example_test.go
│ │ │ │ ├── hkdf.go
│ │ │ │ └── hkdf_test.go
│ │ │ ├── md4/
│ │ │ │ ├── md4.go
│ │ │ │ ├── md4_test.go
│ │ │ │ └── md4block.go
│ │ │ ├── nacl/
│ │ │ │ ├── box/
│ │ │ │ │ ├── box.go
│ │ │ │ │ └── box_test.go
│ │ │ │ └── secretbox/
│ │ │ │ ├── secretbox.go
│ │ │ │ └── secretbox_test.go
│ │ │ ├── ocsp/
│ │ │ │ ├── ocsp.go
│ │ │ │ └── ocsp_test.go
│ │ │ ├── openpgp/
│ │ │ │ ├── armor/
│ │ │ │ │ ├── armor.go
│ │ │ │ │ ├── armor_test.go
│ │ │ │ │ └── encode.go
│ │ │ │ ├── canonical_text.go
│ │ │ │ ├── canonical_text_test.go
│ │ │ │ ├── clearsign/
│ │ │ │ │ ├── clearsign.go
│ │ │ │ │ └── clearsign_test.go
│ │ │ │ ├── elgamal/
│ │ │ │ │ ├── elgamal.go
│ │ │ │ │ └── elgamal_test.go
│ │ │ │ ├── errors/
│ │ │ │ │ └── errors.go
│ │ │ │ ├── keys.go
│ │ │ │ ├── keys_test.go
│ │ │ │ ├── packet/
│ │ │ │ │ ├── compressed.go
│ │ │ │ │ ├── compressed_test.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── encrypted_key.go
│ │ │ │ │ ├── encrypted_key_test.go
│ │ │ │ │ ├── literal.go
│ │ │ │ │ ├── ocfb.go
│ │ │ │ │ ├── ocfb_test.go
│ │ │ │ │ ├── one_pass_signature.go
│ │ │ │ │ ├── opaque.go
│ │ │ │ │ ├── opaque_test.go
│ │ │ │ │ ├── packet.go
│ │ │ │ │ ├── packet_test.go
│ │ │ │ │ ├── private_key.go
│ │ │ │ │ ├── private_key_test.go
│ │ │ │ │ ├── public_key.go
│ │ │ │ │ ├── public_key_test.go
│ │ │ │ │ ├── public_key_v3.go
│ │ │ │ │ ├── public_key_v3_test.go
│ │ │ │ │ ├── reader.go
│ │ │ │ │ ├── signature.go
│ │ │ │ │ ├── signature_test.go
│ │ │ │ │ ├── signature_v3.go
│ │ │ │ │ ├── signature_v3_test.go
│ │ │ │ │ ├── symmetric_key_encrypted.go
│ │ │ │ │ ├── symmetric_key_encrypted_test.go
│ │ │ │ │ ├── symmetrically_encrypted.go
│ │ │ │ │ ├── symmetrically_encrypted_test.go
│ │ │ │ │ ├── userattribute.go
│ │ │ │ │ ├── userattribute_test.go
│ │ │ │ │ ├── userid.go
│ │ │ │ │ └── userid_test.go
│ │ │ │ ├── read.go
│ │ │ │ ├── read_test.go
│ │ │ │ ├── s2k/
│ │ │ │ │ ├── s2k.go
│ │ │ │ │ └── s2k_test.go
│ │ │ │ ├── write.go
│ │ │ │ └── write_test.go
│ │ │ ├── otr/
│ │ │ │ ├── libotr_test_helper.c
│ │ │ │ ├── otr.go
│ │ │ │ ├── otr_test.go
│ │ │ │ └── smp.go
│ │ │ ├── pbkdf2/
│ │ │ │ ├── pbkdf2.go
│ │ │ │ └── pbkdf2_test.go
│ │ │ ├── poly1305/
│ │ │ │ ├── const_amd64.s
│ │ │ │ ├── poly1305.go
│ │ │ │ ├── poly1305_amd64.s
│ │ │ │ ├── poly1305_test.go
│ │ │ │ ├── sum_amd64.go
│ │ │ │ └── sum_ref.go
│ │ │ ├── ripemd160/
│ │ │ │ ├── ripemd160.go
│ │ │ │ ├── ripemd160_test.go
│ │ │ │ └── ripemd160block.go
│ │ │ ├── salsa20/
│ │ │ │ ├── salsa/
│ │ │ │ │ ├── hsalsa20.go
│ │ │ │ │ ├── salsa2020_amd64.s
│ │ │ │ │ ├── salsa208.go
│ │ │ │ │ ├── salsa20_amd64.go
│ │ │ │ │ ├── salsa20_ref.go
│ │ │ │ │ └── salsa_test.go
│ │ │ │ ├── salsa20.go
│ │ │ │ └── salsa20_test.go
│ │ │ ├── scrypt/
│ │ │ │ ├── scrypt.go
│ │ │ │ └── scrypt_test.go
│ │ │ ├── sha3/
│ │ │ │ ├── doc.go
│ │ │ │ ├── hashes.go
│ │ │ │ ├── keccakf.go
│ │ │ │ ├── register.go
│ │ │ │ ├── sha3.go
│ │ │ │ ├── sha3_test.go
│ │ │ │ ├── shake.go
│ │ │ │ ├── testdata/
│ │ │ │ │ └── keccakKats.json.deflate
│ │ │ │ ├── xor.go
│ │ │ │ ├── xor_generic.go
│ │ │ │ └── xor_unaligned.go
│ │ │ ├── ssh/
│ │ │ │ ├── agent/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── client_test.go
│ │ │ │ │ ├── forward.go
│ │ │ │ │ ├── keyring.go
│ │ │ │ │ ├── server.go
│ │ │ │ │ ├── server_test.go
│ │ │ │ │ └── testdata_test.go
│ │ │ │ ├── benchmark_test.go
│ │ │ │ ├── buffer.go
│ │ │ │ ├── buffer_test.go
│ │ │ │ ├── certs.go
│ │ │ │ ├── certs_test.go
│ │ │ │ ├── channel.go
│ │ │ │ ├── cipher.go
│ │ │ │ ├── cipher_test.go
│ │ │ │ ├── client.go
│ │ │ │ ├── client_auth.go
│ │ │ │ ├── client_auth_test.go
│ │ │ │ ├── client_test.go
│ │ │ │ ├── common.go
│ │ │ │ ├── connection.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── handshake.go
│ │ │ │ ├── handshake_test.go
│ │ │ │ ├── kex.go
│ │ │ │ ├── kex_test.go
│ │ │ │ ├── keys.go
│ │ │ │ ├── keys_test.go
│ │ │ │ ├── mac.go
│ │ │ │ ├── mempipe_test.go
│ │ │ │ ├── messages.go
│ │ │ │ ├── messages_test.go
│ │ │ │ ├── mux.go
│ │ │ │ ├── mux_test.go
│ │ │ │ ├── server.go
│ │ │ │ ├── session.go
│ │ │ │ ├── session_test.go
│ │ │ │ ├── tcpip.go
│ │ │ │ ├── tcpip_test.go
│ │ │ │ ├── terminal/
│ │ │ │ │ ├── terminal.go
│ │ │ │ │ ├── terminal_test.go
│ │ │ │ │ ├── util.go
│ │ │ │ │ ├── util_bsd.go
│ │ │ │ │ ├── util_linux.go
│ │ │ │ │ └── util_windows.go
│ │ │ │ ├── test/
│ │ │ │ │ ├── agent_unix_test.go
│ │ │ │ │ ├── cert_test.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── forward_unix_test.go
│ │ │ │ │ ├── session_test.go
│ │ │ │ │ ├── tcpip_test.go
│ │ │ │ │ ├── test_unix_test.go
│ │ │ │ │ └── testdata_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── keys.go
│ │ │ │ ├── testdata_test.go
│ │ │ │ ├── transport.go
│ │ │ │ └── transport_test.go
│ │ │ ├── twofish/
│ │ │ │ ├── twofish.go
│ │ │ │ └── twofish_test.go
│ │ │ ├── xtea/
│ │ │ │ ├── block.go
│ │ │ │ ├── cipher.go
│ │ │ │ └── xtea_test.go
│ │ │ └── xts/
│ │ │ ├── xts.go
│ │ │ └── xts_test.go
│ │ ├── net/
│ │ │ ├── .gitattributes
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── README
│ │ │ ├── codereview.cfg
│ │ │ ├── context/
│ │ │ │ ├── context.go
│ │ │ │ ├── context_test.go
│ │ │ │ ├── ctxhttp/
│ │ │ │ │ ├── cancelreq.go
│ │ │ │ │ ├── cancelreq_go14.go
│ │ │ │ │ ├── ctxhttp.go
│ │ │ │ │ └── ctxhttp_test.go
│ │ │ │ └── withtimeout_test.go
│ │ │ ├── dict/
│ │ │ │ └── dict.go
│ │ │ ├── html/
│ │ │ │ ├── atom/
│ │ │ │ │ ├── atom.go
│ │ │ │ │ ├── atom_test.go
│ │ │ │ │ ├── gen.go
│ │ │ │ │ ├── table.go
│ │ │ │ │ └── table_test.go
│ │ │ │ ├── charset/
│ │ │ │ │ ├── charset.go
│ │ │ │ │ ├── charset_test.go
│ │ │ │ │ ├── gen.go
│ │ │ │ │ ├── table.go
│ │ │ │ │ └── testdata/
│ │ │ │ │ ├── HTTP-charset.html
│ │ │ │ │ ├── HTTP-vs-UTF-8-BOM.html
│ │ │ │ │ ├── HTTP-vs-meta-charset.html
│ │ │ │ │ ├── HTTP-vs-meta-content.html
│ │ │ │ │ ├── No-encoding-declaration.html
│ │ │ │ │ ├── README
│ │ │ │ │ ├── UTF-16BE-BOM.html
│ │ │ │ │ ├── UTF-16LE-BOM.html
│ │ │ │ │ ├── UTF-8-BOM-vs-meta-charset.html
│ │ │ │ │ ├── UTF-8-BOM-vs-meta-content.html
│ │ │ │ │ ├── meta-charset-attribute.html
│ │ │ │ │ └── meta-content-attribute.html
│ │ │ │ ├── const.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── doctype.go
│ │ │ │ ├── entity.go
│ │ │ │ ├── entity_test.go
│ │ │ │ ├── escape.go
│ │ │ │ ├── escape_test.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── foreign.go
│ │ │ │ ├── node.go
│ │ │ │ ├── node_test.go
│ │ │ │ ├── parse.go
│ │ │ │ ├── parse_test.go
│ │ │ │ ├── render.go
│ │ │ │ ├── render_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ ├── go1.html
│ │ │ │ │ └── webkit/
│ │ │ │ │ └── README
│ │ │ │ ├── token.go
│ │ │ │ └── token_test.go
│ │ │ ├── http2/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── Makefile
│ │ │ │ ├── README
│ │ │ │ ├── buffer.go
│ │ │ │ ├── buffer_test.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── errors_test.go
│ │ │ │ ├── flow.go
│ │ │ │ ├── flow_test.go
│ │ │ │ ├── frame.go
│ │ │ │ ├── frame_test.go
│ │ │ │ ├── gotrack.go
│ │ │ │ ├── gotrack_test.go
│ │ │ │ ├── h2i/
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── h2i.go
│ │ │ │ ├── headermap.go
│ │ │ │ ├── hpack/
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── encode_test.go
│ │ │ │ │ ├── hpack.go
│ │ │ │ │ ├── hpack_test.go
│ │ │ │ │ ├── huffman.go
│ │ │ │ │ └── tables.go
│ │ │ │ ├── http2.go
│ │ │ │ ├── http2_test.go
│ │ │ │ ├── pipe.go
│ │ │ │ ├── pipe_test.go
│ │ │ │ ├── priority_test.go
│ │ │ │ ├── server.go
│ │ │ │ ├── server_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ └── draft-ietf-httpbis-http2.xml
│ │ │ │ ├── transport.go
│ │ │ │ ├── transport_test.go
│ │ │ │ ├── write.go
│ │ │ │ ├── writesched.go
│ │ │ │ └── z_spec_test.go
│ │ │ ├── icmp/
│ │ │ │ ├── dstunreach.go
│ │ │ │ ├── echo.go
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── extension.go
│ │ │ │ ├── extension_test.go
│ │ │ │ ├── helper_posix.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── ipv4.go
│ │ │ │ ├── ipv4_test.go
│ │ │ │ ├── ipv6.go
│ │ │ │ ├── listen_posix.go
│ │ │ │ ├── listen_stub.go
│ │ │ │ ├── message.go
│ │ │ │ ├── message_test.go
│ │ │ │ ├── messagebody.go
│ │ │ │ ├── mpls.go
│ │ │ │ ├── multipart.go
│ │ │ │ ├── multipart_test.go
│ │ │ │ ├── packettoobig.go
│ │ │ │ ├── paramprob.go
│ │ │ │ ├── ping_test.go
│ │ │ │ ├── sys_freebsd.go
│ │ │ │ └── timeexceeded.go
│ │ │ ├── idna/
│ │ │ │ ├── idna.go
│ │ │ │ ├── idna_test.go
│ │ │ │ ├── punycode.go
│ │ │ │ └── punycode_test.go
│ │ │ ├── internal/
│ │ │ │ ├── iana/
│ │ │ │ │ ├── const.go
│ │ │ │ │ └── gen.go
│ │ │ │ ├── nettest/
│ │ │ │ │ ├── error_posix.go
│ │ │ │ │ ├── error_stub.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── rlimit.go
│ │ │ │ │ ├── rlimit_stub.go
│ │ │ │ │ ├── rlimit_unix.go
│ │ │ │ │ ├── rlimit_windows.go
│ │ │ │ │ ├── stack.go
│ │ │ │ │ ├── stack_stub.go
│ │ │ │ │ ├── stack_unix.go
│ │ │ │ │ └── stack_windows.go
│ │ │ │ └── timeseries/
│ │ │ │ ├── timeseries.go
│ │ │ │ └── timeseries_test.go
│ │ │ ├── ipv4/
│ │ │ │ ├── control.go
│ │ │ │ ├── control_bsd.go
│ │ │ │ ├── control_pktinfo.go
│ │ │ │ ├── control_stub.go
│ │ │ │ ├── control_unix.go
│ │ │ │ ├── control_windows.go
│ │ │ │ ├── defs_darwin.go
│ │ │ │ ├── defs_dragonfly.go
│ │ │ │ ├── defs_freebsd.go
│ │ │ │ ├── defs_linux.go
│ │ │ │ ├── defs_netbsd.go
│ │ │ │ ├── defs_openbsd.go
│ │ │ │ ├── defs_solaris.go
│ │ │ │ ├── dgramopt_posix.go
│ │ │ │ ├── dgramopt_stub.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── gen.go
│ │ │ │ ├── genericopt_posix.go
│ │ │ │ ├── genericopt_stub.go
│ │ │ │ ├── header.go
│ │ │ │ ├── header_test.go
│ │ │ │ ├── helper.go
│ │ │ │ ├── helper_stub.go
│ │ │ │ ├── helper_unix.go
│ │ │ │ ├── helper_windows.go
│ │ │ │ ├── iana.go
│ │ │ │ ├── icmp.go
│ │ │ │ ├── icmp_linux.go
│ │ │ │ ├── icmp_stub.go
│ │ │ │ ├── icmp_test.go
│ │ │ │ ├── mocktransponder_test.go
│ │ │ │ ├── multicast_test.go
│ │ │ │ ├── multicastlistener_test.go
│ │ │ │ ├── multicastsockopt_test.go
│ │ │ │ ├── packet.go
│ │ │ │ ├── payload.go
│ │ │ │ ├── payload_cmsg.go
│ │ │ │ ├── payload_nocmsg.go
│ │ │ │ ├── readwrite_test.go
│ │ │ │ ├── sockopt.go
│ │ │ │ ├── sockopt_asmreq.go
│ │ │ │ ├── sockopt_asmreq_stub.go
│ │ │ │ ├── sockopt_asmreq_unix.go
│ │ │ │ ├── sockopt_asmreq_windows.go
│ │ │ │ ├── sockopt_asmreqn_stub.go
│ │ │ │ ├── sockopt_asmreqn_unix.go
│ │ │ │ ├── sockopt_ssmreq_stub.go
│ │ │ │ ├── sockopt_ssmreq_unix.go
│ │ │ │ ├── sockopt_stub.go
│ │ │ │ ├── sockopt_unix.go
│ │ │ │ ├── sockopt_windows.go
│ │ │ │ ├── sys_bsd.go
│ │ │ │ ├── sys_darwin.go
│ │ │ │ ├── sys_freebsd.go
│ │ │ │ ├── sys_linux.go
│ │ │ │ ├── sys_openbsd.go
│ │ │ │ ├── sys_stub.go
│ │ │ │ ├── sys_windows.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_unix.go
│ │ │ │ ├── thunk_linux_386.s
│ │ │ │ ├── unicast_test.go
│ │ │ │ ├── unicastsockopt_test.go
│ │ │ │ ├── zsys_darwin.go
│ │ │ │ ├── zsys_dragonfly.go
│ │ │ │ ├── zsys_freebsd_386.go
│ │ │ │ ├── zsys_freebsd_amd64.go
│ │ │ │ ├── zsys_freebsd_arm.go
│ │ │ │ ├── zsys_linux_386.go
│ │ │ │ ├── zsys_linux_amd64.go
│ │ │ │ ├── zsys_linux_arm.go
│ │ │ │ ├── zsys_linux_arm64.go
│ │ │ │ ├── zsys_linux_ppc64.go
│ │ │ │ ├── zsys_linux_ppc64le.go
│ │ │ │ ├── zsys_netbsd.go
│ │ │ │ ├── zsys_openbsd.go
│ │ │ │ └── zsys_solaris.go
│ │ │ ├── ipv6/
│ │ │ │ ├── control.go
│ │ │ │ ├── control_rfc2292_unix.go
│ │ │ │ ├── control_rfc3542_unix.go
│ │ │ │ ├── control_stub.go
│ │ │ │ ├── control_unix.go
│ │ │ │ ├── control_windows.go
│ │ │ │ ├── defs_darwin.go
│ │ │ │ ├── defs_dragonfly.go
│ │ │ │ ├── defs_freebsd.go
│ │ │ │ ├── defs_linux.go
│ │ │ │ ├── defs_netbsd.go
│ │ │ │ ├── defs_openbsd.go
│ │ │ │ ├── defs_solaris.go
│ │ │ │ ├── dgramopt_posix.go
│ │ │ │ ├── dgramopt_stub.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── gen.go
│ │ │ │ ├── genericopt_posix.go
│ │ │ │ ├── genericopt_stub.go
│ │ │ │ ├── header.go
│ │ │ │ ├── header_test.go
│ │ │ │ ├── helper.go
│ │ │ │ ├── helper_stub.go
│ │ │ │ ├── helper_unix.go
│ │ │ │ ├── helper_windows.go
│ │ │ │ ├── iana.go
│ │ │ │ ├── icmp.go
│ │ │ │ ├── icmp_bsd.go
│ │ │ │ ├── icmp_linux.go
│ │ │ │ ├── icmp_solaris.go
│ │ │ │ ├── icmp_stub.go
│ │ │ │ ├── icmp_test.go
│ │ │ │ ├── icmp_windows.go
│ │ │ │ ├── mocktransponder_test.go
│ │ │ │ ├── multicast_test.go
│ │ │ │ ├── multicastlistener_test.go
│ │ │ │ ├── multicastsockopt_test.go
│ │ │ │ ├── payload.go
│ │ │ │ ├── payload_cmsg.go
│ │ │ │ ├── payload_nocmsg.go
│ │ │ │ ├── readwrite_test.go
│ │ │ │ ├── sockopt.go
│ │ │ │ ├── sockopt_asmreq_unix.go
│ │ │ │ ├── sockopt_asmreq_windows.go
│ │ │ │ ├── sockopt_ssmreq_stub.go
│ │ │ │ ├── sockopt_ssmreq_unix.go
│ │ │ │ ├── sockopt_stub.go
│ │ │ │ ├── sockopt_test.go
│ │ │ │ ├── sockopt_unix.go
│ │ │ │ ├── sockopt_windows.go
│ │ │ │ ├── sys_bsd.go
│ │ │ │ ├── sys_darwin.go
│ │ │ │ ├── sys_freebsd.go
│ │ │ │ ├── sys_linux.go
│ │ │ │ ├── sys_stub.go
│ │ │ │ ├── sys_windows.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_unix.go
│ │ │ │ ├── thunk_linux_386.s
│ │ │ │ ├── unicast_test.go
│ │ │ │ ├── unicastsockopt_test.go
│ │ │ │ ├── zsys_darwin.go
│ │ │ │ ├── zsys_dragonfly.go
│ │ │ │ ├── zsys_freebsd_386.go
│ │ │ │ ├── zsys_freebsd_amd64.go
│ │ │ │ ├── zsys_freebsd_arm.go
│ │ │ │ ├── zsys_linux_386.go
│ │ │ │ ├── zsys_linux_amd64.go
│ │ │ │ ├── zsys_linux_arm.go
│ │ │ │ ├── zsys_linux_arm64.go
│ │ │ │ ├── zsys_linux_ppc64.go
│ │ │ │ ├── zsys_linux_ppc64le.go
│ │ │ │ ├── zsys_netbsd.go
│ │ │ │ ├── zsys_openbsd.go
│ │ │ │ └── zsys_solaris.go
│ │ │ ├── netutil/
│ │ │ │ ├── listen.go
│ │ │ │ └── listen_test.go
│ │ │ ├── proxy/
│ │ │ │ ├── direct.go
│ │ │ │ ├── per_host.go
│ │ │ │ ├── per_host_test.go
│ │ │ │ ├── proxy.go
│ │ │ │ ├── proxy_test.go
│ │ │ │ └── socks5.go
│ │ │ ├── publicsuffix/
│ │ │ │ ├── gen.go
│ │ │ │ ├── list.go
│ │ │ │ ├── list_test.go
│ │ │ │ ├── table.go
│ │ │ │ └── table_test.go
│ │ │ ├── trace/
│ │ │ │ ├── events.go
│ │ │ │ ├── histogram.go
│ │ │ │ ├── histogram_test.go
│ │ │ │ ├── trace.go
│ │ │ │ └── trace_test.go
│ │ │ ├── webdav/
│ │ │ │ ├── file.go
│ │ │ │ ├── file_test.go
│ │ │ │ ├── if.go
│ │ │ │ ├── if_test.go
│ │ │ │ ├── internal/
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── README
│ │ │ │ │ ├── atom_test.go
│ │ │ │ │ ├── example_test.go
│ │ │ │ │ ├── marshal.go
│ │ │ │ │ ├── marshal_test.go
│ │ │ │ │ ├── read.go
│ │ │ │ │ ├── read_test.go
│ │ │ │ │ ├── typeinfo.go
│ │ │ │ │ ├── xml.go
│ │ │ │ │ └── xml_test.go
│ │ │ │ ├── litmus_test_server.go
│ │ │ │ ├── lock.go
│ │ │ │ ├── lock_test.go
│ │ │ │ ├── prop.go
│ │ │ │ ├── prop_test.go
│ │ │ │ ├── webdav.go
│ │ │ │ ├── webdav_test.go
│ │ │ │ ├── xml.go
│ │ │ │ └── xml_test.go
│ │ │ └── websocket/
│ │ │ ├── client.go
│ │ │ ├── exampledial_test.go
│ │ │ ├── examplehandler_test.go
│ │ │ ├── hybi.go
│ │ │ ├── hybi_test.go
│ │ │ ├── server.go
│ │ │ ├── websocket.go
│ │ │ └── websocket_test.go
│ │ └── sys/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTING.md
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README
│ │ ├── codereview.cfg
│ │ ├── plan9/
│ │ │ ├── asm.s
│ │ │ ├── asm_plan9_386.s
│ │ │ ├── asm_plan9_amd64.s
│ │ │ ├── const_plan9.go
│ │ │ ├── dir_plan9.go
│ │ │ ├── env_plan9.go
│ │ │ ├── env_unset.go
│ │ │ ├── errors_plan9.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mksyscall.pl
│ │ │ ├── mksysnum_plan9.sh
│ │ │ ├── pwd_go15_plan9.go
│ │ │ ├── pwd_plan9.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_plan9.go
│ │ │ ├── syscall_test.go
│ │ │ ├── zsyscall_plan9_386.go
│ │ │ ├── zsyscall_plan9_amd64.go
│ │ │ └── zsysnum_plan9.go
│ │ ├── unix/
│ │ │ ├── .gitignore
│ │ │ ├── asm.s
│ │ │ ├── asm_darwin_386.s
│ │ │ ├── asm_darwin_amd64.s
│ │ │ ├── asm_darwin_arm.s
│ │ │ ├── asm_darwin_arm64.s
│ │ │ ├── asm_dragonfly_386.s
│ │ │ ├── asm_dragonfly_amd64.s
│ │ │ ├── asm_freebsd_386.s
│ │ │ ├── asm_freebsd_amd64.s
│ │ │ ├── asm_freebsd_arm.s
│ │ │ ├── asm_linux_386.s
│ │ │ ├── asm_linux_amd64.s
│ │ │ ├── asm_linux_arm.s
│ │ │ ├── asm_linux_arm64.s
│ │ │ ├── asm_linux_ppc64x.s
│ │ │ ├── asm_netbsd_386.s
│ │ │ ├── asm_netbsd_amd64.s
│ │ │ ├── asm_netbsd_arm.s
│ │ │ ├── asm_openbsd_386.s
│ │ │ ├── asm_openbsd_amd64.s
│ │ │ ├── asm_solaris_amd64.s
│ │ │ ├── constants.go
│ │ │ ├── creds_test.go
│ │ │ ├── env_unix.go
│ │ │ ├── env_unset.go
│ │ │ ├── export_test.go
│ │ │ ├── flock.go
│ │ │ ├── flock_linux_32bit.go
│ │ │ ├── gccgo.go
│ │ │ ├── gccgo_c.c
│ │ │ ├── gccgo_linux_amd64.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mksyscall.pl
│ │ │ ├── mksyscall_solaris.pl
│ │ │ ├── mksysctl_openbsd.pl
│ │ │ ├── mksysnum_darwin.pl
│ │ │ ├── mksysnum_dragonfly.pl
│ │ │ ├── mksysnum_freebsd.pl
│ │ │ ├── mksysnum_linux.pl
│ │ │ ├── mksysnum_netbsd.pl
│ │ │ ├── mksysnum_openbsd.pl
│ │ │ ├── mmap_unix_test.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── sockcmsg_linux.go
│ │ │ ├── sockcmsg_unix.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_bsd.go
│ │ │ ├── syscall_bsd_test.go
│ │ │ ├── syscall_darwin.go
│ │ │ ├── syscall_darwin_386.go
│ │ │ ├── syscall_darwin_amd64.go
│ │ │ ├── syscall_darwin_arm.go
│ │ │ ├── syscall_darwin_arm64.go
│ │ │ ├── syscall_dragonfly.go
│ │ │ ├── syscall_dragonfly_386.go
│ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ ├── syscall_freebsd.go
│ │ │ ├── syscall_freebsd_386.go
│ │ │ ├── syscall_freebsd_amd64.go
│ │ │ ├── syscall_freebsd_arm.go
│ │ │ ├── syscall_freebsd_test.go
│ │ │ ├── syscall_linux.go
│ │ │ ├── syscall_linux_386.go
│ │ │ ├── syscall_linux_amd64.go
│ │ │ ├── syscall_linux_arm.go
│ │ │ ├── syscall_linux_arm64.go
│ │ │ ├── syscall_linux_ppc64x.go
│ │ │ ├── syscall_netbsd.go
│ │ │ ├── syscall_netbsd_386.go
│ │ │ ├── syscall_netbsd_amd64.go
│ │ │ ├── syscall_netbsd_arm.go
│ │ │ ├── syscall_no_getwd.go
│ │ │ ├── syscall_openbsd.go
│ │ │ ├── syscall_openbsd_386.go
│ │ │ ├── syscall_openbsd_amd64.go
│ │ │ ├── syscall_solaris.go
│ │ │ ├── syscall_solaris_amd64.go
│ │ │ ├── syscall_test.go
│ │ │ ├── syscall_unix.go
│ │ │ ├── syscall_unix_test.go
│ │ │ ├── types_darwin.go
│ │ │ ├── types_dragonfly.go
│ │ │ ├── types_freebsd.go
│ │ │ ├── types_linux.go
│ │ │ ├── types_netbsd.go
│ │ │ ├── types_openbsd.go
│ │ │ ├── types_solaris.go
│ │ │ ├── zerrors_darwin_386.go
│ │ │ ├── zerrors_darwin_amd64.go
│ │ │ ├── zerrors_darwin_arm.go
│ │ │ ├── zerrors_darwin_arm64.go
│ │ │ ├── zerrors_dragonfly_386.go
│ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ ├── zerrors_freebsd_386.go
│ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ ├── zerrors_freebsd_arm.go
│ │ │ ├── zerrors_linux_386.go
│ │ │ ├── zerrors_linux_amd64.go
│ │ │ ├── zerrors_linux_arm.go
│ │ │ ├── zerrors_linux_arm64.go
│ │ │ ├── zerrors_linux_ppc64.go
│ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ ├── zerrors_netbsd_386.go
│ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ ├── zerrors_netbsd_arm.go
│ │ │ ├── zerrors_openbsd_386.go
│ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ ├── zerrors_solaris_amd64.go
│ │ │ ├── zsyscall_darwin_386.go
│ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ ├── zsyscall_darwin_arm.go
│ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ ├── zsyscall_dragonfly_386.go
│ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ ├── zsyscall_freebsd_386.go
│ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ ├── zsyscall_linux_386.go
│ │ │ ├── zsyscall_linux_amd64.go
│ │ │ ├── zsyscall_linux_arm.go
│ │ │ ├── zsyscall_linux_arm64.go
│ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ ├── zsyscall_netbsd_386.go
│ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ ├── zsyscall_openbsd_386.go
│ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ ├── zsysctl_openbsd.go
│ │ │ ├── zsysnum_darwin_386.go
│ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ ├── zsysnum_darwin_arm.go
│ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ ├── zsysnum_dragonfly_386.go
│ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ ├── zsysnum_freebsd_386.go
│ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ ├── zsysnum_linux_386.go
│ │ │ ├── zsysnum_linux_amd64.go
│ │ │ ├── zsysnum_linux_arm.go
│ │ │ ├── zsysnum_linux_arm64.go
│ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ ├── zsysnum_netbsd_386.go
│ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ ├── zsysnum_openbsd_386.go
│ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ ├── zsysnum_solaris_amd64.go
│ │ │ ├── ztypes_darwin_386.go
│ │ │ ├── ztypes_darwin_amd64.go
│ │ │ ├── ztypes_darwin_arm.go
│ │ │ ├── ztypes_darwin_arm64.go
│ │ │ ├── ztypes_dragonfly_386.go
│ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ ├── ztypes_freebsd_386.go
│ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ ├── ztypes_freebsd_arm.go
│ │ │ ├── ztypes_linux_386.go
│ │ │ ├── ztypes_linux_amd64.go
│ │ │ ├── ztypes_linux_arm.go
│ │ │ ├── ztypes_linux_arm64.go
│ │ │ ├── ztypes_linux_ppc64.go
│ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ ├── ztypes_netbsd_386.go
│ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ ├── ztypes_netbsd_arm.go
│ │ │ ├── ztypes_openbsd_386.go
│ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ └── ztypes_solaris_amd64.go
│ │ └── windows/
│ │ ├── asm.s
│ │ ├── asm_windows_386.s
│ │ ├── asm_windows_amd64.s
│ │ ├── dll_windows.go
│ │ ├── env_unset.go
│ │ ├── env_windows.go
│ │ ├── eventlog.go
│ │ ├── exec_windows.go
│ │ ├── race.go
│ │ ├── race0.go
│ │ ├── registry/
│ │ │ ├── export_test.go
│ │ │ ├── key.go
│ │ │ ├── registry_test.go
│ │ │ ├── syscall.go
│ │ │ ├── value.go
│ │ │ └── zsyscall_windows.go
│ │ ├── security_windows.go
│ │ ├── service.go
│ │ ├── str.go
│ │ ├── svc/
│ │ │ ├── debug/
│ │ │ │ ├── log.go
│ │ │ │ └── service.go
│ │ │ ├── event.go
│ │ │ ├── eventlog/
│ │ │ │ ├── install.go
│ │ │ │ ├── log.go
│ │ │ │ └── log_test.go
│ │ │ ├── example/
│ │ │ │ ├── beep.go
│ │ │ │ ├── install.go
│ │ │ │ ├── main.go
│ │ │ │ ├── manage.go
│ │ │ │ └── service.go
│ │ │ ├── go12.c
│ │ │ ├── go12.go
│ │ │ ├── go13.go
│ │ │ ├── mgr/
│ │ │ │ ├── config.go
│ │ │ │ ├── mgr.go
│ │ │ │ ├── mgr_test.go
│ │ │ │ └── service.go
│ │ │ ├── security.go
│ │ │ ├── service.go
│ │ │ ├── svc_test.go
│ │ │ ├── sys_386.s
│ │ │ └── sys_amd64.s
│ │ ├── syscall.go
│ │ ├── syscall_test.go
│ │ ├── syscall_windows.go
│ │ ├── syscall_windows_test.go
│ │ ├── zsyscall_windows.go
│ │ ├── ztypes_windows.go
│ │ ├── ztypes_windows_386.go
│ │ └── ztypes_windows_amd64.go
│ ├── gopkg.in/
│ │ └── yaml.v2/
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── LICENSE.libyaml
│ │ ├── README.md
│ │ ├── apic.go
│ │ ├── decode.go
│ │ ├── decode_test.go
│ │ ├── emitterc.go
│ │ ├── encode.go
│ │ ├── encode_test.go
│ │ ├── parserc.go
│ │ ├── readerc.go
│ │ ├── resolve.go
│ │ ├── scannerc.go
│ │ ├── sorter.go
│ │ ├── suite_test.go
│ │ ├── writerc.go
│ │ ├── yaml.go
│ │ ├── yamlh.go
│ │ └── yamlprivateh.go
│ └── speter.net/
│ └── go/
│ └── exp/
│ └── math/
│ └── dec/
│ └── inf/
│ ├── LICENSE
│ ├── benchmark_test.go
│ ├── dec.go
│ ├── dec_go1_2_test.go
│ ├── dec_internal_test.go
│ ├── dec_test.go
│ ├── example_test.go
│ ├── rounder.go
│ ├── rounder_example_test.go
│ └── rounder_test.go
├── version/
│ ├── VERSION
│ └── info.go
└── winrm/
└── winrm.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
vendor
golib
================================================
FILE: .gitignore
================================================
*.swp
bin/
_dist/
.idea
golib
release
================================================
FILE: BUILDING.md
================================================
## Building
* install [go version 1.5.1 or later](https://golang.org/doc/install)
* install [glide](https://github.com/Masterminds/glide#install)
* type the following:
```
go get github.com/fabric8io/kansible
cd $GOPATH/src/github.com/fabric8io/kansible
make bootstrap
```
* then to build the binary
make build
* you can then run it via
./bin/kansible
### Running pods locally
You can run `kansible rc ...` easily on a local build when working on the code. However to try out changes to the pod for `kansible pod ...` you can run that locally outside of docker with a small trick.
You must set the `HOSTNAME` environment variable to a valid pod name you wish to use.
```bash
export HOSTNAME=fabric8-znuj5
```
e.g. the above uses the pod name for the current fabric8 console.
This lets you pretend to be different pods from the command line when trying it out locally. e.g. run the `kansible pod ...` command in 2 shells as different pods, provided the `HOSTNAME` values are diferent.
The pod name must be valid as `kansible pod ...` command will update the pod to annotate which host its chosen etc.
So to run the [above examples](#running-kansible) type the following:
for [fabric8-ansible-spring-boot](https://github.com/fabric8io/fabric8-ansible-spring-boot):
kansible pod -rc hawtapp-demo appservers /opt/cdi-camel-2.2.98-SNAPSHOT-app/bin/run.sh
for [fabric8-ansible-hawtapp](https://github.com/fabric8io/fabric8-ansible-hawtapp):
kansible pod -rc springboot-demo appservers /opt/springboot-camel-2.2.98-SNAPSHOT
### Working with Windows
If you're like me and have used a Mac for years, you might have forgotten how to work with Windows boxes ;). Here's some tips on how to test things out on the Windows VMs
First install the [winrm binary](http://github.com/masterzen/winrm/) which you can do if you have golang installed via:
go get github.com/masterzen/winrm
Then to connect to one of the Windows VMs from an example, such as the [fabric8-ansible-hawtapp](https://github.com/fabric8io/fabric8-ansible-hawtapp) you can use:
winrm -hostname 10.10.3.21 -username IEUser -password 'Passw0rd!' 'cmd'
Then you can test if a java process is running via
jps -l
If you wish to kill a java process from its PID you can type:
taskkill /PID 4308 /F
Enjoy!
## Releasing
Just run `make release`. This will cross-compile for all supported platforms, create tag & upload tarballs (zip file for Windows) to Github releases for download.
Updating the version is done via `make bump` to bump minor version & `make bump-patch` to bump patch version. This is necessary as tags are created from the version specified when releasing.
================================================
FILE: Dockerfile
================================================
FROM centos:7
WORKDIR /playbook
ENV PATH $PATH:/usr/local/kansible/
ADD ./bin/kansible /usr/local/kansible/
CMD kansible pod $KANSIBLE_HOSTS
================================================
FILE: Dockerfile.scratch
================================================
FROM scratch
# Call 'make build-all' before building it
ADD bin/kansible-docker /kansible
# Variables are interpolated not by Docker but by kansible (they are transmitted literally)
CMD [ "/kansible", "pod", "$KANSIBLE_HOSTS"]
================================================
FILE: Jenkinsfile
================================================
#!/usr/bin/groovy
node{
stage 'canary release'
git 'https://github.com/fabric8io/kansible.git'
kubernetes.pod('buildpod').withImage('fabric8/go-builder').inside {
retry(3){
sh 'make bootstrap'
}
retry(3){
sh "cd /go/src/workspace/${env.JOB_NAME} && make build test lint"
}
def imageName = 'kansible'
def tag = 'latest'
kubernetes.image().withName(imageName).build().fromPath(".")
kubernetes.image().withName(imageName).tag().inRepository('docker.io/fabric8/'+imageName).force().withTag(tag)
kubernetes.image().withName('docker.io/fabric8/'+imageName).push().withTag(tag).toRegistry()
}
}
================================================
FILE: LICENSE
================================================
Copyright 2016 Red Hat, 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.
================================================
FILE: Makefile
================================================
ifndef GOPATH
$(error No GOPATH set)
endif
NAME := kansible
VERSION := $(shell cat version/VERSION)
REVISION=$(shell git rev-parse --short HEAD 2> /dev/null || echo 'unknown')
BRANCH=$(shell git rev-parse --abbrev-ref HEAD 2> /dev/null || echo 'unknown')
HOST=$(shell hostname -f)
BUILD_DATE=$(shell date +%Y%m%d-%H:%M:%S)
GO_VERSION=$(shell go version | sed -e 's/^[^0-9.]*\([0-9.]*\).*/\1/')
ROOT_PACKAGE := $(shell go list .)
BUILDFLAGS := -ldflags \
" -X $(ROOT_PACKAGE)/version.Version='$(VERSION)'\
-X $(ROOT_PACKAGE)/version.Revision='$(REVISION)'\
-X $(ROOT_PACKAGE)/version.Branch='$(BRANCH)'\
-X $(ROOT_PACKAGE)/version.BuildUser='${USER}@$(HOST)'\
-X $(ROOT_PACKAGE)/version.BuildDate='$(BUILD_DATE)'\
-X $(ROOT_PACKAGE)/version.GoVersion='$(GO_VERSION)'"
BIN_DIR := bin
DIST_DIR := _dist
GO := GO15VENDOREXPERIMENT=1 go
GO_PACKAGES := $(shell $(GO) list ./... | grep -v /vendor/)
SRCS := $(shell find . -path ./vendor -prune -o -name '*.go')
MAIN_GO := kansible.go
KANSIBLE_BIN := $(BIN_DIR)/kansible
LINTERS := --disable-all --enable=vet --enable=golint --enable=errcheck --enable=ineffassign --enable=interfacer --enable=goimports --enable=gofmt
build: $(MAIN_GO)
$(GO) build -o $(KANSIBLE_BIN) $(BUILDFLAGS) $<
bootstrap:
$(GO) get -u github.com/golang/lint/golint github.com/mitchellh/gox github.com/alecthomas/gometalinter github.com/fabric8io/gobump
gometalinter --install --update
update-vendor:
GO15VENDOREXPERIMENT=1 glide up --update-vendored
build-all:
gox -verbose \
$(BUILDFLAGS) \
-os="linux darwin freebsd netbsd openbsd solaris windows" \
-arch="amd64 386" \
-output="$(DIST_DIR)/{{.OS}}-{{.Arch}}/{{.Dir}}" .
clean:
rm -rf $(DIST_DIR) $(BIN_DIR) release
install: build
install -d $(DESTDIR)/usr/local/bin/
install -m 755 $(KANSIBLE_BIN) $(DESTDIR)/usr/local/bin/kansible
prep-bintray-json:
# TRAVIS_TAG is set to the tag name if the build is a tag
ifdef TRAVIS_TAG
@jq '.version.name |= "$(VERSION)"' _scripts/ci/bintray-template.json | \
jq '.package.repo |= "kansible"' > _scripts/ci/bintray-ci.json
else
@jq '.version.name |= "$(VERSION)"' _scripts/ci/bintray-template.json \
> _scripts/ci/bintray-ci.json
endif
quicktest:
$(GO) test -short $(GO_PACKAGES)
test:
$(GO) test -v $(GO_PACKAGES)
lint:
@echo "Linting does not currently fail the build but is likely to do so in future - fix stuff you see, when you see it please"
@export TMP=$(shell mktemp -d) && cp -r vendor $${TMP}/src && GOPATH=$${TMP}:$${GOPATH} GO15VENDOREXPERIMENT=1 gometalinter --vendor --deadline=60s $(LINTERS) ./... || rm -rf $${TMP}} || true
docker-scratch:
gox -verbose $(BUILDFLAGS) -os="linux" -arch="amd64" \
-output="bin/kansible-docker" .
docker build -f Dockerfile.scratch -t "fabric8/kansible:scratch" .
release: build-all
rm -rf release && mkdir release
for os in linux darwin freebsd netbsd openbsd solaris ; do \
for arch in amd64 386 ; do \
if [ -f "$(DIST_DIR)/$$os-$$arch/$(NAME)" ] ; then \
tar --transform "s|^$(DIST_DIR)/$$os-$$arch/||" -czf release/$(NAME)-$(VERSION)-$$os-$$arch.tar.gz $(DIST_DIR)/$$os-$$arch/$(NAME) README.md LICENSE ; \
fi ; \
done ; \
done
for arch in amd64 386 ; do \
zip -q --junk-paths release/$(NAME)-$(VERSION)-windows-$$arch.zip $(DIST_DIR)/windows-$$arch/$(NAME).exe README.md LICENSE ; \
done ; \
$(GO) get -u github.com/progrium/gh-release
gh-release create fabric8io/$(NAME) $(VERSION) $(BRANCH) $(VERSION)
bump:
gobump minor -f version/VERSION
bump-patch:
gobump patch -f version/VERSION
.PHONY: release clean
.PHONY: bootstrap \
build \
build-all \
clean \
install \
prep-bintray-json \
quicktest \
release \
test \
test-charts \
lint \
bump \
bump-patch \
update-vendor
================================================
FILE: README.md
================================================
# Kansible
Kansible lets you orchestrate operating system _processes_ on Windows or any Unix in the same way as you orchestrate your Docker _containers_ with [Kubernetes](http://kubernetes.io/) by using [Ansible](https://www.ansible.com/) to provision the software onto hosts and Kubernetes to orchestrate the processes and the containers in a single system.
<p align="center">
<a href="http://github.com/fabric8io/kansible/">
<img src="https://raw.githubusercontent.com/fabric8io/kansible/master/docs/images/logo.png" height="200" width="200" alt="kansible logo"/>
</a>
</p>
Kansible uses:
* [Ansible](https://www.ansible.com/) to install, configure and provision your software onto machines using [playbooks](http://docs.ansible.com/ansible/playbooks.html)
* [Kubernetes](http://kubernetes.io/) to run and manage the processes and perform service discovery, scaling, load balancing together with centralised logging, metrics, alerts and management.
Kansible provides a single pane of glass, CLI and REST API to all your processes whether they are inside docker containers or running as vanilla processes on Windows, AIX, Solaris or HP-UX or an old Linux distros that predate docker.
Kansible lets you migrate to a pure container based Docker world at whatever pace suits you, while using Kubernetes to orchestrate all your containers and operating system processes for your entire journey.
## Features
* All your processes appear as Pods inside Kubernetes namespaces so you can visualise, query and watch the status of your processes and containers in a canonical way
* Each kind of process has its own [Replication Controller](http://kubernetes.io/v1.1/docs/user-guide/replication-controller.html) to ensure processes keep running and so you can [manually or automatically scale](http://kubernetes.io/v1.1/docs/user-guide/replication-controller.html#scaling) the number of processes up or down; up to the limit in the number of hosts in your [Ansible inventory](http://docs.ansible.com/ansible/intro_inventory.html)
* Reuse Kubernetes [liveness checks](http://kubernetes.io/v1.1/docs/user-guide/liveness/README.html) so that Kubernetes can monitor the state of your process and restart if it goes bad
* Reuse Kubernetes [readiness checks](http://kubernetes.io/v1.1/docs/user-guide/production-pods.html#liveness-and-readiness-probes-aka-health-checks) so that Kubernetes can know when your process can be included into the [internal or external service load balancer](http://kubernetes.io/v1.1/docs/user-guide/services.html)
* You can view the logs of all your processes in the canonical kubernetes way via the CLI, REST API or web console
* Port forwarding works from the pods to the remote processes so that you can reuse [Kubernetes Services](http://kubernetes.io/v1.1/docs/user-guide/services.html) to load balance across your processes automatically
* [Centralised logging](http://fabric8.io/guide/logging.html) and [metrics and alerting](http://fabric8.io/guide/metrics.html) works equally across your containers and processes
* You can open a shell into the remote process machine via the CLI, REST API or web console; which is either a unix bash or a windows cmd shell as shown in the fabric8 console screenshot below:
<p align="center">
<a href="https://raw.githubusercontent.com/fabric8io/kansible/master/docs/images/kansible-demo.png">
<img src="https://raw.githubusercontent.com/fabric8io/kansible/master/docs/images/kansible-demo.png" height="250" width="600" alt="kansible logo"/>
</a>
</p>
### Ansible perspective on Kansible
If you already use Ansible; then one way to think about Kansible is that you continue to use Ansible however you have been doing; using reusable composable playbooks and so forth. The only change to your playbooks that Kansible introduces is that you don't run Unix or Windows services (e.g. like systemd / init.d). You install and configure the software via Ansible playbooks; setting up whatever directories, users and permissions you require. But you don't create services or run the software.
Then we use Kubernetes (and kansible pods) as the alternative to Unix and Windows services. The reason we do this is that Kubernetes is a better distributed version of systemd/init.d/Windows services as it also includes features like:
* service discovery and load balancing
* health monitoring
* centralised logging, metrics and alerts
* manual and automatic scaling up or down
* a consistent web console, CLI and REST API across processes running via kansible and Docker containers
### Kubernetes perspective on Kansible
If you already use Kubernetes then you could look at Kansible as a way of extending the reach of Kubernetes to manage both Docker containers on a host that supports Docker plus remote processes on operating systems that don't support Docker. That then makes Kubernetes the orchestrator of all your software; whether its Dockerized or not!
All your processes are belong to us! :)
Longer term it would be great for Docker to be ported to more operating systems; along with the kubelet. So ideally more operating systems could use native Docker and kubelet; in which case there's less need for kansible. But at the time of writing, that goal is looking some way off for older versions of Windows along with AIX, Solaris and HPUX.
Whats really compelling about using Kubernetes to manage Docker containers and operating system processes via Kansible is that you can mix and match on a per microservice basis - use the right tool for the job right now - but all the while use a single orchestrator platform, Kubernetes, a single REST API, CLI tools and web console - with standard service discovery, load balancing and management functions.
Using Docker is more optimal; so we hope over time that you can use more Docker and less kansible; but its going to take our industry a while to Dockerize all the things and move everything to Linux; or to have fully working Docker + Kubernetes on Windows + all flavours of Unix. Until then, kansible can help! At least we can now pretend everything's Dockerized and running on Linux from an orchestration and management perspective ;)
## How to use Kansible
You use kansible as follows:
* create or reuse an existing [Ansible playbook](http://docs.ansible.com/ansible/playbooks.html) to _install and provision_ the software you wish to run on a number of machines defined by the [Ansible inventory](http://docs.ansible.com/ansible/intro_inventory.html)
* if you reuse an existing playbook, make sure you disable running the unix / windows services; as you will run that command instead in the kansible pods.
* run the [Ansible playbook](http://docs.ansible.com/ansible/playbooks.html) either as part of a [CI / CD build pipeline](http://fabric8.io/guide/cdelivery.html) when there's a change to the git repo of the Playbook, or using a command line tool, cron or [Ansible Tower](https://www.ansible.com/tower)
* define a Replication Controller YAML file at `kubernetes/$HOSTS/rc.yml` for running the command for your process [like this example](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/kubernetes/appservers/rc.yml#L15-L16).
* the RC YAML file contains the command you need to run remotely to execute your process via [`$KANSIBLE_COMMAND`](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/kubernetes/appservers/rc.yml#L15-L16)
* you can think of the RC YAML file as like the systemd configuration file, describing the command to run to startup the application. Only its a single file for the entire cluster which is stored in Kubernetes. Plus it can include [readiness and liveness probes too](http://kubernetes.io/v1.1/docs/user-guide/production-pods.html#liveness-and-readiness-probes-aka-health-checks)
.
* You can use the `{{ foo_bar }}` Ansible variable expressions in the RC YAML to refer to variables from your [global Ansible variables file](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/group_vars/appservers)
* to take advantage of Kubernetes services, you can also define any number of Service YAML files at `kubernetes/$HOSTS/service.yml`
* they can be named anything you like so long as they are valid Kubernetes YAML or JSON and are in the same folder as the RC.yml
* see the [Kubernetes Services example](#trying-out-kubernetes-services) and its [kubernetes/appservers/service.yml](https://github.com/fabric8io/fabric8-ansible-hawtapp/blob/master/kubernetes/appservers/service.yml) file for how to do this.
* whenever the playbook git repo changes, run the **kansible rc** command inside a clone of the playbook git repository:
kansible rc myhosts
where `myhosts` is the name of the hosts you wish to use in the [Ansible inventory](http://docs.ansible.com/ansible/intro_inventory.html).
Then **kansible** will then create/update [Secrets](http://kubernetes.io/v1.1/docs/user-guide/secrets.html) for any SSH private keys in your [Ansible inventory](http://docs.ansible.com/ansible/intro_inventory.html) and create or update a [Replication Controller](http://kubernetes.io/v1.1/docs/user-guide/replication-controller.html) of kansible pods which will start and supervise your processes, capture the logs and redirect ports to enable liveness checks, centralised metrics and Kubernetes services.
So for each remote process on Windows, Linux, Solaris, AIX, HPUX kansible will create a kansible pod in Kubernetes which starts the command and tails the log to stdout/stderr. You can then use the [Replication Controller scaling](http://kubernetes.io/v1.1/docs/user-guide/replication-controller.html#scaling) to start/stop your remote processes!
### Working with kansible pods
* As processes start and stop, you'll see the processes appear or disappear inside kubernetes, the CLI, REST API or the console as a kansible pod.
* You can scale up and down the kansible Replication Controller via CLI, REST API or console.
* You can then view the logs of any process in the usual kubernetes way via the command line, REST API or web console.
* [Centralised logging](http://fabric8.io/guide/logging.html) then works great on all your processes (providing the command you run outputs logs to `stdout` / `stderr`
### Exposing ports
Any ports defined in the Replication Controller YAML file will be automatically forwarded to the remote process. See [this example rc.yml file](https://github.com/fabric8io/fabric8-ansible-hawtapp/blob/master/kubernetes/appservers/rc.yml#L19-L21) to see how to expose ports.
This means you can take advantage of things like [centralised metrics and alerting](http://fabric8.io/guide/metrics.html), liveness checks, Kubernetes Services along with the built in service discovery and load balancing inside Kubernetes!
To see the use of Kubernetes Services and load balancing across remote processes with kansible check out the [fabric8-ansible-hawtapp demo](#fabric8-ansible-hawtapp).
### Opening a shell on the remote process
You can open a shell directly on the remote machine via the web console or by running
oc exec -it -p mypodname bash
Then you'll get a remote shell on the Windows or Unix box!
## Examples
Before you start with the kansible examples you'll need:
* [Download a release](https://github.com/fabric8io/kansible/releases) and add `kansible` to your `$PATH`
* Or [Build kansible](https://github.com/fabric8io/kansible/blob/master/BUILDING.md) then add the `$PWD/bin` folder to your `$PATH` so that you can type in `kansible` on the command line
* Download and install [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
* Download and install [Vagrant](http://www.vagrantup.com/downloads.html)
These examples assume you have a working [Kubernetes](http://kubernetes.io/) or [OpenShift](https://www.openshift.org/) cluster running.
If you don't yet have a Kubernetes cluster to play with, try using the [Fabric8 Vagrant image that includes OpenShift Origin](http://fabric8.io/guide/getStarted/vagrant.html) as the Kubernetes cluster.
### [fabric8-ansible-spring-boot](https://github.com/fabric8io/fabric8-ansible-spring-boot)
To run this example type the following to setup the VMs and provision things with Ansible:
```bash
git clone https://github.com/fabric8io/fabric8-ansible-spring-boot.git
cd fabric8-ansible-spring-boot
vagrant up
ansible-playbook -i inventory provisioning/site.yml -vv
```
You now should have 2 sample VMs (app1 and app2) with a Spring Boot based Java application provisioned onto the machines in the `/opt` folder, but with nothing actually running yet.
Now to setup the kansible Replication Controller run the following, where `appservers` is the hosts from the [Ansible inventory](http://docs.ansible.com/ansible/intro_inventory.html) in [the inventory file](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/inventory#L1-L3)
```bash
kansible rc appservers
```
This should now create a Replication Controller called `springboot-demo` along with 2 pods for each host in the `appservers` inventory file.
You should be able to look at the logs of those 2 pods in the usual Kubernetes / OpenShift way; e.g. via the fabric8 or OpenShift console or via the CLI:
e.g.
```bash
oc get pods
oc logs -f springboot-demo-81ryw
```
where `springboot-demo-81ryw` is the name of the pod you wish to view the logs.
You can now scale down / up the number of pods using the web console or the command line:
```bash
oc scale rc --replicas=2 springboot-demo
```
#### Important files
The examples use the following files:
* [inventory](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/inventory) is the Ansible inventory file to define the [hosts](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/inventory#L1-L3) to run the processes
* [kubernetes/$HOSTS/rc.yml](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/kubernetes/appservers/rc.yml) is the Replication Controller configuration used to [define the command `$KANSIBLE_COMMAND`](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/kubernetes/appservers/rc.yml#L15-L16) which kansible uses to run the process remotely
### [fabric8-ansible-hawtapp](https://github.com/fabric8io/fabric8-ansible-hawtapp)
This demonstration is similar to the above but it also demonstrates:
* using both Windows and Linux boxes as the hosts
* using Kubernetes Services to load balance across the processes
To run this example type the following to setup the VMs and provision things with Ansible:
```bash
git clone https://github.com/fabric8io/fabric8-ansible-hawtapp.git
cd fabric8-ansible-hawtapp
vagrant up
ansible-playbook -i inventory provisioning/site.yml -vv
```
Now to setup the Replication Controller for the supervisors run the following, where `appservers` is the hosts from the inventory
```
kansible rc appservers
```
The pods should now start up for each host in the inventory.
### Using windows machines
This example uses 1 windows box and 1 linux box in the inventory. The example shows that kansible can support both operating systems just fine; it does require the playbooks to handle the differences though.
Also you typically will need to use different commands to run on Unix versus Windows which is configured in the [rc.yml file](https://github.com/fabric8io/fabric8-ansible-hawtapp/blob/master/kubernetes/appservers/rc.yml#L15-L18). For more details see the [documentation on the KANSIBLE_COMMAND_WINRM environment variable](#kansible_command_winrm)
To use windows you may need to first make sure you've installed **pywinrm**:
sudo pip install pywinrm
If you try to open shells via the fabric8 console or `oc exec -it -p podName bash` for both pods running, you'll see that one runs on a Linux box and one runs on a Windows machine like this [example screenshot](https://raw.githubusercontent.com/fabric8io/kansible/master/docs/images/kansible-demo.png)!
#### Trying out Kubernetes Services
This example also creates a [Kubernetes Service](http://kubernetes.io/v1.1/docs/user-guide/services.html) which loads balances across the remote processes thanks to the [kubernetes/appservers/service.yml](https://github.com/fabric8io/fabric8-ansible-hawtapp/blob/master/kubernetes/appservers/service.yml) file which is then exposed via the [LoadBalancer type](https://github.com/fabric8io/fabric8-ansible-hawtapp/blob/master/kubernetes/appservers/service.yml#L16) (on OpenShift a Route is created for this).
If you are using the fabric8 console you'll see the `hawtapp-demo` service in the Services tab.
You can try out the service in your browser via: [http://hawtapp-demo-default.vagrant.f8/camel/hello?name=Kansible](http://hawtapp-demo-default.vagrant.f8/camel/hello?name=Kansible)
Or using the CLI:
curl http://hawtapp-demo-default.vagrant.f8/camel/hello?name=Kansible
Each request load balances over the available processes. You can scale the Replication Controller down to 1 pod or up to 2 and each request should still work.
## Configuration
To configure kansible you need to configure a [Replication Controller](http://kubernetes.io/v1.1/docs/user-guide/replication-controller.html) in a file called [kubernetes/$HOSTS/rc.yml](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/kubernetes/appservers/rc.yml).
Specify a name and optionally some labels for the replication controller inside the `metadata` object. There's no need to specify the `spec.selector` or `spec.template.containers[0].metadata.labels` values as those are inherited by default from the `metadata.labels`.
### Environment variables
You can specify the following environment variables in the `spec.template.spec.containers[0].env` array like the use of `KANSIBLE_COMMAND` below.
These values can use Ansible variable expressions too.
#### KANSIBLE_COMMAND
Then you must specify a command to run via the [`$KANSIBLE_COMMAND`](https://github.com/fabric8io/fabric8-ansible-spring-boot/blob/master/kubernetes/appservers/rc.yml#L15-L16) environment variable:
```yaml
apiVersion: "v1"
kind: "ReplicationController"
metadata:
name: "myapp"
labels:
project: "myapp"
version: "{{ app_version }}"
spec:
template:
spec:
containers:
- env:
- name: "KANSIBLE_COMMAND"
value: "/opt/foo-{{ app_version }}/bin/run.sh"
serviceAccountName: "fabric8"
```
#### KANSIBLE_COMMAND_WINRM
This environment variable lets you provide a Windows specific command. It works the same as the `KANSIBLE_COMMAND` environment variable above, but this value is only used for Ansible connections of the form `winrm`. i.e. to supply a windows only command to execute.
Its quite common to have a `foo.sh` script to run sh/bash scripts on unix and then a `foo.bat` or `foo.cmd` file for Windows.
#### KANSIBLE_EXPORT_ENV_VARS
Specify a space separated list of environment variable names which should be exported into the remote shell when running the remote command.
Note that typically your [sshd_config](http://linux.die.net/man/5/sshd_config) will disable the use of most environment variables being exported that don't start with `LC_*` so you may need to [configure your sshd](http://linux.die.net/man/5/sshd_config) in `/etc/ssh/sshd_config` to enable this.
#### KANSIBLE_BASH
This defines the path where the bash script will be generated for running a remote bash shell. This allows running the command `bash` inside the kansible pod to remotely execute either `/bin/bash` or `cmd.exe` for Windows machines on the remote machine when you try to open a shell inside the Web Console or via:
oc exec -p mypodname bash
#### KANSIBLE_PORT_FORWARD
Allows port forwarding to be disabled.
export KANSIBLE_PORT_FORWARD=false
This is mostly useful to allow the `bash` command within a pod to not also try to port forward as this will fail ;)
### SSH or WinRM
The best way to configure if you want to connect via SSH for unix machines or WinRM for windows machines is via the Ansible Inventory.
By default SSH is used on port 22 unless you specify `ansible_port` in the inventory or specify `--port` on the command line.
You can configure Windows machines using the `ansible_connection=winrm` property in the inventory:
```ini
[winboxes]
windows1 ansible_host=localhost ansible_port=5985 ansible_user=foo ansible_pass=somepasswd! ansible_connection=winrm
[unixes]
app1 ansible_host=10.10.3.20 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/app1/virtualbox/private_key
app2 ansible_host=10.10.3.21 ansible_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/app2/virtualbox/private_key
```
You can also enable WinRM via the `--winrm` command line flag:
```bash
export KANSIBLE_WINRM=true
kansible pod --winrm somehosts somecommand
```
or by setting the environment variable `KANSIBLE_WINRM` which is a little easier to configure on the RC YAML:
```bash
export KANSIBLE_WINRM=true
kansible pod somehosts somecommand
```
### Checking the runtime status of the supervisors
To see which pods own which hosts run the following command:
oc export rc hawtapp-demo | grep ansible.fabric8 | sort
Where `hawtapp-demo` is the name of the RC for the supervisors.
The output is of the format:
pod.kansible.fabric8.io/app1: supervisor-znuj5
pod.kansible.fabric8.io/app2: supervisor-1same
Where the output is of the form ` pod.ansible.fabric8.io/$HOSTNAME: $PODNAME`
================================================
FILE: add-headers.sh
================================================
#!/bin/bash
function join { local IFS="$1"; shift; echo "$*"; }
copyright-header \
--copyright-software Kansible \
--copyright-holder 'Red Hat' \
--copyright-year 2016 \
--copyright-software-description 'Directly orchestrate operating system processes via Kubernetes' \
-o ./ \
--license-file header.txt \
-c headers.yml \
--add-path $(join : `find . -path ./vendor -prune -o -name '*.go' -print`)
================================================
FILE: ansible/ansible.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package ansible
import (
"bufio"
"bytes"
"fmt"
"io"
"io/ioutil"
"math/rand"
"net"
"os"
"os/exec"
"path/filepath"
"sort"
"strconv"
"strings"
"time"
"github.com/ghodss/yaml"
"k8s.io/kubernetes/pkg/api"
client "k8s.io/kubernetes/pkg/client/unversioned"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"github.com/fabric8io/kansible/k8s"
"github.com/fabric8io/kansible/log"
)
const (
// AnsibleHostPodAnnotationPrefix is the annotation prefix used on the RC to associate a host name with a pod name
AnsibleHostPodAnnotationPrefix = "pod.kansible.fabric8.io/"
// HostInventoryAnnotation is the list of hosts from the inventory
HostInventoryAnnotation = "kansible.fabric8.io/host-inventory"
// HostNameAnnotation is used to annotate a pod with the host name its processing
HostNameAnnotation = "kansible.fabric8.io/host-name"
// HostAddressAnnotation is used to annotate a pod with the host address its processing
HostAddressAnnotation = "kansible.fabric8.io/host-address"
// IconAnnotation is the annotation used to denote the icon on an RC or Service
IconAnnotation = "fabric8.io/iconUrl"
// IconURL is the kansible icon URL
IconURL = "https://cdn.rawgit.com/fabric8io/kansible/master/docs/images/logo.png"
// WinRMShellAnnotationPrefix stores the shell ID for the WinRM host name on the RC
WinRMShellAnnotationPrefix = "winrm.shellid.kansible.fabric8.io/"
// EnvHosts is the environment variable on a pod for specifying the Ansible hosts in the inventory
EnvHosts = "KANSIBLE_HOSTS"
// EnvCommand is the environment variable on a pod for specifying the command to run on each host
EnvCommand = "KANSIBLE_COMMAND"
// EnvRC is the environment variable on a pod for the name of the ReplicationController
EnvRC = "KANSIBLE_RC"
// EnvNamespace is the environment variable on a pod for the namespace to use
EnvNamespace = "KANSIBLE_NAMESPACE"
// EnvExportEnvVars is the space separated list of environment variables exported to the remote process
EnvExportEnvVars = "KANSIBLE_EXPORT_ENV_VARS"
// EnvPortForward allows port forwarding to be disabled
EnvPortForward = "KANSIBLE_PORT_FORWARD"
// EnvBash is the environment variable on a pod for the name of the bash script to generate on startup for
// opening a remote shell
EnvBash = "KANSIBLE_BASH"
// EnvIsBashShell is used to indicate of the command running remotely on the machine is a bash shell in which case we
// don't want to delete any previous WinRM shell
EnvIsBashShell = "KANSIBLE_IS_BASH_SHELL"
// PlaybookVolumeMount is the volume mount point where the playbook is assumed to be in the supervisor pod
PlaybookVolumeMount = "/playbook"
// AnsibleVariableHost is the Ansible inventory host variable for the remote host
AnsibleVariableHost = "ansible_host"
// AnsibleVariableUser is the Ansible inventory host variable for the remote user
AnsibleVariableUser = "ansible_user"
// AnsibleVariablePort is the Ansible inventory host variable for the reote port
AnsibleVariablePort = "ansible_port"
// AnsibleVariablePrivateKey is the Ansible inventory host variable for the SSH private key file
AnsibleVariablePrivateKey = "ansible_ssh_private_key_file"
// AnsibleVariableConnection is the Ansible inventory host variable for the kind of connection; e.g. 'winrm' for windows
AnsibleVariableConnection = "ansible_connection"
// AnsibleVariablePassword is the Ansible inventory host variable for the password
AnsibleVariablePassword = "ansible_ssh_pass"
// ConnectionWinRM is the value AnsibleVariableConnection of for using Windows with WinRM
ConnectionWinRM = "winrm"
// AppRunCommand is the Ansible inventory host variable for the run command that is executed on the remote host
AppRunCommand = "app_run_command"
gitURLPrefix = "url = "
gitConfig = ".git/config"
)
// HostEntry represents a single host entry in an Ansible inventory
type HostEntry struct {
Name string
Host string
Port string
User string
PrivateKey string
Connection string
Password string
RunCommand string
}
// LoadHostEntries loads the Ansible inventory for a given hosts string value
func LoadHostEntries(inventoryFile string, hosts string) ([]*HostEntry, error) {
file, err := os.Open(inventoryFile)
if err != nil {
return nil, err
}
defer file.Close()
hostEntries := []*HostEntry{}
hostsLine := "[" + hosts + "]"
foundHeader := false
completed := false
hostNames := []string{}
scanner := bufio.NewScanner(file)
for scanner.Scan() {
text := strings.TrimSpace(scanner.Text())
if len(text) > 0 && !strings.HasPrefix(text, "#") {
isHost := strings.HasPrefix(text, "[") && strings.HasSuffix(text, "]")
if isHost {
hostNames = append(hostNames, text[1:len(text)-1])
}
if foundHeader {
if isHost {
completed = true
} else if !completed {
hostEntry := parseHostEntry(text)
if hostEntry != nil {
hostEntries = append(hostEntries, hostEntry)
}
}
} else if text == hostsLine {
foundHeader = true
}
}
}
if err := scanner.Err(); err != nil {
return nil, err
}
if !foundHeader {
sort.Strings(hostNames)
return nil, fmt.Errorf("Could not find hosts `%s` in Ansible inventory file %s. Possible values are: %s",
hosts, inventoryFile, strings.Join(hostNames, ", "))
}
return hostEntries, nil
}
// LoadHostEntriesFromText loads the host entries from the given text which is typically taken from
// an annotation on the ReplicationController
func LoadHostEntriesFromText(text string) ([]*HostEntry, error) {
hostEntries := []*HostEntry{}
lines := strings.Split(text, "\n")
for _, line := range lines {
text := strings.TrimSpace(line)
if len(text) > 0 && !strings.HasPrefix(text, "#") {
hostEntry := parseHostEntry(text)
if hostEntry != nil {
hostEntries = append(hostEntries, hostEntry)
}
}
}
return hostEntries, nil
}
// ChooseHostAndPrivateKey parses the given Ansible inventory file for the hosts
// and chooses a single host inside it, returning the host name and the private key
func ChooseHostAndPrivateKey(thisPodName string, hosts string, c *client.Client, ns string, rcName string) (*HostEntry, *api.ReplicationController, map[string]string, error) {
retryAttempts := 20
for i := 0; i < retryAttempts; i++ {
if i > 0 {
// lets sleep before retrying
time.Sleep(time.Duration(random(1000, 20000)) * time.Millisecond)
}
if c == nil {
return nil, nil, nil, fmt.Errorf("No Kubernetes Client specified!")
}
rc, err := c.ReplicationControllers(ns).Get(rcName)
if err != nil {
return nil, nil, nil, err
}
if rc == nil {
return nil, nil, nil, fmt.Errorf("No ReplicationController found for name %s", rcName)
}
pods, err := c.Pods(ns).List(api.ListOptions{})
if err != nil {
return nil, nil, nil, err
}
metadata := &rc.ObjectMeta
resourceVersion := metadata.ResourceVersion
if metadata.Annotations == nil {
metadata.Annotations = make(map[string]string)
}
annotations := metadata.Annotations
log.Info("Using ReplicationController with namespace %s name %s and version %s", ns, rcName, resourceVersion)
hostsText := annotations[HostInventoryAnnotation]
if len(hostsText) == 0 {
return nil, nil, nil, fmt.Errorf("Could not find annotation %s on ReplicationController %s", HostInventoryAnnotation, rcName)
}
hostEntries, err := LoadHostEntriesFromText(hostsText)
if err != nil {
return nil, nil, nil, err
}
log.Info("Found %d host entries", len(hostEntries))
// lets pick a random entry
if len(hostEntries) > 0 {
filteredHostEntries := hostEntries
for annKey, podName := range annotations {
if strings.HasPrefix(annKey, AnsibleHostPodAnnotationPrefix) {
hostName := annKey[len(AnsibleHostPodAnnotationPrefix):]
if k8s.PodIsRunning(pods, podName) {
if podName != thisPodName {
log.Info("Pod %s podName has already claimed host %s", podName, hostName)
filteredHostEntries = removeHostEntry(filteredHostEntries, hostName)
}
} else {
// lets remove this annotation as the pod is no longer valid
log.Info("Pod %s is no longer running so removing the annotation %s", podName, annKey)
delete(metadata.Annotations, annKey)
}
}
}
count := len(filteredHostEntries)
if count == 0 {
log.Info("There are no more hosts available to be supervised by this pod!")
return nil, nil, nil, fmt.Errorf("No more hosts available to be supervised!")
}
log.Info("After filtering out hosts owned by other pods we have %v host entries left", count)
pickedEntry := filteredHostEntries[random(0, count)]
hostName := pickedEntry.Name
if len(pickedEntry.Host) == 0 {
return nil, nil, nil, fmt.Errorf("Could not find host name for entry %s", pickedEntry.Name)
}
if len(pickedEntry.User) == 0 {
return nil, nil, nil, fmt.Errorf("Could not find User for entry %s", pickedEntry.Name)
}
// lets try pick this pod
annotations[AnsibleHostPodAnnotationPrefix+hostName] = thisPodName
rc, err = c.ReplicationControllers(ns).Update(rc)
if err != nil {
log.Info("Failed to update the RC, could be concurrent update failure: %s", err)
} else {
log.Info("Picked host " + pickedEntry.Host)
// lets update the Pod with the host name label
podClient := c.Pods(ns)
pod, err := podClient.Get(thisPodName)
if err != nil {
return pickedEntry, nil, nil, err
}
metadata := &pod.ObjectMeta
if metadata.Annotations == nil {
metadata.Annotations = make(map[string]string)
}
metadata.Annotations[HostNameAnnotation] = pickedEntry.Name
metadata.Annotations[HostAddressAnnotation] = pickedEntry.Host
//pod.Status = api.PodStatus{}
pod, err = podClient.UpdateStatus(pod)
if err != nil {
return pickedEntry, nil, nil, err
}
// lets export required environment variables
exportEnvVars := os.Getenv(EnvExportEnvVars)
envVars := make(map[string]string)
if len(exportEnvVars) > 0 {
names := strings.Split(exportEnvVars, " ")
for _, name := range names {
name = strings.TrimSpace(name)
if len(name) > 0 {
value := os.Getenv(name)
if len(value) > 0 {
envVars[name] = value
log.Debug("Exporting environment variable %s = %s", name, value)
}
}
}
}
err = forwardPorts(pod, pickedEntry)
return pickedEntry, rc, envVars, err
}
}
}
return nil, nil, nil, fmt.Errorf("Could not find any available hosts on the ReplicationController %s and hosts %s", rcName, hosts)
}
// forwardPorts forwards any ports that are defined in the PodSpec to the host
func forwardPorts(pod *api.Pod, hostEntry *HostEntry) error {
disableForwarding := os.Getenv(EnvPortForward)
if len(disableForwarding) > 0 {
if strings.ToLower(disableForwarding) == "false" {
return nil
}
}
podSpec := pod.Spec
host := hostEntry.Host
for _, container := range podSpec.Containers {
for _, port := range container.Ports {
name := port.Name
portNum := port.ContainerPort
if portNum > 0 {
address := "0.0.0.0:" + strconv.Itoa(portNum)
forwardAddress := host + ":" + strconv.Itoa(portNum)
err := forwardPortLoop(name, address, forwardAddress)
if err != nil {
return err
}
}
}
}
return nil
}
func forwardPortLoop(name string, address string, forwardAddress string) error {
log.Info("forwarding port %s %s => %s", name, address, forwardAddress)
listener, err := net.Listen("tcp", address)
if err != nil {
return err
}
log.Info("About to start the acceptor goroutine!")
go func() {
for {
conn, err := listener.Accept()
if err != nil {
log.Err("Failed to accept listener: %v", err)
}
log.Info("Accepted connection %v\n", conn)
go forwardPort(conn, forwardAddress)
}
}()
return nil
}
func forwardPort(conn net.Conn, address string) {
client, err := net.Dial("tcp", address)
if err != nil {
log.Err("Dial failed: %v", err)
}
log.Info("Connected to localhost %v\n", conn)
go func() {
defer client.Close()
defer conn.Close()
io.Copy(client, conn)
}()
go func() {
defer client.Close()
defer conn.Close()
io.Copy(conn, client)
}()
}
// UpdateKansibleRC reads the Ansible inventory and the RC YAML for the hosts and updates it in Kubernetes
// along with removing any remaining pods which are running against old hosts that have been removed from the inventory
func UpdateKansibleRC(hostEntries []*HostEntry, hosts string, f *cmdutil.Factory, c *client.Client, ns string, rcFile string, replicas int) (*api.ReplicationController, error) {
variables, err := LoadAnsibleVariables(hosts)
if err != nil {
return nil, err
}
data, err := LoadFileAndReplaceVariables(rcFile, variables)
if err != nil {
return nil, err
}
rcConfig, err := k8s.ReadReplicationController(data)
if err != nil {
return nil, err
}
rcName := rcConfig.ObjectMeta.Name
podSpec := k8s.GetOrCreatePodSpec(rcConfig)
// lets default labels and selectors if they are missing
rcLabels := rcConfig.ObjectMeta.Labels
if len(rcLabels) > 0 {
rcSpec := rcConfig.Spec
if len(rcSpec.Selector) == 0 {
rcSpec.Selector = rcLabels
}
template := rcSpec.Template
if template != nil {
if len(template.ObjectMeta.Labels) == 0 {
template.ObjectMeta.Labels = rcLabels
}
}
}
container := k8s.GetFirstContainerOrCreate(rcConfig)
if len(container.Image) == 0 {
container.Image = "fabric8/kansible"
}
if len(container.Name) == 0 {
container.Name = "kansible"
}
if len(container.ImagePullPolicy) == 0 {
container.ImagePullPolicy = "IfNotPresent"
}
preStopCommands := []string{"kansible", "kill"}
if len(podSpec.ServiceAccountName) == 0 {
podSpec.ServiceAccountName = rcName
}
serviceAccountName := podSpec.ServiceAccountName
k8s.EnsureContainerHasPreStopCommand(container, preStopCommands)
k8s.EnsureContainerHasEnvVar(container, EnvHosts, hosts)
k8s.EnsureContainerHasEnvVar(container, EnvRC, rcName)
k8s.EnsureContainerHasEnvVar(container, EnvBash, "/usr/local/bin/bash")
k8s.EnsureContainerHasEnvVarFromField(container, EnvNamespace, "metadata.namespace")
command := k8s.GetContainerEnvVar(container, EnvCommand)
if len(command) == 0 {
return nil, fmt.Errorf("No environemnt variable value defined for %s in ReplicationController YAML file %s", EnvCommand, rcFile)
}
if len(serviceAccountName) > 0 {
created, err := k8s.EnsureServiceAccountExists(c, ns, serviceAccountName)
if err != nil {
return nil, err
}
if created {
err = ensureSCCExists(ns, serviceAccountName)
if err != nil {
return nil, err
}
}
}
isUpdate := true
rc, err := c.ReplicationControllers(ns).Get(rcName)
if err != nil {
isUpdate = false
rc = &api.ReplicationController{
ObjectMeta: api.ObjectMeta{
Namespace: ns,
Name: rcName,
},
}
}
pods, err := c.Pods(ns).List(api.ListOptions{})
if err != nil {
return nil, err
}
// merge the RC configuration to allow configuration
originalReplicas := rc.Spec.Replicas
rc.Spec = rcConfig.Spec
metadata := &rc.ObjectMeta
resourceVersion := metadata.ResourceVersion
rcSpec := &rc.Spec
if replicas < 0 {
replicas = originalReplicas
}
rcSpec.Replicas = replicas
err = generatePrivateKeySecrets(c, ns, hostEntries, rc, podSpec, container)
if err != nil {
return rc, err
}
text := HostEntriesToString(hostEntries)
if metadata.Annotations == nil {
metadata.Annotations = make(map[string]string)
}
metadata.Annotations[HostInventoryAnnotation] = text
metadata.Annotations[IconAnnotation] = IconURL
log.Info("found RC with name %s and version %s and replicas %d", rcName, resourceVersion, rcSpec.Replicas)
deletePodsForOldHosts(c, ns, metadata.Annotations, pods, hostEntries)
replicationController := c.ReplicationControllers(ns)
if isUpdate {
_, err = replicationController.Update(rc)
} else {
_, err = replicationController.Create(rc)
}
if err != nil {
log.Info("Failed to update the RC, could be concurrent update failure: %s", err)
return nil, err
}
err = applyOtherKubernetesResources(f, c, ns, rcFile, variables)
return rc, err
}
func applyOtherKubernetesResources(f *cmdutil.Factory, c *client.Client, ns string, rcFile string, variables map[string]string) error {
dir := filepath.Dir(rcFile)
if len(dir) == 0 {
dir = "."
}
files, err := ioutil.ReadDir(dir)
if err != nil {
return err
}
for _, file := range files {
name := file.Name()
lower := strings.ToLower(name)
ext := filepath.Ext(lower)
if !file.IsDir() && lower != "rc.yml" {
resource := false
switch ext {
case ".json":
resource = true
case ".js":
resource = true
case ".yml":
resource = true
case ".yaml":
resource = true
}
if resource {
fullpath := filepath.Join(dir, name)
err = applyOtherKubernetesResource(f, c, ns, fullpath, variables)
if err != nil {
return err
}
}
}
}
return nil
}
func applyOtherKubernetesResource(f *cmdutil.Factory, c *client.Client, ns string, file string, variables map[string]string) error {
log.Info("applying kubernetes resource: %s", file)
data, err := LoadFileAndReplaceVariables(file, variables)
if err != nil {
return err
}
// TODO the following should work ideally but something's wrong with the loading of versioned schemas...
//return k8s.ApplyResource(f, c, ns, data, file)
// lets use the `oc` binary instead
isOc := true
binary, err := exec.LookPath("oc")
if err != nil {
isOc = false
var err2 error
binary, err2 = exec.LookPath("kubectl")
if err2 != nil {
return err
}
}
reader := bytes.NewReader(data)
err = runCommand(binary, []string{"apply", "-f", "-"}, reader)
if err != nil {
return err
}
if isOc {
// if we are a service lets try figure out the service name?
service := api.Service{}
if err := yaml.Unmarshal(data, &service); err != nil {
log.Info("Probably not a service! %s", err)
return nil
}
name := service.ObjectMeta.Name
serviceType := service.Spec.Type
if service.Kind == "Service" && len(name) > 0 && serviceType == "LoadBalancer" {
log.Info("Checking the service %s is exposed in OpenShift", name)
runCommand(binary, []string{"expose", "service", name}, os.Stdin)
return nil
}
}
return nil
}
func ensureSCCExists(ns string, serviceAccountName string) error {
binary, err := exec.LookPath("oc")
if err != nil {
// no openshift so ignore
return nil
}
text, err := getCommandOutputString(binary, []string{"export", "scc", serviceAccountName}, os.Stdin)
if err != nil {
log.Debug("Failed to get SecurityContextConstraints %s. %s", serviceAccountName, err)
}
if err != nil || len(text) == 0 {
text = `
apiVersion: v1
kind: SecurityContextConstraints
groups:
- system:cluster-admins
- system:nodes
metadata:
creationTimestamp: null
name: ` + serviceAccountName + `
runAsUser:
type: RunAsAny
seLinuxContext:
type: RunAsAny
supplementalGroups:
type: RunAsAny
users:
`
}
// lets ensure there's a users section
if !strings.Contains(text, "\nusers:") {
text = text + "\nusers:\n"
}
line := "system:serviceaccount:" + ns + ":" + serviceAccountName
if strings.Contains(text, line) {
log.Info("No need to modify SecurityContextConstraints as it already contains line for namespace %s and service account %s", ns, serviceAccountName)
return nil
}
text = text + "\n- " + line + "\n"
log.Debug("created SecurityContextConstraints YAML: %s", text)
log.Info("Applying changes for SecurityContextConstraints %s for namespace %s and ServiceAccount %s", serviceAccountName, ns, serviceAccountName)
reader := bytes.NewReader([]byte(text))
err = runCommand(binary, []string{"apply", "-f", "-"}, reader)
if err != nil {
log.Err("Failed to update OpenShift SecurityContextConstraints named %s. %s", serviceAccountName, err)
}
return err
}
func getCommandOutputString(binary string, args []string, reader io.Reader) (string, error) {
cmd := exec.Command(binary, args...)
cmd.Stdin = reader
var out bytes.Buffer
cmd.Stdout = &out
stderr, err := cmd.StderrPipe()
if err != nil {
return "", fmt.Errorf("Unable to setup stderr for command %s: %v", binary, err)
}
go io.Copy(os.Stderr, stderr)
err = cmd.Start()
if err != nil {
return "", err
}
err = cmd.Wait()
if err != nil {
return "", err
}
return out.String(), err
}
func runCommand(binary string, args []string, reader io.Reader) error {
cmd := exec.Command(binary, args...)
cmd.Stdin = reader
stdout, err := cmd.StdoutPipe()
if err != nil {
return fmt.Errorf("Unable to setup stdout for command %s: %v", binary, err)
}
go io.Copy(os.Stdout, stdout)
stderr, err := cmd.StderrPipe()
if err != nil {
return fmt.Errorf("Unable to setup stderr for command %s: %v", binary, err)
}
go io.Copy(os.Stderr, stderr)
err = cmd.Start()
if err != nil {
return err
}
err = cmd.Wait()
if err != nil {
return err
}
return err
}
func generatePrivateKeySecrets(c *client.Client, ns string, hostEntries []*HostEntry, rc *api.ReplicationController, podSpec *api.PodSpec, container *api.Container) error {
secrets := map[string]string{}
rcName := rc.ObjectMeta.Name
for _, hostEntry := range hostEntries {
privateKey := hostEntry.PrivateKey
if len(privateKey) != 0 {
volumeMount := secrets[privateKey]
if len(volumeMount) == 0 {
buffer, err := ioutil.ReadFile(privateKey)
if err != nil {
return err
}
hostName := hostEntry.Name
secretName := rcName + "-" + hostName
keyName := "sshkey"
secret := &api.Secret{
ObjectMeta: api.ObjectMeta{
Name: secretName,
Labels: rc.ObjectMeta.Labels,
},
Data: map[string][]byte{
keyName: buffer,
},
}
// lets create or update the secret
secretClient := c.Secrets(ns)
current, err := secretClient.Get(secretName)
if err != nil || current == nil {
_, err = secretClient.Create(secret)
} else {
_, err = secretClient.Update(secret)
}
if err != nil {
return err
}
volumeMount = "/secrets/" + hostName
secrets[privateKey] = volumeMount
hostEntry.PrivateKey = volumeMount + "/" + keyName
// lets add the volume mapping to the container
secretVolumeName := "secret-" + hostName
k8s.EnsurePodSpecHasSecretVolume(podSpec, secretVolumeName, secretName)
k8s.EnsureContainerHasVolumeMount(container, secretVolumeName, volumeMount)
}
}
}
return nil
}
func findGitURL() (string, error) {
file, err := os.Open(gitConfig)
if err != nil {
return "", err
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
text := strings.TrimSpace(scanner.Text())
if strings.HasPrefix(text, gitURLPrefix) {
return text[len(gitURLPrefix):], nil
}
}
if err := scanner.Err(); err != nil {
return "", err
}
return "", nil
}
func removeHostEntry(hostEntries []*HostEntry, name string) []*HostEntry {
for i, entry := range hostEntries {
if entry.Name == name {
if i < len(hostEntries)-1 {
return append(hostEntries[:i], hostEntries[i+1:]...)
}
return hostEntries[:i]
}
}
log.Warn("Did not find a host entry with name %s", name)
return hostEntries
}
// GetHostEntryByName finds the HostEntry for the given host name or returns nil
func GetHostEntryByName(hostEntries []*HostEntry, name string) *HostEntry {
for _, entry := range hostEntries {
if entry.Name == name {
return entry
}
}
return nil
}
func deletePodsForOldHosts(c *client.Client, ns string, annotations map[string]string, pods *api.PodList, hostEntries []*HostEntry) {
for annKey, podName := range annotations {
if strings.HasPrefix(annKey, AnsibleHostPodAnnotationPrefix) {
hostName := annKey[len(AnsibleHostPodAnnotationPrefix):]
if k8s.PodIsRunning(pods, podName) {
hostEntry := GetHostEntryByName(hostEntries, hostName)
if hostEntry == nil {
log.Info("Deleting pod %s as there is no longer an Ansible inventory host called %s", podName, hostName)
c.Pods(ns).Delete(podName, nil)
}
}
}
}
}
func random(min, max int) int {
rand.Seed(time.Now().Unix())
return rand.Intn(max-min) + min
}
// HostEntriesToString generates the Ansible inventory text for the host entries
func HostEntriesToString(hostEntries []*HostEntry) string {
var buffer bytes.Buffer
for _, hostEntry := range hostEntries {
hostEntry.write(&buffer)
buffer.WriteString("\n")
}
return buffer.String()
}
func (hostEntry HostEntry) write(buffer *bytes.Buffer) {
buffer.WriteString(hostEntry.Name)
host := hostEntry.Host
if len(host) > 0 {
buffer.WriteString(" ")
buffer.WriteString(AnsibleVariableHost)
buffer.WriteString("=")
buffer.WriteString(host)
}
pk := hostEntry.PrivateKey
if len(pk) > 0 {
buffer.WriteString(" ")
buffer.WriteString(AnsibleVariablePrivateKey)
buffer.WriteString("=")
buffer.WriteString(pk)
}
password := hostEntry.Password
if len(password) > 0 {
buffer.WriteString(" ")
buffer.WriteString(AnsibleVariablePassword)
buffer.WriteString("=")
buffer.WriteString(password)
}
runCommand := hostEntry.RunCommand
if len(runCommand) > 0 {
buffer.WriteString(" ")
buffer.WriteString(AppRunCommand)
buffer.WriteString("=")
buffer.WriteString(runCommand)
}
port := hostEntry.Port
if len(port) > 0 {
buffer.WriteString(" ")
buffer.WriteString(AnsibleVariablePort)
buffer.WriteString("=")
buffer.WriteString(port)
}
user := hostEntry.User
if len(user) > 0 {
buffer.WriteString(" ")
buffer.WriteString(AnsibleVariableUser)
buffer.WriteString("=")
buffer.WriteString(user)
}
connection := hostEntry.Connection
if len(connection) > 0 {
buffer.WriteString(" ")
buffer.WriteString(AnsibleVariableConnection)
buffer.WriteString("=")
buffer.WriteString(connection)
}
}
func parseHostEntry(text string) *HostEntry {
values := strings.Split(text, " ")
name := ""
user := ""
host := ""
port := ""
privateKey := ""
connection := ""
password := ""
runCommand := ""
count := len(values)
if count > 0 {
name = values[0]
// lets parse the key value expressions for the host name
for _, exp := range values[1:] {
params := strings.Split(exp, "=")
if len(params) == 2 {
paramValue := params[1]
switch params[0] {
case AnsibleVariableHost:
host = paramValue
case AnsibleVariableUser:
user = paramValue
case AnsibleVariablePort:
port = paramValue
case AnsibleVariablePrivateKey:
privateKey = paramValue
case AnsibleVariableConnection:
connection = paramValue
case AnsibleVariablePassword:
password = paramValue
case AppRunCommand:
runCommand = paramValue
}
}
}
// if there's no host defined yet, lets assume that the name is the host name
if len(host) == 0 {
host = name
}
}
return &HostEntry{
Name: name,
Host: host,
Port: port,
User: user,
PrivateKey: privateKey,
Connection: connection,
Password: password,
RunCommand: runCommand,
}
}
================================================
FILE: ansible/variables.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package ansible
import (
"io/ioutil"
"os"
"strings"
"github.com/ghodss/yaml"
)
const (
// AnsibleGlobalVariablesFile is the prefix file name for the Ansible global variables file
AnsibleGlobalVariablesFile = "group_vars/"
)
// LoadAnsibleVariables loads the global variables from the Ansible playbook
// so that we can search and replace them inside other files like the RC.yml
func LoadAnsibleVariables(hosts string) (map[string]string, error) {
path := AnsibleGlobalVariablesFile + hosts
if _, err := os.Stat(path); os.IsNotExist(err) {
return map[string]string{}, nil
}
data, err := ioutil.ReadFile(path)
if err != nil {
return nil, err
}
variables := map[string]string{}
err = yaml.Unmarshal(data, &variables)
if err != nil {
return variables, err
}
for k, v := range variables {
variables[k] = ReplaceVariables(v, variables)
}
return variables, nil
}
// ReplaceVariables replaces variables in the given string using the Ansible variable syntax of
// `{{ name }}`
func ReplaceVariables(text string, variables map[string]string) string {
for k, v := range variables {
replace := "{{ " + k + " }}"
text = strings.Replace(text, replace, v, -1)
}
return text
}
// LoadFileAndReplaceVariables loads the given file and replaces all the Ansible variable expressions
// and then returns the data
func LoadFileAndReplaceVariables(filename string, variables map[string]string) ([]byte, error) {
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
// TODO replace the variables!
text := ReplaceVariables(string(data), variables)
return []byte(text), nil
}
================================================
FILE: circle.yml
================================================
machine:
environment:
IMPORT_PATH: "github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME"
dependencies:
pre:
- echo $PATH
- wget "https://github.com/Masterminds/glide/releases/download/0.8.2/glide-0.8.2-linux-amd64.tar.gz"
- mkdir /home/ubuntu/.go_workspace/bin || true
- tar -vxz -C /home/ubuntu/.go_workspace/bin --strip=1 -f glide-0.8.2-linux-amd64.tar.gz
- mkdir -p "/home/ubuntu/.go_workspace/src/$IMPORT_PATH" || true
- rsync -azC --delete ./ "/home/ubuntu/.go_workspace/src/$IMPORT_PATH/"
override:
- rm -rf vendor
- make bootstrap build:
pwd: "../.go_workspace/src/$IMPORT_PATH/"
test:
override:
- make test lint:
pwd: "../.go_workspace/src/$IMPORT_PATH/"
# Disabled for now to avoid conflicts with the Jenkins builds:
#deployment:
# hub:
# branch: master
# owner: fabric8io
# commands:
# - docker build -t fabric8/kansible .
# - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
# - docker push fabric8/kansible
================================================
FILE: cmd/kill.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package cmd
import (
"os"
"github.com/spf13/cobra"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"github.com/fabric8io/kansible/ansible"
"github.com/fabric8io/kansible/k8s"
"github.com/fabric8io/kansible/log"
"github.com/fabric8io/kansible/winrm"
)
func init() {
killCmd.Flags().StringVar(&rcName, "rc", "$KANSIBLE_RC", "the name of the ReplicationController for the supervisors")
RootCmd.AddCommand(killCmd)
}
// killCmd kills the pending windows shell of the current pod if its still running
var killCmd = &cobra.Command{
Use: "kill <hosts> [command]",
Short: "Kills any pending shells for this pod.",
Long: `This commmand will find the shell thats associated with a pod and kill it.`,
Run: func(cmd *cobra.Command, args []string) {
f := cmdutil.NewFactory(clientConfig)
if f == nil {
log.Die("Failed to create Kubernetes client factory!")
}
kubeclient, err := f.Client()
if err != nil || kubeclient == nil {
log.Die(MessageFailedToCreateKubernetesClient, err)
}
ns, _, _ := f.DefaultNamespace()
if len(ns) == 0 {
ns = "default"
}
thisPodName, err := k8s.GetThisPodName()
if err != nil {
log.Die("Failed to get this pod name: %s", err)
}
pod, err := kubeclient.Pods(ns).Get(thisPodName)
if err != nil {
log.Die("Failed to get pod from API server: %s", err)
}
annotations := pod.ObjectMeta.Annotations
if annotations == nil {
log.Die("No annotations available on pod %s", thisPodName)
}
hostName := annotations[ansible.HostNameAnnotation]
if len(hostName) == 0 {
log.Info("No annotation `%s` available on pod %s", ansible.HostNameAnnotation, thisPodName)
return
}
// now lets load the connection details from the RC annotations
rcName = os.ExpandEnv(rcName)
if rcName == "" {
log.Die("Replication controller name is required")
}
rc, err := kubeclient.ReplicationControllers(ns).Get(rcName)
if err != nil {
log.Die("Failed to get replication controller from API server: %s", err)
}
if rc == nil {
log.Die("No ReplicationController found for name %s", rcName)
}
metadata := &rc.ObjectMeta
if metadata.Annotations == nil {
metadata.Annotations = make(map[string]string)
}
rcAnnotations := metadata.Annotations
hostsText := rcAnnotations[ansible.HostInventoryAnnotation]
if len(hostsText) == 0 {
log.Die("Could not find annotation %s on ReplicationController %s", ansible.HostInventoryAnnotation, rcName)
}
shellID := rcAnnotations[ansible.WinRMShellAnnotationPrefix+hostName]
if len(shellID) == 0 {
log.Info("No annotation `%s` available on pod %s", ansible.WinRMShellAnnotationPrefix, thisPodName)
return
}
hostEntries, err := ansible.LoadHostEntriesFromText(hostsText)
if err != nil {
log.Die("Failed to load hosts: %s", err)
}
log.Info("Found %d host entries", len(hostEntries))
hostEntry := ansible.GetHostEntryByName(hostEntries, hostName)
if hostEntry == nil {
log.Die("Could not find a HostEntry called `%s` from %d host entries", hostName, len(hostEntries))
}
err = winrm.CloseShell(hostEntry.User, hostEntry.Password, hostEntry.Host, hostEntry.Port, shellID)
if err != nil {
log.Die("Failed to close shell: %s", err)
}
log.Info("Shell %s has been closed", shellID)
},
}
================================================
FILE: cmd/pod.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package cmd
import (
"io/ioutil"
"os"
"strconv"
"strings"
"github.com/spf13/cobra"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"github.com/fabric8io/kansible/ansible"
"github.com/fabric8io/kansible/k8s"
"github.com/fabric8io/kansible/log"
"github.com/fabric8io/kansible/ssh"
"github.com/fabric8io/kansible/winrm"
)
var (
rcName, passwordFlag, connection, bash string
)
func init() {
podCmd.Flags().StringVar(&rcName, "rc", "$KANSIBLE_RC", "the name of the ReplicationController for the supervisors")
podCmd.Flags().StringVar(&passwordFlag, "password", "$KANSIBLE_PASSWORD", "the password used for WinRM connections")
podCmd.Flags().StringVar(&connection, "connection", "", "the Ansible connection type to use. Defaults to SSH unless 'winrm' is defined to use WinRM on Windows")
podCmd.Flags().StringVar(&bash, "bash", "$KANSIBLE_BASH", "if specified a script is generated for running a bash like shell on the remote machine")
RootCmd.AddCommand(podCmd)
}
// podCmd is the root command for the whole program.
var podCmd = &cobra.Command{
Use: "pod <hosts> [command]",
Short: "Runs the kansible pod which owns a host from the Ansible inventory then runs a remote command on the host",
Long: `This commmand will pick an available host from the Ansible inventory, then run a remote command on that host.`,
Run: func(cmd *cobra.Command, args []string) {
// Pod runs the kansible pod for a given group of hosts in an Ansible playbook
// this grabs a specific host (using annotations on the RC) then runs a remote command
// on that host binding stdin, stdout, stderr to the remote process
if len(args) < 1 {
log.Die("Expected arguments <hosts> [command]")
}
hosts := os.ExpandEnv(args[0])
command := ""
if len(args) > 1 {
command = os.ExpandEnv(strings.Join(args[1:], " "))
}
f := cmdutil.NewFactory(clientConfig)
if f == nil {
log.Die("Failed to create Kubernetes client factory!")
}
kubeclient, err := f.Client()
if err != nil || kubeclient == nil {
log.Die(MessageFailedToCreateKubernetesClient, err)
}
ns := os.Getenv(ansible.EnvNamespace)
if len(ns) == 0 {
ns, _, _ = f.DefaultNamespace()
if len(ns) == 0 {
ns = "default"
}
}
rcName = os.ExpandEnv(rcName)
if rcName == "" {
log.Die("RC name is required")
}
thisPodName, err := k8s.GetThisPodName()
if err != nil {
log.Die("Couldn't get pod name: %s", err)
}
hostEntry, rc, envVars, err := ansible.ChooseHostAndPrivateKey(thisPodName, hosts, kubeclient, ns, rcName)
if err != nil {
log.Die("Couldn't find host: %s", err)
}
host := hostEntry.Host
user := hostEntry.User
port := hostEntry.Port
if len(port) == 0 {
port = strconv.Itoa(sshPort)
}
connection := hostEntry.Connection
if len(connection) == 0 {
connection = os.ExpandEnv(connection)
}
runCommand := hostEntry.RunCommand
if len(runCommand) != 0 {
command = runCommand
}
commandEnvVars := []string{}
if len(command) == 0 {
if len(connection) > 0 {
envVarName := ansible.EnvCommand + "_" + strings.ToUpper(connection)
commandEnvVars = append(commandEnvVars, envVarName)
command = os.Getenv(envVarName)
}
}
commandEnvVars = append(commandEnvVars, ansible.EnvCommand)
if len(command) == 0 {
command = os.Getenv(ansible.EnvCommand)
}
if len(command) == 0 {
plural := ""
if len(commandEnvVars) > 1 {
plural = "s"
}
log.Die("Could not find a command to execute from the environment variable%s: %s", plural, strings.Join(commandEnvVars, ", "))
}
bash := os.ExpandEnv(bash)
if len(bash) > 0 {
err = generateBashScript(bash, connection)
if err != nil {
log.Err("Failed to generate bash script at %s due to: %v", bash, err)
return
}
}
if connection == ansible.ConnectionWinRM {
password := hostEntry.Password
if len(password) == 0 {
password = os.ExpandEnv(passwordFlag)
if password == "" {
log.Die("Cannot connect without a password")
}
}
err = winrm.RemoteWinRmCommand(user, password, host, port, command, kubeclient, rc, hostEntry.Name)
} else {
privatekey := hostEntry.PrivateKey
err = ssh.RemoteSSHCommand(user, privatekey, host, port, command, envVars)
}
if err != nil {
log.Err("Failed: %v", err)
}
},
}
func generateBashScript(file string, connection string) error {
shellCommand := "bash"
if connection == ansible.ConnectionWinRM {
shellCommand = "cmd"
}
text := `#!/bin/sh
echo "opening shell on remote machine..."
export ` + ansible.EnvIsBashShell + `=true
export ` + ansible.EnvPortForward + `=false
kansible pod appservers ` + shellCommand + "\n"
return ioutil.WriteFile(file, []byte(text), 0555)
}
================================================
FILE: cmd/rc.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package cmd
import (
"os"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"github.com/fabric8io/kansible/ansible"
"github.com/fabric8io/kansible/log"
"github.com/spf13/cobra"
)
const (
// MessageFailedToCreateKubernetesClient is the message to report if a kuberentes client cannot be created
MessageFailedToCreateKubernetesClient = "Failed to create Kubernetes client. Maybe you need to run `oc login`?. Error: %s"
)
var (
inventory string
replicas int
)
func init() {
rcCmd.Flags().StringVar(&inventory, "inventory", "inventory", "the location of your Ansible inventory file")
rcCmd.Flags().IntVar(&replicas, "replicas", -1, "specifies the number of replicas to create for the RC")
RootCmd.AddCommand(rcCmd)
}
// RCCmd is the root command for the whole program.
var rcCmd = &cobra.Command{
Use: "rc <hosts>",
Short: "Creates or updates the kansible ReplicationController for some hosts in an Ansible inventory",
Long: `This commmand will analyse the hosts in an Ansible inventory and creates or updates the ReplicationController for the kansible pods.`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) != 1 {
log.Die("Expected argument <hosts> for the name of the hosts in the ansible inventory file")
}
hosts := args[0]
f := cmdutil.NewFactory(clientConfig)
if f == nil {
log.Die("Failed to create Kubernetes client factory!")
}
kubeclient, err := f.Client()
if err != nil || kubeclient == nil {
log.Die(MessageFailedToCreateKubernetesClient, err)
}
ns, _, _ := f.DefaultNamespace()
if len(ns) == 0 {
ns = "default"
}
inventory = os.ExpandEnv(inventory)
if inventory == "" {
log.Die("Value for inventory flag is empty")
}
hostEntries, err := ansible.LoadHostEntries(inventory, hosts)
if err != nil {
log.Die("Cannot load host entries: %s", err)
}
log.Info("Found %d host entries in the Ansible inventory for %s", len(hostEntries), hosts)
rcFile := "kubernetes/" + hosts + "/rc.yml"
_, err = ansible.UpdateKansibleRC(hostEntries, hosts, f, kubeclient, ns, rcFile, replicas)
if err != nil {
log.Die("Failed to update Kansible RC: %s", err)
}
},
}
================================================
FILE: cmd/root.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package cmd
import (
"os"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"github.com/fabric8io/kansible/log"
)
var (
// RootCmd is the root command for the whole program.
RootCmd = &cobra.Command{
Use: "kansible",
Short: "Orchestrate processes in the same way as you orchestrate Docker containers with Kubernetes",
Long: `Kansible
Kansible orchestrates processes in the same way as you orchestrate Docker containers with Kubernetes.
Once you have created an Ansible playbook to install and configure your software you can use Kansible to create
a Kubernetes Replication Controller to run, scale and manage the processes providing a universal view in Kubernetes
of all your containers and processes along with common scaling, high availability, service discovery and load balancing.
More help is here: https://github.com/fabric8io/kansible/blob/master/README.md
`,
}
sshPort int
clientConfig clientcmd.ClientConfig
)
func init() {
RootCmd.PersistentFlags().IntVar(&sshPort, "port", 22, "the port for the remote SSH connection")
RootCmd.PersistentFlags().BoolVar(&log.IsDebugging, "debug", false, "enable verbose debugging output")
clientConfig = defaultClientConfig(RootCmd.PersistentFlags())
}
func defaultClientConfig(flags *pflag.FlagSet) clientcmd.ClientConfig {
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
flags.StringVar(&loadingRules.ExplicitPath, "kubeconfig", "", "Path to the kubeconfig file to use for CLI requests.")
overrides := &clientcmd.ConfigOverrides{}
flagNames := clientcmd.RecommendedConfigOverrideFlags("")
clientcmd.BindOverrideFlags(overrides, flags, flagNames)
clientConfig := clientcmd.NewInteractiveDeferredLoadingClientConfig(loadingRules, overrides, os.Stdin)
return clientConfig
}
================================================
FILE: cmd/run.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package cmd
import (
"os"
"strconv"
"github.com/fabric8io/kansible/ansible"
"github.com/fabric8io/kansible/log"
"github.com/fabric8io/kansible/ssh"
"github.com/fabric8io/kansible/winrm"
"github.com/spf13/cobra"
)
// cli.StringFlag{
// Name: "connection",
// Usage: "The Ansible connection type to use. Defaults to SSH unless 'winrm' is defined to use WinRM on Windows",
// },
// },
// },
var (
user, password, host, command, privatekey string
)
func init() {
runCmd.Flags().StringVar(&user, "user", "${KANSIBLE_USER}", "the user to use on the remote connection")
runCmd.Flags().StringVar(&privatekey, "privatekey", "${KANSIBLE_PRIVATEKEY}", "the private key used for SSH")
runCmd.Flags().StringVar(&host, "host", "${KANSIBLE_HOST}", "the host for the remote connection")
runCmd.Flags().StringVar(&command, "command", "${KANSIBLE_COMMAND}", "the remote command to invoke on the host")
runCmd.Flags().StringVar(&password, "password", "", "the password if using WinRM to execute the command")
runCmd.Flags().StringVar(&connection, "connection", "", "the Ansible connection type to use. Defaults to SSH unless 'winrm' is defined to use WinRM on Windows")
RootCmd.AddCommand(runCmd)
}
// runCmd runs a remote command on a given host to test out SSH / WinRM
var runCmd = &cobra.Command{
Use: "run [command]",
Short: "Runs a remote command on a given host to test out SSH / WinRM",
Long: `This commmand will begin running the supervisor on an avaiable host.`,
Run: func(cmd *cobra.Command, args []string) {
command = os.ExpandEnv(command)
if command == "" {
log.Die("Command is required")
}
host = os.ExpandEnv(host)
if host == "" {
log.Die("Host is required")
}
user = os.ExpandEnv(user)
if user == "" {
log.Die("User is required")
}
if connection == ansible.ConnectionWinRM {
password = os.ExpandEnv(password)
if password == "" {
log.Die("Password is required")
}
err := winrm.RemoteWinRmCommand(user, password, host, strconv.Itoa(sshPort), command, nil, nil, "")
if err != nil {
log.Err("Failed: %v", err)
}
} else {
privatekey = os.ExpandEnv(privatekey)
if privatekey == "" {
log.Die("Private key is required")
}
err := ssh.RemoteSSHCommand(user, privatekey, host, strconv.Itoa(sshPort), command, nil)
if err != nil {
log.Err("Failed: %v", err)
}
}
},
}
================================================
FILE: cmd/version.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package cmd
import (
"bytes"
"fmt"
"html/template"
"os"
"strings"
"github.com/spf13/cobra"
"github.com/fabric8io/kansible/version"
)
var versionInfoTmpl = `
kansible, version {{.version}} (branch: {{.branch}}, revision: {{.revision}})
build user: {{.buildUser}}
build date: {{.buildDate}}
go version: {{.goVersion}}
`
var versionCmd = &cobra.Command{
Use: "version",
Short: "Output version information and exit",
Long: `Output version information and exit.`,
Run: func(cmd *cobra.Command, args []string) {
t := template.Must(template.New("version").Parse(versionInfoTmpl))
var buf bytes.Buffer
if err := t.ExecuteTemplate(&buf, "version", version.Map); err != nil {
panic(err)
}
fmt.Fprintln(os.Stdout, strings.TrimSpace(buf.String()))
},
}
func init() {
RootCmd.AddCommand(versionCmd)
}
================================================
FILE: glide.yaml
================================================
package: github.com/fabric8io/gosupervise
import:
- package: github.com/Masterminds/vcs
- package: github.com/Masterminds/semver
version: ^1.0.0
- package: k8s.io/kubernetes
version: v1.2.1
subpackages:
- pkg/client
- pkg/cmdutil
- package: gopkg.in/yaml.v2
- package: github.com/nu7hatch/gouuid
- package: github.com/masterzen/xmlpath
version: 13f4951698adc0fa9c1dda3e275d489a24201161
- package: github.com/masterzen/simplexml
subpackages:
- dom
- package: github.com/masterzen/winrm
version: 71c963ed3718881facabea7cf61bc7b13911902e
- package: github.com/fatih/color
- package: github.com/cloudfoundry-incubator/candiedyaml
================================================
FILE: header.txt
================================================
Copyright <%=copyright_years.join(', ')%> <%=copyright_holders.join(', ')%>
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.
================================================
FILE: headers.yml
================================================
ruby:
ext: ['.rb', '.rake']
after: ['^#!', '^#.*encoding:']
comment:
open: '#\n'
close: '#\n'
prefix: '# '
perl:
ext: ['.pl']
after: ['^#!', '^#.*encoding:']
comment:
open: '#\n'
close: '#\n'
prefix: '# '
# Support PEP 0263 comments:
# coding=<encoding name>
# -*- coding: <encoding name> -*-
# vim: set fileencoding=<encoding name> :
python:
ext: ['.py']
after: ['^#!', '^#.*coding:', '^#.*coding=', '^#.*fileencoding=']
comment:
open: '\n'
close: '\n'
prefix: '# '
html:
ext: ['.html', '.htm', '.xhtml']
comment:
open: '<!--\n'
close: '-->\n'
prefix: ' '
php:
ext: ['.php']
after: [ '^#!' ]
comment:
open: '<?php \n/*\n'
close: ' */ ?>\n'
prefix: ' * '
javacript:
ext: ['.js']
comment:
open: '/*\n'
close: ' */\n\n'
prefix: ' * '
css:
ext: ['.css']
comment:
open: '/*\n'
close: ' */\n\n'
prefix: ' * '
c:
ext: ['.c', '.h']
comment:
open: '/*'
close: ' */\n\n'
prefix: ' * '
cpp:
ext: ['.cpp', '.hpp', '.cc', '.hh']
comment:
open: '//\n'
close: '//\n\n'
prefix: '// '
java:
ext: ['.java']
comment:
open: '/*\n'
close: ' */\n\n'
prefix: ' * '
groovy:
ext: ['.groovy']
comment:
open: '/*\n'
close: ' */\n\n'
prefix: ' * '
haml:
ext: ['.haml', '.hamlc']
comment:
open: '-#\n'
close: '-#\n'
prefix: '-# '
coffee:
ext: ['.coffee']
comment:
open: '###\n'
close: '###\n'
prefix: ''
# M4 macro language, use #, not dnl
m4:
ext: ['.m4']
comment:
open: '#\n'
close: '#\n'
prefix: '# '
# Most shells, really
shell:
ext: ['.sh']
after: ['^#!']
comment:
open: '#\n'
close: '#\n'
prefix: '# '
# Use "-- " to make sure e.g. MySQL understands it
sql:
ext: ['.sql']
comment:
open: '-- \n'
close: '-- \n'
prefix: '-- '
# XML is *not* the same as HTML, and the comments need to go after a
# preprocessing directive, if present.
# FIXME: only supports single line directives
xml:
ext: ['.xml', '.xsd', '.mxml']
after: ['^<\?']
comment:
open: '<!--\n'
close: '-->\n'
prefix: ' '
yaml:
ext: ['.yml', '.yaml']
comment:
open: '#\n'
close: '#\n'
prefix: '# '
action_script:
ext: ['.as']
comment:
open: '//\n'
close: '//\n\n'
prefix: '// '
sass:
ext: ['.sass', '.scss']
comment:
open: '/*\n'
close: ' */\n\n'
prefix: ' * '
go:
ext: ['.go']
comment:
open: '/*\n'
close: ' */\n\n'
prefix: ' * '
================================================
FILE: k8s/k8s.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package k8s
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"k8s.io/kubernetes/pkg/api"
client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/strategicpatch"
"github.com/ghodss/yaml"
"github.com/fabric8io/kansible/log"
)
// GetThisPodName returns this pod name via the `HOSTNAME` environment variable
func GetThisPodName() (string, error) {
var err error
thisPodName := os.Getenv("HOSTNAME")
if len(thisPodName) == 0 {
thisPodName, err = os.Hostname()
if err != nil {
return "", err
}
}
if len(thisPodName) == 0 {
return "", fmt.Errorf("Could not find the pod name using $HOSTNAME!")
}
return thisPodName, nil
}
// ReadReplicationControllerFromFile reads the ReplicationController object from the given file name
func ReadReplicationControllerFromFile(filename string) (*api.ReplicationController, error) {
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
return ReadReplicationController(data)
}
// ReadReplicationController loads a ReplicationController from the given data
func ReadReplicationController(data []byte) (*api.ReplicationController, error) {
rc := api.ReplicationController{}
if err := yaml.Unmarshal(data, &rc); err != nil {
return nil, err
}
return &rc, nil
}
// PodIsRunning returns true if the given pod is running in the given list of all pods
func PodIsRunning(pods *api.PodList, podName string) bool {
for _, pod := range pods.Items {
if pod.ObjectMeta.Name == podName {
return true
}
}
return false
}
// GetFirstContainerOrCreate returns the first Container in the PodSpec for this ReplicationController
// lazily creating structures as required
func GetFirstContainerOrCreate(rc *api.ReplicationController) *api.Container {
podSpec := GetOrCreatePodSpec(rc)
if len(podSpec.Containers) == 0 {
podSpec.Containers[0] = api.Container{}
}
return &podSpec.Containers[0]
}
// GetOrCreatePodSpec returns the PodSpec for this ReplicationController
// lazily creating structures as required
func GetOrCreatePodSpec(rc *api.ReplicationController) *api.PodSpec {
spec := &rc.Spec
if spec == nil {
rc.Spec = api.ReplicationControllerSpec{}
spec = &rc.Spec
}
template := spec.Template
if template == nil {
spec.Template = &api.PodTemplateSpec{}
template = spec.Template
}
podSpec := &template.Spec
if podSpec == nil {
template.Spec = api.PodSpec{}
podSpec = &template.Spec
}
return podSpec
}
// GetContainerEnvVar returns the environment variable value for the given name in the Container
func GetContainerEnvVar(container *api.Container, name string) string {
if container != nil {
for _, env := range container.Env {
if env.Name == name {
return env.Value
}
}
}
return ""
}
// EnsureContainerHasEnvVar if there is an existing EnvVar for the given name then lets update it
// with the given value otherwise lets add a new entry.
// Returns true if there was already an existing environment variable
func EnsureContainerHasEnvVar(container *api.Container, name string, value string) bool {
for _, env := range container.Env {
if env.Name == name {
env.Value = value
return true
}
}
container.Env = append(container.Env, api.EnvVar{
Name: name,
Value: value,
})
return false
}
// EnsureContainerHasEnvVarFromField if there is an existing EnvVar for the given name then lets update it
// with the given fieldPath otherwise lets add a new entry.
// Returns true if there was already an existing environment variable
func EnsureContainerHasEnvVarFromField(container *api.Container, name string, fieldPath string) bool {
from := &api.EnvVarSource{
FieldRef: &api.ObjectFieldSelector{
FieldPath: fieldPath,
},
}
for _, env := range container.Env {
if env.Name == name {
env.ValueFrom = from
env.Value = ""
return true
}
}
container.Env = append(container.Env, api.EnvVar{
Name: name,
ValueFrom: from,
})
return false
}
// EnsureContainerHasPreStopCommand ensures that the given container has a `preStop` lifecycle hook
// to invoke the given commands
func EnsureContainerHasPreStopCommand(container *api.Container, commands []string) {
if container.Lifecycle == nil {
container.Lifecycle = &api.Lifecycle{}
}
lifecycle := container.Lifecycle
if lifecycle.PreStop == nil {
lifecycle.PreStop = &api.Handler{}
}
preStop := lifecycle.PreStop
preStop.Exec = &api.ExecAction{
Command: commands,
}
}
// EnsureContainerHasVolumeMount ensures that there is a volume mount of the given name with the given values
// Returns true if there was already a volume mount
func EnsureContainerHasVolumeMount(container *api.Container, name string, mountPath string) bool {
for _, vm := range container.VolumeMounts {
if vm.Name == name {
vm.MountPath = mountPath
return true
}
}
container.VolumeMounts = append(container.VolumeMounts, api.VolumeMount{
Name: name,
MountPath: mountPath,
})
return false
}
// EnsurePodSpecHasGitVolume ensures that there is a volume with the given name and git repo and revision
func EnsurePodSpecHasGitVolume(podSpec *api.PodSpec, name string, gitRepo string, gitRevision string) bool {
for _, vm := range podSpec.Volumes {
if vm.Name == name {
vm.GitRepo = &api.GitRepoVolumeSource{
Repository: gitRepo,
Revision: gitRevision,
}
return true
}
}
podSpec.Volumes = append(podSpec.Volumes, api.Volume{
Name: name,
VolumeSource: api.VolumeSource{
GitRepo: &api.GitRepoVolumeSource{
Repository: gitRepo,
Revision: gitRevision,
},
},
})
return false
}
// EnsurePodSpecHasSecretVolume ensures that there is a volume with the given name and secret
func EnsurePodSpecHasSecretVolume(podSpec *api.PodSpec, name string, secretName string) bool {
for _, vm := range podSpec.Volumes {
if vm.Name == name {
vm.Secret = &api.SecretVolumeSource{
SecretName: secretName,
}
return true
}
}
podSpec.Volumes = append(podSpec.Volumes, api.Volume{
Name: name,
VolumeSource: api.VolumeSource{
Secret: &api.SecretVolumeSource{
SecretName: secretName,
},
},
})
return false
}
// EnsureServiceAccountExists ensures that there is a service account created for the given name
func EnsureServiceAccountExists(c *client.Client, ns string, serviceAccountName string) (bool, error) {
saClient := c.ServiceAccounts(ns)
sa, err := saClient.Get(serviceAccountName)
created := false
if err != nil || sa == nil {
// lets try create the SA
sa = &api.ServiceAccount{
ObjectMeta: api.ObjectMeta{
Name: serviceAccountName,
},
}
log.Info("Creating ServiceAccount %s", serviceAccountName)
_, err = saClient.Create(sa)
if err == nil {
created = true
}
}
return created, err
}
// ApplyResource applies the given data as a kubernetes resource
func ApplyResource(f *cmdutil.Factory, c *client.Client, ns string, data []byte, name string) error {
schemaCacheDir := "/tmp/kubectl.schema"
validate := true
schema, err := f.Validator(validate, schemaCacheDir)
if err != nil {
log.Info("Failed to load kubernetes schema: %s", err)
return err
}
mapper, typer := f.Object()
r := resource.NewBuilder(mapper, typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true)).
Schema(schema).
ContinueOnError().
NamespaceParam(ns).DefaultNamespace().
Stream(bytes.NewReader(data), name).
Flatten().
Do()
err = r.Err()
if err != nil {
log.Info("Failed to load mapper!")
return err
}
count := 0
err = r.Visit(func(info *resource.Info, err error) error {
// In this method, info.Object contains the object retrieved from the server
// and info.VersionedObject contains the object decoded from the input source.
if err != nil {
return err
}
// Get the modified configuration of the object. Embed the result
// as an annotation in the modified configuration, so that it will appear
// in the patch sent to the server.
modified, err := kubectl.GetModifiedConfiguration(info, true, f.JSONEncoder())
if err != nil {
return cmdutil.AddSourceToErr(fmt.Sprintf("retrieving modified configuration from:\n%v\nfor:", info), info.Source, err)
}
if err := info.Get(); err != nil {
return cmdutil.AddSourceToErr(fmt.Sprintf("retrieving current configuration of:\n%v\nfrom server for:", info), info.Source, err)
}
// Serialize the current configuration of the object from the server.
current, err := runtime.Encode(f.JSONEncoder(), info.Object)
if err != nil {
return cmdutil.AddSourceToErr(fmt.Sprintf("serializing current configuration from:\n%v\nfor:", info), info.Source, err)
}
// Retrieve the original configuration of the object from the annotation.
original, err := kubectl.GetOriginalConfiguration(info)
if err != nil {
return cmdutil.AddSourceToErr(fmt.Sprintf("retrieving original configuration from:\n%v\nfor:", info), info.Source, err)
}
// Compute a three way strategic merge patch to send to server.
patch, err := strategicpatch.CreateThreeWayMergePatch(original, modified, current, info.VersionedObject, false)
if err != nil {
format := "creating patch with:\noriginal:\n%s\nmodified:\n%s\ncurrent:\n%s\nfrom:\n%v\nfor:"
return cmdutil.AddSourceToErr(fmt.Sprintf(format, original, modified, current, info), info.Source, err)
}
helper := resource.NewHelper(info.Client, info.Mapping)
_, err = helper.Patch(info.Namespace, info.Name, api.StrategicMergePatchType, patch)
if err != nil {
return cmdutil.AddSourceToErr(fmt.Sprintf("applying patch:\n%s\nto:\n%v\nfor:", patch, info), info.Source, err)
}
count++
cmdutil.PrintSuccess(mapper, false, os.Stdout, info.Mapping.Resource, info.Name, "configured")
return nil
})
if err != nil {
return err
}
if count == 0 {
return fmt.Errorf("no objects passed to apply")
}
return nil
}
================================================
FILE: kansible.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package main
import (
"fmt"
"os"
"github.com/fabric8io/kansible/cmd"
)
func main() {
if err := cmd.RootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(-1)
}
}
================================================
FILE: log/log.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package log
import (
"fmt"
"os"
"github.com/fatih/color"
)
var (
// IsDebugging toggles whether or not to enable debug output and behavior.
IsDebugging = false
// ErrorState denotes if application is in an error state.
ErrorState = false
)
// Msg passes through the formatter, but otherwise prints exactly as-is.
//
// No prettification.
func Msg(format string, v ...interface{}) {
fmt.Printf(appendNewLine(format), v...)
}
// Die prints an error and then call os.Exit(1).
func Die(format string, v ...interface{}) {
Err(format, v...)
if IsDebugging {
panic(fmt.Sprintf(format, v...))
}
os.Exit(1)
}
// CleanExit prints a message and then exits with 0.
func CleanExit(format string, v ...interface{}) {
Info(format, v...)
os.Exit(0)
}
// Err prints an error message. It does not cause an exit.
func Err(format string, v ...interface{}) {
fmt.Print(color.RedString("[ERROR] "))
fmt.Printf(appendNewLine(format), v...)
ErrorState = true
}
// Info prints a green-tinted message.
func Info(format string, v ...interface{}) {
fmt.Print(color.GreenString("---> "))
fmt.Printf(appendNewLine(format), v...)
}
// Debug prints a cyan-tinted message if IsDebugging is true.
func Debug(format string, v ...interface{}) {
if IsDebugging {
fmt.Print(color.CyanString("[DEBUG] "))
fmt.Printf(appendNewLine(format), v...)
}
}
// Warn prints a yellow-tinted warning message.
func Warn(format string, v ...interface{}) {
fmt.Print(color.YellowString("[WARN] "))
fmt.Printf(appendNewLine(format), v...)
}
func appendNewLine(format string) string {
return format + "\n"
}
================================================
FILE: ssh/ssh.go
================================================
/*
* Copyright 2016 Red Hat
*
* 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.
*/
package ssh
import (
"fmt"
"io"
"io/ioutil"
"net"
"os"
"os/signal"
"github.com/fabric8io/kansible/log"
"golang.org/x/crypto/ssh"
"syscall"
)
// RemoteSSHCommand invokes the given command on a host and port
func RemoteSSHCommand(user string, privateKey string, host string, port string, cmd string, envVars map[string]string) error {
if len(privateKey) == 0 {
return fmt.Errorf("Could not find PrivateKey for entry %s", host)
}
log.Info("Connecting to host over SSH on host %s and port %s with user %s with command `%s`", host, port, user, cmd)
hostPort := net.JoinHostPort(host, port)
sshConfig := &ssh.ClientConfig{
User: user,
Auth: []ssh.AuthMethod{
PublicKeyFile(privateKey),
},
}
if sshConfig == nil {
log.Warn("No sshConfig could be created!")
}
connection, err := ssh.Dial("tcp", hostPort, sshConfig)
if err != nil {
return fmt.Errorf("Failed to dial: %s", err)
}
session, err := connection.NewSession()
if err != nil {
return fmt.Errorf("Failed to create session: %s", err)
}
defer session.Close()
modes := ssh.TerminalModes{
// ssh.ECHO: 0, // disable echoing
ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud
ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud
}
if err := session.RequestPty("xterm", 80, 40, modes); err != nil {
return fmt.Errorf("Request for pseudo terminal failed: %s", err)
}
stdin, err := session.StdinPipe()
if err != nil {
return fmt.Errorf("Unable to setup stdin for session: %v", err)
}
go io.Copy(stdin, os.Stdin)
stdout, err := session.StdoutPipe()
if err != nil {
return fmt.Errorf("Unable to setup stdout for session: %v", err)
}
go io.Copy(os.Stdout, stdout)
stderr, err := session.StderrPipe()
if err != nil {
return fmt.Errorf("Unable to setup stderr for session: %v", err)
}
go io.Copy(os.Stderr, stderr)
for envName, envValue := range envVars {
log.Info("Setting environment value %s = %s", envName, envValue)
if err := session.Setenv(envName, envValue); err != nil {
return fmt.Errorf("Could not set environment variable %s = %s over SSH. This could be disabled by the sshd configuration. See the `AcceptEnv` setting in your /etc/ssh/sshd_config more info: http://linux.die.net/man/5/sshd_config . Error: %s", envName, envValue, err)
}
}
signals := make(chan os.Signal, 1)
signal.Notify(signals, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
signaled := false
go func() {
<-signals
log.Info("Shutting down SSH session.")
signaled = true
session.Close()
}()
log.Info("Running command %s", cmd)
err = session.Run(cmd)
if !signaled && err != nil {
return fmt.Errorf("Failed to run command: " + cmd + ": %v", err)
}
return nil
}
// PublicKeyFile creates the auth method for the given private key file
func PublicKeyFile(file string) ssh.AuthMethod {
buffer, err := ioutil.ReadFile(file)
if err != nil {
return nil
}
key, err := ssh.ParsePrivateKey(buffer)
if err != nil {
return nil
}
return ssh.PublicKeys(key)
}
================================================
FILE: tools/create-intellij-idea-golib.sh
================================================
#!/bin/bash
# Build up a GOPATH directory for IntelliJ IDEA
# which doesn't support GO15VENDOREXPERIMENT yet
pushd `dirname $0`/.. > /dev/null
base=`pwd`
popd > /dev/null
golib=${base}/golib
rm -rf ${golib}
# Link all from the vendor dirs pulled by glide:
vendor_src=${golib}/vendor/src
mkdir -p ${vendor_src}
for f in ${base}/vendor/*
do
# echo "Symlinking vendor source dir: ${base}/${f}"
ln -s "${f}" "${vendor_src}/"
done
# Link self into the golib dir
self_src=${golib}/self/src/github.com/fabric8io
mkdir -p ${self_src}
ln -s "${base}" "${self_src}/kansible";
echo "Use the following dirs exclusively as go-libraries in IntelliJ IDEA:"
echo "(Preferences -> Languages & Frameworks -> Go -> Go Libraries, Add to Project Libraries, uncheck 'use system defined GOPATH')"
echo
echo "${golib}/vendor"
echo "${golib}/self"
================================================
FILE: vendor/bitbucket.org/ww/goautoneg/Makefile
================================================
include $(GOROOT)/src/Make.inc
TARG=bitbucket.org/ww/goautoneg
GOFILES=autoneg.go
include $(GOROOT)/src/Make.pkg
format:
gofmt -w *.go
docs:
gomake clean
godoc ${TARG} > README.txt
================================================
FILE: vendor/bitbucket.org/ww/goautoneg/README.txt
================================================
PACKAGE
package goautoneg
import "bitbucket.org/ww/goautoneg"
HTTP Content-Type Autonegotiation.
The functions in this package implement the behaviour specified in
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Copyright (c) 2011, Open Knowledge Foundation Ltd.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
Neither the name of the Open Knowledge Foundation Ltd. nor the
names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
FUNCTIONS
func Negotiate(header string, alternatives []string) (content_type string)
Negotiate the most appropriate content_type given the accept header
and a list of alternatives.
func ParseAccept(header string) (accept []Accept)
Parse an Accept Header string returning a sorted list
of clauses
TYPES
type Accept struct {
Type, SubType string
Q float32
Params map[string]string
}
Structure to represent a clause in an HTTP Accept Header
SUBDIRECTORIES
.hg
================================================
FILE: vendor/bitbucket.org/ww/goautoneg/autoneg.go
================================================
/*
HTTP Content-Type Autonegotiation.
The functions in this package implement the behaviour specified in
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Copyright (c) 2011, Open Knowledge Foundation Ltd.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
Neither the name of the Open Knowledge Foundation Ltd. nor the
names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package goautoneg
import (
"sort"
"strconv"
"strings"
)
// Structure to represent a clause in an HTTP Accept Header
type Accept struct {
Type, SubType string
Q float64
Params map[string]string
}
// For internal use, so that we can use the sort interface
type accept_slice []Accept
func (accept accept_slice) Len() int {
slice := []Accept(accept)
return len(slice)
}
func (accept accept_slice) Less(i, j int) bool {
slice := []Accept(accept)
ai, aj := slice[i], slice[j]
if ai.Q > aj.Q {
return true
}
if ai.Type != "*" && aj.Type == "*" {
return true
}
if ai.SubType != "*" && aj.SubType == "*" {
return true
}
return false
}
func (accept accept_slice) Swap(i, j int) {
slice := []Accept(accept)
slice[i], slice[j] = slice[j], slice[i]
}
// Parse an Accept Header string returning a sorted list
// of clauses
func ParseAccept(header string) (accept []Accept) {
parts := strings.Split(header, ",")
accept = make([]Accept, 0, len(parts))
for _, part := range parts {
part := strings.Trim(part, " ")
a := Accept{}
a.Params = make(map[string]string)
a.Q = 1.0
mrp := strings.Split(part, ";")
media_range := mrp[0]
sp := strings.Split(media_range, "/")
a.Type = strings.Trim(sp[0], " ")
switch {
case len(sp) == 1 && a.Type == "*":
a.SubType = "*"
case len(sp) == 2:
a.SubType = strings.Trim(sp[1], " ")
default:
continue
}
if len(mrp) == 1 {
accept = append(accept, a)
continue
}
for _, param := range mrp[1:] {
sp := strings.SplitN(param, "=", 2)
if len(sp) != 2 {
continue
}
token := strings.Trim(sp[0], " ")
if token == "q" {
a.Q, _ = strconv.ParseFloat(sp[1], 32)
} else {
a.Params[token] = strings.Trim(sp[1], " ")
}
}
accept = append(accept, a)
}
slice := accept_slice(accept)
sort.Sort(slice)
return
}
// Negotiate the most appropriate content_type given the accept header
// and a list of alternatives.
func Negotiate(header string, alternatives []string) (content_type string) {
asp := make([][]string, 0, len(alternatives))
for _, ctype := range alternatives {
asp = append(asp, strings.SplitN(ctype, "/", 2))
}
for _, clause := range ParseAccept(header) {
for i, ctsp := range asp {
if clause.Type == ctsp[0] && clause.SubType == ctsp[1] {
content_type = alternatives[i]
return
}
if clause.Type == ctsp[0] && clause.SubType == "*" {
content_type = alternatives[i]
return
}
if clause.Type == "*" && clause.SubType == "*" {
content_type = alternatives[i]
return
}
}
}
return
}
================================================
FILE: vendor/bitbucket.org/ww/goautoneg/autoneg_test.go
================================================
package goautoneg
import (
"testing"
)
var chrome = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
func TestParseAccept(t *testing.T) {
alternatives := []string{"text/html", "image/png"}
content_type := Negotiate(chrome, alternatives)
if content_type != "image/png" {
t.Errorf("got %s expected image/png", content_type)
}
alternatives = []string{"text/html", "text/plain", "text/n3"}
content_type = Negotiate(chrome, alternatives)
if content_type != "text/html" {
t.Errorf("got %s expected text/html", content_type)
}
alternatives = []string{"text/n3", "text/plain"}
content_type = Negotiate(chrome, alternatives)
if content_type != "text/plain" {
t.Errorf("got %s expected text/plain", content_type)
}
alternatives = []string{"text/n3", "application/rdf+xml"}
content_type = Negotiate(chrome, alternatives)
if content_type != "text/n3" {
t.Errorf("got %s expected text/n3", content_type)
}
}
================================================
FILE: vendor/github.com/Masterminds/semver/.travis.yml
================================================
language: go
go:
- 1.3
- 1.4
- 1.5
- tip
# Setting sudo access to false will let Travis CI use containers rather than
# VMs to run the tests. For more details see:
# - http://docs.travis-ci.com/user/workers/container-based-infrastructure/
# - http://docs.travis-ci.com/user/workers/standard-infrastructure/
sudo: false
notifications:
irc: "irc.freenode.net#masterminds"
================================================
FILE: vendor/github.com/Masterminds/semver/CHANGELOG.md
================================================
# Release 1.x.x (xxxx-xx-xx)
- Issue #9: Speed up version comparison performance (thanks @sdboyer)
- Issue #8: Added benchmarks (thanks @sdboyer)
# Release 1.1.0 (2015-03-11)
- Issue #2: Implemented validation to provide reasons a versions failed a
constraint.
# Release 1.0.1 (2015-12-31)
- Fixed #1: * constraint failing on valid versions.
# Release 1.0.0 (2015-10-20)
- Initial release
================================================
FILE: vendor/github.com/Masterminds/semver/LICENSE.txt
================================================
The Masterminds
Copyright (C) 2014-2015, Matt Butcher and Matt Farina
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: vendor/github.com/Masterminds/semver/README.md
================================================
# SemVer
The `semver` package provides the ability to work with [Semantic Versions](http://semver.org) in Go. Specifically it provides the ability to:
* Parse semantic versions
* Sort semantic versions
* Check if a semantic version fits within a set of constraints
* Optionally work with a `v` prefix
[](https://travis-ci.org/Masterminds/semver) [](https://ci.appveyor.com/project/mattfarina/semver/branch/master) [](https://godoc.org/github.com/Masterminds/semver) [](http://goreportcard.com/report/Masterminds/semver)
## Parsing Semantic Versions
To parse a semantic version use the `NewVersion` function. For example,
v, err := semver.NewVersion("1.2.3-beta.1+build345")
If there is an error the version wasn't parseable. The version object has methods
to get the parts of the version, compare it to other versions, convert the
version back into a string, and get the original string. For more details
please see the [documentation](https://godoc.org/github.com/Masterminds/semver).
## Sorting Semantic Versions
A set of versions can be sorted using the [`sort`](https://golang.org/pkg/sort/)
package from the standard library. For example,
raw := []string{"1.2.3", "1.0", "1.3", "2", "0.4.2",}
vs := make([]*semver.Version, len(raw))
for i, r := range raw {
v, err := semver.NewVersion(r)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
vs[i] = v
}
sort.Sort(semver.Collection(vs))
## Checking Version Constraints
Checking a version against version constraints is one of the most featureful
parts of the package.
c, err := semver.NewConstraint(">= 1.2.3")
if err != nil {
// Handle constraint not being parseable.
}
v, _ := semver.NewVersion("1.3")
if err != nil {
// Handle version not being parseable.
}
// Check if the version meets the constraints. The a variable will be true.
a := c.Check(v)
## Basic Comparisons
There are two elements to the comparisons. First, a comparison string is a list
of comma separated and comparisons. These are then separated by || separated or
comparisons. For example, `">= 1.2, < 3.0.0 || >= 4.2.3"` is looking for a
comparison that's greater than or equal to 1.2 and less than 3.0.0 or is
greater than or equal to 4.2.3.
The basic comparisons are:
* `=`: equal (aliased to no operator)
* `!=`: not equal
* `>`: greater than
* `<`: less than
* `>=`: greater than or equal to
* `<=`: less than or equal to
## Hyphen Range Comparisons
There are multiple methods to handle ranges and the first is hyphens ranges.
These look like:
* `1.2 - 1.4.5` which is equivalent to `>= 1.2, <= 1.4.5`
* `2.3.4 - 4.5` which is equivalent to `>= 2.3.4, <= 4.5`
## Wildcards In Comparisons
The `x`, `X`, and `*` characters can be used as a wildcard character. This works
for all comparison operators. When used on the `=` operator it falls
back to the pack level comparison (see tilde below). For example,
* `1.2.x` is equivalent to `>= 1.2.0, < 1.3.0`
* `>= 1.2.x` is equivalent to `>= 1.2.0`
* `<= 2.x` is equivalent to `<= 3`
* `*` is equivalent to `>= 0.0.0`
## Tilde Range Comparisons (Patch)
The tilde (`~`) comparison operator is for patch level ranges when a minor
version is specified and major level changes when the minor number is missing.
For example,
* `~1.2.3` is equivalent to `>= 1.2.3, < 1.3.0`
* `~1` is equivalent to `>= 1, < 2`
* `~2.3` is equivalent to `>= 2.3, < 2.4`
* `~1.2.x` is equivalent to `>= 1.2.0, < 1.3.0`
* `~1.x` is equivalent to `>= 1, < 2`
## Caret Range Comparisons (Major)
The caret (`^`) comparison operator is for major level changes. This is useful
when comparisons of API versions as a major change is API breaking. For example,
* `^1.2.3` is equivalent to `>= 1.2.3, < 2.0.0`
* `^1.2.x` is equivalent to `>= 1.2.0, < 2.0.0`
* `^2.3` is equivalent to `>= 2.3, < 3`
* `^2.x` is equivalent to `>= 2.0.0, < 3`
# Validation
In addition to testing a version against a constraint, a version can be validated
against a constraint. When validation fails a slice of errors containing why a
version didn't meet the constraint is returned. For example,
c, err := semver.NewConstraint("<= 1.2.3, >= 1.4")
if err != nil {
// Handle constraint not being parseable.
}
v, _ := semver.NewVersion("1.3")
if err != nil {
// Handle version not being parseable.
}
// Validate a version against a constraint.
a, msgs := c.Validate(v)
// a is false
for _, m := range msgs {
fmt.Println(m)
// Loops over the errors which would read
// "1.3 is greater than 1.2.3"
// "1.3 is less than 1.4"
}
# Contribute
If you find an issue or want to contribute please file an [issue](https://github.com/Masterminds/semver/issues)
or [create a pull request](https://github.com/Masterminds/semver/pulls).
================================================
FILE: vendor/github.com/Masterminds/semver/appveyor.yml
================================================
version: build-{build}.{branch}
clone_folder: C:\gopath\src\github.com\Masterminds\semver
shallow_clone: true
environment:
GOPATH: C:\gopath
platform:
- x64
install:
- go version
- go env
build_script:
- go install -v ./...
test_script:
- go test -v
deploy: off
================================================
FILE: vendor/github.com/Masterminds/semver/benchmark_test.go
================================================
package semver_test
import (
"testing"
"github.com/Masterminds/semver"
)
/* Constraint creation benchmarks */
func benchNewConstraint(c string, b *testing.B) {
for i := 0; i < b.N; i++ {
semver.NewConstraint(c)
}
}
func BenchmarkNewConstraintUnary(b *testing.B) {
benchNewConstraint("=2.0", b)
}
func BenchmarkNewConstraintTilde(b *testing.B) {
benchNewConstraint("~2.0.0", b)
}
func BenchmarkNewConstraintCaret(b *testing.B) {
benchNewConstraint("^2.0.0", b)
}
func BenchmarkNewConstraintWildcard(b *testing.B) {
benchNewConstraint("1.x", b)
}
func BenchmarkNewConstraintRange(b *testing.B) {
benchNewConstraint(">=2.1.x, <3.1.0", b)
}
func BenchmarkNewConstraintUnion(b *testing.B) {
benchNewConstraint("~2.0.0 || =3.1.0", b)
}
/* Check benchmarks */
func benchCheckVersion(c, v string, b *testing.B) {
version, _ := semver.NewVersion(v)
constraint, _ := semver.NewConstraint(c)
for i := 0; i < b.N; i++ {
constraint.Check(version)
}
}
func BenchmarkCheckVersionUnary(b *testing.B) {
benchCheckVersion("=2.0", "2.0.0", b)
}
func BenchmarkCheckVersionTilde(b *testing.B) {
benchCheckVersion("~2.0.0", "2.0.5", b)
}
func BenchmarkCheckVersionCaret(b *testing.B) {
benchCheckVersion("^2.0.0", "2.1.0", b)
}
func BenchmarkCheckVersionWildcard(b *testing.B) {
benchCheckVersion("1.x", "1.4.0", b)
}
func BenchmarkCheckVersionRange(b *testing.B) {
benchCheckVersion(">=2.1.x, <3.1.0", "2.4.5", b)
}
func BenchmarkCheckVersionUnion(b *testing.B) {
benchCheckVersion("~2.0.0 || =3.1.0", "3.1.0", b)
}
func benchValidateVersion(c, v string, b *testing.B) {
version, _ := semver.NewVersion(v)
constraint, _ := semver.NewConstraint(c)
for i := 0; i < b.N; i++ {
constraint.Validate(version)
}
}
/* Validate benchmarks, including fails */
func BenchmarkValidateVersionUnary(b *testing.B) {
benchValidateVersion("=2.0", "2.0.0", b)
}
func BenchmarkValidateVersionUnaryFail(b *testing.B) {
benchValidateVersion("=2.0", "2.0.1", b)
}
func BenchmarkValidateVersionTilde(b *testing.B) {
benchValidateVersion("~2.0.0", "2.0.5", b)
}
func BenchmarkValidateVersionTildeFail(b *testing.B) {
benchValidateVersion("~2.0.0", "1.0.5", b)
}
func BenchmarkValidateVersionCaret(b *testing.B) {
benchValidateVersion("^2.0.0", "2.1.0", b)
}
func BenchmarkValidateVersionCaretFail(b *testing.B) {
benchValidateVersion("^2.0.0", "4.1.0", b)
}
func BenchmarkValidateVersionWildcard(b *testing.B) {
benchValidateVersion("1.x", "1.4.0", b)
}
func BenchmarkValidateVersionWildcardFail(b *testing.B) {
benchValidateVersion("1.x", "2.4.0", b)
}
func BenchmarkValidateVersionRange(b *testing.B) {
benchValidateVersion(">=2.1.x, <3.1.0", "2.4.5", b)
}
func BenchmarkValidateVersionRangeFail(b *testing.B) {
benchValidateVersion(">=2.1.x, <3.1.0", "1.4.5", b)
}
func BenchmarkValidateVersionUnion(b *testing.B) {
benchValidateVersion("~2.0.0 || =3.1.0", "3.1.0", b)
}
func BenchmarkValidateVersionUnionFail(b *testing.B) {
benchValidateVersion("~2.0.0 || =3.1.0", "3.1.1", b)
}
/* Version creation benchmarks */
func benchNewVersion(v string, b *testing.B) {
for i := 0; i < b.N; i++ {
semver.NewVersion(v)
}
}
func BenchmarkNewVersionSimple(b *testing.B) {
benchNewVersion("1.0.0", b)
}
func BenchmarkNewVersionPre(b *testing.B) {
benchNewVersion("1.0.0-alpha", b)
}
func BenchmarkNewVersionMeta(b *testing.B) {
benchNewVersion("1.0.0+metadata", b)
}
func BenchmarkNewVersionMetaDash(b *testing.B) {
benchNewVersion("1.0.0+metadata-dash", b)
}
================================================
FILE: vendor/github.com/Masterminds/semver/collection.go
================================================
package semver
// Collection is a collection of Version instances and implements the sort
// interface. See the sort package for more details.
// https://golang.org/pkg/sort/
type Collection []*Version
// Len returns the length of a collection. The number of Version instances
// on the slice.
func (c Collection) Len() int {
return len(c)
}
// Less is needed for the sort interface to compare two Version objects on the
// slice. If checks if one is less than the other.
func (c Collection) Less(i, j int) bool {
return c[i].LessThan(c[j])
}
// Swap is needed for the sort interface to replace the Version objects
// at two different positions in the slice.
func (c Collection) Swap(i, j int) {
c[i], c[j] = c[j], c[i]
}
================================================
FILE: vendor/github.com/Masterminds/semver/collection_test.go
================================================
package semver
import (
"reflect"
"sort"
"testing"
)
func TestCollection(t *testing.T) {
raw := []string{
"1.2.3",
"1.0",
"1.3",
"2",
"0.4.2",
}
vs := make([]*Version, len(raw))
for i, r := range raw {
v, err := NewVersion(r)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
vs[i] = v
}
sort.Sort(Collection(vs))
e := []string{
"0.4.2",
"1.0.0",
"1.2.3",
"1.3.0",
"2.0.0",
}
a := make([]string, len(vs))
for i, v := range vs {
a[i] = v.String()
}
if !reflect.DeepEqual(a, e) {
t.Error("Sorting Collection failed")
}
}
================================================
FILE: vendor/github.com/Masterminds/semver/constraints.go
================================================
package semver
import (
"errors"
"fmt"
"regexp"
"strings"
)
// Constraints is one or more constraint that a semantic version can be
// checked against.
type Constraints struct {
constraints [][]*constraint
}
// NewConstraint returns a Constraints instance that a Version instance can
// be checked against. If there is a parse error it will be returned.
func NewConstraint(c string) (*Constraints, error) {
// Rewrite - ranges into a comparison operation.
c = rewriteRange(c)
ors := strings.Split(c, "||")
or := make([][]*constraint, len(ors))
for k, v := range ors {
cs := strings.Split(v, ",")
result := make([]*constraint, len(cs))
for i, s := range cs {
pc, err := parseConstraint(s)
if err != nil {
return nil, err
}
result[i] = pc
}
or[k] = result
}
o := &Constraints{constraints: or}
return o, nil
}
// Check tests if a version satisfies the constraints.
func (cs Constraints) Check(v *Version) bool {
// loop over the ORs and check the inner ANDs
for _, o := range cs.constraints {
joy := true
for _, c := range o {
if !c.check(v) {
joy = false
break
}
}
if joy {
return true
}
}
return false
}
// Validate checks if a version satisfies a constraint. If not a slice of
// reasons for the failure are returned in addition to a bool.
func (cs Constraints) Validate(v *Version) (bool, []error) {
// loop over the ORs and check the inner ANDs
var e []error
for _, o := range cs.constraints {
joy := true
for _, c := range o {
if !c.check(v) {
em := fmt.Errorf(c.msg, v, c.orig)
e = append(e, em)
joy = false
}
}
if joy {
return true, []error{}
}
}
return false, e
}
var constraintOps map[string]cfunc
var constraintMsg map[string]string
var constraintRegex *regexp.Regexp
func init() {
constraintOps = map[string]cfunc{
"": constraintTildeOrEqual,
"=": constraintTildeOrEqual,
"!=": constraintNotEqual,
">": constraintGreaterThan,
"<": constraintLessThan,
">=": constraintGreaterThanEqual,
"=>": constraintGreaterThanEqual,
"<=": constraintLessThanEqual,
"=<": constraintLessThanEqual,
"~": constraintTilde,
"~>": constraintTilde,
"^": constraintCaret,
}
constraintMsg = map[string]string{
"": "%s is not equal to %s",
"=": "%s is not equal to %s",
"!=": "%s is equal to %s",
">": "%s is less than or equal to %s",
"<": "%s is greater than or equal to %s",
">=": "%s is less than %s",
"=>": "%s is less than %s",
"<=": "%s is greater than %s",
"=<": "%s is greater than %s",
"~": "%s does not have same major and minor version as %s",
"~>": "%s does not have same major and minor version as %s",
"^": "%s does not have same major version as %s",
}
ops := make([]string, 0, len(constraintOps))
for k := range constraintOps {
ops = append(ops, regexp.QuoteMeta(k))
}
constraintRegex = regexp.MustCompile(fmt.Sprintf(
`^\s*(%s)\s*(%s)\s*$`,
strings.Join(ops, "|"),
cvRegex))
constraintRangeRegex = regexp.MustCompile(fmt.Sprintf(
`\s*(%s)\s*-\s*(%s)\s*`,
cvRegex, cvRegex))
}
// An individual constraint
type constraint struct {
// The callback function for the restraint. It performs the logic for
// the constraint.
function cfunc
msg string
// The version used in the constraint check. For example, if a constraint
// is '<= 2.0.0' the con a version instance representing 2.0.0.
con *Version
// The original parsed version (e.g., 4.x from != 4.x)
orig string
// When an x is used as part of the version (e.g., 1.x)
minorDirty bool
dirty bool
}
// Check if a version meets the constraint
func (c *constraint) check(v *Version) bool {
return c.function(v, c)
}
type cfunc func(v *Version, c *constraint) bool
func parseConstraint(c string) (*constraint, error) {
m := constraintRegex.FindStringSubmatch(c)
if m == nil {
return nil, fmt.Errorf("improper constraint: %s", c)
}
ver := m[2]
orig := ver
minorDirty := false
dirty := false
if isX(m[3]) {
ver = "0.0.0"
dirty = true
} else if isX(strings.TrimPrefix(m[4], ".")) {
minorDirty = true
dirty = true
ver = fmt.Sprintf("%s.0.0%s", m[3], m[6])
} else if isX(strings.TrimPrefix(m[5], ".")) {
dirty = true
ver = fmt.Sprintf("%s%s.0%s", m[3], m[4], m[6])
}
con, err := NewVersion(ver)
if err != nil {
// The constraintRegex should catch any regex parsing errors. So,
// we should never get here.
return nil, errors.New("constraint Parser Error")
}
cs := &constraint{
function: constraintOps[m[1]],
msg: constraintMsg[m[1]],
con: con,
orig: orig,
minorDirty: minorDirty,
dirty: dirty,
}
return cs, nil
}
// Constraint functions
func constraintNotEqual(v *Version, c *constraint) bool {
if c.dirty {
if c.con.Major() != v.Major() {
return true
}
if c.con.Minor() != v.Minor() && !c.minorDirty {
return true
} else if c.minorDirty {
return false
}
return false
}
return !v.Equal(c.con)
}
func constraintGreaterThan(v *Version, c *constraint) bool {
return v.Compare(c.con) == 1
}
func constraintLessThan(v *Version, c *constraint) bool {
if !c.dirty {
return v.Compare(c.con) < 0
}
if v.Major() > c.con.Major() {
return false
} else if v.Minor() > c.con.Minor() && !c.minorDirty {
return false
}
return true
}
func constraintGreaterThanEqual(v *Version, c *constraint) bool {
return v.Compare(c.con) >= 0
}
func constraintLessThanEqual(v *Version, c *constraint) bool {
if !c.dirty {
return v.Compare(c.con) <= 0
}
if v.Major() > c.con.Major() {
return false
} else if v.Minor() > c.con.Minor() && !c.minorDirty {
return false
}
return true
}
// ~*, ~>* --> >= 0.0.0 (any)
// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0, <3.0.0
// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0, <2.1.0
// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0, <1.3.0
// ~1.2.3, ~>1.2.3 --> >=1.2.3, <1.3.0
// ~1.2.0, ~>1.2.0 --> >=1.2.0, <1.3.0
func constraintTilde(v *Version, c *constraint) bool {
if v.LessThan(c.con) {
return false
}
// ~0.0.0 is a special case where all constraints are accepted. It's
// equivalent to >= 0.0.0.
if c.con.Major() == 0 && c.con.Minor() == 0 && c.con.Patch() == 0 {
return true
}
if v.Major() != c.con.Major() {
return false
}
if v.Minor() != c.con.Minor() && !c.minorDirty {
return false
}
return true
}
// When there is a .x (dirty) status it automatically opts in to ~. Otherwise
// it's a straight =
func constraintTildeOrEqual(v *Version, c *constraint) bool {
if c.dirty {
c.msg = constraintMsg["~"]
return constraintTilde(v, c)
}
return v.Equal(c.con)
}
// ^* --> (any)
// ^2, ^2.x, ^2.x.x --> >=2.0.0, <3.0.0
// ^2.0, ^2.0.x --> >=2.0.0, <3.0.0
// ^1.2, ^1.2.x --> >=1.2.0, <2.0.0
// ^1.2.3 --> >=1.2.3, <2.0.0
// ^1.2.0 --> >=1.2.0, <2.0.0
func constraintCaret(v *Version, c *constraint) bool {
if v.LessThan(c.con) {
return false
}
if v.Major() != c.con.Major() {
return false
}
return true
}
var constraintRangeRegex *regexp.Regexp
const cvRegex string = `v?([0-9|x|X|\*]+)(\.[0-9|x|X|\*]+)?(\.[0-9|x|X|\*]+)?` +
`(-([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?` +
`(\+([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?`
func isX(x string) bool {
switch x {
case "x", "*", "X":
return true
default:
return false
}
}
func rewriteRange(i string) string {
m := constraintRangeRegex.FindAllStringSubmatch(i, -1)
if m == nil {
return i
}
o := i
for _, v := range m {
t := fmt.Sprintf(">= %s, <= %s", v[1], v[11])
o = strings.Replace(o, v[0], t, 1)
}
return o
}
================================================
FILE: vendor/github.com/Masterminds/semver/constraints_test.go
================================================
package semver
import (
"reflect"
"testing"
)
func TestParseConstraint(t *testing.T) {
tests := []struct {
in string
f cfunc
v string
err bool
}{
{">= 1.2", constraintGreaterThanEqual, "1.2.0", false},
{"1.0", constraintTildeOrEqual, "1.0.0", false},
{"foo", nil, "", true},
{"<= 1.2", constraintLessThanEqual, "1.2.0", false},
{"=< 1.2", constraintLessThanEqual, "1.2.0", false},
{"=> 1.2", constraintGreaterThanEqual, "1.2.0", false},
{"v1.2", constraintTildeOrEqual, "1.2.0", false},
{"=1.5", constraintTildeOrEqual, "1.5.0", false},
{"> 1.3", constraintGreaterThan, "1.3.0", false},
{"< 1.4.1", constraintLessThan, "1.4.1", false},
}
for _, tc := range tests {
c, err := parseConstraint(tc.in)
if tc.err && err == nil {
t.Errorf("Expected error for %s didn't occur", tc.in)
} else if !tc.err && err != nil {
t.Errorf("Unexpected error for %s", tc.in)
}
// If an error was expected continue the loop and don't try the other
// tests as they will cause errors.
if tc.err {
continue
}
if tc.v != c.con.String() {
t.Errorf("Incorrect version found on %s", tc.in)
}
f1 := reflect.ValueOf(tc.f)
f2 := reflect.ValueOf(c.function)
if f1 != f2 {
t.Errorf("Wrong constraint found for %s", tc.in)
}
}
}
func TestConstraintCheck(t *testing.T) {
tests := []struct {
constraint string
version string
check bool
}{
{"= 2.0", "1.2.3", false},
{"= 2.0", "2.0.0", true},
{"4.1", "4.1.0", true},
{"!=4.1", "4.1.0", false},
{"!=4.1", "5.1.0", true},
{">1.1", "4.1.0", true},
{">1.1", "1.1.0", false},
{"<1.1", "0.1.0", true},
{"<1.1", "1.1.0", false},
{"<1.1", "1.1.1", false},
{">=1.1", "4.1.0", true},
{">=1.1", "1.1.0", true},
{">=1.1", "0.0.9", false},
{"<=1.1", "0.1.0", true},
{"<=1.1", "1.1.0", true},
{"<=1.1", "1.1.1", false},
}
for _, tc := range tests {
c, err := parseConstraint(tc.constraint)
if err != nil {
t.Errorf("err: %s", err)
continue
}
v, err := NewVersion(tc.version)
if err != nil {
t.Errorf("err: %s", err)
continue
}
a := c.check(v)
if a != tc.check {
t.Errorf("Constraint '%s' failing", tc.constraint)
}
}
}
func TestNewConstraint(t *testing.T) {
tests := []struct {
input string
ors int
count int
err bool
}{
{">= 1.1", 1, 1, false},
{"2.0", 1, 1, false},
{">= bar", 0, 0, true},
{">= 1.2.3, < 2.0", 1, 2, false},
{">= 1.2.3, < 2.0 || => 3.0, < 4", 2, 2, false},
// The 3-4 should be broken into 2 by the range rewriting
{"3-4 || => 3.0, < 4", 2, 2, false},
}
for _, tc := range tests {
v, err := NewConstraint(tc.input)
if tc.err && err == nil {
t.Errorf("expected but did not get error for: %s", tc.input)
continue
} else if !tc.err && err != nil {
t.Errorf("unexpectederror for input %s: %s", tc.input, err)
continue
}
if tc.err {
continue
}
l := len(v.constraints)
if tc.ors != l {
t.Errorf("Expected %s to have %d ORs but got %d",
tc.input, tc.ors, l)
}
l = len(v.constraints[0])
if tc.count != l {
t.Errorf("Expected %s to have %d constraints but got %d",
tc.input, tc.count, l)
}
}
}
func TestConstraintsCheck(t *testing.T) {
tests := []struct {
constraint string
version string
check bool
}{
{"*", "1.2.3", true},
{"~0.0.0", "1.2.3", true},
{"= 2.0", "1.2.3", false},
{"= 2.0", "2.0.0", true},
{"4.1", "4.1.0", true},
{"4.1.x", "4.1.3", true},
{"1.x", "1.4", true},
{"!=4.1", "4.1.0", false},
{"!=4.1", "5.1.0", true},
{"!=4.x", "5.1.0", true},
{"!=4.x", "4.1.0", false},
{"!=4.1.x", "4.2.0", true},
{"!=4.2.x", "4.2.3", false},
{">1.1", "4.1.0", true},
{">1.1", "1.1.0", false},
{"<1.1", "0.1.0", true},
{"<1.1", "1.1.0", false},
{"<1.1", "1.1.1", false},
{"<1.x", "1.1.1", true},
{"<1.x", "2.1.1", false},
{"<1.1.x", "1.2.1", false},
{"<1.1.x", "1.1.500", true},
{"<1.2.x", "1.1.1", true},
{">=1.1", "4.1.0", true},
{">=1.1", "1.1.0", true},
{">=1.1", "0.0.9", false},
{"<=1.1", "0.1.0", true},
{"<=1.1", "1.1.0", true},
{"<=1.x", "1.1.0", true},
{"<=2.x", "3.1.0", false},
{"<=1.1", "1.1.1", false},
{"<=1.1.x", "1.2.500", false},
{">1.1, <2", "1.1.1", true},
{">1.1, <3", "4.3.2", false},
{">=1.1, <2, !=1.2.3", "1.2.3", false},
{">=1.1, <2, !=1.2.3 || > 3", "3.1.2", true},
{">=1.1, <2, !=1.2.3 || >= 3", "3.0.0", true},
{">=1.1, <2, !=1.2.3 || > 3", "3.0.0", false},
{">=1.1, <2, !=1.2.3 || > 3", "1.2.3", false},
{"1.1 - 2", "1.1.1", true},
{"1.1-3", "4.3.2", false},
{"^1.1", "1.1.1", true},
{"^1.1", "4.3.2", false},
{"^1.x", "1.1.1", true},
{"^2.x", "1.1.1", false},
{"^1.x", "2.1.1", false},
{"~*", "2.1.1", true},
{"~1.x", "2.1.1", false},
{"~1.x", "1.3.5", true},
{"~1.x", "1.4", true},
{"~1.1", "1.1.1", true},
{"~1.2.3", "1.2.5", true},
{"~1.2.3", "1.2.2", false},
{"~1.2.3", "1.3.2", false},
{"~1.1", "1.2.3", false},
{"~1.3", "2.4.5", false},
}
for _, tc := range tests {
c, err := NewConstraint(tc.constraint)
if err != nil {
t.Errorf("err: %s", err)
continue
}
v, err := NewVersion(tc.version)
if err != nil {
t.Errorf("err: %s", err)
continue
}
a := c.Check(v)
if a != tc.check {
t.Errorf("Constraint '%s' failing with '%s'", tc.constraint, tc.version)
}
}
}
func TestRewriteRange(t *testing.T) {
tests := []struct {
c string
nc string
}{
{"2-3", ">= 2, <= 3"},
{"2-3, 2-3", ">= 2, <= 3,>= 2, <= 3"},
{"2-3, 4.0.0-5.1", ">= 2, <= 3,>= 4.0.0, <= 5.1"},
}
for _, tc := range tests {
o := rewriteRange(tc.c)
if o != tc.nc {
t.Errorf("Range %s rewritten incorrectly as '%s'", tc.c, o)
}
}
}
func TestIsX(t *testing.T) {
tests := []struct {
t string
c bool
}{
{"A", false},
{"%", false},
{"X", true},
{"x", true},
{"*", true},
}
for _, tc := range tests {
a := isX(tc.t)
if a != tc.c {
t.Errorf("Function isX error on %s", tc.t)
}
}
}
func TestConstraintsValidate(t *testing.T) {
tests := []struct {
constraint string
version string
check bool
}{
{"*", "1.2.3", true},
{"~0.0.0", "1.2.3", true},
{"= 2.0", "1.2.3", false},
{"= 2.0", "2.0.0", true},
{"4.1", "4.1.0", true},
{"4.1.x", "4.1.3", true},
{"1.x", "1.4", true},
{"!=4.1", "4.1.0", false},
{"!=4.1", "5.1.0", true},
{"!=4.x", "5.1.0", true},
{"!=4.x", "4.1.0", false},
{"!=4.1.x", "4.2.0", true},
{"!=4.2.x", "4.2.3", false},
{">1.1", "4.1.0", true},
{">1.1", "1.1.0", false},
{"<1.1", "0.1.0", true},
{"<1.1", "1.1.0", false},
{"<1.1", "1.1.1", false},
{"<1.x", "1.1.1", true},
{"<1.x", "2.1.1", false},
{"<1.1.x", "1.2.1", false},
{"<1.1.x", "1.1.500", true},
{"<1.2.x", "1.1.1", true},
{">=1.1", "4.1.0", true},
{">=1.1", "1.1.0", true},
{">=1.1", "0.0.9", false},
{"<=1.1", "0.1.0", true},
{"<=1.1", "1.1.0", true},
{"<=1.x", "1.1.0", true},
{"<=2.x", "3.1.0", false},
{"<=1.1", "1.1.1", false},
{"<=1.1.x", "1.2.500", false},
{">1.1, <2", "1.1.1", true},
{">1.1, <3", "4.3.2", false},
{">=1.1, <2, !=1.2.3", "1.2.3", false},
{">=1.1, <2, !=1.2.3 || > 3", "3.1.2", true},
{">=1.1, <2, !=1.2.3 || >= 3", "3.0.0", true},
{">=1.1, <2, !=1.2.3 || > 3", "3.0.0", false},
{">=1.1, <2, !=1.2.3 || > 3", "1.2.3", false},
{"1.1 - 2", "1.1.1", true},
{"1.1-3", "4.3.2", false},
{"^1.1", "1.1.1", true},
{"^1.1", "4.3.2", false},
{"^1.x", "1.1.1", true},
{"^2.x", "1.1.1", false},
{"^1.x", "2.1.1", false},
{"~*", "2.1.1", true},
{"~1.x", "2.1.1", false},
{"~1.x", "1.3.5", true},
{"~1.x", "1.4", true},
{"~1.1", "1.1.1", true},
{"~1.2.3", "1.2.5", true},
{"~1.2.3", "1.2.2", false},
{"~1.2.3", "1.3.2", false},
{"~1.1", "1.2.3", false},
{"~1.3", "2.4.5", false},
}
for _, tc := range tests {
c, err := NewConstraint(tc.constraint)
if err != nil {
t.Errorf("err: %s", err)
continue
}
v, err := NewVersion(tc.version)
if err != nil {
t.Errorf("err: %s", err)
continue
}
a, msgs := c.Validate(v)
if a != tc.check {
t.Errorf("Constraint '%s' failing with '%s'", tc.constraint, tc.version)
} else if a == false && len(msgs) == 0 {
t.Errorf("%q failed with %q but no errors returned", tc.constraint, tc.version)
}
// if a == false {
// for _, m := range msgs {
// t.Errorf("%s", m)
// }
// }
}
v, err := NewVersion("1.2.3")
if err != nil {
t.Errorf("err: %s", err)
}
c, err := NewConstraint("!= 1.2.5, ^2, <= 1.1.x")
if err != nil {
t.Errorf("err: %s", err)
}
_, msgs := c.Validate(v)
if len(msgs) != 2 {
t.Error("Invalid number of validations found")
}
e := msgs[0].Error()
if e != "1.2.3 does not have same major version as 2" {
t.Error("Did not get expected message: 1.2.3 does not have same major version as 2")
}
e = msgs[1].Error()
if e != "1.2.3 is greater than 1.1.x" {
t.Error("Did not get expected message: 1.2.3 is greater than 1.1.x")
}
tests2 := []struct {
constraint, version, msg string
}{
{"= 2.0", "1.2.3", "1.2.3 is not equal to 2.0"},
{"!=4.1", "4.1.0", "4.1.0 is equal to 4.1"},
{"!=4.x", "4.1.0", "4.1.0 is equal to 4.x"},
{"!=4.2.x", "4.2.3", "4.2.3 is equal to 4.2.x"},
{">1.1", "1.1.0", "1.1.0 is less than or equal to 1.1"},
{"<1.1", "1.1.0", "1.1.0 is greater than or equal to 1.1"},
{"<1.1", "1.1.1", "1.1.1 is greater than or equal to 1.1"},
{"<1.x", "2.1.1", "2.1.1 is greater than or equal to 1.x"},
{"<1.1.x", "1.2.1", "1.2.1 is greater than or equal to 1.1.x"},
{">=1.1", "0.0.9", "0.0.9 is less than 1.1"},
{"<=2.x", "3.1.0", "3.1.0 is greater than 2.x"},
{"<=1.1", "1.1.1", "1.1.1 is greater than 1.1"},
{"<=1.1.x", "1.2.500", "1.2.500 is greater than 1.1.x"},
{">1.1, <3", "4.3.2", "4.3.2 is greater than or equal to 3"},
{">=1.1, <2, !=1.2.3", "1.2.3", "1.2.3 is equal to 1.2.3"},
{">=1.1, <2, !=1.2.3 || > 3", "3.0.0", "3.0.0 is greater than or equal to 2"},
{">=1.1, <2, !=1.2.3 || > 3", "1.2.3", "1.2.3 is equal to 1.2.3"},
{"1.1-3", "4.3.2", "4.3.2 is greater than 3"},
{"^1.1", "4.3.2", "4.3.2 does not have same major version as 1.1"},
{"^2.x", "1.1.1", "1.1.1 does not have same major version as 2.x"},
{"^1.x", "2.1.1", "2.1.1 does not have same major version as 1.x"},
{"~1.x", "2.1.1", "2.1.1 does not have same major and minor version as 1.x"},
{"~1.2.3", "1.2.2", "1.2.2 does not have same major and minor version as 1.2.3"},
{"~1.2.3", "1.3.2", "1.3.2 does not have same major and minor version as 1.2.3"},
{"~1.1", "1.2.3", "1.2.3 does not have same major and minor version as 1.1"},
{"~1.3", "2.4.5", "2.4.5 does not have same major and minor version as 1.3"},
}
for _, tc := range tests2 {
c, err := NewConstraint(tc.constraint)
if err != nil {
t.Errorf("err: %s", err)
continue
}
v, err := NewVersion(tc.version)
if err != nil {
t.Errorf("err: %s", err)
continue
}
_, msgs := c.Validate(v)
e := msgs[0].Error()
if e != tc.msg {
t.Errorf("Did not get expected message %q: %s", tc.msg, e)
}
}
}
================================================
FILE: vendor/github.com/Masterminds/semver/doc.go
================================================
/*
Package semver provides the ability to work with Semantic Versions (http://semver.org) in Go.
Specifically it provides the ability to:
* Parse semantic versions
* Sort semantic versions
* Check if a semantic version fits within a set of constraints
* Optionally work with a `v` prefix
Parsing Semantic Versions
To parse a semantic version use the `NewVersion` function. For example,
v, err := semver.NewVersion("1.2.3-beta.1+build345")
If there is an error the version wasn't parseable. The version object has methods
to get the parts of the version, compare it to other versions, convert the
version back into a string, and get the original string. For more details
please see the documentation at https://godoc.org/github.com/Masterminds/semver.
Sorting Semantic Versions
A set of versions can be sorted using the `sort` package from the standard library.
For example,
raw := []string{"1.2.3", "1.0", "1.3", "2", "0.4.2",}
vs := make([]*semver.Version, len(raw))
for i, r := range raw {
v, err := semver.NewVersion(r)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
vs[i] = v
}
sort.Sort(semver.Collection(vs))
Checking Version Constraints
Checking a version against version constraints is one of the most featureful
parts of the package.
c, err := semver.NewConstraint(">= 1.2.3")
if err != nil {
// Handle constraint not being parseable.
}
v, _ := semver.NewVersion("1.3")
if err != nil {
// Handle version not being parseable.
}
// Check if the version meets the constraints. The a variable will be true.
a := c.Check(v)
Basic Comparisons
There are two elements to the comparisons. First, a comparison string is a list
of comma separated and comparisons. These are then separated by || separated or
comparisons. For example, `">= 1.2, < 3.0.0 || >= 4.2.3"` is looking for a
comparison that's greater than or equal to 1.2 and less than 3.0.0 or is
greater than or equal to 4.2.3.
The basic comparisons are:
* `=`: equal (aliased to no operator)
* `!=`: not equal
* `>`: greater than
* `<`: less than
* `>=`: greater than or equal to
* `<=`: less than or equal to
Hyphen Range Comparisons
There are multiple methods to handle ranges and the first is hyphens ranges.
These look like:
* `1.2 - 1.4.5` which is equivalent to `>= 1.2, <= 1.4.5`
* `2.3.4 - 4.5` which is equivalent to `>= 2.3.4, <= 4.5`
Wildcards In Comparisons
The `x`, `X`, and `*` characters can be used as a wildcard character. This works
for all comparison operators. When used on the `=` operator it falls
back to the pack level comparison (see tilde below). For example,
* `1.2.x` is equivalent to `>= 1.2.0, < 1.3.0`
* `>= 1.2.x` is equivalent to `>= 1.2.0`
* `<= 2.x` is equivalent to `<= 3`
* `*` is equivalent to `>= 0.0.0`
Tilde Range Comparisons (Patch)
The tilde (`~`) comparison operator is for patch level ranges when a minor
version is specified and major level changes when the minor number is missing.
For example,
* `~1.2.3` is equivalent to `>= 1.2.3, < 1.3.0`
* `~1` is equivalent to `>= 1, < 2`
* `~2.3` is equivalent to `>= 2.3, < 2.4`
* `~1.2.x` is equivalent to `>= 1.2.0, < 1.3.0`
* `~1.x` is equivalent to `>= 1, < 2`
Caret Range Comparisons (Major)
The caret (`^`) comparison operator is for major level changes. This is useful
when comparisons of API versions as a major change is API breaking. For example,
* `^1.2.3` is equivalent to `>= 1.2.3, < 2.0.0`
* `^1.2.x` is equivalent to `>= 1.2.0, < 2.0.0`
* `^2.3` is equivalent to `>= 2.3, < 3`
* `^2.x` is equivalent to `>= 2.0.0, < 3`
*/
package semver
================================================
FILE: vendor/github.com/Masterminds/semver/version.go
================================================
package semver
import (
"bytes"
"errors"
"fmt"
"regexp"
"strconv"
"strings"
)
// The compiled version of the regex created at init() is cached here so it
// only needs to be created once.
var versionRegex *regexp.Regexp
var (
// ErrInvalidSemVer is returned a version is found to be invalid when
// being parsed.
ErrInvalidSemVer = errors.New("Invalid Semantic Version")
)
// SemVerRegex id the regular expression used to parse a semantic version.
const SemVerRegex string = `v?([0-9]+)(\.[0-9]+)?(\.[0-9]+)?` +
`(-([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?` +
`(\+([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?`
// Version represents a single semantic version.
type Version struct {
major, minor, patch int64
pre string
metadata string
original string
}
func init() {
versionRegex = regexp.MustCompile("^" + SemVerRegex + "$")
}
// NewVersion parses a given version and returns an instance of Version or
// an error if unable to parse the version.
func NewVersion(v string) (*Version, error) {
m := versionRegex.FindStringSubmatch(v)
if m == nil {
return nil, ErrInvalidSemVer
}
sv := &Version{
metadata: m[8],
pre: m[5],
original: v,
}
var temp int64
temp, err := strconv.ParseInt(m[1], 10, 32)
if err != nil {
return nil, fmt.Errorf("Error parsing version segment: %s", err)
}
sv.major = temp
if m[2] != "" {
temp, err = strconv.ParseInt(strings.TrimPrefix(m[2], "."), 10, 32)
if err != nil {
return nil, fmt.Errorf("Error parsing version segment: %s", err)
}
sv.minor = temp
} else {
sv.minor = 0
}
if m[3] != "" {
temp, err = strconv.ParseInt(strings.TrimPrefix(m[3], "."), 10, 32)
if err != nil {
return nil, fmt.Errorf("Error parsing version segment: %s", err)
}
sv.patch = temp
} else {
sv.patch = 0
}
return sv, nil
}
// String converts a Version object to a string.
// Note, if the original version contained a leading v this version will not.
// See the Original() method to retrieve the original value. Semantic Versions
// don't contain a leading v per the spec. Instead it's optional on
// impelementation.
func (v *Version) String() string {
var buf bytes.Buffer
fmt.Fprintf(&buf, "%d.%d.%d", v.major, v.minor, v.patch)
if v.pre != "" {
fmt.Fprintf(&buf, "-%s", v.pre)
}
if v.metadata != "" {
fmt.Fprintf(&buf, "+%s", v.metadata)
}
return buf.String()
}
// Original returns the original value passed in to be parsed.
func (v *Version) Original() string {
return v.original
}
// Major returns the major version.
func (v *Version) Major() int64 {
return v.major
}
// Minor returns the minor version.
func (v *Version) Minor() int64 {
return v.minor
}
// Patch returns the patch version.
func (v *Version) Patch() int64 {
return v.patch
}
// Prerelease returns the pre-release version.
func (v *Version) Prerelease() string {
return v.pre
}
// Metadata returns the metadata on the version.
func (v *Version) Metadata() string {
return v.metadata
}
// LessThan tests if one version is less than another one.
func (v *Version) LessThan(o *Version) bool {
return v.Compare(o) < 0
}
// GreaterThan tests if one version is greater than another one.
func (v *Version) GreaterThan(o *Version) bool {
return v.Compare(o) > 0
}
// Equal tests if two versions are equal to each other.
// Note, versions can be equal with different metadata since metadata
// is not considered part of the comparable version.
func (v *Version) Equal(o *Version) bool {
return v.Compare(o) == 0
}
// Compare compares this version to another one. It returns -1, 0, or 1 if
// the version smaller, equal, or larger than the other version.
//
// Versions are compared by X.Y.Z. Build metadata is ignored. Prerelease is
// lower than the version without a prerelease.
func (v *Version) Compare(o *Version) int {
// Compare the major, minor, and patch version for differences. If a
// difference is found return the comparison.
if d := compareSegment(v.Major(), o.Major()); d != 0 {
return d
}
if d := compareSegment(v.Minor(), o.Minor()); d != 0 {
return d
}
if d := compareSegment(v.Patch(), o.Patch()); d != 0 {
return d
}
// At this point the major, minor, and patch versions are the same.
ps := v.pre
po := o.Prerelease()
if ps == "" && po == "" {
return 0
}
if ps == "" {
return 1
}
if po == "" {
return -1
}
return comparePrerelease(ps, po)
}
func compareSegment(v, o int64) int {
if v < o {
return -1
}
if v > o {
return 1
}
return 0
}
func comparePrerelease(v, o string) int {
// split the prelease versions by their part. The separator, per the spec,
// is a .
sparts := strings.Split(v, ".")
oparts := strings.Split(o, ".")
// Find the longer length of the parts to know how many loop iterations to
// go through.
slen := len(sparts)
olen := len(oparts)
l := slen
if olen > slen {
l = olen
}
// Iterate over each part of the prereleases to compare the differences.
for i := 0; i < l; i++ {
// Since the lentgh of the parts can be different we need to create
// a placeholder. This is to avoid out of bounds issues.
stemp := ""
if i < slen {
stemp = sparts[i]
}
otemp := ""
if i < olen {
otemp = oparts[i]
}
d := comparePrePart(stemp, otemp)
if d != 0 {
return d
}
}
// Reaching here means two versions are of equal value but have different
// metadata (the part following a +). They are not identical in string form
// but the version comparison finds them to be equal.
return 0
}
func comparePrePart(s, o string) int {
// Fastpath if they are equal
if s == o {
return 0
}
// When s or o are empty we can use the other in an attempt to determine
// the response.
if o == "" {
_, n := strconv.ParseInt(s, 10, 64)
if n != nil {
return -1
}
return 1
}
if s == "" {
_, n := strconv.ParseInt(o, 10, 64)
if n != nil {
return 1
}
return -1
}
if s > o {
return 1
}
return -1
}
================================================
FILE: vendor/github.com/Masterminds/semver/version_test.go
================================================
package semver
import (
"testing"
)
func TestNewVersion(t *testing.T) {
tests := []struct {
version string
err bool
}{
{"1.2.3", false},
{"v1.2.3", false},
{"1.0", false},
{"v1.0", false},
{"1", false},
{"v1", false},
{"1.2.beta", true},
{"v1.2.beta", true},
{"foo", true},
{"1.2-5", false},
{"v1.2-5", false},
{"1.2-beta.5", false},
{"v1.2-beta.5", false},
{"\n1.2", true},
{"\nv1.2", true},
{"1.2.0-x.Y.0+metadata", false},
{"v1.2.0-x.Y.0+metadata", false},
{"1.2.0-x.Y.0+metadata-width-hypen", false},
{"v1.2.0-x.Y.0+metadata-width-hypen", false},
{"1.2.3-rc1-with-hypen", false},
{"v1.2.3-rc1-with-hypen", false},
{"1.2.3.4", true},
{"v1.2.3.4", true},
}
for _, tc := range tests {
_, err := NewVersion(tc.version)
if tc.err && err == nil {
t.Fatalf("expected error for version: %s", tc.version)
} else if !tc.err && err != nil {
t.Fatalf("error for version %s: %s", tc.version, err)
}
}
}
func TestOriginal(t *testing.T) {
tests := []string{
"1.2.3",
"v1.2.3",
"1.0",
"v1.0",
"1",
"v1",
"1.2-5",
"v1.2-5",
"1.2-beta.5",
"v1.2-beta.5",
"1.2.0-x.Y.0+metadata",
"v1.2.0-x.Y.0+metadata",
"1.2.0-x.Y.0+metadata-width-hypen",
"v1.2.0-x.Y.0+metadata-width-hypen",
"1.2.3-rc1-with-hypen",
"v1.2.3-rc1-with-hypen",
}
for _, tc := range tests {
v, err := NewVersion(tc)
if err != nil {
t.Errorf("Error parsing version %s", tc)
}
o := v.Original()
if o != tc {
t.Errorf("Error retrieving originl. Expected '%s' but got '%s'", tc, v)
}
}
}
func TestParts(t *testing.T) {
v, err := NewVersion("1.2.3-beta.1+build.123")
if err != nil {
t.Error("Error parsing version 1.2.3-beta.1+build.123")
}
if v.Major() != 1 {
t.Error("Major() returning wrong value")
}
if v.Minor() != 2 {
t.Error("Minor() returning wrong value")
}
if v.Patch() != 3 {
t.Error("Patch() returning wrong value")
}
if v.Prerelease() != "beta.1" {
t.Error("Prerelease() returning wrong value")
}
if v.Metadata() != "build.123" {
t.Error("Metadata() returning wrong value")
}
}
func TestString(t *testing.T) {
tests := []struct {
version string
expected string
}{
{"1.2.3", "1.2.3"},
{"v1.2.3", "1.2.3"},
{"1.0", "1.0.0"},
{"v1.0", "1.0.0"},
{"1", "1.0.0"},
{"v1", "1.0.0"},
{"1.2-5", "1.2.0-5"},
{"v1.2-5", "1.2.0-5"},
{"1.2-beta.5", "1.2.0-beta.5"},
{"v1.2-beta.5", "1.2.0-beta.5"},
{"1.2.0-x.Y.0+metadata", "1.2.0-x.Y.0+metadata"},
{"v1.2.0-x.Y.0+metadata", "1.2.0-x.Y.0+metadata"},
{"1.2.0-x.Y.0+metadata-width-hypen", "1.2.0-x.Y.0+metadata-width-hypen"},
{"v1.2.0-x.Y.0+metadata-width-hypen", "1.2.0-x.Y.0+metadata-width-hypen"},
{"1.2.3-rc1-with-hypen", "1.2.3-rc1-with-hypen"},
{"v1.2.3-rc1-with-hypen", "1.2.3-rc1-with-hypen"},
}
for _, tc := range tests {
v, err := NewVersion(tc.version)
if err != nil {
t.Errorf("Error parsing version %s", tc)
}
s := v.String()
if s != tc.expected {
t.Errorf("Error generating string. Expected '%s' but got '%s'", tc.expected, s)
}
}
}
func TestCompare(t *testing.T) {
tests := []struct {
v1 string
v2 string
expected int
}{
{"1.2.3", "1.5.1", -1},
{"2.2.3", "1.5.1", 1},
{"2.2.3", "2.2.2", 1},
{"3.2-beta", "3.2-beta", 0},
{"1.3", "1.1.4", 1},
{"4.2", "4.2-beta", 1},
{"4.2-beta", "4.2", -1},
{"4.2-alpha", "4.2-beta", -1},
{"4.2-alpha", "4.2-alpha", 0},
{"4.2-beta.2", "4.2-beta.1", 1},
{"4.2-beta2", "4.2-beta1", 1},
{"4.2-beta", "4.2-beta.2", -1},
{"4.2-beta", "4.2-beta.foo", 1},
{"4.2-beta.2", "4.2-beta", 1},
{"4.2-beta.foo", "4.2-beta", -1},
{"1.2+bar", "1.2+baz", 0},
}
for _, tc := range tests {
v1, err := NewVersion(tc.v1)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
v2, err := NewVersion(tc.v2)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
a := v1.Compare(v2)
e := tc.expected
if a != e {
t.Errorf(
"Comparison of '%s' and '%s' failed. Expected '%d', got '%d'",
tc.v1, tc.v2, e, a,
)
}
}
}
func TestLessThan(t *testing.T) {
tests := []struct {
v1 string
v2 string
expected bool
}{
{"1.2.3", "1.5.1", true},
{"2.2.3", "1.5.1", false},
{"3.2-beta", "3.2-beta", false},
}
for _, tc := range tests {
v1, err := NewVersion(tc.v1)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
v2, err := NewVersion(tc.v2)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
a := v1.LessThan(v2)
e := tc.expected
if a != e {
t.Errorf(
"Comparison of '%s' and '%s' failed. Expected '%t', got '%t'",
tc.v1, tc.v2, e, a,
)
}
}
}
func TestGreaterThan(t *testing.T) {
tests := []struct {
v1 string
v2 string
expected bool
}{
{"1.2.3", "1.5.1", false},
{"2.2.3", "1.5.1", true},
{"3.2-beta", "3.2-beta", false},
}
for _, tc := range tests {
v1, err := NewVersion(tc.v1)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
v2, err := NewVersion(tc.v2)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
a := v1.GreaterThan(v2)
e := tc.expected
if a != e {
t.Errorf(
"Comparison of '%s' and '%s' failed. Expected '%t', got '%t'",
tc.v1, tc.v2, e, a,
)
}
}
}
func TestEqual(t *testing.T) {
tests := []struct {
v1 string
v2 string
expected bool
}{
{"1.2.3", "1.5.1", false},
{"2.2.3", "1.5.1", false},
{"3.2-beta", "3.2-beta", true},
{"3.2-beta+foo", "3.2-beta+bar", true},
}
for _, tc := range tests {
v1, err := NewVersion(tc.v1)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
v2, err := NewVersion(tc.v2)
if err != nil {
t.Errorf("Error parsing version: %s", err)
}
a := v1.Equal(v2)
e := tc.expected
if a != e {
t.Errorf(
"Comparison of '%s' and '%s' failed. Expected '%t', got '%t'",
tc.v1, tc.v2, e, a,
)
}
}
}
================================================
FILE: vendor/github.com/Masterminds/vcs/.gitignore
================================================
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so
# Folders
_obj
_test
# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*
_testmain.go
*.exe
*.test
*.prof
================================================
FILE: vendor/github.com/Masterminds/vcs/.travis.yml
================================================
language: go
go:
- 1.3
- 1.4
- 1.5
- 1.6
- tip
# Setting sudo access to false will let Travis CI use containers rather than
# VMs to run the tests. For more details see:
# - http://docs.travis-ci.com/user/workers/container-based-infrastructure/
# - http://docs.travis-ci.com/user/workers/standard-infrastructure/
sudo: false
notifications:
irc: "irc.freenode.net#masterminds"
================================================
FILE: vendor/github.com/Masterminds/vcs/CHANGELOG.md
================================================
# 1.5.1 (2016-03-23)
- Fixing bug parsing some Git commit dates.
# 1.5.0 (2016-03-22)
- Add Travis CI testing for Go 1.6.
- Issue #17: Add CommitInfo method allowing for a common way to get commit
metadata from all VCS.
- Autodetect types that have git@ or hg@ users.
- Autodetect git+ssh, bzr+ssh, git, and svn+ssh scheme urls.
- On Bitbucket for ssh style URLs retrieve the type from the URL. This allows
for private repo type detection.
- Issue #14: Autodetect ssh/scp style urls (thanks chonthu).
# 1.4.1 (2016-03-07)
- Fixes #16: some windows situations are unable to create parent directory.
# 1.4.0 (2016-02-15)
- Adding support for IBM JazzHub.
# 1.3.1 (2016-01-27)
- Issue #12: Failed to checkout Bzr repo when parent directory didn't
exist (thanks cyrilleverrier).
# 1.3.0 (2015-11-09)
- Issue #9: Added Date method to get the date/time of latest commit (thanks kamilchm).
# 1.2.0 (2015-10-29)
- Adding IsDirty method to detect a checkout with uncommitted changes.
# 1.1.4 (2015-10-28)
- Fixed #8: Git IsReference not detecting branches that have not been checked
out yet.
# 1.1.3 (2015-10-21)
- Fixing issue where there are multiple go-import statements for go redirects
# 1.1.2 (2015-10-20)
- Fixes #7: hg not checking out code when Get is called
# 1.1.1 (2015-10-20)
- Issue #6: Allow VCS commands to be run concurrently.
# 1.1.0 (2015-10-19)
- #5: Added output of failed command to returned errors.
# 1.0.0 (2015-10-06)
- Initial release.
================================================
FILE: vendor/github.com/Masterminds/vcs/LICENSE.txt
================================================
The Masterminds
Copyright (C) 2014-2015, Matt Butcher and Matt Farina
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: vendor/github.com/Masterminds/vcs/README.md
================================================
# VCS Repository Management for Go
Manage repos in varying version control systems with ease through a common
interface.
[](https://travis-ci.org/Masterminds/vcs) [](https://godoc.org/github.com/Masterminds/vcs) [](http://goreportcard.com/report/Masterminds/vcs)
## Quick Usage
Quick usage:
remote := "https://github.com/Masterminds/vcs"
local, _ := ioutil.TempDir("", "go-vcs")
repo, err := NewRepo(remote, local)
In this case `NewRepo` will detect the VCS is Git and return a `GitRepo`. All of
the repos implement the `Repo` interface with a common set of features between
them.
## Supported VCS
Git, SVN, Bazaar (Bzr), and Mercurial (Hg) are currently supported. They each
have their own type (e.g., `GitRepo`) that follow a simple naming pattern. Each
type implements the `Repo` interface and has a constructor (e.g., `NewGitRepo`).
The constructors have the same signature as `NewRepo`.
## Features
- Clone or checkout a repository depending on the version control system.
- Pull updates to a repository.
- Get the currently checked out commit id.
- Checkout a commit id, branch, or tag (depending on the availability in the VCS).
- Get a list of tags and branches in the VCS.
- Check if a string value is a valid reference within the VCS.
- More...
For more details see [the documentation](https://godoc.org/github.com/Masterminds/vcs).
## Motivation
The package `golang.org/x/tools/go/vcs` provides some valuable functionality
for working with packages in repositories in varying source control management
systems. That package, while useful and well tested, is designed with a specific
purpose in mind. Our uses went beyond the scope of that package. To implement
our scope we built a package that went beyond the functionality and scope
of `golang.org/x/tools/go/vcs`.
================================================
FILE: vendor/github.com/Masterminds/vcs/bzr.go
================================================
package vcs
import (
"os"
"os/exec"
"path/filepath"
"regexp"
"strings"
"time"
)
var bzrDetectURL = regexp.MustCompile("parent branch: (?P<foo>.+)\n")
// NewBzrRepo creates a new instance of BzrRepo. The remote and local directories
// need to be passed in.
func NewBzrRepo(remote, local string) (*BzrRepo, error) {
ltype, err := DetectVcsFromFS(local)
// Found a VCS other than Bzr. Need to report an error.
if err == nil && ltype != Bzr {
return nil, ErrWrongVCS
}
r := &BzrRepo{}
r.setRemote(remote)
r.setLocalPath(local)
r.Logger = Logger
// With the other VCS we can check if the endpoint locally is different
// from the one configured internally. But, with Bzr you can't. For example,
// if you do `bzr branch https://launchpad.net/govcstestbzrrepo` and then
// use `bzr info` to get the parent branch you'll find it set to
// http://bazaar.launchpad.net/~mattfarina/govcstestbzrrepo/trunk/. Notice
// the change from https to http and the path chance.
// Here we set the remote to be the local one if none is passed in.
if err == nil && r.CheckLocal() == true && remote == "" {
c := exec.Command("bzr", "info")
c.Dir = local
c.Env = envForDir(c.Dir)
out, err := c.CombinedOutput()
if err != nil {
return nil, err
}
m := bzrDetectURL.FindStringSubmatch(string(out))
// If no remote was passed in but one is configured for the locally
// checked out Bzr repo use that one.
if m[1] != "" {
r.setRemote(m[1])
}
}
return r, nil
}
// BzrRepo implements the Repo interface for the Bzr source control.
type BzrRepo struct {
base
}
// Vcs retrieves the underlying VCS being implemented.
func (s BzrRepo) Vcs() Type {
return Bzr
}
// Get is used to perform an initial clone of a repository.
func (s *BzrRepo) Get() error {
basePath := filepath.Dir(filepath.FromSlash(s.LocalPath()))
if _, err := os.Stat(basePath); os.IsNotExist(err) {
err = os.MkdirAll(basePath, 0755)
if err != nil {
return err
}
}
_, err := s.run("bzr", "branch", s.Remote(), s.LocalPath())
return err
}
// Update performs a Bzr pull and update to an existing checkout.
func (s *BzrRepo) Update() error {
_, err := s.runFromDir("bzr", "pull")
if err != nil {
return err
}
_, err = s.runFromDir("bzr", "update")
return err
}
// UpdateVersion sets the version of a package currently checked out via Bzr.
func (s *BzrRepo) UpdateVersion(version string) error {
_, err := s.runFromDir("bzr", "update", "-r", version)
return err
}
// Version retrieves the current version.
func (s *BzrRepo) Version() (string, error) {
out, err := s.runFromDir("bzr", "revno", "--tree")
if err != nil {
return "", err
}
return strings.TrimSpace(string(out)), nil
}
// Date retrieves the date on the latest commit.
func (s *BzrRepo) Date() (time.Time, error) {
out, err := s.runFromDir("bzr", "version-info", "--custom", "--template={date}")
if err != nil {
return time.Time{}, err
}
t, err := time.Parse(longForm, string(out))
if err != nil {
return time.Time{}, err
}
return t, nil
}
// CheckLocal verifies the local location is a Bzr repo.
func (s *BzrRepo) CheckLocal() bool {
if _, err := os.Stat(s.LocalPath() + "/.bzr"); err == nil {
return true
}
return false
}
// Branches returns a list of available branches on the repository.
// In Bazaar (Bzr) clones and branches are the same. A different branch will
// have a different URL location which we cannot detect from the repo. This
// is a little different from other VCS.
func (s *BzrRepo) Branches() ([]string, error) {
var branches []string
return branches, nil
}
// Tags returns a list of available tags on the repository.
func (s *BzrRepo) Tags() ([]string, error) {
out, err := s.runFromDir("bzr", "tags")
if err != nil {
return []string{}, err
}
tags := s.referenceList(string(out), `(?m-s)^(\S+)`)
return tags, nil
}
// IsReference returns if a string is a reference. A reference can be a
// commit id or tag.
func (s *BzrRepo) IsReference(r string) bool {
_, err := s.runFromDir("bzr", "revno", "-r", r)
if err == nil {
return true
}
return false
}
// IsDirty returns if the checkout has been modified from the checked
// out reference.
func (s *BzrRepo) IsDirty() bool {
out, err := s.runFromDir("bzr", "diff")
return err != nil || len(out) != 0
}
// CommitInfo retrieves metadata about a commit.
func (s *BzrRepo) CommitInfo(id string) (*CommitInfo, error) {
r := "-r" + id
out, err := s.runFromDir("bzr", "log", r, "--log-format=long")
if err != nil {
return nil, ErrRevisionUnavailable
}
ci := &CommitInfo{
Commit: id,
}
lines := strings.Split(string(out), "\n")
const format = "Mon 2006-01-02 15:04:05 -0700"
var track int
var trackOn bool
// Note, bzr does not appear to use i18m.
for i, l := range lines {
if strings.HasPrefix(l, "committer:") {
ci.Author = strings.TrimSpace(strings.TrimPrefix(l, "committer:"))
} else if strings.HasPrefix(l, "timestamp:") {
ts := strings.TrimSpace(strings.TrimPrefix(l, "timestamp:"))
ci.Date, err = time.Parse(format, ts)
if err != nil {
return nil, err
}
} else if strings.TrimSpace(l) == "message:" {
track = i
trackOn = true
} else if trackOn && i > track {
ci.Message = ci.Message + l
}
}
ci.Message = strings.TrimSpace(ci.Message)
// Didn't find the revision
if ci.Author == "" {
return nil, ErrRevisionUnavailable
}
return ci, nil
}
================================================
FILE: vendor/github.com/Masterminds/vcs/bzr_test.go
================================================
package vcs
import (
"io/ioutil"
"time"
//"log"
"os"
"testing"
)
// Canary test to ensure BzrRepo implements the Repo interface.
var _ Repo = &BzrRepo{}
// To verify bzr is working we perform integration testing
// with a known bzr service. Due to the long time of repeatedly checking out
// repos these tests are structured to work together.
func TestBzr(t *testing.T) {
tempDir, err := ioutil.TempDir("", "go-vcs-bzr-tests")
if err != nil {
t.Error(err)
}
defer func() {
err = os.RemoveAll(tempDir)
if err != nil {
t.Error(err)
}
}()
repo, err := NewBzrRepo("https://launchpad.net/govcstestbzrrepo", tempDir+"/govcstestbzrrepo")
if err != nil {
t.Error(err)
}
if repo.Vcs() != Bzr {
t.Error("Bzr is detecting the wrong type")
}
// Check the basic getters.
if repo.Remote() != "https://launchpad.net/govcstestbzrrepo" {
t.Error("Remote not set properly")
}
if repo.LocalPath() != tempDir+"/govcstestbzrrepo" {
t.Error("Local disk location not set properly")
}
//Logger = log.New(os.Stdout, "", log.LstdFlags)
// Do an initial clone.
err = repo.Get()
if err != nil {
t.Errorf("Unable to clone Bzr repo. Err was %s", err)
}
// Verify Bzr repo is a Bzr repo
if repo.CheckLocal() == false {
t.Error("Problem checking out repo or Bzr CheckLocal is not working")
}
// Test internal lookup mechanism used outside of Bzr specific functionality.
ltype, err := DetectVcsFromFS(tempDir + "/govcstestbzrrepo")
if err != nil {
t.Error("detectVcsFromFS unable to Bzr repo")
}
if ltype != Bzr {
t.Errorf("detectVcsFromFS detected %s instead of Bzr type", ltype)
}
// Test NewRepo on existing checkout. This should simply provide a working
// instance without error based on looking at the local directory.
nrepo, nrerr := NewRepo("https://launchpad.net/govcstestbzrrepo", tempDir+"/govcstestbzrrepo")
if nrerr != nil {
t.Error(nrerr)
}
// Verify the right oject is returned. It will check the local repo type.
if nrepo.CheckLocal() == false {
t.Error("Wrong version returned from NewRepo")
}
err = repo.UpdateVersion("2")
if err != nil {
t.Errorf("Unable to update Bzr repo version. Err was %s", err)
}
// Use Version to verify we are on the right version.
v, err := repo.Version()
if v != "2" {
t.Error("Error checking checked out Bzr version")
}
if err != nil {
t.Error(err)
}
// Use Date to verify we are on the right commit.
d, err := repo.Date()
if d.Format(longForm) != "2015-07-31 09:50:42 -0400" {
t.Error("Error checking checked out Bzr commit date")
}
if err != nil {
t.Error(err)
}
// Perform an update.
err = repo.Update()
if err != nil {
t.Error(err)
}
v, err = repo.Version()
if v != "3" {
t.Error("Error checking checked out Bzr version")
}
if err != nil {
t.Error(err)
}
tags, err := repo.Tags()
if err != nil {
t.Error(err)
}
if tags[0] != "1.0.0" {
t.Error("Bzr tags is not reporting the correct version")
}
branches, err := repo.Branches()
if err != nil {
t.Error(err)
}
if len(branches) != 0 {
t.Error("Bzr is incorrectly returning branches")
}
if repo.IsReference("1.0.0") != true {
t.Error("Bzr is reporting a reference is not one")
}
if repo.IsReference("foo") == true {
t.Error("Bzr is reporting a non-existant reference is one")
}
if repo.IsDirty() == true {
t.Error("Bzr incorrectly reporting dirty")
}
ci, err := repo.CommitInfo("3")
if err != nil {
t.Error(err)
}
if ci.Commit != "3" {
t.Error("Bzr.CommitInfo wrong commit id")
}
if ci.Author != "Matt Farina <matt@mattfarina.com>" {
t.Error("Bzr.CommitInfo wrong author")
}
if ci.Message != "Updated Readme with pointer." {
t.Error("Bzr.CommitInfo wrong message")
}
ti, err := time.Parse(time.RFC1123Z, "Fri, 31 Jul 2015 09:51:37 -0400")
if err != nil {
t.Error(err)
}
if !ti.Equal(ci.Date) {
t.Error("Bzr.CommitInfo wrong date")
}
_, err = repo.CommitInfo("asdfasdfasdf")
if err != ErrRevisionUnavailable {
t.Error("Bzr didn't return expected ErrRevisionUnavailable")
}
}
func TestBzrCheckLocal(t *testing.T) {
// Verify repo.CheckLocal fails for non-Bzr directories.
// TestBzr is already checking on a valid repo
tempDir, err := ioutil.TempDir("", "go-vcs-bzr-tests")
if err != nil {
t.Error(err)
}
defer func() {
err = os.RemoveAll(tempDir)
if err != nil {
t.Error(err)
}
}()
repo, _ := NewBzrRepo("", tempDir)
if repo.CheckLocal() == true {
t.Error("Bzr CheckLocal does not identify non-Bzr location")
}
// Test NewRepo when there's no local. This should simply provide a working
// instance without error based on looking at the remote localtion.
_, nrerr := NewRepo("https://launchpad.net/govcstestbzrrepo", tempDir+"/govcstestbzrrepo")
if nrerr != nil {
t.Error(nrerr)
}
}
================================================
FILE: vendor/github.com/Masterminds/vcs/git.go
================================================
package vcs
import (
"encoding/xml"
"os"
"os/exec"
"path/filepath"
"strings"
"time"
)
// NewGitRepo creates a new instance of GitRepo. The remote and local directories
// need to be passed in.
func NewGitRepo(remote, local string) (*GitRepo, error) {
ltype, err := DetectVcsFromFS(local)
// Found a VCS other than Git. Need to report an error.
if err == nil && ltype != Git {
return nil, ErrWrongVCS
}
r := &GitRepo{}
r.setRemote(remote)
r.setLocalPath(local)
r.RemoteLocation = "origin"
r.Logger = Logger
// Make sure the local Git repo is configured the same as the remote when
// A remote value was passed in.
if err == nil && r.CheckLocal() == true {
c := exec.Command("git", "config", "--get", "remote.origin.url")
c.Dir = local
c.Env = envForDir(c.Dir)
out, err := c.CombinedOutput()
if err != nil {
return nil, err
}
localRemote := strings.TrimSpace(string(out))
if remote != "" && localRemote != remote {
return nil, ErrWrongRemote
}
// If no remote was passed in but one is configured for the locally
// checked out Git repo use that one.
if remote == "" && localRemote != "" {
r.setRemote(localRemote)
}
}
return r, nil
}
// GitRepo implements the Repo interface for the Git source control.
type GitRepo struct {
base
RemoteLocation string
}
// Vcs retrieves the underlying VCS being implemented.
func (s GitRepo) Vcs() Type {
return Git
}
// Get is used to perform an initial clone of a repository.
func (s *GitRepo) Get() error {
_, err := s.run("git", "clone", s.Remote(), s.LocalPath())
// There are some windows cases where Git cannot create the parent directory,
// if it does not already exist, to the location it's trying to create the
// repo. Catch that error and try to handle it.
if err != nil && s.isUnableToCreateDir(err) {
basePath := filepath.Dir(filepath.FromSlash(s.LocalPath()))
if _, err := os.Stat(basePath); os.IsNotExist(err) {
err = os.MkdirAll(basePath, 0755)
if err != nil {
return err
}
_, err = s.run("git", "clone", s.Remote(), s.LocalPath())
return err
}
}
return err
}
// Update performs an Git fetch and pull to an existing checkout.
func (s *GitRepo) Update() error {
// Perform a fetch to make sure everything is up to date.
_, err := s.runFromDir("git", "fetch", s.RemoteLocation)
if err != nil {
return err
}
// When in a detached head state, such as when an individual commit is checked
// out do not attempt a pull. It will cause an error.
detached, err := isDetachedHead(s.LocalPath())
if err != nil {
return err
}
if detached == true {
return nil
}
_, err = s.runFromDir("git", "pull")
return err
}
// UpdateVersion sets the version of a package currently checked out via Git.
func (s *GitRepo) UpdateVersion(version string) error {
_, err := s.runFromDir("git", "checkout", version)
return err
}
// Version retrieves the current version.
func (s *GitRepo) Version() (string, error) {
out, err := s.runFromDir("git", "rev-parse", "HEAD")
if err != nil {
return "", err
}
return strings.TrimSpace(string(out)), nil
}
// Date retrieves the date on the latest commit.
func (s *GitRepo) Date() (time.Time, error) {
out, err := s.runFromDir("git", "log", "-1", "--date=iso", "--pretty=format:%cd")
if err != nil {
return time.Time{}, err
}
t, err := time.Parse(longForm, string(out))
if err != nil {
return time.Time{}, err
}
return t, nil
}
// Branches returns a list of available branches on the RemoteLocation
func (s *GitRepo) Branches() ([]string, error) {
out, err := s.runFromDir("git", "show-ref")
if err != nil {
return []string{}, err
}
branches := s.referenceList(string(out), `(?m-s)(?:`+s.RemoteLocation+`)/(\S+)$`)
return branches, nil
}
// Tags returns a list of available tags on the RemoteLocation
func (s *GitRepo) Tags() ([]string, error) {
out, err := s.runFromDir("git", "show-ref")
if err != nil {
return []string{}, err
}
tags := s.referenceList(string(out), `(?m-s)(?:tags)/(\S+)$`)
return tags, nil
}
// CheckLocal verifies the local location is a Git repo.
func (s *GitRepo) CheckLocal() bool {
if _, err := os.Stat(s.LocalPath() + "/.git"); err == nil {
return true
}
return false
}
// IsReference returns if a string is a reference. A reference can be a
// commit id, branch, or tag.
func (s *GitRepo) IsReference(r string) bool {
_, err := s.runFromDir("git", "rev-parse", "--verify", r)
if err == nil {
return true
}
// Some refs will fail rev-parse. For example, a remote branch that has
// not been checked out yet. This next step should pickup the other
// possible references.
_, err = s.runFromDir("git", "show-ref", r)
if err == nil {
return true
}
return false
}
// IsDirty returns if the checkout has been modified from the checked
// out reference.
func (s *GitRepo) IsDirty() bool {
out, err := s.runFromDir("git", "diff")
return err != nil || len(out) != 0
}
// CommitInfo retrieves metadata about a commit.
func (s *GitRepo) CommitInfo(id string) (*CommitInfo, error) {
fm := `--pretty=format:"<logentry><commit>%H</commit><author>%an <%ae></author><date>%aD</date><message>%s</message></logentry>"`
out, err := s.runFromDir("git", "log", id, fm, "-1")
if err != nil {
return nil, ErrRevisionUnavailable
}
cis := struct {
Commit string `xml:"commit"`
Author string `xml:"author"`
Date string `xml:"date"`
Message string `xml:"message"`
}{}
err = xml.Unmarshal(out, &cis)
if err != nil {
return nil, err
}
t, err := time.Parse("Mon, _2 Jan 2006 15:04:05 -0700", cis.Date)
if err != nil {
return nil, err
}
ci := &CommitInfo{
Commit: cis.Commit,
Author: cis.Author,
Date: t,
Message: cis.Message,
}
return ci, nil
}
func isDetachedHead(dir string) (bool, error) {
c := exec.Command("git", "status", "-uno")
c.Dir = dir
c.Env = envForDir(c.Dir)
out, err := c.CombinedOutput()
if err != nil {
return false, err
}
detached := strings.Contains(string(out), "HEAD detached at")
return detached, nil
}
// In a multi-langual manner check for the Git error that it couldn't create
// the directory.
func (s *GitRepo) isUnableToCreateDir(err error) bool {
msg := err.Error()
if strings.HasPrefix(msg, "could not create work tree dir") ||
strings.HasPrefix(msg, "不能创建工作区目录") ||
strings.HasPrefix(msg, "no s'ha pogut crear el directori d'arbre de treball") ||
strings.HasPrefix(msg, "impossible de créer le répertoire de la copie de travail") ||
strings.HasPrefix(msg, "kunde inte skapa arbetskatalogen") ||
(strings.HasPrefix(msg, "Konnte Arbeitsverzeichnis") && strings.Contains(msg, "nicht erstellen")) ||
(strings.HasPrefix(msg, "작업 디렉터리를") && strings.Contains(msg, "만들 수 없습니다")) {
return true
}
return false
}
================================================
FILE: vendor/github.com/Masterminds/vcs/git_test.go
================================================
package vcs
import (
"io/ioutil"
"time"
//"log"
"os"
"testing"
)
// Canary test to ensure GitRepo implements the Repo interface.
var _ Repo = &GitRepo{}
// To verify git is working we perform integration testing
// with a known git service.
func TestGit(t *testing.T) {
tempDir, err := ioutil.TempDir("", "go-vcs-git-tests")
if err != nil {
t.Error(err)
}
defer func() {
err = os.RemoveAll(tempDir)
if err != nil {
t.Error(err)
}
}()
repo, err := NewGitRepo("https://github.com/Masterminds/VCSTestRepo", tempDir+"/VCSTestRepo")
if err != nil {
t.Error(err)
}
if repo.Vcs() != Git {
t.Error("Git is detecting the wrong type")
}
// Check the basic getters.
if repo.Remote() != "https://github.com/Masterminds/VCSTestRepo" {
t.Error("Remote not set properly")
}
if repo.LocalPath() != tempDir+"/VCSTestRepo" {
t.Error("Local disk location not set properly")
}
//Logger = log.New(os.Stdout, "", log.LstdFlags)
// Do an initial clone.
err = repo.Get()
if err != nil {
t.Errorf("Unable to clone Git repo. Err was %s", err)
}
// Verify Git repo is a Git repo
if repo.CheckLocal() == false {
t.Error("Problem checking out repo or Git CheckLocal is not working")
}
// Test internal lookup mechanism used outside of Git specific functionality.
ltype, err := DetectVcsFromFS(tempDir + "/VCSTestRepo")
if err != nil {
t.Error("detectVcsFromFS unable to Git repo")
}
if ltype != Git {
t.Errorf("detectVcsFromFS detected %s instead of Git type", ltype)
}
// Test NewRepo on existing checkout. This should simply provide a working
// instance without error based on looking at the local directory.
nrepo, nrerr := NewRepo("https://github.com/Masterminds/VCSTestRepo", tempDir+"/VCSTestRepo")
if nrerr != nil {
t.Error(nrerr)
}
// Verify the right oject is returned. It will check the local repo type.
if nrepo.CheckLocal() == false {
t.Error("Wrong version returned from NewRepo")
}
// Perform an update.
err = repo.Update()
if err != nil {
t.Error(err)
}
// Set the version using the short hash.
err = repo.UpdateVersion("806b07b")
if err != nil {
t.Errorf("Unable to update Git repo version. Err was %s", err)
}
// Once a ref has been checked out the repo is in a detached head state.
// Trying to pull in an update in this state will cause an error. Update
// should cleanly handle this. Pulling on a branch (tested elsewhere) and
// skipping that here.
err = repo.Update()
if err != nil {
t.Error(err)
}
// Use Version to verify we are on the right version.
v, err := repo.Version()
if v != "806b07b08faa21cfbdae93027904f80174679402" {
t.Error("Error checking checked out Git version")
}
if err != nil {
t.Error(err)
}
// Use Date to verify we are on the right commit.
d, err := repo.Date()
if d.Format(longForm) != "2015-07-29 09:46:39 -0400" {
t.Error("Error checking checked out Git commit date")
}
if err != nil {
t.Error(err)
}
// Verify that we can set the version something other than short hash
err = repo.UpdateVersion("master")
if err != nil {
t.Errorf("Unable to update Git repo version. Err was %s", err)
}
err = repo.UpdateVersion("806b07b08faa21cfbdae93027904f80174679402")
if err != nil {
t.Errorf("Unable to update Git repo version. Err was %s", err)
}
v, err = repo.Version()
if v != "806b07b08faa21cfbdae93027904f80174679402" {
t.Error("Error checking checked out Git version")
}
if err != nil {
t.Error(err)
}
tags, err := repo.Tags()
if err != nil {
t.Error(err)
}
if tags[0] != "1.0.0" {
t.Error("Git tags is not reporting the correct version")
}
branches, err := repo.Branches()
if err != nil {
t.Error(err)
}
// The branches should be HEAD, master, and test.
if branches[2] != "test" {
t.Error("Git is incorrectly returning branches")
}
if repo.IsReference("1.0.0") != true {
t.Error("Git is reporting a reference is not one")
}
if repo.IsReference("foo") == true {
t.Error("Git is reporting a non-existant reference is one")
}
if repo.IsDirty() == true {
t.Error("Git incorrectly reporting dirty")
}
ci, err := repo.CommitInfo("806b07b08faa21cfbdae93027904f80174679402")
if err != nil {
t.Error(err)
}
if ci.Commit != "806b07b08faa21cfbdae93027904f80174679402" {
t.Error("Git.CommitInfo wrong commit id")
}
if ci.Author != "Matt Farina <matt@mattfarina.com>" {
t.Error("Git.CommitInfo wrong author")
}
if ci.Message != "Update README.md" {
t.Error("Git.CommitInfo wrong message")
}
ti, err := time.Parse(time.RFC1123Z, "Wed, 29 Jul 2015 09:46:39 -0400")
if err != nil {
t.Error(err)
}
if !ti.Equal(ci.Date) {
t.Error("Git.CommitInfo wrong date")
}
_, err = repo.CommitInfo("asdfasdfasdf")
if err != ErrRevisionUnavailable {
t.Error("Git didn't return expected ErrRevisionUnavailable")
}
}
func TestGitCheckLocal(t *testing.T) {
// Verify repo.CheckLocal fails for non-Git directories.
// TestGit is already checking on a valid repo
tempDir, err := ioutil.TempDir("", "go-vcs-git-tests")
if err != nil {
t.Error(err)
}
defer func() {
err = os.RemoveAll(tempDir)
if err != nil {
t.Error(err)
}
}()
repo, _ := NewGitRepo("", tempDir)
if repo.CheckLocal() == true {
t.Error("Git CheckLocal does not identify non-Git location")
}
// Test NewRepo when there's no local. This should simply provide a working
// instance without error based on looking at the remote localtion.
_, nrerr := NewRepo("https://github.com/Masterminds/VCSTestRepo", tempDir+"/VCSTestRepo")
if nrerr != nil {
t.Error(nrerr)
}
}
================================================
FILE: vendor/github.com/Masterminds/vcs/hg.go
================================================
package vcs
import (
"encoding/xml"
"os"
"os/exec"
"regexp"
"strings"
"time"
)
var hgDetectURL = regexp.MustCompile("default = (?P<foo>.+)\n")
// NewHgRepo creates a new instance of HgRepo. The remote and local directories
// need to be passed in.
func NewHgRepo(remote, local string) (*HgRepo, error) {
ltype, err := DetectVcsFromFS(local)
// Found a VCS other than Hg. Need to report an error.
if err == nil && ltype != Hg {
return nil, ErrWrongVCS
}
r := &HgRepo{}
r.setRemote(remote)
r.setLocalPath(local)
r.Logger = Logger
// Make sure the local Hg repo is configured the same as the remote when
// A remote value was passed in.
if err == nil && r.CheckLocal() == true {
// An Hg repo was found so test that the URL there matches
// the repo passed in here.
c := exec.Command("hg", "paths")
c.Dir = local
c.Env = envForDir(c.Dir)
out, err := c.CombinedOutput()
if err != nil {
return nil, err
}
m := hgDetectURL.FindStringSubmatch(string(out))
if m[1] != "" && m[1] != remote {
return nil, ErrWrongRemote
}
// If no remote was passed in but one is configured for the locally
// checked out Hg repo use that one.
if remote == "" && m[1] != "" {
r.setRemote(m[1])
}
}
return r, nil
}
// HgRepo implements the Repo interface for the Mercurial source control.
type HgRepo struct {
base
}
// Vcs retrieves the underlying VCS being implemented.
func (s HgRepo) Vcs() Type {
return Hg
}
// Get is used to perform an initial clone of a repository.
func (s *HgRepo) Get() error {
_, err := s.run("hg", "clone", s.Remote(), s.LocalPath())
return err
}
// Update performs a Mercurial pull to an existing checkout.
func (s *HgRepo) Update() error {
_, err := s.runFromDir("hg", "update")
return err
}
// UpdateVersion sets the version of a package currently checked out via Hg.
func (s *HgRepo) UpdateVersion(version string) error {
_, err := s.runFromDir("hg", "pull")
if err != nil {
return err
}
_, err = s.runFromDir("hg", "update", version)
return err
}
// Version retrieves the current version.
func (s *HgRepo) Version() (string, error) {
out, err := s.runFromDir("hg", "identify")
if err != nil {
return "", err
}
parts := strings.SplitN(string(out), " ", 2)
sha := parts[0]
return strings.TrimSpace(sha), nil
}
// Date retrieves the date on the latest commit.
func (s *HgRepo) Date() (time.Time, error) {
version, err := s.Version()
if err != nil {
return time.Time{}, err
}
out, err := s.runFromDir("hg", "log", "-r", version, "--template", "{date|isodatesec}")
if err != nil {
return time.Time{}, err
}
t, err := time.Parse(longForm, string(out))
if err != nil {
return time.Time{}, err
}
return t, nil
}
// CheckLocal verifies the local location is a Git repo.
func (s *HgRepo) CheckLocal() bool {
if _, err := os.Stat(s.LocalPath() + "/.hg"); err == nil {
return true
}
return false
}
// Branches returns a list of available branches
func (s *HgRepo) Branches() ([]string, error) {
out, err := s.runFromDir("hg", "branches")
if err != nil {
return []string{}, err
}
branches := s.referenceList(string(out), `(?m-s)^(\S+)`)
return branches, nil
}
// Tags returns a list of available tags
func (s *HgRepo) Tags() ([]string, error) {
out, err := s.runFromDir("hg", "tags")
if err != nil {
return []string{}, err
}
tags := s.referenceList(string(out), `(?m-s)^(\S+)`)
return tags, nil
}
// IsReference returns if a string is a reference. A reference can be a
// commit id, branch, or tag.
func (s *HgRepo) IsReference(r string) bool {
_, err := s.runFromDir("hg", "log", "-r", r)
if err == nil {
return true
}
return false
}
// IsDirty returns if the checkout has been modified from the checked
// out reference.
func (s *HgRepo) IsDirty() bool {
out, err := s.runFromDir("hg", "diff")
return err != nil || len(out) != 0
}
// CommitInfo retrieves metadata about a commit.
func (s *HgRepo) CommitInfo(id string) (*CommitInfo, error) {
out, err := s.runFromDir("hg", "log", "-r", id, "--style=xml")
if err != nil {
return nil, ErrRevisionUnavailable
}
type Author struct {
Name string `xml:",chardata"`
Email string `xml:"email,attr"`
}
type Logentry struct {
Node string `xml:"node,attr"`
Author Author `xml:"author"`
Date string `xml:"date"`
Msg string `xml:"msg"`
}
type Log struct {
XMLName xml.Name `xml:"log"`
Logs []Logentry `xml:"logentry"`
}
logs := &Log{}
err = xml.Unmarshal(out, &logs)
if err != nil {
return nil, err
}
if len(logs.Logs) == 0 {
return nil, ErrRevisionUnavailable
}
ci := &CommitInfo{
Commit: logs.Logs[0].Node,
Author: logs.Logs[0].Author.Name + " <" + logs.Logs[0].Author.Email + ">",
Message: logs.Logs[0].Msg,
}
if logs.Logs[0].Date != "" {
ci.Date, err = time.Parse(time.RFC3339, logs.Logs[0].Date)
if err != nil {
return nil, err
}
}
return ci, nil
}
================================================
FILE: vendor/github.com/Masterminds/vcs/hg_test.go
================================================
package vcs
import (
"io/ioutil"
"time"
//"log"
"os"
"testing"
)
// Canary test to ensure HgRepo implements the Repo interface.
var _ Repo = &HgRepo{}
// To verify hg is working we perform integration testing
// with a known hg service.
func TestHg(t *testing.T) {
tempDir, err := ioutil.TempDir("", "go-vcs-hg-tests")
if err != nil {
t.Error(err)
}
defer func() {
err = os.RemoveAll(tempDir)
if err != nil {
t.Error(err)
}
}()
repo, err := NewHgRepo("https://bitbucket.org/mattfarina/testhgrepo", tempDir+"/testhgrepo")
if err != nil {
t.Error(err)
}
if repo.Vcs() != Hg {
t.Error("Hg is detecting the wrong type")
}
// Check the basic getters.
if repo.Remote() != "https://bitbucket.org/mattfarina/testhgrepo" {
t.Error("Remote not set properly")
}
if repo.LocalPath() != tempDir+"/testhgrepo" {
t.Error("Local disk location not set properly")
}
//Logger = log.New(os.Stdout, "", log.LstdFlags)
// Do an initial clone.
err = repo.Get()
if err != nil {
t.Errorf("Unable to clone Hg repo. Err was %s", err)
}
// Verify Hg repo is a Hg repo
if repo.CheckLocal() == false {
t.Error("Problem checking out repo or Hg CheckLocal is not working")
}
// Test internal lookup mechanism used outside of Hg specific functionality.
ltype, err := DetectVcsFromFS(tempDir + "/testhgrepo")
if err != nil {
t.Error("detectVcsFromFS unable to Hg repo")
}
if ltype != Hg {
t.Errorf("detectVcsFromFS detected %s instead of Hg type", ltype)
}
// Test NewRepo on existing checkout. This should simply provide a working
// instance without error based on looking at the local directory.
nrepo, nrerr := NewRepo("https://bitbucket.org/mattfarina/testhgrepo", tempDir+"/testhgrepo")
if nrerr != nil {
t.Error(nrerr)
}
// Verify the right oject is returned. It will check the local repo type.
if nrepo.CheckLocal() == false {
t.Error("Wrong version returned from NewRepo")
}
// Set the version using the short hash.
err = repo.UpdateVersion("a5494ba2177f")
if err != nil {
t.Errorf("Unable to update Hg repo version. Err was %s", err)
}
// Use Version to verify we are on the right version.
v, err := repo.Version()
if v != "a5494ba2177f" {
t.Error("Error checking checked out Hg version")
}
if err != nil {
t.Error(err)
}
// Use Date to verify we are on the right commit.
d, err := repo.Date()
if err != nil {
t.Error(err)
}
if d.Format(longForm) != "2015-07-30 16:14:08 -0400" {
t.Error("Error checking checked out Hg commit date. Got wrong date:", d)
}
// Perform an update.
err = repo.Update()
if err != nil {
t.Error(err)
}
v, err = repo.Version()
if v != "9c6ccbca73e8" {
t.Error("Error checking checked out Hg version")
}
if err != nil {
t.Error(err)
}
tags, err := repo.Tags()
if err != nil {
t.Error(err)
}
if tags[1] != "1.0.0" {
t.Error("Hg tags is not reporting the correct version")
}
branches, err := repo.Branches()
if err != nil {
t.Error(err)
}
// The branches should be HEAD, master, and test.
if branches[0] != "test" {
t.Error("Hg is incorrectly returning branches")
}
if repo.IsReference("1.0.0") != true {
t.Error("Hg is reporting a reference is not one")
}
if repo.IsReference("test") != true {
t.Error("Hg is reporting a reference is not one")
}
if repo.IsReference("foo") == true {
t.Error("Hg is reporting a non-existant reference is one")
}
if repo.IsDirty() == true {
t.Error("Hg incorrectly reporting dirty")
}
ci, err := repo.CommitInfo("a5494ba2177f")
if err != nil {
t.Error(err)
}
if ci.Commit != "a5494ba2177ff9ef26feb3c155dfecc350b1a8ef" {
t.Error("Hg.CommitInfo wrong commit id")
}
if ci.Author != "Matt Farina <matt@mattfarina.com>" {
t.Error("Hg.CommitInfo wrong author")
}
if ci.Message != "A commit" {
t.Error("Hg.CommitInfo wrong message")
}
ti := time.Unix(1438287248, 0)
if !ti.Equal(ci.Date) {
t.Error("Hg.CommitInfo wrong date")
}
_, err = repo.CommitInfo("asdfasdfasdf")
if err != ErrRevisionUnavailable {
t.Error("Hg didn't return expected ErrRevisionUnavailable")
}
}
func TestHgCheckLocal(t *testing.T) {
// Verify repo.CheckLocal fails for non-Hg directories.
// TestHg is already checking on a valid repo
tempDir, err := ioutil.TempDir("", "go-vcs-hg-tests")
if err != nil {
t.Error(err)
}
defer func() {
err = os.RemoveAll(tempDir)
if err != nil {
t.Error(er
Showing preview only (222K chars total). Download the full file or copy to clipboard to get everything.
gitextract_2u8aug_v/
├── .dockerignore
├── .gitignore
├── BUILDING.md
├── Dockerfile
├── Dockerfile.scratch
├── Jenkinsfile
├── LICENSE
├── Makefile
├── README.md
├── add-headers.sh
├── ansible/
│ ├── ansible.go
│ └── variables.go
├── circle.yml
├── cmd/
│ ├── kill.go
│ ├── pod.go
│ ├── rc.go
│ ├── root.go
│ ├── run.go
│ └── version.go
├── glide.yaml
├── header.txt
├── headers.yml
├── k8s/
│ └── k8s.go
├── kansible.go
├── log/
│ └── log.go
├── ssh/
│ └── ssh.go
├── tools/
│ └── create-intellij-idea-golib.sh
├── vendor/
│ ├── bitbucket.org/
│ │ └── ww/
│ │ └── goautoneg/
│ │ ├── Makefile
│ │ ├── README.txt
│ │ ├── autoneg.go
│ │ └── autoneg_test.go
│ ├── github.com/
│ │ ├── Masterminds/
│ │ │ ├── semver/
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── appveyor.yml
│ │ │ │ ├── benchmark_test.go
│ │ │ │ ├── collection.go
│ │ │ │ ├── collection_test.go
│ │ │ │ ├── constraints.go
│ │ │ │ ├── constraints_test.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── version.go
│ │ │ │ └── version_test.go
│ │ │ └── vcs/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.md
│ │ │ ├── bzr.go
│ │ │ ├── bzr_test.go
│ │ │ ├── git.go
│ │ │ ├── git_test.go
│ │ │ ├── hg.go
│ │ │ ├── hg_test.go
│ │ │ ├── repo.go
│ │ │ ├── repo_test.go
│ │ │ ├── svn.go
│ │ │ ├── svn_test.go
│ │ │ ├── vcs_local_lookup.go
│ │ │ ├── vcs_remote_lookup.go
│ │ │ └── vcs_remote_lookup_test.go
│ │ ├── beorn7/
│ │ │ └── perks/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── histogram/
│ │ │ │ ├── bench_test.go
│ │ │ │ ├── histogram.go
│ │ │ │ └── histogram_test.go
│ │ │ ├── quantile/
│ │ │ │ ├── bench_test.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── exampledata.txt
│ │ │ │ ├── stream.go
│ │ │ │ └── stream_test.go
│ │ │ └── topk/
│ │ │ ├── topk.go
│ │ │ └── topk_test.go
│ │ ├── blang/
│ │ │ └── semver/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── examples/
│ │ │ │ └── main.go
│ │ │ ├── json.go
│ │ │ ├── json_test.go
│ │ │ ├── semver.go
│ │ │ ├── semver_test.go
│ │ │ ├── sort.go
│ │ │ ├── sort_test.go
│ │ │ ├── sql.go
│ │ │ └── sql_test.go
│ │ ├── cloudfoundry-incubator/
│ │ │ └── candiedyaml/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── api.go
│ │ │ ├── candiedyaml_suite_test.go
│ │ │ ├── decode.go
│ │ │ ├── decode_test.go
│ │ │ ├── emitter.go
│ │ │ ├── encode.go
│ │ │ ├── encode_test.go
│ │ │ ├── fixtures/
│ │ │ │ └── specification/
│ │ │ │ ├── example2_1.yaml
│ │ │ │ ├── example2_10.yaml
│ │ │ │ ├── example2_11.yaml
│ │ │ │ ├── example2_12.yaml
│ │ │ │ ├── example2_13.yaml
│ │ │ │ ├── example2_14.yaml
│ │ │ │ ├── example2_15.yaml
│ │ │ │ ├── example2_15_dumped.yaml
│ │ │ │ ├── example2_16.yaml
│ │ │ │ ├── example2_17.yaml
│ │ │ │ ├── example2_17_control.yaml
│ │ │ │ ├── example2_17_hexesc.yaml
│ │ │ │ ├── example2_17_quoted.yaml
│ │ │ │ ├── example2_17_single.yaml
│ │ │ │ ├── example2_17_tie_fighter.yaml
│ │ │ │ ├── example2_17_unicode.yaml
│ │ │ │ ├── example2_18.yaml
│ │ │ │ ├── example2_19.yaml
│ │ │ │ ├── example2_2.yaml
│ │ │ │ ├── example2_20.yaml
│ │ │ │ ├── example2_21.yaml
│ │ │ │ ├── example2_22.yaml
│ │ │ │ ├── example2_23.yaml
│ │ │ │ ├── example2_23_application.yaml
│ │ │ │ ├── example2_23_non_date.yaml
│ │ │ │ ├── example2_23_picture.yaml
│ │ │ │ ├── example2_24.yaml
│ │ │ │ ├── example2_24_dumped.yaml
│ │ │ │ ├── example2_25.yaml
│ │ │ │ ├── example2_26.yaml
│ │ │ │ ├── example2_27.yaml
│ │ │ │ ├── example2_27_dumped.yaml
│ │ │ │ ├── example2_28.yaml
│ │ │ │ ├── example2_3.yaml
│ │ │ │ ├── example2_4.yaml
│ │ │ │ ├── example2_5.yaml
│ │ │ │ ├── example2_6.yaml
│ │ │ │ ├── example2_7.yaml
│ │ │ │ ├── example2_8.yaml
│ │ │ │ ├── example2_9.yaml
│ │ │ │ ├── example_empty.yaml
│ │ │ │ └── types/
│ │ │ │ ├── map.yaml
│ │ │ │ ├── map_mixed_tags.yaml
│ │ │ │ ├── merge.yaml
│ │ │ │ ├── omap.yaml
│ │ │ │ ├── pairs.yaml
│ │ │ │ ├── seq.yaml
│ │ │ │ ├── set.yaml
│ │ │ │ ├── v.yaml
│ │ │ │ └── value.yaml
│ │ │ ├── libyaml-LICENSE
│ │ │ ├── parser.go
│ │ │ ├── parser_test.go
│ │ │ ├── reader.go
│ │ │ ├── reader_test.go
│ │ │ ├── resolver.go
│ │ │ ├── resolver_test.go
│ │ │ ├── run_parser.go
│ │ │ ├── scanner.go
│ │ │ ├── scanner_test.go
│ │ │ ├── tags.go
│ │ │ ├── writer.go
│ │ │ ├── yaml_definesh.go
│ │ │ ├── yaml_privateh.go
│ │ │ └── yamlh.go
│ │ ├── davecgh/
│ │ │ └── go-spew/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── cov_report.sh
│ │ │ ├── spew/
│ │ │ │ ├── common.go
│ │ │ │ ├── common_test.go
│ │ │ │ ├── config.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── dump.go
│ │ │ │ ├── dump_test.go
│ │ │ │ ├── dumpcgo_test.go
│ │ │ │ ├── dumpnocgo_test.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── format.go
│ │ │ │ ├── format_test.go
│ │ │ │ ├── internal_test.go
│ │ │ │ ├── spew.go
│ │ │ │ ├── spew_test.go
│ │ │ │ └── testdata/
│ │ │ │ └── dumpcgo.go
│ │ │ └── test_coverage.txt
│ │ ├── docker/
│ │ │ ├── docker/
│ │ │ │ ├── .dockerignore
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .mailmap
│ │ │ │ ├── AUTHORS
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── Dockerfile.simple
│ │ │ │ ├── LICENSE
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── Makefile
│ │ │ │ ├── NOTICE
│ │ │ │ ├── README.md
│ │ │ │ ├── ROADMAP.md
│ │ │ │ ├── VERSION
│ │ │ │ ├── api/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── api_unit_test.go
│ │ │ │ │ ├── client/
│ │ │ │ │ │ ├── attach.go
│ │ │ │ │ │ ├── build.go
│ │ │ │ │ │ ├── cli.go
│ │ │ │ │ │ ├── client.go
│ │ │ │ │ │ ├── commit.go
│ │ │ │ │ │ ├── cp.go
│ │ │ │ │ │ ├── create.go
│ │ │ │ │ │ ├── diff.go
│ │ │ │ │ │ ├── events.go
│ │ │ │ │ │ ├── exec.go
│ │ │ │ │ │ ├── export.go
│ │ │ │ │ │ ├── help.go
│ │ │ │ │ │ ├── hijack.go
│ │ │ │ │ │ ├── history.go
│ │ │ │ │ │ ├── images.go
│ │ │ │ │ │ ├── import.go
│ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ ├── inspect.go
│ │ │ │ │ │ ├── kill.go
│ │ │ │ │ │ ├── load.go
│ │ │ │ │ │ ├── login.go
│ │ │ │ │ │ ├── logout.go
│ │ │ │ │ │ ├── logs.go
│ │ │ │ │ │ ├── network.go
│ │ │ │ │ │ ├── pause.go
│ │ │ │ │ │ ├── port.go
│ │ │ │ │ │ ├── ps.go
│ │ │ │ │ │ ├── pull.go
│ │ │ │ │ │ ├── push.go
│ │ │ │ │ │ ├── rename.go
│ │ │ │ │ │ ├── restart.go
│ │ │ │ │ │ ├── rm.go
│ │ │ │ │ │ ├── rmi.go
│ │ │ │ │ │ ├── run.go
│ │ │ │ │ │ ├── save.go
│ │ │ │ │ │ ├── search.go
│ │ │ │ │ │ ├── service.go
│ │ │ │ │ │ ├── start.go
│ │ │ │ │ │ ├── stats.go
│ │ │ │ │ │ ├── stats_unit_test.go
│ │ │ │ │ │ ├── stop.go
│ │ │ │ │ │ ├── tag.go
│ │ │ │ │ │ ├── top.go
│ │ │ │ │ │ ├── unpause.go
│ │ │ │ │ │ ├── utils.go
│ │ │ │ │ │ ├── version.go
│ │ │ │ │ │ └── wait.go
│ │ │ │ │ ├── common.go
│ │ │ │ │ ├── server/
│ │ │ │ │ │ ├── form.go
│ │ │ │ │ │ ├── form_test.go
│ │ │ │ │ │ ├── profiler.go
│ │ │ │ │ │ ├── server.go
│ │ │ │ │ │ ├── server_experimental.go
│ │ │ │ │ │ ├── server_linux.go
│ │ │ │ │ │ ├── server_linux_test.go
│ │ │ │ │ │ ├── server_stub.go
│ │ │ │ │ │ └── server_windows.go
│ │ │ │ │ └── types/
│ │ │ │ │ ├── stats.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── builder/
│ │ │ │ │ ├── bflag.go
│ │ │ │ │ ├── bflag_test.go
│ │ │ │ │ ├── command/
│ │ │ │ │ │ └── command.go
│ │ │ │ │ ├── dispatchers.go
│ │ │ │ │ ├── evaluator.go
│ │ │ │ │ ├── internals.go
│ │ │ │ │ ├── internals_linux.go
│ │ │ │ │ ├── internals_windows.go
│ │ │ │ │ ├── job.go
│ │ │ │ │ ├── job_test.go
│ │ │ │ │ ├── parser/
│ │ │ │ │ │ ├── dumper/
│ │ │ │ │ │ │ └── main.go
│ │ │ │ │ │ ├── json_test.go
│ │ │ │ │ │ ├── line_parsers.go
│ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ ├── parser_test.go
│ │ │ │ │ │ ├── testfiles/
│ │ │ │ │ │ │ ├── ADD-COPY-with-JSON/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── brimstone-consuldock/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── brimstone-docker-consul/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── continueIndent/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── cpuguy83-nagios/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── docker/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── escapes/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── flags/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── influxdb/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-json-inside-string/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-json-inside-string-double/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-single-quotes/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-unterminated-bracket/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── jeztah-invalid-json-unterminated-string/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── kartar-entrypoint-oddities/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── lk4d4-the-edge-case-generator/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── mail/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── multiple-volumes/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── mumble/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── nginx/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── tf2/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ ├── weechat/
│ │ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ │ └── result
│ │ │ │ │ │ │ └── znc/
│ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ └── result
│ │ │ │ │ │ ├── testfiles-negative/
│ │ │ │ │ │ │ ├── env_no_value/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ └── shykes-nested-json/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ └── utils.go
│ │ │ │ │ ├── shell_parser.go
│ │ │ │ │ ├── shell_parser_test.go
│ │ │ │ │ ├── support.go
│ │ │ │ │ ├── support_test.go
│ │ │ │ │ └── words
│ │ │ │ ├── cliconfig/
│ │ │ │ │ ├── config.go
│ │ │ │ │ └── config_test.go
│ │ │ │ ├── contrib/
│ │ │ │ │ ├── README
│ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ ├── apparmor/
│ │ │ │ │ │ └── docker
│ │ │ │ │ ├── builder/
│ │ │ │ │ │ ├── deb/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── build.sh
│ │ │ │ │ │ │ ├── debian-jessie/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── debian-stretch/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── debian-wheezy/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── generate.sh
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-precise/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-trusty/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-utopic/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ ├── ubuntu-debootstrap-vivid/
│ │ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ │ └── ubuntu-debootstrap-wily/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ └── rpm/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── build.sh
│ │ │ │ │ │ ├── centos-7/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── fedora-20/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── fedora-21/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── fedora-22/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── generate.sh
│ │ │ │ │ │ └── oraclelinux-7/
│ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ ├── check-config.sh
│ │ │ │ │ ├── completion/
│ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ ├── bash/
│ │ │ │ │ │ │ └── docker
│ │ │ │ │ │ ├── fish/
│ │ │ │ │ │ │ └── docker.fish
│ │ │ │ │ │ └── zsh/
│ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ └── _docker
│ │ │ │ │ ├── desktop-integration/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── chromium/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ └── gparted/
│ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ ├── docker-device-tool/
│ │ │ │ │ │ └── device_tool.go
│ │ │ │ │ ├── dockerize-disk.sh
│ │ │ │ │ ├── download-frozen-image.sh
│ │ │ │ │ ├── host-integration/
│ │ │ │ │ │ ├── Dockerfile.dev
│ │ │ │ │ │ ├── Dockerfile.min
│ │ │ │ │ │ ├── manager/
│ │ │ │ │ │ │ ├── systemd
│ │ │ │ │ │ │ └── upstart
│ │ │ │ │ │ ├── manager.go
│ │ │ │ │ │ └── manager.sh
│ │ │ │ │ ├── httpserver/
│ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ └── server.go
│ │ │ │ │ ├── init/
│ │ │ │ │ │ ├── openrc/
│ │ │ │ │ │ │ ├── docker.confd
│ │ │ │ │ │ │ └── docker.initd
│ │ │ │ │ │ ├── systemd/
│ │ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ │ ├── docker.service
│ │ │ │ │ │ │ └── docker.socket
│ │ │ │ │ │ ├── sysvinit-debian/
│ │ │ │ │ │ │ ├── docker
│ │ │ │ │ │ │ └── docker.default
│ │ │ │ │ │ ├── sysvinit-redhat/
│ │ │ │ │ │ │ ├── docker
│ │ │ │ │ │ │ └── docker.sysconfig
│ │ │ │ │ │ └── upstart/
│ │ │ │ │ │ ├── REVIEWERS
│ │ │ │ │ │ └── docker.conf
│ │ │ │ │ ├── mkimage/
│ │ │ │ │ │ ├── .febootstrap-minimize
│ │ │ │ │ │ ├── busybox-static
│ │ │ │ │ │ ├── debootstrap
│ │ │ │ │ │ ├── mageia-urpmi
│ │ │ │ │ │ └── rinse
│ │ │ │ │ ├── mkimage-alpine.sh
│ │ │ │ │ ├── mkimage-arch-pacman.conf
│ │ │ │ │ ├── mkimage-arch.sh
│ │ │ │ │ ├── mkimage-busybox.sh
│ │ │ │ │ ├── mkimage-crux.sh
│ │ │ │ │ ├── mkimage-debootstrap.sh
│ │ │ │ │ ├── mkimage-rinse.sh
│ │ │ │ │ ├── mkimage-yum.sh
│ │ │ │ │ ├── mkimage.sh
│ │ │ │ │ ├── mkseccomp.pl
│ │ │ │ │ ├── mkseccomp.sample
│ │ │ │ │ ├── nuke-graph-directory.sh
│ │ │ │ │ ├── project-stats.sh
│ │ │ │ │ ├── report-issue.sh
│ │ │ │ │ ├── reprepro/
│ │ │ │ │ │ └── suites.sh
│ │ │ │ │ ├── syntax/
│ │ │ │ │ │ ├── kate/
│ │ │ │ │ │ │ └── Dockerfile.xml
│ │ │ │ │ │ ├── nano/
│ │ │ │ │ │ │ ├── Dockerfile.nanorc
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── textmate/
│ │ │ │ │ │ │ ├── Docker.tmbundle/
│ │ │ │ │ │ │ │ ├── Preferences/
│ │ │ │ │ │ │ │ │ └── Dockerfile.tmPreferences
│ │ │ │ │ │ │ │ ├── Syntaxes/
│ │ │ │ │ │ │ │ │ └── Dockerfile.tmLanguage
│ │ │ │ │ │ │ │ └── info.plist
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ └── REVIEWERS
│ │ │ │ │ │ └── vim/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── doc/
│ │ │ │ │ │ │ └── dockerfile.txt
│ │ │ │ │ │ ├── ftdetect/
│ │ │ │ │ │ │ └── dockerfile.vim
│ │ │ │ │ │ └── syntax/
│ │ │ │ │ │ └── dockerfile.vim
│ │ │ │ │ ├── udev/
│ │ │ │ │ │ └── 80-docker.rules
│ │ │ │ │ └── vagrant-docker/
│ │ │ │ │ └── README.md
│ │ │ │ ├── daemon/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── archive.go
│ │ │ │ │ ├── attach.go
│ │ │ │ │ ├── changes.go
│ │ │ │ │ ├── commit.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_experimental.go
│ │ │ │ │ ├── config_linux.go
│ │ │ │ │ ├── config_stub.go
│ │ │ │ │ ├── config_windows.go
│ │ │ │ │ ├── container.go
│ │ │ │ │ ├── container_unit_test.go
│ │ │ │ │ ├── container_unix.go
│ │ │ │ │ ├── container_windows.go
│ │ │ │ │ ├── create.go
│ │ │ │ │ ├── daemon.go
│ │ │ │ │ ├── daemon_aufs.go
│ │ │ │ │ ├── daemon_btrfs.go
│ │ │ │ │ ├── daemon_devicemapper.go
│ │ │ │ │ ├── daemon_no_aufs.go
│ │ │ │ │ ├── daemon_overlay.go
│ │ │ │ │ ├── daemon_test.go
│ │ │ │ │ ├── daemon_unit_test.go
│ │ │ │ │ ├── daemon_unix.go
│ │ │ │ │ ├── daemon_windows.go
│ │ │ │ │ ├── daemon_zfs.go
│ │ │ │ │ ├── debugtrap_unix.go
│ │ │ │ │ ├── debugtrap_unsupported.go
│ │ │ │ │ ├── debugtrap_windows.go
│ │ │ │ │ ├── delete.go
│ │ │ │ │ ├── events/
│ │ │ │ │ │ ├── events.go
│ │ │ │ │ │ └── events_test.go
│ │ │ │ │ ├── exec.go
│ │ │ │ │ ├── exec_linux.go
│ │ │ │ │ ├── exec_windows.go
│ │ │ │ │ ├── execdriver/
│ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ ├── driver_linux.go
│ │ │ │ │ │ ├── execdrivers/
│ │ │ │ │ │ │ ├── execdrivers_linux.go
│ │ │ │ │ │ │ └── execdrivers_windows.go
│ │ │ │ │ │ ├── lxc/
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ │ ├── info_test.go
│ │ │ │ │ │ │ ├── init.go
│ │ │ │ │ │ │ ├── lxc_init_linux.go
│ │ │ │ │ │ │ ├── lxc_init_unsupported.go
│ │ │ │ │ │ │ ├── lxc_template.go
│ │ │ │ │ │ │ └── lxc_template_unit_test.go
│ │ │ │ │ │ ├── native/
│ │ │ │ │ │ │ ├── create.go
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ ├── driver_unsupported.go
│ │ │ │ │ │ │ ├── driver_unsupported_nocgo.go
│ │ │ │ │ │ │ ├── exec.go
│ │ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ │ ├── init.go
│ │ │ │ │ │ │ └── template/
│ │ │ │ │ │ │ └── default_template.go
│ │ │ │ │ │ ├── pipes.go
│ │ │ │ │ │ ├── termconsole.go
│ │ │ │ │ │ ├── utils.go
│ │ │ │ │ │ └── windows/
│ │ │ │ │ │ ├── checkoptions.go
│ │ │ │ │ │ ├── clean.go
│ │ │ │ │ │ ├── exec.go
│ │ │ │ │ │ ├── getpids.go
│ │ │ │ │ │ ├── info.go
│ │ │ │ │ │ ├── namedpipes.go
│ │ │ │ │ │ ├── pauseunpause.go
│ │ │ │ │ │ ├── run.go
│ │ │ │ │ │ ├── stats.go
│ │ │ │ │ │ ├── stdconsole.go
│ │ │ │ │ │ ├── terminatekill.go
│ │ │ │ │ │ ├── ttyconsole.go
│ │ │ │ │ │ ├── unsupported.go
│ │ │ │ │ │ └── windows.go
│ │ │ │ │ ├── export.go
│ │ │ │ │ ├── graphdriver/
│ │ │ │ │ │ ├── aufs/
│ │ │ │ │ │ │ ├── aufs.go
│ │ │ │ │ │ │ ├── aufs_test.go
│ │ │ │ │ │ │ ├── dirs.go
│ │ │ │ │ │ │ ├── migrate.go
│ │ │ │ │ │ │ ├── mount.go
│ │ │ │ │ │ │ ├── mount_linux.go
│ │ │ │ │ │ │ └── mount_unsupported.go
│ │ │ │ │ │ ├── btrfs/
│ │ │ │ │ │ │ ├── btrfs.go
│ │ │ │ │ │ │ ├── btrfs_test.go
│ │ │ │ │ │ │ ├── dummy_unsupported.go
│ │ │ │ │ │ │ ├── version.go
│ │ │ │ │ │ │ ├── version_none.go
│ │ │ │ │ │ │ └── version_test.go
│ │ │ │ │ │ ├── devmapper/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── deviceset.go
│ │ │ │ │ │ │ ├── devmapper_doc.go
│ │ │ │ │ │ │ ├── devmapper_test.go
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ └── mount.go
│ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ ├── driver_linux.go
│ │ │ │ │ │ ├── driver_unsupported.go
│ │ │ │ │ │ ├── driver_windows.go
│ │ │ │ │ │ ├── fsdiff.go
│ │ │ │ │ │ ├── graphtest/
│ │ │ │ │ │ │ └── graphtest.go
│ │ │ │ │ │ ├── overlay/
│ │ │ │ │ │ │ ├── copy.go
│ │ │ │ │ │ │ ├── overlay.go
│ │ │ │ │ │ │ ├── overlay_test.go
│ │ │ │ │ │ │ └── overlay_unsupported.go
│ │ │ │ │ │ ├── vfs/
│ │ │ │ │ │ │ ├── driver.go
│ │ │ │ │ │ │ ├── driver_unsupported.go
│ │ │ │ │ │ │ └── vfs_test.go
│ │ │ │ │ │ ├── windows/
│ │ │ │ │ │ │ └── windows.go
│ │ │ │ │ │ └── zfs/
│ │ │ │ │ │ ├── MAINTAINERS
│ │ │ │ │ │ ├── zfs.go
│ │ │ │ │ │ ├── zfs_freebsd.go
│ │ │ │ │ │ ├── zfs_linux.go
│ │ │ │ │ │ ├── zfs_test.go
│ │ │ │ │ │ └── zfs_unsupported.go
│ │ │ │ │ ├── history.go
│ │ │ │ │ ├── image_delete.go
│ │ │ │ │ ├── info.go
│ │ │ │ │ ├── inspect.go
│ │ │ │ │ ├── kill.go
│ │ │ │ │ ├── list.go
│ │ │ │ │ ├── logdrivers_linux.go
│ │ │ │ │ ├── logdrivers_windows.go
│ │ │ │ │ ├── logger/
│ │ │ │ │ │ ├── copier.go
│ │ │ │ │ │ ├── copier_test.go
│ │ │ │ │ │ ├── factory.go
│ │ │ │ │ │ ├── fluentd/
│ │ │ │ │ │ │ └── fluentd.go
│ │ │ │ │ │ ├── gelf/
│ │ │ │ │ │ │ ├── gelf.go
│ │ │ │ │ │ │ └── gelf_unsupported.go
│ │ │ │ │ │ ├── journald/
│ │ │ │ │ │ │ ├── journald.go
│ │ │ │ │ │ │ └── journald_unsupported.go
│ │ │ │ │ │ ├── jsonfilelog/
│ │ │ │ │ │ │ ├── jsonfilelog.go
│ │ │ │ │ │ │ └── jsonfilelog_test.go
│ │ │ │ │ │ ├── logger.go
│ │ │ │ │ │ └── syslog/
│ │ │ │ │ │ ├── syslog.go
│ │ │ │ │ │ └── syslog_unsupported.go
│ │ │ │ │ ├── logs.go
│ │ │ │ │ ├── monitor.go
│ │ │ │ │ ├── network/
│ │ │ │ │ │ └── settings.go
│ │ │ │ │ ├── pause.go
│ │ │ │ │ ├── rename.go
│ │ │ │ │ ├── resize.go
│ │ │ │ │ ├── restart.go
│ │ │ │ │ ├── start.go
│ │ │ │ │ ├── state.go
│ │ │ │ │ ├── state_test.go
│ │ │ │ │ ├── stats.go
│ │ │ │ │ ├── stats_collector_unix.go
│ │ │ │ │ ├── stats_collector_windows.go
│ │ │ │ │ ├── stats_linux.go
│ │ │ │ │ ├── stats_windows.go
│ │ │ │ │ ├── stop.go
│ │ │ │ │ ├── top.go
│ │ │ │ │ ├── unpause.go
│ │ │ │ │ ├── utils_nounix.go
│ │ │ │ │ ├── utils_test.go
│ │ │ │ │ ├── utils_unix.go
│ │ │ │ │ ├── volumes.go
│ │ │ │ │ ├── volumes_linux.go
│ │ │ │ │ ├── volumes_linux_unit_test.go
│ │ │ │ │ ├── volumes_unit_test.go
│ │ │ │ │ ├── volumes_windows.go
│ │ │ │ │ └── wait.go
│ │ │ │ ├── docker/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── daemon.go
│ │ │ │ │ ├── daemon_unix.go
│ │ │ │ │ ├── daemon_windows.go
│ │ │ │ │ ├── docker.go
│ │ │ │ │ ├── docker_windows.go
│ │ │ │ │ ├── flags.go
│ │ │ │ │ └── log.go
│ │ │ │ ├── dockerinit/
│ │ │ │ │ └── dockerinit.go
│ │ │ │ ├── docs/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Dockerfile
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── article-img/
│ │ │ │ │ │ ├── ipv6_basic_host_config.gliffy
│ │ │ │ │ │ ├── ipv6_ndp_proxying.gliffy
│ │ │ │ │ │ ├── ipv6_routed_network_example.gliffy
│ │ │ │ │ │ ├── ipv6_slash64_subnet_config.gliffy
│ │ │ │ │ │ └── ipv6_switched_network_example.gliffy
│ │ │ │ │ ├── articles/
│ │ │ │ │ │ ├── ambassador_pattern_linking.md
│ │ │ │ │ │ ├── b2d_volume_resize.md
│ │ │ │ │ │ ├── baseimages.md
│ │ │ │ │ │ ├── basics.md
│ │ │ │ │ │ ├── certificates.md
│ │ │ │ │ │ ├── cfengine_process_management.md
│ │ │ │ │ │ ├── chef.md
│ │ │ │ │ │ ├── configuring.md
│ │ │ │ │ │ ├── dockerfile_best-practices.md
│ │ │ │ │ │ ├── dsc.md
│ │ │ │ │ │ ├── host_integration.md
│ │ │ │ │ │ ├── https/
│ │ │ │ │ │ │ ├── Dockerfile
│ │ │ │ │ │ │ ├── Makefile
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── make_certs.sh
│ │ │ │ │ │ │ └── parsedocs.sh
│ │ │ │ │ │ ├── https.md
│ │ │ │ │ │ ├── networking.md
│ │ │ │ │ │ ├── puppet.md
│ │ │ │ │ │ ├── registry_mirror.md
│ │ │ │ │ │ ├── runmetrics.md
│ │ │ │ │ │ ├── security.md
│ │ │ │ │ │ ├── systemd.md
│ │ │ │ │ │ └── using_supervisord.md
│ │ │ │ │ ├── docker-hub/
│ │ │ │ │ │ ├── accounts.md
│ │ │ │ │ │ ├── builds.md
│ │ │ │ │ │ ├── home.md
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── official_repos.md
│ │ │ │ │ │ ├── repos.md
│ │ │ │ │ │ └── userguide.md
│ │ │ │ │ ├── examples/
│ │ │ │ │ │ ├── apt-cacher-ng.Dockerfile
│ │ │ │ │ │ ├── apt-cacher-ng.md
│ │ │ │ │ │ ├── couchdb_data_volumes.md
│ │ │ │ │ │ ├── mongodb/
│ │ │ │ │ │ │ └── Dockerfile
│ │ │ │ │ │ ├── mongodb.md
│ │ │ │ │ │ ├── nodejs_web_app.md
│ │ │ │ │ │ ├── postgresql_service.Dockerfile
│ │ │ │ │ │ ├── postgresql_service.md
│ │ │ │ │ │ ├── running_redis_service.md
│ │ │ │ │ │ ├── running_riak_service.Dockerfile
│ │ │ │ │ │ ├── running_riak_service.md
│ │ │ │ │ │ ├── running_ssh_service.Dockerfile
│ │ │ │ │ │ ├── running_ssh_service.md
│ │ │ │ │ │ └── supervisord.conf
│ │ │ │ │ ├── extend/
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── plugin_api.md
│ │ │ │ │ │ ├── plugins.md
│ │ │ │ │ │ └── plugins_volume.md
│ │ │ │ │ ├── installation/
│ │ │ │ │ │ ├── SUSE.md
│ │ │ │ │ │ ├── amazon.md
│ │ │ │ │ │ ├── archlinux.md
│ │ │ │ │ │ ├── azure.md
│ │ │ │ │ │ ├── binaries.md
│ │ │ │ │ │ ├── centos.md
│ │ │ │ │ │ ├── cruxlinux.md
│ │ │ │ │ │ ├── debian.md
│ │ │ │ │ │ ├── fedora.md
│ │ │ │ │ │ ├── frugalware.md
│ │ │ │ │ │ ├── gentoolinux.md
│ │ │ │ │ │ ├── google.md
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── joyent.md
│ │ │ │ │ │ ├── mac.md
│ │ │ │ │ │ ├── oracle.md
│ │ │ │ │ │ ├── rackspace.md
│ │ │ │ │ │ ├── rhel.md
│ │ │ │ │ │ ├── softlayer.md
│ │ │ │ │ │ ├── ubuntulinux.md
│ │ │ │ │ │ └── windows.md
│ │ │ │ │ ├── introduction/
│ │ │ │ │ │ └── understanding-docker.md
│ │ │ │ │ ├── misc/
│ │ │ │ │ │ ├── faq.md
│ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ ├── release-notes.md
│ │ │ │ │ │ └── search.md
│ │ │ │ │ ├── project/
│ │ │ │ │ │ ├── advanced-contributing.md
│ │ │ │ │ │ ├── coding-style.md
│ │ │ │ │ │ ├── create-pr.md
│ │ │ │ │ │ ├── doc-style.md
│ │ │ │ │ │ ├── find-an-issue.md
│ │ │ │ │ │ ├── get-help.md
│ │ │ │ │ │ ├── images/
│ │ │ │ │ │ │ ├── existing_issue.snagproj
│ │ │ │ │ │ │ └── proposal.snagproj
│ │ │ │ │ │ ├── make-a-contribution.md
│ │ │ │ │ │ ├── review-pr.md
│ │ │ │ │ │ ├── set-up-dev-env.md
│ │ │ │ │ │ ├── set-up-git.md
│ │ │ │ │ │ ├── software-req-win.md
│ │ │ │ │ │ ├── software-required.md
│ │ │ │ │ │ ├── test-and-docs.md
│ │ │ │ │ │ ├── who-written-for.md
│ │ │ │ │ │ └── work-issue.md
│ │ │ │ │ ├── reference/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── docker-io_api.md
│ │ │ │ │ │ │ ├── docker_io_accounts_api.md
│ │ │ │ │ │ │ ├── docker_remote_api.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.0.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.1.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.10.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.11.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.12.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.13.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.14.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.15.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.16.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.17.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.18.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.19.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.2.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.20.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.3.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.4.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.5.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.6.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.7.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.8.md
│ │ │ │ │ │ │ ├── docker_remote_api_v1.9.md
│ │ │ │ │ │ │ ├── hub_registry_spec.md
│ │ │ │ │ │ │ ├── images/
│ │ │ │ │ │ │ │ └── event_state.gliffy
│ │ │ │ │ │ │ ├── registry_api.md
│ │ │ │ │ │ │ ├── registry_api_client_libraries.md
│ │ │ │ │ │ │ └── remote_api_client_libraries.md
│ │ │ │ │ │ ├── builder.md
│ │ │ │ │ │ ├── commandline/
│ │ │ │ │ │ │ ├── attach.md
│ │ │ │ │ │ │ ├── build.md
│ │ │ │ │ │ │ ├── cli.md
│ │ │ │ │ │ │ ├── commit.md
│ │ │ │ │ │ │ ├── cp.md
│ │ │ │ │ │ │ ├── create.md
│ │ │ │ │ │ │ ├── daemon.md
│ │ │ │ │ │ │ ├── diff.md
│ │ │ │ │ │ │ ├── events.md
│ │ │ │ │ │ │ ├── exec.md
│ │ │ │ │ │ │ ├── export.md
│ │ │ │ │ │ │ ├── history.md
│ │ │ │ │ │ │ ├── images.md
│ │ │ │ │ │ │ ├── import.md
│ │ │ │ │ │ │ ├── info.md
│ │ │ │ │ │ │ ├── inspect.md
│ │ │ │ │ │ │ ├── kill.md
│ │ │ │ │ │ │ ├── load.md
│ │ │ │ │ │ │ ├── login.md
│ │ │ │ │ │ │ ├── logout.md
│ │ │ │ │ │ │ ├── logs.md
│ │ │ │ │ │ │ ├── pause.md
│ │ │ │ │ │ │ ├── port.md
│ │ │ │ │ │ │ ├── ps.md
│ │ │ │ │ │ │ ├── pull.md
│ │ │ │ │ │ │ ├── push.md
│ │ │ │ │ │ │ ├── rename.md
│ │ │ │ │ │ │ ├── restart.md
│ │ │ │ │ │ │ ├── rm.md
│ │ │ │ │ │ │ ├── rmi.md
│ │ │ │ │ │ │ ├── run.md
│ │ │ │ │ │ │ ├── save.md
│ │ │ │ │ │ │ ├── search.md
│ │ │ │ │ │ │ ├── start.md
│ │ │ │ │ │ │ ├── stats.md
│ │ │ │ │ │ │ ├── stop.md
│ │ │ │ │ │ │ ├── tag.md
│ │ │ │ │ │ │ ├── top.md
│ │ │ │ │ │ │ ├── unpause.md
│ │ │ │ │ │ │ ├── version.md
│ │ │ │ │ │ │ └── wait.md
│ │ │ │ │ │ ├── glossary.md
│ │ │ │ │ │ ├── logging/
│ │ │ │ │ │ │ ├── fluentd.md
│ │ │ │ │ │ │ ├── index.md
│ │ │ │ │ │ │ └── journald.md
│ │ │ │ │ │ └── run.md
│ │ │ │ │ ├── static_files/
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── terms/
│ │ │ │ │ │ ├── container.md
│ │ │ │ │ │ ├── filesystem.md
│ │ │ │ │ │ ├── image.md
│ │ │ │ │ │ ├── layer.md
│ │ │ │ │ │ ├── registry.md
│ │ │ │ │ │ └── repository.md
│ │ │ │ │ ├── touch-up.sh
│ │ │ │ │ └── userguide/
│ │ │ │ │ ├── dockerhub.md
│ │ │ │ │ ├── dockerimages.md
│ │ │ │ │ ├── dockerizing.md
│ │ │ │ │ ├── dockerlinks.md
│ │ │ │ │ ├── dockerrepos.md
│ │ │ │ │ ├── dockervolumes.md
│ │ │ │ │ ├── index.md
│ │ │ │ │ ├── labels-custom-metadata.md
│ │ │ │ │ ├── level1.md
│ │ │ │ │ ├── level2.md
│ │ │ │ │ └── usingdocker.md
│ │ │ │ ├── experimental/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── compose_swarm_networking.md
│ │ │ │ │ ├── networking.md
│ │ │ │ │ ├── networking_api.md
│ │ │ │ │ └── plugins_network.md
│ │ │ │ ├── graph/
│ │ │ │ │ ├── export.go
│ │ │ │ │ ├── graph.go
│ │ │ │ │ ├── graph_test.go
│ │ │ │ │ ├── graph_unix.go
│ │ │ │ │ ├── graph_windows.go
│ │ │ │ │ ├── history.go
│ │ │ │ │ ├── import.go
│ │ │ │ │ ├── list.go
│ │ │ │ │ ├── load.go
│ │ │ │ │ ├── load_unsupported.go
│ │ │ │ │ ├── mutex.go
│ │ │ │ │ ├── pools_test.go
│ │ │ │ │ ├── pull.go
│ │ │ │ │ ├── pull_v1.go
│ │ │ │ │ ├── pull_v2.go
│ │ │ │ │ ├── push.go
│ │ │ │ │ ├── push_v1.go
│ │ │ │ │ ├── push_v2.go
│ │ │ │ │ ├── registry.go
│ │ │ │ │ ├── service.go
│ │ │ │ │ ├── tags/
│ │ │ │ │ │ ├── tags.go
│ │ │ │ │ │ └── tags_unit_test.go
│ │ │ │ │ ├── tags.go
│ │ │ │ │ └── tags_unit_test.go
│ │ │ │ ├── hack/
│ │ │ │ │ ├── .vendor-helpers.sh
│ │ │ │ │ ├── dind
│ │ │ │ │ ├── generate-authors.sh
│ │ │ │ │ ├── install.sh
│ │ │ │ │ ├── make/
│ │ │ │ │ │ ├── .build-deb/
│ │ │ │ │ │ │ ├── compat
│ │ │ │ │ │ │ ├── control
│ │ │ │ │ │ │ ├── docker-engine.bash-completion
│ │ │ │ │ │ │ ├── docker-engine.install
│ │ │ │ │ │ │ ├── docker-engine.manpages
│ │ │ │ │ │ │ ├── docker-engine.postinst
│ │ │ │ │ │ │ ├── docs
│ │ │ │ │ │ │ └── rules
│ │ │ │ │ │ ├── .build-rpm/
│ │ │ │ │ │ │ └── docker-engine.spec
│ │ │ │ │ │ ├── .dockerinit
│ │ │ │ │ │ ├── .dockerinit-gccgo
│ │ │ │ │ │ ├── .ensure-emptyfs
│ │ │ │ │ │ ├── .ensure-frozen-images
│ │ │ │ │ │ ├── .ensure-httpserver
│ │ │ │ │ │ ├── .go-autogen
│ │ │ │ │ │ ├── .go-compile-test-dir
│ │ │ │ │ │ ├── .integration-daemon-setup
│ │ │ │ │ │ ├── .integration-daemon-start
│ │ │ │ │ │ ├── .integration-daemon-stop
│ │ │ │ │ │ ├── .resources-windows/
│ │ │ │ │ │ │ └── docker.exe.manifest
│ │ │ │ │ │ ├── .validate
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── binary
│ │ │ │ │ │ ├── build-deb
│ │ │ │ │ │ ├── build-rpm
│ │ │ │ │ │ ├── cover
│ │ │ │ │ │ ├── cross
│ │ │ │ │ │ ├── dynbinary
│ │ │ │ │ │ ├── dyngccgo
│ │ │ │ │ │ ├── gccgo
│ │ │ │ │ │ ├── release-deb
│ │ │ │ │ │ ├── release-rpm
│ │ │ │ │ │ ├── sign-repos
│ │ │ │ │ │ ├── test-docker-py
│ │ │ │ │ │ ├── test-integration-cli
│ │ │ │ │ │ ├── test-unit
│ │ │ │ │ │ ├── tgz
│ │ │ │ │ │ ├── ubuntu
│ │ │ │ │ │ ├── validate-dco
│ │ │ │ │ │ ├── validate-gofmt
│ │ │ │ │ │ ├── validate-lint
│ │ │ │ │ │ ├── validate-pkg
│ │ │ │ │ │ ├── validate-test
│ │ │ │ │ │ ├── validate-toml
│ │ │ │ │ │ └── validate-vet
│ │ │ │ │ ├── make.sh
│ │ │ │ │ ├── release.sh
│ │ │ │ │ └── vendor.sh
│ │ │ │ ├── image/
│ │ │ │ │ ├── image.go
│ │ │ │ │ └── spec/
│ │ │ │ │ └── v1.md
│ │ │ │ ├── integration-cli/
│ │ │ │ │ ├── check_test.go
│ │ │ │ │ ├── docker_api_attach_test.go
│ │ │ │ │ ├── docker_api_containers_test.go
│ │ │ │ │ ├── docker_api_events_test.go
│ │ │ │ │ ├── docker_api_exec_resize_test.go
│ │ │ │ │ ├── docker_api_exec_test.go
│ │ │ │ │ ├── docker_api_images_test.go
│ │ │ │ │ ├── docker_api_info_test.go
│ │ │ │ │ ├── docker_api_inspect_test.go
│ │ │ │ │ ├── docker_api_logs_test.go
│ │ │ │ │ ├── docker_api_network_test.go
│ │ │ │ │ ├── docker_api_resize_test.go
│ │ │ │ │ ├── docker_api_service_test.go
│ │ │ │ │ ├── docker_api_stats_test.go
│ │ │ │ │ ├── docker_api_test.go
│ │ │ │ │ ├── docker_api_version_test.go
│ │ │ │ │ ├── docker_cli_attach_test.go
│ │ │ │ │ ├── docker_cli_attach_unix_test.go
│ │ │ │ │ ├── docker_cli_build_test.go
│ │ │ │ │ ├── docker_cli_build_unix_test.go
│ │ │ │ │ ├── docker_cli_by_digest_test.go
│ │ │ │ │ ├── docker_cli_commit_test.go
│ │ │ │ │ ├── docker_cli_config_test.go
│ │ │ │ │ ├── docker_cli_cp_from_container_test.go
│ │ │ │ │ ├── docker_cli_cp_test.go
│ │ │ │ │ ├── docker_cli_cp_to_container_test.go
│ │ │ │ │ ├── docker_cli_cp_utils.go
│ │ │ │ │ ├── docker_cli_create_test.go
│ │ │ │ │ ├── docker_cli_daemon_experimental_test.go
│ │ │ │ │ ├── docker_cli_daemon_test.go
│ │ │ │ │ ├── docker_cli_diff_test.go
│ │ │ │ │ ├── docker_cli_events_test.go
│ │ │ │ │ ├── docker_cli_events_unix_test.go
│ │ │ │ │ ├── docker_cli_exec_test.go
│ │ │ │ │ ├── docker_cli_exec_unix_test.go
│ │ │ │ │ ├── docker_cli_experimental_test.go
│ │ │ │ │ ├── docker_cli_export_import_test.go
│ │ │ │ │ ├── docker_cli_help_test.go
│ │ │ │ │ ├── docker_cli_history_test.go
│ │ │ │ │ ├── docker_cli_images_test.go
│ │ │ │ │ ├── docker_cli_import_test.go
│ │ │ │ │ ├── docker_cli_info_test.go
│ │ │ │ │ ├── docker_cli_inspect_experimental_test.go
│ │ │ │ │ ├── docker_cli_inspect_test.go
│ │ │ │ │ ├── docker_cli_kill_test.go
│ │ │ │ │ ├── docker_cli_links_test.go
│ │ │ │ │ ├── docker_cli_links_unix_test.go
│ │ │ │ │ ├── docker_cli_login_test.go
│ │ │ │ │ ├── docker_cli_logs_test.go
│ │ │ │ │ ├── docker_cli_nat_test.go
│ │ │ │ │ ├── docker_cli_network_test.go
│ │ │ │ │ ├── docker_cli_pause_test.go
│ │ │ │ │ ├── docker_cli_port_test.go
│ │ │ │ │ ├── docker_cli_port_unix_test.go
│ │ │ │ │ ├── docker_cli_proxy_test.go
│ │ │ │ │ ├── docker_cli_ps_test.go
│ │ │ │ │ ├── docker_cli_pull_test.go
│ │ │ │ │ ├── docker_cli_push_test.go
│ │ │ │ │ ├── docker_cli_rename_test.go
│ │ │ │ │ ├── docker_cli_restart_test.go
│ │ │ │ │ ├── docker_cli_rm_test.go
│ │ │ │ │ ├── docker_cli_rmi_test.go
│ │ │ │ │ ├── docker_cli_run_test.go
│ │ │ │ │ ├── docker_cli_run_unix_test.go
│ │ │ │ │ ├── docker_cli_save_load_test.go
│ │ │ │ │ ├── docker_cli_save_load_unix_test.go
│ │ │ │ │ ├── docker_cli_search_test.go
│ │ │ │ │ ├── docker_cli_service_test.go
│ │ │ │ │ ├── docker_cli_start_test.go
│ │ │ │ │ ├── docker_cli_start_volume_driver_unix_test.go
│ │ │ │ │ ├── docker_cli_stats_test.go
│ │ │ │ │ ├── docker_cli_tag_test.go
│ │ │ │ │ ├── docker_cli_top_test.go
│ │ │ │ │ ├── docker_cli_version_test.go
│ │ │ │ │ ├── docker_cli_wait_test.go
│ │ │ │ │ ├── docker_test_vars.go
│ │ │ │ │ ├── docker_test_vars_cli.go
│ │ │ │ │ ├── docker_test_vars_daemon.go
│ │ │ │ │ ├── docker_utils.go
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ └── https/
│ │ │ │ │ │ ├── ca.pem
│ │ │ │ │ │ ├── client-cert.pem
│ │ │ │ │ │ ├── client-key.pem
│ │ │ │ │ │ ├── client-rogue-cert.pem
│ │ │ │ │ │ ├── client-rogue-key.pem
│ │ │ │ │ │ ├── server-cert.pem
│ │ │ │ │ │ ├── server-key.pem
│ │ │ │ │ │ ├── server-rogue-cert.pem
│ │ │ │ │ │ └── server-rogue-key.pem
│ │ │ │ │ ├── registry.go
│ │ │ │ │ ├── requirements.go
│ │ │ │ │ ├── requirements_unix.go
│ │ │ │ │ ├── test_vars_exec.go
│ │ │ │ │ ├── test_vars_noexec.go
│ │ │ │ │ ├── test_vars_unix.go
│ │ │ │ │ ├── test_vars_windows.go
│ │ │ │ │ └── utils.go
│ │ │ │ ├── links/
│ │ │ │ │ ├── links.go
│ │ │ │ │ └── links_test.go
│ │ │ │ ├── man/
│ │ │ │ │ ├── Dockerfile
│ │ │ │ │ ├── Dockerfile.5.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── docker-attach.1.md
│ │ │ │ │ ├── docker-build.1.md
│ │ │ │ │ ├── docker-commit.1.md
│ │ │ │ │ ├── docker-cp.1.md
│ │ │ │ │ ├── docker-create.1.md
│ │ │ │ │ ├── docker-diff.1.md
│ │ │ │ │ ├── docker-events.1.md
│ │ │ │ │ ├── docker-exec.1.md
│ │ │ │ │ ├── docker-export.1.md
│ │ │ │ │ ├── docker-history.1.md
│ │ │ │ │ ├── docker-images.1.md
│ │ │ │ │ ├── docker-import.1.md
│ │ │ │ │ ├── docker-info.1.md
│ │ │ │ │ ├── docker-inspect.1.md
│ │ │ │ │ ├── docker-kill.1.md
│ │ │ │ │ ├── docker-load.1.md
│ │ │ │ │ ├── docker-login.1.md
│ │ │ │ │ ├── docker-logout.1.md
│ │ │ │ │ ├── docker-logs.1.md
│ │ │ │ │ ├── docker-pause.1.md
│ │ │ │ │ ├── docker-port.1.md
│ │ │ │ │ ├── docker-ps.1.md
│ │ │ │ │ ├── docker-pull.1.md
│ │ │ │ │ ├── docker-push.1.md
│ │ │ │ │ ├── docker-rename.1.md
│ │ │ │ │ ├── docker-restart.1.md
│ │ │ │ │ ├── docker-rm.1.md
│ │ │ │ │ ├── docker-rmi.1.md
│ │ │ │ │ ├── docker-run.1.md
│ │ │ │ │ ├── docker-save.1.md
│ │ │ │ │ ├── docker-search.1.md
│ │ │ │ │ ├── docker-start.1.md
│ │ │ │ │ ├── docker-stats.1.md
│ │ │ │ │ ├── docker-stop.1.md
│ │ │ │ │ ├── docker-tag.1.md
│ │ │ │ │ ├── docker-top.1.md
│ │ │ │ │ ├── docker-unpause.1.md
│ │ │ │ │ ├── docker-version.1.md
│ │ │ │ │ ├── docker-wait.1.md
│ │ │ │ │ ├── docker.1.md
│ │ │ │ │ └── md2man-all.sh
│ │ │ │ ├── opts/
│ │ │ │ │ ├── envfile.go
│ │ │ │ │ ├── envfile_test.go
│ │ │ │ │ ├── ip.go
│ │ │ │ │ ├── ip_test.go
│ │ │ │ │ ├── opts.go
│ │ │ │ │ ├── opts_test.go
│ │ │ │ │ ├── ulimit.go
│ │ │ │ │ └── ulimit_test.go
│ │ │ │ ├── pkg/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── archive/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── archive.go
│ │ │ │ │ │ ├── archive_test.go
│ │ │ │ │ │ ├── archive_unix.go
│ │ │ │ │ │ ├── archive_unix_test.go
│ │ │ │ │ │ ├── archive_windows.go
│ │ │ │ │ │ ├── archive_windows_test.go
│ │ │ │ │ │ ├── changes.go
│ │ │ │ │ │ ├── changes_linux.go
│ │ │ │ │ │ ├── changes_other.go
│ │ │ │ │ │ ├── changes_posix_test.go
│ │ │ │ │ │ ├── changes_test.go
│ │ │ │ │ │ ├── changes_unix.go
│ │ │ │ │ │ ├── changes_windows.go
│ │ │ │ │ │ ├── copy.go
│ │ │ │ │ │ ├── copy_test.go
│ │ │ │ │ │ ├── diff.go
│ │ │ │ │ │ ├── diff_test.go
│ │ │ │ │ │ ├── example_changes.go
│ │ │ │ │ │ ├── time_linux.go
│ │ │ │ │ │ ├── time_unsupported.go
│ │ │ │ │ │ ├── utils_test.go
│ │ │ │ │ │ ├── wrap.go
│ │ │ │ │ │ └── wrap_test.go
│ │ │ │ │ ├── broadcastwriter/
│ │ │ │ │ │ ├── broadcastwriter.go
│ │ │ │ │ │ └── broadcastwriter_test.go
│ │ │ │ │ ├── chrootarchive/
│ │ │ │ │ │ ├── archive.go
│ │ │ │ │ │ ├── archive_test.go
│ │ │ │ │ │ ├── archive_unix.go
│ │ │ │ │ │ ├── archive_windows.go
│ │ │ │ │ │ ├── diff_unix.go
│ │ │ │ │ │ ├── diff_windows.go
│ │ │ │ │ │ ├── init_unix.go
│ │ │ │ │ │ └── init_windows.go
│ │ │ │ │ ├── devicemapper/
│ │ │ │ │ │ ├── attach_loopback.go
│ │ │ │ │ │ ├── devmapper.go
│ │ │ │ │ │ ├── devmapper_log.go
│ │ │ │ │ │ ├── devmapper_wrapper.go
│ │ │ │ │ │ ├── devmapper_wrapper_deferred_remove.go
│ │ │ │ │ │ ├── devmapper_wrapper_no_deferred_remove.go
│ │ │ │ │ │ ├── ioctl.go
│ │ │ │ │ │ └── log.go
│ │ │ │ │ ├── directory/
│ │ │ │ │ │ ├── directory_linux.go
│ │ │ │ │ │ ├── directory_test.go
│ │ │ │ │ │ └── directory_windows.go
│ │ │ │ │ ├── fileutils/
│ │ │ │ │ │ ├── fileutils.go
│ │ │ │ │ │ └── fileutils_test.go
│ │ │ │ │ ├── graphdb/
│ │ │ │ │ │ ├── conn_sqlite3.go
│ │ │ │ │ │ ├── conn_sqlite3_unix.go
│ │ │ │ │ │ ├── conn_sqlite3_windows.go
│ │ │ │ │ │ ├── conn_unsupported.go
│ │ │ │ │ │ ├── graphdb.go
│ │ │ │ │ │ ├── graphdb_test.go
│ │ │ │ │ │ ├── sort.go
│ │ │ │ │ │ ├── sort_test.go
│ │ │ │ │ │ └── utils.go
│ │ │ │ │ ├── homedir/
│ │ │ │ │ │ ├── homedir.go
│ │ │ │ │ │ └── homedir_test.go
│ │ │ │ │ ├── httputils/
│ │ │ │ │ │ ├── httputils.go
│ │ │ │ │ │ ├── mimetype.go
│ │ │ │ │ │ ├── resumablerequestreader.go
│ │ │ │ │ │ └── resumablerequestreader_test.go
│ │ │ │ │ ├── ioutils/
│ │ │ │ │ │ ├── fmt.go
│ │ │ │ │ │ ├── fmt_test.go
│ │ │ │ │ │ ├── readers.go
│ │ │ │ │ │ ├── readers_test.go
│ │ │ │ │ │ ├── scheduler.go
│ │ │ │ │ │ ├── scheduler_gccgo.go
│ │ │ │ │ │ ├── writeflusher.go
│ │ │ │ │ │ ├── writers.go
│ │ │ │ │ │ └── writers_test.go
│ │ │ │ │ ├── jsonlog/
│ │ │ │ │ │ ├── jsonlog.go
│ │ │ │ │ │ ├── jsonlog_marshalling.go
│ │ │ │ │ │ ├── jsonlog_marshalling_test.go
│ │ │ │ │ │ ├── jsonlog_test.go
│ │ │ │ │ │ ├── jsonlogbytes.go
│ │ │ │ │ │ └── jsonlogbytes_test.go
│ │ │ │ │ ├── jsonmessage/
│ │ │ │ │ │ ├── jsonmessage.go
│ │ │ │ │ │ └── jsonmessage_test.go
│ │ │ │ │ ├── listenbuffer/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── buffer.go
│ │ │ │ │ │ └── listen_buffer_test.go
│ │ │ │ │ ├── mflag/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── example/
│ │ │ │ │ │ │ └── example.go
│ │ │ │ │ │ ├── flag.go
│ │ │ │ │ │ └── flag_test.go
│ │ │ │ │ ├── mount/
│ │ │ │ │ │ ├── flags.go
│ │ │ │ │ │ ├── flags_freebsd.go
│ │ │ │ │ │ ├── flags_linux.go
│ │ │ │ │ │ ├── flags_unsupported.go
│ │ │ │ │ │ ├── mount.go
│ │ │ │ │ │ ├── mount_test.go
│ │ │ │ │ │ ├── mounter_freebsd.go
│ │ │ │ │ │ ├── mounter_linux.go
│ │ │ │ │ │ ├── mounter_unsupported.go
│ │ │ │ │ │ ├── mountinfo.go
│ │ │ │ │ │ ├── mountinfo_freebsd.go
│ │ │ │ │ │ ├── mountinfo_linux.go
│ │ │ │ │ │ ├── mountinfo_linux_test.go
│ │ │ │ │ │ ├── mountinfo_unsupported.go
│ │ │ │ │ │ ├── sharedsubtree_linux.go
│ │ │ │ │ │ └── sharedsubtree_linux_test.go
│ │ │ │ │ ├── namesgenerator/
│ │ │ │ │ │ ├── names-generator.go
│ │ │ │ │ │ └── names-generator_test.go
│ │ │ │ │ ├── nat/
│ │ │ │ │ │ ├── nat.go
│ │ │ │ │ │ ├── nat_test.go
│ │ │ │ │ │ ├── sort.go
│ │ │ │ │ │ └── sort_test.go
│ │ │ │ │ ├── parsers/
│ │ │ │ │ │ ├── filters/
│ │ │ │ │ │ │ ├── parse.go
│ │ │ │ │ │ │ └── parse_test.go
│ │ │ │ │ │ ├── kernel/
│ │ │ │ │ │ │ ├── kernel.go
│ │ │ │ │ │ │ ├── kernel_test.go
│ │ │ │ │ │ │ ├── kernel_windows.go
│ │ │ │ │ │ │ ├── uname_linux.go
│ │ │ │ │ │ │ └── uname_unsupported.go
│ │ │ │ │ │ ├── operatingsystem/
│ │ │ │ │ │ │ ├── operatingsystem_linux.go
│ │ │ │ │ │ │ ├── operatingsystem_test.go
│ │ │ │ │ │ │ └── operatingsystem_windows.go
│ │ │ │ │ │ ├── parsers.go
│ │ │ │ │ │ └── parsers_test.go
│ │ │ │ │ ├── pidfile/
│ │ │ │ │ │ ├── pidfile.go
│ │ │ │ │ │ └── pidfile_test.go
│ │ │ │ │ ├── plugins/
│ │ │ │ │ │ ├── client.go
│ │ │ │ │ │ ├── client_test.go
│ │ │ │ │ │ ├── discovery.go
│ │ │ │ │ │ ├── discovery_test.go
│ │ │ │ │ │ ├── pluginrpc-gen/
│ │ │ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ │ │ └── foo.go
│ │ │ │ │ │ │ ├── main.go
│ │ │ │ │ │ │ ├── parser.go
│ │ │ │ │ │ │ ├── parser_test.go
│ │ │ │ │ │ │ └── template.go
│ │ │ │ │ │ └── plugins.go
│ │ │ │ │ ├── pools/
│ │ │ │ │ │ ├── pools.go
│ │ │ │ │ │ └── pools_test.go
│ │ │ │ │ ├── progressreader/
│ │ │ │ │ │ ├── progressreader.go
│ │ │ │ │ │ └── progressreader_test.go
│ │ │ │ │ ├── promise/
│ │ │ │ │ │ └── promise.go
│ │ │ │ │ ├── proxy/
│ │ │ │ │ │ ├── network_proxy_test.go
│ │ │ │ │ │ ├── proxy.go
│ │ │ │ │ │ ├── stub_proxy.go
│ │ │ │ │ │ ├── tcp_proxy.go
│ │ │ │ │ │ └── udp_proxy.go
│ │ │ │ │ ├── pubsub/
│ │ │ │ │ │ ├── publisher.go
│ │ │ │ │ │ └── publisher_test.go
│ │ │ │ │ ├── random/
│ │ │ │ │ │ ├── random.go
│ │ │ │ │ │ └── random_test.go
│ │ │ │ │ ├── reexec/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── command_linux.go
│ │ │ │ │ │ ├── command_unsupported.go
│ │ │ │ │ │ ├── command_windows.go
│ │ │ │ │ │ └── reexec.go
│ │ │ │ │ ├── signal/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── signal.go
│ │ │ │ │ │ ├── signal_darwin.go
│ │ │ │ │ │ ├── signal_freebsd.go
│ │ │ │ │ │ ├── signal_linux.go
│ │ │ │ │ │ ├── signal_unix.go
│ │ │ │ │ │ ├── signal_unsupported.go
│ │ │ │ │ │ ├── signal_windows.go
│ │ │ │ │ │ └── trap.go
│ │ │ │ │ ├── sockets/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── tcp_socket.go
│ │ │ │ │ │ └── unix_socket.go
│ │ │ │ │ ├── stdcopy/
│ │ │ │ │ │ ├── stdcopy.go
│ │ │ │ │ │ └── stdcopy_test.go
│ │ │ │ │ ├── streamformatter/
│ │ │ │ │ │ ├── streamformatter.go
│ │ │ │ │ │ └── streamformatter_test.go
│ │ │ │ │ ├── stringid/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── stringid.go
│ │ │ │ │ │ └── stringid_test.go
│ │ │ │ │ ├── stringutils/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── stringutils.go
│ │ │ │ │ │ └── stringutils_test.go
│ │ │ │ │ ├── symlink/
│ │ │ │ │ │ ├── LICENSE.APACHE
│ │ │ │ │ │ ├── LICENSE.BSD
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── fs.go
│ │ │ │ │ │ └── fs_test.go
│ │ │ │ │ ├── sysinfo/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── sysinfo.go
│ │ │ │ │ │ ├── sysinfo_linux.go
│ │ │ │ │ │ ├── sysinfo_linux_test.go
│ │ │ │ │ │ └── sysinfo_windows.go
│ │ │ │ │ ├── system/
│ │ │ │ │ │ ├── errors.go
│ │ │ │ │ │ ├── events_windows.go
│ │ │ │ │ │ ├── filesys.go
│ │ │ │ │ │ ├── filesys_windows.go
│ │ │ │ │ │ ├── lstat.go
│ │ │ │ │ │ ├── lstat_test.go
│ │ │ │ │ │ ├── lstat_windows.go
│ │ │ │ │ │ ├── meminfo.go
│ │ │ │ │ │ ├── meminfo_linux.go
│ │ │ │ │ │ ├── meminfo_linux_test.go
│ │ │ │ │ │ ├── meminfo_unsupported.go
│ │ │ │ │ │ ├── meminfo_windows.go
│ │ │ │ │ │ ├── mknod.go
│ │ │ │ │ │ ├── mknod_windows.go
│ │ │ │ │ │ ├── stat.go
│ │ │ │ │ │ ├── stat_linux.go
│ │ │ │ │ │ ├── stat_test.go
│ │ │ │ │ │ ├── stat_unsupported.go
│ │ │ │ │ │ ├── stat_windows.go
│ │ │ │ │ │ ├── umask.go
│ │ │ │ │ │ ├── umask_windows.go
│ │ │ │ │ │ ├── utimes_darwin.go
│ │ │ │ │ │ ├── utimes_freebsd.go
│ │ │ │ │ │ ├── utimes_linux.go
│ │ │ │ │ │ ├── utimes_test.go
│ │ │ │ │ │ ├── utimes_unsupported.go
│ │ │ │ │ │ ├── xattrs_linux.go
│ │ │ │ │ │ └── xattrs_unsupported.go
│ │ │ │ │ ├── systemd/
│ │ │ │ │ │ ├── booted.go
│ │ │ │ │ │ ├── listendfd.go
│ │ │ │ │ │ └── sd_notify.go
│ │ │ │ │ ├── tailfile/
│ │ │ │ │ │ ├── tailfile.go
│ │ │ │ │ │ └── tailfile_test.go
│ │ │ │ │ ├── tarsum/
│ │ │ │ │ │ ├── builder_context.go
│ │ │ │ │ │ ├── builder_context_test.go
│ │ │ │ │ │ ├── fileinfosums.go
│ │ │ │ │ │ ├── fileinfosums_test.go
│ │ │ │ │ │ ├── tarsum.go
│ │ │ │ │ │ ├── tarsum_spec.md
│ │ │ │ │ │ ├── tarsum_test.go
│ │ │ │ │ │ ├── testdata/
│ │ │ │ │ │ │ ├── 46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457/
│ │ │ │ │ │ │ │ └── json
│ │ │ │ │ │ │ ├── 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/
│ │ │ │ │ │ │ │ └── json
│ │ │ │ │ │ │ └── xattr/
│ │ │ │ │ │ │ └── json
│ │ │ │ │ │ ├── versioning.go
│ │ │ │ │ │ ├── versioning_test.go
│ │ │ │ │ │ └── writercloser.go
│ │ │ │ │ ├── term/
│ │ │ │ │ │ ├── tc_linux_cgo.go
│ │ │ │ │ │ ├── tc_other.go
│ │ │ │ │ │ ├── term.go
│ │ │ │ │ │ ├── term_windows.go
│ │ │ │ │ │ ├── termios_darwin.go
│ │ │ │ │ │ ├── termios_freebsd.go
│ │ │ │ │ │ ├── termios_linux.go
│ │ │ │ │ │ └── winconsole/
│ │ │ │ │ │ ├── console_windows.go
│ │ │ │ │ │ ├── console_windows_test.go
│ │ │ │ │ │ ├── term_emulator.go
│ │ │ │ │ │ └── term_emulator_test.go
│ │ │ │ │ ├── timeoutconn/
│ │ │ │ │ │ ├── timeoutconn.go
│ │ │ │ │ │ └── timeoutconn_test.go
│ │ │ │ │ ├── timeutils/
│ │ │ │ │ │ ├── json.go
│ │ │ │ │ │ ├── json_test.go
│ │ │ │ │ │ ├── utils.go
│ │ │ │ │ │ └── utils_test.go
│ │ │ │ │ ├── tlsconfig/
│ │ │ │ │ │ └── config.go
│ │ │ │ │ ├── truncindex/
│ │ │ │ │ │ ├── truncindex.go
│ │ │ │ │ │ └── truncindex_test.go
│ │ │ │ │ ├── ulimit/
│ │ │ │ │ │ ├── ulimit.go
│ │ │ │ │ │ └── ulimit_test.go
│ │ │ │ │ ├── units/
│ │ │ │ │ │ ├── duration.go
│ │ │ │ │ │ ├── duration_test.go
│ │ │ │ │ │ ├── size.go
│ │ │ │ │ │ └── size_test.go
│ │ │ │ │ ├── urlutil/
│ │ │ │ │ │ ├── urlutil.go
│ │ │ │ │ │ └── urlutil_test.go
│ │ │ │ │ ├── useragent/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── useragent.go
│ │ │ │ │ │ └── useragent_test.go
│ │ │ │ │ └── version/
│ │ │ │ │ ├── version.go
│ │ │ │ │ └── version_test.go
│ │ │ │ ├── project/
│ │ │ │ │ ├── GOVERNANCE.md
│ │ │ │ │ ├── IRC-ADMINISTRATION.md
│ │ │ │ │ ├── ISSUE-TRIAGE.md
│ │ │ │ │ ├── PACKAGERS.md
│ │ │ │ │ ├── PRINCIPLES.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── RELEASE-CHECKLIST.md
│ │ │ │ │ ├── REVIEWING.md
│ │ │ │ │ └── TOOLS.md
│ │ │ │ ├── registry/
│ │ │ │ │ ├── auth.go
│ │ │ │ │ ├── auth_test.go
│ │ │ │ │ ├── authchallenge.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_test.go
│ │ │ │ │ ├── endpoint.go
│ │ │ │ │ ├── endpoint_test.go
│ │ │ │ │ ├── registry.go
│ │ │ │ │ ├── registry_mock_test.go
│ │ │ │ │ ├── registry_test.go
│ │ │ │ │ ├── service.go
│ │ │ │ │ ├── session.go
│ │ │ │ │ ├── token.go
│ │ │ │ │ └── types.go
│ │ │ │ ├── runconfig/
│ │ │ │ │ ├── compare.go
│ │ │ │ │ ├── compare_test.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── config_test.go
│ │ │ │ │ ├── exec.go
│ │ │ │ │ ├── exec_test.go
│ │ │ │ │ ├── fixtures/
│ │ │ │ │ │ ├── container_config_1_14.json
│ │ │ │ │ │ ├── container_config_1_17.json
│ │ │ │ │ │ ├── container_config_1_19.json
│ │ │ │ │ │ ├── container_hostconfig_1_14.json
│ │ │ │ │ │ ├── container_hostconfig_1_19.json
│ │ │ │ │ │ ├── valid.env
│ │ │ │ │ │ └── valid.label
│ │ │ │ │ ├── hostconfig.go
│ │ │ │ │ ├── hostconfig_test.go
│ │ │ │ │ ├── hostconfig_unix.go
│ │ │ │ │ ├── hostconfig_windows.go
│ │ │ │ │ ├── merge.go
│ │ │ │ │ ├── merge_test.go
│ │ │ │ │ ├── parse.go
│ │ │ │ │ ├── parse_experimental.go
│ │ │ │ │ ├── parse_stub.go
│ │ │ │ │ ├── parse_test.go
│ │ │ │ │ ├── parse_unix.go
│ │ │ │ │ └── parse_windows.go
│ │ │ │ ├── trust/
│ │ │ │ │ ├── service.go
│ │ │ │ │ └── trusts.go
│ │ │ │ ├── utils/
│ │ │ │ │ ├── experimental.go
│ │ │ │ │ ├── git.go
│ │ │ │ │ ├── git_test.go
│ │ │ │ │ ├── stubs.go
│ │ │ │ │ ├── utils.go
│ │ │ │ │ └── utils_test.go
│ │ │ │ └── volume/
│ │ │ │ ├── drivers/
│ │ │ │ │ ├── adapter.go
│ │ │ │ │ ├── api.go
│ │ │ │ │ ├── extpoint.go
│ │ │ │ │ ├── proxy.go
│ │ │ │ │ └── proxy_test.go
│ │ │ │ ├── local/
│ │ │ │ │ └── local.go
│ │ │ │ └── volume.go
│ │ │ ├── go-units/
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── LICENSE.code
│ │ │ │ ├── LICENSE.docs
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── README.md
│ │ │ │ ├── circle.yml
│ │ │ │ ├── duration.go
│ │ │ │ ├── duration_test.go
│ │ │ │ ├── size.go
│ │ │ │ ├── size_test.go
│ │ │ │ ├── ulimit.go
│ │ │ │ └── ulimit_test.go
│ │ │ └── libcontainer/
│ │ │ ├── .gitignore
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── Dockerfile
│ │ │ ├── LICENSE
│ │ │ ├── MAINTAINERS
│ │ │ ├── MAINTAINERS_GUIDE.md
│ │ │ ├── Makefile
│ │ │ ├── NOTICE
│ │ │ ├── PRINCIPLES.md
│ │ │ ├── README.md
│ │ │ ├── ROADMAP.md
│ │ │ ├── SPEC.md
│ │ │ ├── apparmor/
│ │ │ │ ├── apparmor.go
│ │ │ │ ├── apparmor_disabled.go
│ │ │ │ ├── gen.go
│ │ │ │ └── setup.go
│ │ │ ├── capabilities_linux.go
│ │ │ ├── cgroups/
│ │ │ │ ├── cgroups.go
│ │ │ │ ├── cgroups_test.go
│ │ │ │ ├── cgroups_unsupported.go
│ │ │ │ ├── fs/
│ │ │ │ │ ├── apply_raw.go
│ │ │ │ │ ├── blkio.go
│ │ │ │ │ ├── blkio_test.go
│ │ │ │ │ ├── cpu.go
│ │ │ │ │ ├── cpu_test.go
│ │ │ │ │ ├── cpuacct.go
│ │ │ │ │ ├── cpuset.go
│ │ │ │ │ ├── cpuset_test.go
│ │ │ │ │ ├── devices.go
│ │ │ │ │ ├── devices_test.go
│ │ │ │ │ ├── freezer.go
│ │ │ │ │ ├── freezer_test.go
│ │ │ │ │ ├── fs_unsupported.go
│ │ │ │ │ ├── hugetlb.go
│ │ │ │ │ ├── hugetlb_test.go
│ │ │ │ │ ├── memory.go
│ │ │ │ │ ├── memory_test.go
│ │ │ │ │ ├── net_cls.go
│ │ │ │ │ ├── net_cls_test.go
│ │ │ │ │ ├── net_prio.go
│ │ │ │ │ ├── net_prio_test.go
│ │ │ │ │ ├── perf_event.go
│ │ │ │ │ ├── stats_util_test.go
│ │ │ │ │ ├── util_test.go
│ │ │ │ │ ├── utils.go
│ │ │ │ │ └── utils_test.go
│ │ │ │ ├── stats.go
│ │ │ │ ├── systemd/
│ │ │ │ │ ├── apply_nosystemd.go
│ │ │ │ │ └── apply_systemd.go
│ │ │ │ └── utils.go
│ │ │ ├── configs/
│ │ │ │ ├── cgroup.go
│ │ │ │ ├── config.go
│ │ │ │ ├── config_test.go
│ │ │ │ ├── config_unix.go
│ │ │ │ ├── device.go
│ │ │ │ ├── device_defaults.go
│ │ │ │ ├── hugepage_limit.go
│ │ │ │ ├── interface_priority_map.go
│ │ │ │ ├── mount.go
│ │ │ │ ├── namespaces.go
│ │ │ │ ├── namespaces_syscall.go
│ │ │ │ ├── namespaces_syscall_unsupported.go
│ │ │ │ ├── namespaces_unix.go
│ │ │ │ ├── namespaces_windows.go
│ │ │ │ ├── network.go
│ │ │ │ └── validate/
│ │ │ │ └── config.go
│ │ │ ├── console.go
│ │ │ ├── console_freebsd.go
│ │ │ ├── console_linux.go
│ │ │ ├── console_windows.go
│ │ │ ├── container.go
│ │ │ ├── container_linux.go
│ │ │ ├── container_linux_test.go
│ │ │ ├── container_nouserns_linux.go
│ │ │ ├── container_userns_linux.go
│ │ │ ├── criu_opts.go
│ │ │ ├── criurpc/
│ │ │ │ ├── Makefile
│ │ │ │ ├── criurpc.pb.go
│ │ │ │ └── criurpc.proto
│ │ │ ├── devices/
│ │ │ │ ├── devices_test.go
│ │ │ │ ├── devices_unix.go
│ │ │ │ ├── devices_windows.go
│ │ │ │ └── number.go
│ │ │ ├── docs/
│ │ │ │ └── man/
│ │ │ │ └── nsinit.1.md
│ │ │ ├── error.go
│ │ │ ├── error_test.go
│ │ │ ├── factory.go
│ │ │ ├── factory_linux.go
│ │ │ ├── factory_linux_test.go
│ │ │ ├── generic_error.go
│ │ │ ├── generic_error_test.go
│ │ │ ├── hack/
│ │ │ │ └── validate.sh
│ │ │ ├── init_linux.go
│ │ │ ├── integration/
│ │ │ │ ├── checkpoint_test.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── exec_test.go
│ │ │ │ ├── execin_test.go
│ │ │ │ ├── init_test.go
│ │ │ │ ├── template_test.go
│ │ │ │ └── utils_test.go
│ │ │ ├── label/
│ │ │ │ ├── label.go
│ │ │ │ ├── label_selinux.go
│ │ │ │ └── label_selinux_test.go
│ │ │ ├── netlink/
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── netlink.go
│ │ │ │ ├── netlink_linux.go
│ │ │ │ ├── netlink_linux_armppc64.go
│ │ │ │ ├── netlink_linux_notarm.go
│ │ │ │ ├── netlink_linux_test.go
│ │ │ │ └── netlink_unsupported.go
│ │ │ ├── network_linux.go
│ │ │ ├── notify_linux.go
│ │ │ ├── notify_linux_test.go
│ │ │ ├── nsenter/
│ │ │ │ ├── README.md
│ │ │ │ ├── nsenter.go
│ │ │ │ ├── nsenter_gccgo.go
│ │ │ │ ├── nsenter_test.go
│ │ │ │ ├── nsenter_unsupported.go
│ │ │ │ └── nsexec.c
│ │ │ ├── nsinit/
│ │ │ │ ├── Makefile
│ │ │ │ ├── README.md
│ │ │ │ ├── checkpoint.go
│ │ │ │ ├── config.go
│ │ │ │ ├── exec.go
│ │ │ │ ├── init.go
│ │ │ │ ├── main.go
│ │ │ │ ├── oom.go
│ │ │ │ ├── pause.go
│ │ │ │ ├── restore.go
│ │ │ │ ├── security.go
│ │ │ │ ├── state.go
│ │ │ │ ├── stats.go
│ │ │ │ ├── tty.go
│ │ │ │ └── utils.go
│ │ │ ├── process.go
│ │ │ ├── process_linux.go
│ │ │ ├── restored_process.go
│ │ │ ├── rootfs_linux.go
│ │ │ ├── rootfs_linux_test.go
│ │ │ ├── sample_configs/
│ │ │ │ ├── README.md
│ │ │ │ ├── apparmor.json
│ │ │ │ ├── attach_to_bridge.json
│ │ │ │ ├── host-pid.json
│ │ │ │ ├── minimal.json
│ │ │ │ ├── selinux.json
│ │ │ │ └── userns.json
│ │ │ ├── seccomp/
│ │ │ │ ├── bpf.go
│ │ │ │ ├── context.go
│ │ │ │ ├── filter.go
│ │ │ │ ├── jump_amd64.go
│ │ │ │ └── seccomp.go
│ │ │ ├── selinux/
│ │ │ │ ├── selinux.go
│ │ │ │ └── selinux_test.go
│ │ │ ├── setns_init_linux.go
│ │ │ ├── stacktrace/
│ │ │ │ ├── capture.go
│ │ │ │ ├── capture_test.go
│ │ │ │ ├── frame.go
│ │ │ │ ├── frame_test.go
│ │ │ │ └── stacktrace.go
│ │ │ ├── standard_init_linux.go
│ │ │ ├── stats.go
│ │ │ ├── stats_freebsd.go
│ │ │ ├── stats_linux.go
│ │ │ ├── stats_windows.go
│ │ │ ├── system/
│ │ │ │ ├── linux.go
│ │ │ │ ├── proc.go
│ │ │ │ ├── setns_linux.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_linux_64.go
│ │ │ │ ├── syscall_linux_arm.go
│ │ │ │ ├── sysconfig.go
│ │ │ │ ├── sysconfig_notcgo.go
│ │ │ │ └── xattrs_linux.go
│ │ │ ├── update-vendor.sh
│ │ │ ├── user/
│ │ │ │ ├── MAINTAINERS
│ │ │ │ ├── lookup.go
│ │ │ │ ├── lookup_unix.go
│ │ │ │ ├── lookup_unsupported.go
│ │ │ │ ├── user.go
│ │ │ │ └── user_test.go
│ │ │ ├── utils/
│ │ │ │ ├── utils.go
│ │ │ │ └── utils_test.go
│ │ │ └── xattr/
│ │ │ ├── errors.go
│ │ │ ├── xattr_linux.go
│ │ │ ├── xattr_test.go
│ │ │ └── xattr_unsupported.go
│ │ ├── emicklei/
│ │ │ └── go-restful/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGES.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── Srcfile
│ │ │ ├── bench_curly_test.go
│ │ │ ├── bench_test.go
│ │ │ ├── bench_test.sh
│ │ │ ├── compress.go
│ │ │ ├── compress_test.go
│ │ │ ├── compressor_cache.go
│ │ │ ├── compressor_pools.go
│ │ │ ├── compressors.go
│ │ │ ├── constants.go
│ │ │ ├── container.go
│ │ │ ├── container_test.go
│ │ │ ├── cors_filter.go
│ │ │ ├── cors_filter_test.go
│ │ │ ├── coverage.sh
│ │ │ ├── curly.go
│ │ │ ├── curly_route.go
│ │ │ ├── curly_test.go
│ │ │ ├── doc.go
│ │ │ ├── doc_examples_test.go
│ │ │ ├── entity_accessors.go
│ │ │ ├── entity_accessors_test.go
│ │ │ ├── examples/
│ │ │ │ ├── .goconvey
│ │ │ │ ├── google_app_engine/
│ │ │ │ │ ├── .goconvey
│ │ │ │ │ ├── app.yaml
│ │ │ │ │ ├── datastore/
│ │ │ │ │ │ ├── .goconvey
│ │ │ │ │ │ ├── app.yaml
│ │ │ │ │ │ └── main.go
│ │ │ │ │ ├── restful-appstats-integration.go
│ │ │ │ │ └── restful-user-service.go
│ │ │ │ ├── home.html
│ │ │ │ ├── restful-CORS-filter.go
│ │ │ │ ├── restful-NCSA-logging.go
│ │ │ │ ├── restful-basic-authentication.go
│ │ │ │ ├── restful-cpuprofiler-service.go
│ │ │ │ ├── restful-curly-router.go
│ │ │ │ ├── restful-encoding-filter.go
│ │ │ │ ├── restful-filters.go
│ │ │ │ ├── restful-form-handling.go
│ │ │ │ ├── restful-hello-world.go
│ │ │ │ ├── restful-html-template.go
│ │ │ │ ├── restful-multi-containers.go
│ │ │ │ ├── restful-options-filter.go
│ │ │ │ ├── restful-path-tail.go
│ │ │ │ ├── restful-pre-post-filters.go
│ │ │ │ ├── restful-resource-functions.go
│ │ │ │ ├── restful-route_test.go
│ │ │ │ ├── restful-routefunction_test.go
│ │ │ │ ├── restful-serve-static.go
│ │ │ │ ├── restful-swagger.go
│ │ │ │ ├── restful-user-resource.go
│ │ │ │ └── restful-user-service.go
│ │ │ ├── filter.go
│ │ │ ├── filter_test.go
│ │ │ ├── install.sh
│ │ │ ├── jsr311.go
│ │ │ ├── jsr311_test.go
│ │ │ ├── log/
│ │ │ │ └── log.go
│ │ │ ├── logger.go
│ │ │ ├── options_filter.go
│ │ │ ├── options_filter_test.go
│ │ │ ├── parameter.go
│ │ │ ├── path_expression.go
│ │ │ ├── path_expression_test.go
│ │ │ ├── request.go
│ │ │ ├── request_test.go
│ │ │ ├── response.go
│ │ │ ├── response_test.go
│ │ │ ├── route.go
│ │ │ ├── route_builder.go
│ │ │ ├── route_builder_test.go
│ │ │ ├── route_test.go
│ │ │ ├── router.go
│ │ │ ├── service_error.go
│ │ │ ├── swagger/
│ │ │ │ ├── CHANGES.md
│ │ │ │ ├── README.md
│ │ │ │ ├── api_declaration_list.go
│ │ │ │ ├── config.go
│ │ │ │ ├── model_builder.go
│ │ │ │ ├── model_builder_test.go
│ │ │ │ ├── model_list.go
│ │ │ │ ├── model_list_test.go
│ │ │ │ ├── model_property_ext.go
│ │ │ │ ├── model_property_ext_test.go
│ │ │ │ ├── model_property_list.go
│ │ │ │ ├── model_property_list_test.go
│ │ │ │ ├── ordered_route_map.go
│ │ │ │ ├── ordered_route_map_test.go
│ │ │ │ ├── postbuild_model_test.go
│ │ │ │ ├── swagger.go
│ │ │ │ ├── swagger_builder.go
│ │ │ │ ├── swagger_test.go
│ │ │ │ ├── swagger_webservice.go
│ │ │ │ ├── test_package/
│ │ │ │ │ └── struct.go
│ │ │ │ └── utils_test.go
│ │ │ ├── tracer_test.go
│ │ │ ├── web_service.go
│ │ │ ├── web_service_container.go
│ │ │ └── web_service_test.go
│ │ ├── evanphx/
│ │ │ └── json-patch/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── merge.go
│ │ │ ├── merge_test.go
│ │ │ ├── patch.go
│ │ │ └── patch_test.go
│ │ ├── fatih/
│ │ │ └── color/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE.md
│ │ │ ├── README.md
│ │ │ ├── color.go
│ │ │ ├── color_test.go
│ │ │ └── doc.go
│ │ ├── fsouza/
│ │ │ └── go-dockerclient/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── AUTHORS
│ │ │ ├── DOCKER-LICENSE
│ │ │ ├── LICENSE
│ │ │ ├── Makefile
│ │ │ ├── README.markdown
│ │ │ ├── auth.go
│ │ │ ├── auth_test.go
│ │ │ ├── build_test.go
│ │ │ ├── change.go
│ │ │ ├── change_test.go
│ │ │ ├── client.go
│ │ │ ├── client_test.go
│ │ │ ├── container.go
│ │ │ ├── container_test.go
│ │ │ ├── env.go
│ │ │ ├── env_test.go
│ │ │ ├── event.go
│ │ │ ├── event_test.go
│ │ │ ├── example_test.go
│ │ │ ├── exec.go
│ │ │ ├── exec_test.go
│ │ │ ├── external/
│ │ │ │ ├── github.com/
│ │ │ │ │ ├── Sirupsen/
│ │ │ │ │ │ └── logrus/
│ │ │ │ │ │ ├── CHANGELOG.md
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── entry.go
│ │ │ │ │ │ ├── entry_test.go
│ │ │ │ │ │ ├── exported.go
│ │ │ │ │ │ ├── formatter.go
│ │ │ │ │ │ ├── formatter_bench_test.go
│ │ │ │ │ │ ├── hook_test.go
│ │ │ │ │ │ ├── hooks.go
│ │ │ │ │ │ ├── json_formatter.go
│ │ │ │ │ │ ├── json_formatter_test.go
│ │ │ │ │ │ ├── logger.go
│ │ │ │ │ │ ├── logrus.go
│ │ │ │ │ │ ├── logrus_test.go
│ │ │ │ │ │ ├── terminal_bsd.go
│ │ │ │ │ │ ├── terminal_linux.go
│ │ │ │ │ │ ├── terminal_notwindows.go
│ │ │ │ │ │ ├── terminal_solaris.go
│ │ │ │ │ │ ├── terminal_windows.go
│ │ │ │ │ │ ├── text_formatter.go
│ │ │ │ │ │ ├── text_formatter_test.go
│ │ │ │ │ │ └── writer.go
│ │ │ │ │ ├── docker/
│ │ │ │ │ │ ├── docker/
│ │ │ │ │ │ │ ├── opts/
│ │ │ │ │ │ │ │ ├── envfile.go
│ │ │ │ │ │ │ │ ├── envfile_test.go
│ │ │ │ │ │ │ │ ├── hosts.go
│ │ │ │ │ │ │ │ ├── hosts_test.go
│ │ │ │ │ │ │ │ ├── hosts_unix.go
│ │ │ │ │ │ │ │ ├── hosts_windows.go
│ │ │ │ │ │ │ │ ├── ip.go
│ │ │ │ │ │ │ │ ├── ip_test.go
│ │ │ │ │ │ │ │ ├── opts.go
│ │ │ │ │ │ │ │ ├── opts_test.go
│ │ │ │ │ │ │ │ ├── opts_unix.go
│ │ │ │ │ │ │ │ └── opts_windows.go
│ │ │ │ │ │ │ └── pkg/
│ │ │ │ │ │ │ ├── archive/
│ │ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ │ ├── archive.go
│ │ │ │ │ │ │ │ ├── archive_test.go
│ │ │ │ │ │ │ │ ├── archive_unix.go
│ │ │ │ │ │ │ │ ├── archive_unix_test.go
│ │ │ │ │ │ │ │ ├── archive_windows.go
│ │ │ │ │ │ │ │ ├── archive_windows_test.go
│ │ │ │ │ │ │ │ ├── changes.go
│ │ │ │ │ │ │ │ ├── changes_linux.go
│ │ │ │ │ │ │ │ ├── changes_other.go
│ │ │ │ │ │ │ │ ├── changes_posix_test.go
│ │ │ │ │ │ │ │ ├── changes_test.go
│ │ │ │ │ │ │ │ ├── changes_unix.go
│ │ │ │ │ │ │ │ ├── changes_windows.go
│ │ │ │ │ │ │ │ ├── copy.go
│ │ │ │ │ │ │ │ ├── copy_test.go
│ │ │ │ │ │ │ │ ├── copy_unix.go
│ │ │ │ │ │ │ │ ├── copy_windows.go
│ │ │ │ │ │ │ │ ├── diff.go
│ │ │ │ │ │ │ │ ├── diff_test.go
│ │ │ │ │ │ │ │ ├── example_changes.go
│ │ │ │ │ │ │ │ ├── time_linux.go
│ │ │ │ │ │ │ │ ├── time_unsupported.go
│ │ │ │ │ │ │ │ ├── utils_test.go
│ │ │ │ │ │ │ │ ├── whiteouts.go
│ │ │ │ │ │ │ │ ├── wrap.go
│ │ │ │ │ │ │ │ └── wrap_test.go
│ │ │ │ │ │ │ ├── fileutils/
│ │ │ │ │ │ │ │ ├── fileutils.go
│ │ │ │ │ │ │ │ ├── fileutils_test.go
│ │ │ │ │ │ │ │ ├── fileutils_unix.go
│ │ │ │ │ │ │ │ └── fileutils_windows.go
│ │ │ │ │ │ │ ├── homedir/
│ │ │ │ │ │ │ │ ├── homedir.go
│ │ │ │ │ │ │ │ └── homedir_test.go
│ │ │ │ │ │ │ ├── idtools/
│ │ │ │ │ │ │ │ ├── idtools.go
│ │ │ │ │ │ │ │ ├── idtools_unix.go
│ │ │ │ │ │ │ │ ├── idtools_unix_test.go
│ │ │ │ │ │ │ │ ├── idtools_windows.go
│ │ │ │ │ │ │ │ ├── usergroupadd_linux.go
│ │ │ │ │ │ │ │ └── usergroupadd_unsupported.go
│ │ │ │ │ │ │ ├── ioutils/
│ │ │ │ │ │ │ │ ├── bytespipe.go
│ │ │ │ │ │ │ │ ├── bytespipe_test.go
│ │ │ │ │ │ │ │ ├── fmt.go
│ │ │ │ │ │ │ │ ├── fmt_test.go
│ │ │ │ │ │ │ │ ├── multireader.go
│ │ │ │ │ │ │ │ ├── multireader_test.go
│ │ │ │ │ │ │ │ ├── readers.go
│ │ │ │ │ │ │ │ ├── readers_test.go
│ │ │ │ │ │ │ │ ├── scheduler.go
│ │ │ │ │ │ │ │ ├── scheduler_gccgo.go
│ │ │ │ │ │ │ │ ├── temp_unix.go
│ │ │ │ │ │ │ │ ├── temp_windows.go
│ │ │ │ │ │ │ │ ├── writeflusher.go
│ │ │ │ │ │ │ │ ├── writers.go
│ │ │ │ │ │ │ │ └── writers_test.go
│ │ │ │ │ │ │ ├── longpath/
│ │ │ │ │ │ │ │ ├── longpath.go
│ │ │ │ │ │ │ │ └── longpath_test.go
│ │ │ │ │ │ │ ├── pools/
│ │ │ │ │ │ │ │ ├── pools.go
│ │ │ │ │ │ │ │ └── pools_test.go
│ │ │ │ │ │ │ ├── promise/
│ │ │ │ │ │ │ │ └── promise.go
│ │ │ │ │ │ │ ├── stdcopy/
│ │ │ │ │ │ │ │ ├── stdcopy.go
│ │ │ │ │ │ │ │ └── stdcopy_test.go
│ │ │ │ │ │ │ └── system/
│ │ │ │ │ │ │ ├── chtimes.go
│ │ │ │ │ │ │ ├── chtimes_test.go
│ │ │ │ │ │ │ ├── chtimes_unix_test.go
│ │ │ │ │ │ │ ├── chtimes_windows_test.go
│ │ │ │ │ │ │ ├── errors.go
│ │ │ │ │ │ │ ├── events_windows.go
│ │ │ │ │ │ │ ├── filesys.go
│ │ │ │ │ │ │ ├── filesys_windows.go
│ │ │ │ │ │ │ ├── lstat.go
│ │ │ │ │ │ │ ├── lstat_unix_test.go
│ │ │ │ │ │ │ ├── lstat_windows.go
│ │ │ │ │ │ │ ├── meminfo.go
│ │ │ │ │ │ │ ├── meminfo_linux.go
│ │ │ │ │ │ │ ├── meminfo_unix_test.go
│ │ │ │ │ │ │ ├── meminfo_unsupported.go
│ │ │ │ │ │ │ ├── meminfo_windows.go
│ │ │ │ │ │ │ ├── mknod.go
│ │ │ │ │ │ │ ├── mknod_windows.go
│ │ │ │ │ │ │ ├── path_unix.go
│ │ │ │ │ │ │ ├── path_windows.go
│ │ │ │ │ │ │ ├── stat.go
│ │ │ │ │ │ │ ├── stat_freebsd.go
│ │ │ │ │ │ │ ├── stat_linux.go
│ │ │ │ │ │ │ ├── stat_solaris.go
│ │ │ │ │ │ │ ├── stat_unix_test.go
│ │ │ │ │ │ │ ├── stat_unsupported.go
│ │ │ │ │ │ │ ├── stat_windows.go
│ │ │ │ │ │ │ ├── syscall_unix.go
│ │ │ │ │ │ │ ├── syscall_windows.go
│ │ │ │ │ │ │ ├── umask.go
│ │ │ │ │ │ │ ├── umask_windows.go
│ │ │ │ │ │ │ ├── utimes_darwin.go
│ │ │ │ │ │ │ ├── utimes_freebsd.go
│ │ │ │ │ │ │ ├── utimes_linux.go
│ │ │ │ │ │ │ ├── utimes_unix_test.go
│ │ │ │ │ │ │ ├── utimes_unsupported.go
│ │ │ │ │ │ │ ├── xattrs_linux.go
│ │ │ │ │ │ │ └── xattrs_unsupported.go
│ │ │ │ │ │ └── go-units/
│ │ │ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ │ │ ├── LICENSE.code
│ │ │ │ │ │ ├── LICENSE.docs
│ │ │ │ │ │ ├── MAINTAINERS
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── circle.yml
│ │ │ │ │ │ ├── duration.go
│ │ │ │ │ │ ├── duration_test.go
│ │ │ │ │ │ ├── size.go
│ │ │ │ │ │ ├── size_test.go
│ │ │ │ │ │ ├── ulimit.go
│ │ │ │ │ │ └── ulimit_test.go
│ │ │ │ │ ├── gorilla/
│ │ │ │ │ │ ├── context/
│ │ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── context.go
│ │ │ │ │ │ │ ├── context_test.go
│ │ │ │ │ │ │ └── doc.go
│ │ │ │ │ │ └── mux/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── bench_test.go
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── mux.go
│ │ │ │ │ │ ├── mux_test.go
│ │ │ │ │ │ ├── old_test.go
│ │ │ │ │ │ ├── regexp.go
│ │ │ │ │ │ └── route.go
│ │ │ │ │ ├── hashicorp/
│ │ │ │ │ │ └── go-cleanhttp/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── cleanhttp.go
│ │ │ │ │ └── opencontainers/
│ │ │ │ │ └── runc/
│ │ │ │ │ └── libcontainer/
│ │ │ │ │ └── user/
│ │ │ │ │ ├── MAINTAINERS
│ │ │ │ │ ├── lookup.go
│ │ │ │ │ ├── lookup_unix.go
│ │ │ │ │ ├── lookup_unsupported.go
│ │ │ │ │ ├── user.go
│ │ │ │ │ └── user_test.go
│ │ │ │ └── golang.org/
│ │ │ │ └── x/
│ │ │ │ ├── net/
│ │ │ │ │ └── context/
│ │ │ │ │ ├── context.go
│ │ │ │ │ ├── context_test.go
│ │ │ │ │ └── withtimeout_test.go
│ │ │ │ └── sys/
│ │ │ │ └── unix/
│ │ │ │ ├── asm.s
│ │ │ │ ├── asm_darwin_386.s
│ │ │ │ ├── asm_darwin_amd64.s
│ │ │ │ ├── asm_darwin_arm.s
│ │ │ │ ├── asm_darwin_arm64.s
│ │ │ │ ├── asm_dragonfly_386.s
│ │ │ │ ├── asm_dragonfly_amd64.s
│ │ │ │ ├── asm_freebsd_386.s
│ │ │ │ ├── asm_freebsd_amd64.s
│ │ │ │ ├── asm_freebsd_arm.s
│ │ │ │ ├── asm_linux_386.s
│ │ │ │ ├── asm_linux_amd64.s
│ │ │ │ ├── asm_linux_arm.s
│ │ │ │ ├── asm_linux_arm64.s
│ │ │ │ ├── asm_linux_ppc64x.s
│ │ │ │ ├── asm_netbsd_386.s
│ │ │ │ ├── asm_netbsd_amd64.s
│ │ │ │ ├── asm_netbsd_arm.s
│ │ │ │ ├── asm_openbsd_386.s
│ │ │ │ ├── asm_openbsd_amd64.s
│ │ │ │ ├── asm_solaris_amd64.s
│ │ │ │ ├── constants.go
│ │ │ │ ├── creds_test.go
│ │ │ │ ├── env_unix.go
│ │ │ │ ├── env_unset.go
│ │ │ │ ├── export_test.go
│ │ │ │ ├── flock.go
│ │ │ │ ├── flock_linux_32bit.go
│ │ │ │ ├── gccgo.go
│ │ │ │ ├── gccgo_c.c
│ │ │ │ ├── gccgo_linux_amd64.go
│ │ │ │ ├── mkall.sh
│ │ │ │ ├── mkerrors.sh
│ │ │ │ ├── mksyscall.pl
│ │ │ │ ├── mksyscall_solaris.pl
│ │ │ │ ├── mksysctl_openbsd.pl
│ │ │ │ ├── mksysnum_darwin.pl
│ │ │ │ ├── mksysnum_dragonfly.pl
│ │ │ │ ├── mksysnum_freebsd.pl
│ │ │ │ ├── mksysnum_linux.pl
│ │ │ │ ├── mksysnum_netbsd.pl
│ │ │ │ ├── mksysnum_openbsd.pl
│ │ │ │ ├── mmap_unix_test.go
│ │ │ │ ├── race.go
│ │ │ │ ├── race0.go
│ │ │ │ ├── sockcmsg_linux.go
│ │ │ │ ├── sockcmsg_unix.go
│ │ │ │ ├── str.go
│ │ │ │ ├── syscall.go
│ │ │ │ ├── syscall_bsd.go
│ │ │ │ ├── syscall_bsd_test.go
│ │ │ │ ├── syscall_darwin.go
│ │ │ │ ├── syscall_darwin_386.go
│ │ │ │ ├── syscall_darwin_amd64.go
│ │ │ │ ├── syscall_darwin_arm.go
│ │ │ │ ├── syscall_darwin_arm64.go
│ │ │ │ ├── syscall_dragonfly.go
│ │ │ │ ├── syscall_dragonfly_386.go
│ │ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ │ ├── syscall_freebsd.go
│ │ │ │ ├── syscall_freebsd_386.go
│ │ │ │ ├── syscall_freebsd_amd64.go
│ │ │ │ ├── syscall_freebsd_arm.go
│ │ │ │ ├── syscall_freebsd_test.go
│ │ │ │ ├── syscall_linux.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_linux_amd64.go
│ │ │ │ ├── syscall_linux_arm.go
│ │ │ │ ├── syscall_linux_arm64.go
│ │ │ │ ├── syscall_linux_ppc64x.go
│ │ │ │ ├── syscall_netbsd.go
│ │ │ │ ├── syscall_netbsd_386.go
│ │ │ │ ├── syscall_netbsd_amd64.go
│ │ │ │ ├── syscall_netbsd_arm.go
│ │ │ │ ├── syscall_no_getwd.go
│ │ │ │ ├── syscall_openbsd.go
│ │ │ │ ├── syscall_openbsd_386.go
│ │ │ │ ├── syscall_openbsd_amd64.go
│ │ │ │ ├── syscall_solaris.go
│ │ │ │ ├── syscall_solaris_amd64.go
│ │ │ │ ├── syscall_test.go
│ │ │ │ ├── syscall_unix.go
│ │ │ │ ├── syscall_unix_test.go
│ │ │ │ ├── types_darwin.go
│ │ │ │ ├── types_dragonfly.go
│ │ │ │ ├── types_freebsd.go
│ │ │ │ ├── types_linux.go
│ │ │ │ ├── types_netbsd.go
│ │ │ │ ├── types_openbsd.go
│ │ │ │ ├── types_solaris.go
│ │ │ │ ├── zerrors_darwin_386.go
│ │ │ │ ├── zerrors_darwin_amd64.go
│ │ │ │ ├── zerrors_darwin_arm.go
│ │ │ │ ├── zerrors_darwin_arm64.go
│ │ │ │ ├── zerrors_dragonfly_386.go
│ │ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ │ ├── zerrors_freebsd_386.go
│ │ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ │ ├── zerrors_freebsd_arm.go
│ │ │ │ ├── zerrors_linux_386.go
│ │ │ │ ├── zerrors_linux_amd64.go
│ │ │ │ ├── zerrors_linux_arm.go
│ │ │ │ ├── zerrors_linux_arm64.go
│ │ │ │ ├── zerrors_linux_ppc64.go
│ │ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ │ ├── zerrors_netbsd_386.go
│ │ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ │ ├── zerrors_netbsd_arm.go
│ │ │ │ ├── zerrors_openbsd_386.go
│ │ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ │ ├── zerrors_solaris_amd64.go
│ │ │ │ ├── zsyscall_darwin_386.go
│ │ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ │ ├── zsyscall_darwin_arm.go
│ │ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ │ ├── zsyscall_dragonfly_386.go
│ │ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ │ ├── zsyscall_freebsd_386.go
│ │ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ │ ├── zsyscall_linux_386.go
│ │ │ │ ├── zsyscall_linux_amd64.go
│ │ │ │ ├── zsyscall_linux_arm.go
│ │ │ │ ├── zsyscall_linux_arm64.go
│ │ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ │ ├── zsyscall_netbsd_386.go
│ │ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ │ ├── zsyscall_openbsd_386.go
│ │ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ │ ├── zsysctl_openbsd.go
│ │ │ │ ├── zsysnum_darwin_386.go
│ │ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ │ ├── zsysnum_darwin_arm.go
│ │ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ │ ├── zsysnum_dragonfly_386.go
│ │ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ │ ├── zsysnum_freebsd_386.go
│ │ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ │ ├── zsysnum_linux_386.go
│ │ │ │ ├── zsysnum_linux_amd64.go
│ │ │ │ ├── zsysnum_linux_arm.go
│ │ │ │ ├── zsysnum_linux_arm64.go
│ │ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ │ ├── zsysnum_netbsd_386.go
│ │ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ │ ├── zsysnum_openbsd_386.go
│ │ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ │ ├── zsysnum_solaris_amd64.go
│ │ │ │ ├── ztypes_darwin_386.go
│ │ │ │ ├── ztypes_darwin_amd64.go
│ │ │ │ ├── ztypes_darwin_arm.go
│ │ │ │ ├── ztypes_darwin_arm64.go
│ │ │ │ ├── ztypes_dragonfly_386.go
│ │ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ │ ├── ztypes_freebsd_386.go
│ │ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ │ ├── ztypes_freebsd_arm.go
│ │ │ │ ├── ztypes_linux_386.go
│ │ │ │ ├── ztypes_linux_amd64.go
│ │ │ │ ├── ztypes_linux_arm.go
│ │ │ │ ├── ztypes_linux_arm64.go
│ │ │ │ ├── ztypes_linux_ppc64.go
│ │ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ │ ├── ztypes_netbsd_386.go
│ │ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ │ ├── ztypes_netbsd_arm.go
│ │ │ │ ├── ztypes_openbsd_386.go
│ │ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ │ └── ztypes_solaris_amd64.go
│ │ │ ├── image.go
│ │ │ ├── image_test.go
│ │ │ ├── integration_test.go
│ │ │ ├── misc.go
│ │ │ ├── misc_test.go
│ │ │ ├── network.go
│ │ │ ├── network_test.go
│ │ │ ├── signal.go
│ │ │ ├── tar.go
│ │ │ ├── testing/
│ │ │ │ ├── data/
│ │ │ │ │ ├── .dockerignore
│ │ │ │ │ ├── Dockerfile
│ │ │ │ │ ├── barfile
│ │ │ │ │ ├── ca.pem
│ │ │ │ │ ├── cert.pem
│ │ │ │ │ ├── foofile
│ │ │ │ │ ├── key.pem
│ │ │ │ │ ├── server.pem
│ │ │ │ │ └── serverkey.pem
│ │ │ │ ├── server.go
│ │ │ │ └── server_test.go
│ │ │ ├── tls.go
│ │ │ ├── volume.go
│ │ │ └── volume_test.go
│ │ ├── ghodss/
│ │ │ └── yaml/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── fields.go
│ │ │ ├── yaml.go
│ │ │ └── yaml_test.go
│ │ ├── golang/
│ │ │ ├── glog/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README
│ │ │ │ ├── glog.go
│ │ │ │ ├── glog_file.go
│ │ │ │ └── glog_test.go
│ │ │ ├── groupcache/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── byteview.go
│ │ │ │ ├── byteview_test.go
│ │ │ │ ├── consistenthash/
│ │ │ │ │ ├── consistenthash.go
│ │ │ │ │ └── consistenthash_test.go
│ │ │ │ ├── groupcache.go
│ │ │ │ ├── groupcache_test.go
│ │ │ │ ├── groupcachepb/
│ │ │ │ │ ├── groupcache.pb.go
│ │ │ │ │ └── groupcache.proto
│ │ │ │ ├── http.go
│ │ │ │ ├── http_test.go
│ │ │ │ ├── lru/
│ │ │ │ │ ├── lru.go
│ │ │ │ │ └── lru_test.go
│ │ │ │ ├── peers.go
│ │ │ │ ├── singleflight/
│ │ │ │ │ ├── singleflight.go
│ │ │ │ │ └── singleflight_test.go
│ │ │ │ ├── sinks.go
│ │ │ │ └── testpb/
│ │ │ │ ├── test.pb.go
│ │ │ │ └── test.proto
│ │ │ └── protobuf/
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── Make.protobuf
│ │ │ ├── Makefile
│ │ │ ├── README.md
│ │ │ ├── jsonpb/
│ │ │ │ ├── jsonpb.go
│ │ │ │ ├── jsonpb_test.go
│ │ │ │ └── jsonpb_test_proto/
│ │ │ │ ├── Makefile
│ │ │ │ ├── more_test_objects.proto
│ │ │ │ └── test_objects.proto
│ │ │ ├── proto/
│ │ │ │ ├── Makefile
│ │ │ │ ├── all_test.go
│ │ │ │ ├── clone.go
│ │ │ │ ├── clone_test.go
│ │ │ │ ├── decode.go
│ │ │ │ ├── encode.go
│ │ │ │ ├── equal.go
│ │ │ │ ├── equal_test.go
│ │ │ │ ├── extensions.go
│ │ │ │ ├── extensions_test.go
│ │ │ │ ├── lib.go
│ │ │ │ ├── message_set.go
│ │ │ │ ├── message_set_test.go
│ │ │ │ ├── pointer_reflect.go
│ │ │ │ ├── pointer_unsafe.go
│ │ │ │ ├── properties.go
│ │ │ │ ├── proto3_proto/
│ │ │ │ │ └── proto3.proto
│ │ │ │ ├── proto3_test.go
│ │ │ │ ├── size2_test.go
│ │ │ │ ├── size_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── golden_test.go
│ │ │ │ │ └── test.proto
│ │ │ │ ├── text.go
│ │ │ │ ├── text_parser.go
│ │ │ │ ├── text_parser_test.go
│ │ │ │ └── text_test.go
│ │ │ └── protoc-gen-go/
│ │ │ ├── Makefile
│ │ │ ├── descriptor/
│ │ │ │ └── Makefile
│ │ │ ├── doc.go
│ │ │ ├── generator/
│ │ │ │ ├── Makefile
│ │ │ │ ├── generator.go
│ │ │ │ └── name_test.go
│ │ │ ├── internal/
│ │ │ │ └── grpc/
│ │ │ │ └── grpc.go
│ │ │ ├── link_grpc.go
│ │ │ ├── main.go
│ │ │ ├── plugin/
│ │ │ │ ├── Makefile
│ │ │ │ └── plugin.pb.golden
│ │ │ └── testdata/
│ │ │ ├── Makefile
│ │ │ ├── extension_base.proto
│ │ │ ├── extension_extra.proto
│ │ │ ├── extension_test.go
│ │ │ ├── extension_user.proto
│ │ │ ├── grpc.proto
│ │ │ ├── imp.pb.go.golden
│ │ │ ├── imp.proto
│ │ │ ├── imp2.proto
│ │ │ ├── imp3.proto
│ │ │ ├── main_test.go
│ │ │ ├── multi/
│ │ │ │ ├── multi1.proto
│ │ │ │ ├── multi2.proto
│ │ │ │ └── multi3.proto
│ │ │ ├── my_test/
│ │ │ │ ├── test.pb.go.golden
│ │ │ │ └── test.proto
│ │ │ └── proto3.proto
│ │ ├── google/
│ │ │ └── gofuzz/
│ │ │ ├── .travis.yml
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── doc.go
│ │ │ ├── example_test.go
│ │ │ ├── fuzz.go
│ │ │ └── fuzz_test.go
│ │ ├── imdario/
│ │ │ └── mergo/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── doc.go
│ │ │ ├── map.go
│ │ │ ├── merge.go
│ │ │ ├── mergo.go
│ │ │ ├── mergo_test.go
│ │ │ └── testdata/
│ │ │ ├── license.yml
│ │ │ └── thing.yml
│ │ ├── inconshreveable/
│ │ │ └── mousetrap/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── trap_others.go
│ │ │ ├── trap_windows.go
│ │ │ └── trap_windows_1.4.go
│ │ ├── juju/
│ │ │ └── ratelimit/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── ratelimit.go
│ │ │ ├── ratelimit_test.go
│ │ │ └── reader.go
│ │ ├── masterzen/
│ │ │ ├── simplexml/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ └── dom/
│ │ │ │ ├── document.go
│ │ │ │ ├── dom_test.go
│ │ │ │ ├── element.go
│ │ │ │ └── namespace.go
│ │ │ ├── winrm/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── LICENSE
│ │ │ │ ├── Makefile
│ │ │ │ ├── README.md
│ │ │ │ ├── development/
│ │ │ │ │ ├── Vagrantfile
│ │ │ │ │ ├── sample_requests.txt
│ │ │ │ │ └── winrm-tests.sh
│ │ │ │ ├── scripts/
│ │ │ │ │ └── test.sh
│ │ │ │ ├── soap/
│ │ │ │ │ ├── header.go
│ │ │ │ │ ├── header_test.go
│ │ │ │ │ ├── message.go
│ │ │ │ │ ├── namespaces.go
│ │ │ │ │ └── namespaces_test.go
│ │ │ │ ├── winrm/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── client_test.go
│ │ │ │ │ ├── command.go
│ │ │ │ │ ├── command_test.go
│ │ │ │ │ ├── endpoint.go
│ │ │ │ │ ├── endpoint_test.go
│ │ │ │ │ ├── fixture_test.go
│ │ │ │ │ ├── http.go
│ │ │ │ │ ├── http_test.go
│ │ │ │ │ ├── parameters.go
│ │ │ │ │ ├── parameters_test.go
│ │ │ │ │ ├── powershell.go
│ │ │ │ │ ├── powershell_test.go
│ │ │ │ │ ├── request.go
│ │ │ │ │ ├── request_test.go
│ │ │ │ │ ├── response.go
│ │ │ │ │ ├── response_test.go
│ │ │ │ │ ├── shell.go
│ │ │ │ │ └── shell_test.go
│ │ │ │ └── winrm.go
│ │ │ └── xmlpath/
│ │ │ ├── LICENSE
│ │ │ ├── all_test.go
│ │ │ ├── doc.go
│ │ │ ├── parser.go
│ │ │ └── path.go
│ │ ├── mattn/
│ │ │ ├── go-colorable/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── _example/
│ │ │ │ │ └── main.go
│ │ │ │ ├── colorable_others.go
│ │ │ │ └── colorable_windows.go
│ │ │ └── go-isatty/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── _example/
│ │ │ │ └── example.go
│ │ │ ├── doc.go
│ │ │ ├── isatty_appengine.go
│ │ │ ├── isatty_bsd.go
│ │ │ ├── isatty_linux.go
│ │ │ ├── isatty_solaris.go
│ │ │ └── isatty_windows.go
│ │ ├── matttproud/
│ │ │ └── golang_protobuf_extensions/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── ext/
│ │ │ │ └── moved.go
│ │ │ ├── pbtest/
│ │ │ │ ├── doc.go
│ │ │ │ ├── example_test.go
│ │ │ │ └── quick.go
│ │ │ └── pbutil/
│ │ │ ├── all_test.go
│ │ │ ├── decode.go
│ │ │ ├── doc.go
│ │ │ ├── encode.go
│ │ │ └── fixtures_test.go
│ │ ├── nu7hatch/
│ │ │ └── gouuid/
│ │ │ ├── .gitignore
│ │ │ ├── COPYING
│ │ │ ├── README.md
│ │ │ ├── example_test.go
│ │ │ ├── uuid.go
│ │ │ └── uuid_test.go
│ │ ├── pborman/
│ │ │ └── uuid/
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── dce.go
│ │ │ ├── doc.go
│ │ │ ├── hash.go
│ │ │ ├── json.go
│ │ │ ├── json_test.go
│ │ │ ├── node.go
│ │ │ ├── seq_test.go
│ │ │ ├── time.go
│ │ │ ├── util.go
│ │ │ ├── uuid.go
│ │ │ ├── uuid_test.go
│ │ │ ├── version1.go
│ │ │ └── version4.go
│ │ ├── prometheus/
│ │ │ ├── client_golang/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── AUTHORS.md
│ │ │ │ ├── CHANGELOG.md
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── LICENSE
│ │ │ │ ├── NOTICE
│ │ │ │ ├── README.md
│ │ │ │ ├── VERSION
│ │ │ │ ├── api/
│ │ │ │ │ └── prometheus/
│ │ │ │ │ ├── api.go
│ │ │ │ │ └── api_test.go
│ │ │ │ ├── examples/
│ │ │ │ │ ├── random/
│ │ │ │ │ │ └── main.go
│ │ │ │ │ └── simple/
│ │ │ │ │ └── main.go
│ │ │ │ └── prometheus/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── README.md
│ │ │ │ ├── benchmark_test.go
│ │ │ │ ├── collector.go
│ │ │ │ ├── counter.go
│ │ │ │ ├── counter_test.go
│ │ │ │ ├── desc.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── example_clustermanager_test.go
│ │ │ │ ├── example_memstats_test.go
│ │ │ │ ├── example_selfcollector_test.go
│ │ │ │ ├── examples_test.go
│ │ │ │ ├── expvar.go
│ │ │ │ ├── expvar_test.go
│ │ │ │ ├── gauge.go
│ │ │ │ ├── gauge_test.go
│ │ │ │ ├── go_collector.go
│ │ │ │ ├── go_collector_test.go
│ │ │ │ ├── histogram.go
│ │ │ │ ├── histogram_test.go
│ │ │ │ ├── http.go
│ │ │ │ ├── http_test.go
│ │ │ │ ├── metric.go
│ │ │ │ ├── metric_test.go
│ │ │ │ ├── process_collector.go
│ │ │ │ ├── process_collector_test.go
│ │ │ │ ├── push.go
│ │ │ │ ├── registry.go
│ │ │ │ ├── registry_test.go
│ │ │ │ ├── summary.go
│ │ │ │ ├── summary_test.go
│ │ │ │ ├── untyped.go
│ │ │ │ ├── value.go
│ │ │ │ ├── vec.go
│ │ │ │ └── vec_test.go
│ │ │ ├── client_model/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── AUTHORS.md
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── LICENSE
│ │ │ │ ├── Makefile
│ │ │ │ ├── NOTICE
│ │ │ │ ├── README.md
│ │ │ │ ├── cpp/
│ │ │ │ │ ├── metrics.pb.cc
│ │ │ │ │ └── metrics.pb.h
│ │ │ │ ├── go/
│ │ │ │ │ └── metrics.pb.go
│ │ │ │ ├── metrics.proto
│ │ │ │ ├── pom.xml
│ │ │ │ ├── python/
│ │ │ │ │ └── prometheus/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── client/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── model/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── metrics_pb2.py
│ │ │ │ ├── ruby/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Gemfile
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── Rakefile
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ └── prometheus/
│ │ │ │ │ │ └── client/
│ │ │ │ │ │ ├── model/
│ │ │ │ │ │ │ ├── metrics.pb.rb
│ │ │ │ │ │ │ └── version.rb
│ │ │ │ │ │ └── model.rb
│ │ │ │ │ └── prometheus-client-model.gemspec
│ │ │ │ ├── setup.py
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── prometheus/
│ │ │ │ └── client/
│ │ │ │ └── Metrics.java
│ │ │ ├── common/
│ │ │ │ ├── README.md
│ │ │ │ ├── expfmt/
│ │ │ │ │ ├── bench_test.go
│ │ │ │ │ ├── decode.go
│ │ │ │ │ ├── decode_test.go
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── expfmt.go
│ │ │ │ │ ├── fuzz/
│ │ │ │ │ │ └── corpus/
│ │ │ │ │ │ ├── from_test_parse_0
│ │ │ │ │ │ ├── from_test_parse_1
│ │ │ │ │ │ ├── from_test_parse_2
│ │ │ │ │ │ ├── from_test_parse_3
│ │ │ │ │ │ ├── from_test_parse_4
│ │ │ │ │ │ ├── from_test_parse_error_0
│ │ │ │ │ │ ├── from_test_parse_error_1
│ │ │ │ │ │ ├── from_test_parse_error_10
│ │ │ │ │ │ ├── from_test_parse_error_11
│ │ │ │ │ │ ├── from_test_parse_error_12
│ │ │ │ │ │ ├── from_test_parse_error_13
│ │ │ │ │ │ ├── from_test_parse_error_14
│ │ │ │ │ │ ├── from_test_parse_error_15
│ │ │ │ │ │ ├── from_test_parse_error_16
│ │ │ │ │ │ ├── from_test_parse_error_17
│ │ │ │ │ │ ├── from_test_parse_error_18
│ │ │ │ │ │ ├── from_test_parse_error_19
│ │ │ │ │ │ ├── from_test_parse_error_2
│ │ │ │ │ │ ├── from_test_parse_error_3
│ │ │ │ │ │ ├── from_test_parse_error_4
│ │ │ │ │ │ ├── from_test_parse_error_5
│ │ │ │ │ │ ├── from_test_parse_error_6
│ │ │ │ │ │ ├── from_test_parse_error_7
│ │ │ │ │ │ ├── from_test_parse_error_8
│ │ │ │ │ │ ├── from_test_parse_error_9
│ │ │ │ │ │ └── minimal
│ │ │ │ │ ├── fuzz.go
│ │ │ │ │ ├── json_decode.go
│ │ │ │ │ ├── json_decode_test.go
│ │ │ │ │ ├── testdata/
│ │ │ │ │ │ ├── json2
│ │ │ │ │ │ ├── protobuf
│ │ │ │ │ │ └── text
│ │ │ │ │ ├── text_create.go
│ │ │ │ │ ├── text_create_test.go
│ │ │ │ │ ├── text_parse.go
│ │ │ │ │ └── text_parse_test.go
│ │ │ │ ├── model/
│ │ │ │ │ ├── fingerprinting.go
│ │ │ │ │ ├── labels.go
│ │ │ │ │ ├── labels_test.go
│ │ │ │ │ ├── labelset.go
│ │ │ │ │ ├── metric.go
│ │ │ │ │ ├── metric_test.go
│ │ │ │ │ ├── model.go
│ │ │ │ │ ├── signature.go
│ │ │ │ │ ├── signature_test.go
│ │ │ │ │ ├── time.go
│ │ │ │ │ ├── time_test.go
│ │ │ │ │ ├── value.go
│ │ │ │ │ └── value_test.go
│ │ │ │ └── route/
│ │ │ │ └── route.go
│ │ │ └── procfs/
│ │ │ ├── .travis.yml
│ │ │ ├── AUTHORS.md
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── NOTICE
│ │ │ ├── README.md
│ │ │ ├── doc.go
│ │ │ ├── fixtures/
│ │ │ │ ├── 26231/
│ │ │ │ │ ├── cmdline
│ │ │ │ │ ├── fd/
│ │ │ │ │ │ ├── 0
│ │ │ │ │ │ ├── 1
│ │ │ │ │ │ ├── 2
│ │ │ │ │ │ ├── 3
│ │ │ │ │ │ └── 4
│ │ │ │ │ ├── limits
│ │ │ │ │ └── stat
│ │ │ │ ├── 584/
│ │ │ │ │ └── stat
│ │ │ │ └── stat
│ │ │ ├── fs.go
│ │ │ ├── fs_test.go
│ │ │ ├── proc.go
│ │ │ ├── proc_limits.go
│ │ │ ├── proc_limits_test.go
│ │ │ ├── proc_stat.go
│ │ │ ├── proc_stat_test.go
│ │ │ ├── proc_test.go
│ │ │ ├── stat.go
│ │ │ └── stat_test.go
│ │ ├── russross/
│ │ │ └── blackfriday/
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.md
│ │ │ ├── block.go
│ │ │ ├── block_test.go
│ │ │ ├── html.go
│ │ │ ├── inline.go
│ │ │ ├── inline_test.go
│ │ │ ├── latex.go
│ │ │ ├── markdown.go
│ │ │ ├── smartypants.go
│ │ │ ├── upskirtref/
│ │ │ │ ├── Amps and angle encoding.html
│ │ │ │ ├── Amps and angle encoding.text
│ │ │ │ ├── Auto links.html
│ │ │ │ ├── Auto links.text
│ │ │ │ ├── Backslash escapes.html
│ │ │ │ ├── Backslash escapes.text
│ │ │ │ ├── Blockquotes with code blocks.html
│ │ │ │ ├── Blockquotes with code blocks.text
│ │ │ │ ├── Code Blocks.html
│ │ │ │ ├── Code Blocks.text
│ │ │ │ ├── Code Spans.html
│ │ │ │ ├── Code Spans.text
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines no empty line before block.html
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines no empty line before block.text
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.html
│ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.text
│ │ │ │ ├── Horizontal rules.html
│ │ │ │ ├── Horizontal rules.text
│ │ │ │ ├── Inline HTML (Advanced).html
│ │ │ │ ├── Inline HTML (Advanced).text
│ │ │ │ ├── Inline HTML (Simple).html
│ │ │ │ ├── Inline HTML (Simple).text
│ │ │ │ ├── Inline HTML comments.html
│ │ │ │ ├── Inline HTML comments.text
│ │ │ │ ├── Links, inline style.html
│ │ │ │ ├── Links, inline style.text
│ │ │ │ ├── Links, reference style.html
│ │ │ │ ├── Links, reference style.text
│ │ │ │ ├── Links, shortcut references.html
│ │ │ │ ├── Links, shortcut references.text
│ │ │ │ ├── Literal quotes in titles.html
│ │ │ │ ├── Literal quotes in titles.text
│ │ │ │ ├── Markdown Documentation - Basics.html
│ │ │ │ ├── Markdown Documentation - Basics.text
│ │ │ │ ├── Markdown Documentation - Syntax.html
│ │ │ │ ├── Markdown Documentation - Syntax.text
│ │ │ │ ├── Nested blockquotes.html
│ │ │ │ ├── Nested blockquotes.text
│ │ │ │ ├── Ordered and unordered lists.html
│ │ │ │ ├── Ordered and unordered lists.text
│ │ │ │ ├── Strong and em together.html
│ │ │ │ ├── Strong and em together.text
│ │ │ │ ├── Tabs.html
│ │ │ │ ├── Tabs.text
│ │ │ │ ├── Tidyness.html
│ │ │ │ └── Tidyness.text
│ │ │ └── upskirtref_test.go
│ │ ├── shurcooL/
│ │ │ └── sanitized_anchor_name/
│ │ │ ├── .travis.yml
│ │ │ ├── README.md
│ │ │ ├── main.go
│ │ │ └── main_test.go
│ │ ├── spf13/
│ │ │ ├── cobra/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .mailmap
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ ├── bash_completions.go
│ │ │ │ ├── bash_completions.md
│ │ │ │ ├── bash_completions_test.go
│ │ │ │ ├── cobra/
│ │ │ │ │ ├── cmd/
│ │ │ │ │ │ ├── add.go
│ │ │ │ │ │ ├── helpers.go
│ │ │ │ │ │ ├── helpers_test.go
│ │ │ │ │ │ ├── init.go
│ │ │ │ │ │ ├── licenses.go
│ │ │ │ │ │ └── root.go
│ │ │ │ │ └── main.go
│ │ │ │ ├── cobra.go
│ │ │ │ ├── cobra_test.go
│ │ │ │ ├── command.go
│ │ │ │ ├── command_test.go
│ │ │ │ ├── doc_util.go
│ │ │ │ ├── examples_test.go
│ │ │ │ ├── man_docs.go
│ │ │ │ ├── man_docs.md
│ │ │ │ ├── man_docs_test.go
│ │ │ │ ├── md_docs.go
│ │ │ │ ├── md_docs.md
│ │ │ │ └── md_docs_test.go
│ │ │ └── pflag/
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bool.go
│ │ │ ├── bool_test.go
│ │ │ ├── count.go
│ │ │ ├── count_test.go
│ │ │ ├── duration.go
│ │ │ ├── example_test.go
│ │ │ ├── export_test.go
│ │ │ ├── flag.go
│ │ │ ├── flag_test.go
│ │ │ ├── float32.go
│ │ │ ├── float64.go
│ │ │ ├── golangflag.go
│ │ │ ├── golangflag_test.go
│ │ │ ├── int.go
│ │ │ ├── int32.go
│ │ │ ├── int64.go
│ │ │ ├── int8.go
│ │ │ ├── int_slice.go
│ │ │ ├── int_slice_test.go
│ │ │ ├── ip.go
│ │ │ ├── ip_test.go
│ │ │ ├── ipmask.go
│ │ │ ├── ipnet.go
│ │ │ ├── ipnet_test.go
│ │ │ ├── string.go
│ │ │ ├── string_slice.go
│ │ │ ├── string_slice_test.go
│ │ │ ├── uint.go
│ │ │ ├── uint16.go
│ │ │ ├── uint32.go
│ │ │ ├── uint64.go
│ │ │ ├── uint8.go
│ │ │ └── verify/
│ │ │ ├── all.sh
│ │ │ ├── gofmt.sh
│ │ │ └── golint.sh
│ │ └── ugorji/
│ │ └── go/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── codec/
│ │ │ ├── 0doc.go
│ │ │ ├── README.md
│ │ │ ├── binc.go
│ │ │ ├── cbor.go
│ │ │ ├── cbor_test.go
│ │ │ ├── codec_test.go
│ │ │ ├── codecgen/
│ │ │ │ ├── README.md
│ │ │ │ ├── gen.go
│ │ │ │ └── z.go
│ │ │ ├── codecgen_test.go
│ │ │ ├── decode.go
│ │ │ ├── encode.go
│ │ │ ├── fast-path.generated.go
│ │ │ ├── fast-path.go.tmpl
│ │ │ ├── fast-path.not.go
│ │ │ ├── gen-dec-array.go.tmpl
│ │ │ ├── gen-dec-map.go.tmpl
│ │ │ ├── gen-helper.generated.go
│ │ │ ├── gen-helper.go.tmpl
│ │ │ ├── gen.generated.go
│ │ │ ├── gen.go
│ │ │ ├── helper.go
│ │ │ ├── helper_internal.go
│ │ │ ├── helper_not_unsafe.go
│ │ │ ├── helper_test.go
│ │ │ ├── helper_unsafe.go
│ │ │ ├── json.go
│ │ │ ├── msgpack.go
│ │ │ ├── noop.go
│ │ │ ├── prebuild.go
│ │ │ ├── prebuild.sh
│ │ │ ├── py_test.go
│ │ │ ├── rpc.go
│ │ │ ├── simple.go
│ │ │ ├── test-cbor-goldens.json
│ │ │ ├── test.py
│ │ │ ├── tests.sh
│ │ │ ├── time.go
│ │ │ └── values_test.go
│ │ └── msgpack.org.md
│ ├── golang.org/
│ │ └── x/
│ │ ├── crypto/
│ │ │ ├── .gitattributes
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── README
│ │ │ ├── bcrypt/
│ │ │ │ ├── base64.go
│ │ │ │ ├── bcrypt.go
│ │ │ │ └── bcrypt_test.go
│ │ │ ├── blowfish/
│ │ │ │ ├── block.go
│ │ │ │ ├── blowfish_test.go
│ │ │ │ ├── cipher.go
│ │ │ │ └── const.go
│ │ │ ├── bn256/
│ │ │ │ ├── bn256.go
│ │ │ │ ├── bn256_test.go
│ │ │ │ ├── constants.go
│ │ │ │ ├── curve.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── gfp12.go
│ │ │ │ ├── gfp2.go
│ │ │ │ ├── gfp6.go
│ │ │ │ ├── optate.go
│ │ │ │ └── twist.go
│ │ │ ├── cast5/
│ │ │ │ ├── cast5.go
│ │ │ │ └── cast5_test.go
│ │ │ ├── codereview.cfg
│ │ │ ├── curve25519/
│ │ │ │ ├── const_amd64.s
│ │ │ │ ├── cswap_amd64.s
│ │ │ │ ├── curve25519.go
│ │ │ │ ├── curve25519_test.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── freeze_amd64.s
│ │ │ │ ├── ladderstep_amd64.s
│ │ │ │ ├── mont25519_amd64.go
│ │ │ │ ├── mul_amd64.s
│ │ │ │ └── square_amd64.s
│ │ │ ├── hkdf/
│ │ │ │ ├── example_test.go
│ │ │ │ ├── hkdf.go
│ │ │ │ └── hkdf_test.go
│ │ │ ├── md4/
│ │ │ │ ├── md4.go
│ │ │ │ ├── md4_test.go
│ │ │ │ └── md4block.go
│ │ │ ├── nacl/
│ │ │ │ ├── box/
│ │ │ │ │ ├── box.go
│ │ │ │ │ └── box_test.go
│ │ │ │ └── secretbox/
│ │ │ │ ├── secretbox.go
│ │ │ │ └── secretbox_test.go
│ │ │ ├── ocsp/
│ │ │ │ ├── ocsp.go
│ │ │ │ └── ocsp_test.go
│ │ │ ├── openpgp/
│ │ │ │ ├── armor/
│ │ │ │ │ ├── armor.go
│ │ │ │ │ ├── armor_test.go
│ │ │ │ │ └── encode.go
│ │ │ │ ├── canonical_text.go
│ │ │ │ ├── canonical_text_test.go
│ │ │ │ ├── clearsign/
│ │ │ │ │ ├── clearsign.go
│ │ │ │ │ └── clearsign_test.go
│ │ │ │ ├── elgamal/
│ │ │ │ │ ├── elgamal.go
│ │ │ │ │ └── elgamal_test.go
│ │ │ │ ├── errors/
│ │ │ │ │ └── errors.go
│ │ │ │ ├── keys.go
│ │ │ │ ├── keys_test.go
│ │ │ │ ├── packet/
│ │ │ │ │ ├── compressed.go
│ │ │ │ │ ├── compressed_test.go
│ │ │ │ │ ├── config.go
│ │ │ │ │ ├── encrypted_key.go
│ │ │ │ │ ├── encrypted_key_test.go
│ │ │ │ │ ├── literal.go
│ │ │ │ │ ├── ocfb.go
│ │ │ │ │ ├── ocfb_test.go
│ │ │ │ │ ├── one_pass_signature.go
│ │ │ │ │ ├── opaque.go
│ │ │ │ │ ├── opaque_test.go
│ │ │ │ │ ├── packet.go
│ │ │ │ │ ├── packet_test.go
│ │ │ │ │ ├── private_key.go
│ │ │ │ │ ├── private_key_test.go
│ │ │ │ │ ├── public_key.go
│ │ │ │ │ ├── public_key_test.go
│ │ │ │ │ ├── public_key_v3.go
│ │ │ │ │ ├── public_key_v3_test.go
│ │ │ │ │ ├── reader.go
│ │ │ │ │ ├── signature.go
│ │ │ │ │ ├── signature_test.go
│ │ │ │ │ ├── signature_v3.go
│ │ │ │ │ ├── signature_v3_test.go
│ │ │ │ │ ├── symmetric_key_encrypted.go
│ │ │ │ │ ├── symmetric_key_encrypted_test.go
│ │ │ │ │ ├── symmetrically_encrypted.go
│ │ │ │ │ ├── symmetrically_encrypted_test.go
│ │ │ │ │ ├── userattribute.go
│ │ │ │ │ ├── userattribute_test.go
│ │ │ │ │ ├── userid.go
│ │ │ │ │ └── userid_test.go
│ │ │ │ ├── read.go
│ │ │ │ ├── read_test.go
│ │ │ │ ├── s2k/
│ │ │ │ │ ├── s2k.go
│ │ │ │ │ └── s2k_test.go
│ │ │ │ ├── write.go
│ │ │ │ └── write_test.go
│ │ │ ├── otr/
│ │ │ │ ├── libotr_test_helper.c
│ │ │ │ ├── otr.go
│ │ │ │ ├── otr_test.go
│ │ │ │ └── smp.go
│ │ │ ├── pbkdf2/
│ │ │ │ ├── pbkdf2.go
│ │ │ │ └── pbkdf2_test.go
│ │ │ ├── poly1305/
│ │ │ │ ├── const_amd64.s
│ │ │ │ ├── poly1305.go
│ │ │ │ ├── poly1305_amd64.s
│ │ │ │ ├── poly1305_test.go
│ │ │ │ ├── sum_amd64.go
│ │ │ │ └── sum_ref.go
│ │ │ ├── ripemd160/
│ │ │ │ ├── ripemd160.go
│ │ │ │ ├── ripemd160_test.go
│ │ │ │ └── ripemd160block.go
│ │ │ ├── salsa20/
│ │ │ │ ├── salsa/
│ │ │ │ │ ├── hsalsa20.go
│ │ │ │ │ ├── salsa2020_amd64.s
│ │ │ │ │ ├── salsa208.go
│ │ │ │ │ ├── salsa20_amd64.go
│ │ │ │ │ ├── salsa20_ref.go
│ │ │ │ │ └── salsa_test.go
│ │ │ │ ├── salsa20.go
│ │ │ │ └── salsa20_test.go
│ │ │ ├── scrypt/
│ │ │ │ ├── scrypt.go
│ │ │ │ └── scrypt_test.go
│ │ │ ├── sha3/
│ │ │ │ ├── doc.go
│ │ │ │ ├── hashes.go
│ │ │ │ ├── keccakf.go
│ │ │ │ ├── register.go
│ │ │ │ ├── sha3.go
│ │ │ │ ├── sha3_test.go
│ │ │ │ ├── shake.go
│ │ │ │ ├── testdata/
│ │ │ │ │ └── keccakKats.json.deflate
│ │ │ │ ├── xor.go
│ │ │ │ ├── xor_generic.go
│ │ │ │ └── xor_unaligned.go
│ │ │ ├── ssh/
│ │ │ │ ├── agent/
│ │ │ │ │ ├── client.go
│ │ │ │ │ ├── client_test.go
│ │ │ │ │ ├── forward.go
│ │ │ │ │ ├── keyring.go
│ │ │ │ │ ├── server.go
│ │ │ │ │ ├── server_test.go
│ │ │ │ │ └── testdata_test.go
│ │ │ │ ├── benchmark_test.go
│ │ │ │ ├── buffer.go
│ │ │ │ ├── buffer_test.go
│ │ │ │ ├── certs.go
│ │ │ │ ├── certs_test.go
│ │ │ │ ├── channel.go
│ │ │ │ ├── cipher.go
│ │ │ │ ├── cipher_test.go
│ │ │ │ ├── client.go
│ │ │ │ ├── client_auth.go
│ │ │ │ ├── client_auth_test.go
│ │ │ │ ├── client_test.go
│ │ │ │ ├── common.go
│ │ │ │ ├── connection.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── handshake.go
│ │ │ │ ├── handshake_test.go
│ │ │ │ ├── kex.go
│ │ │ │ ├── kex_test.go
│ │ │ │ ├── keys.go
│ │ │ │ ├── keys_test.go
│ │ │ │ ├── mac.go
│ │ │ │ ├── mempipe_test.go
│ │ │ │ ├── messages.go
│ │ │ │ ├── messages_test.go
│ │ │ │ ├── mux.go
│ │ │ │ ├── mux_test.go
│ │ │ │ ├── server.go
│ │ │ │ ├── session.go
│ │ │ │ ├── session_test.go
│ │ │ │ ├── tcpip.go
│ │ │ │ ├── tcpip_test.go
│ │ │ │ ├── terminal/
│ │ │ │ │ ├── terminal.go
│ │ │ │ │ ├── terminal_test.go
│ │ │ │ │ ├── util.go
│ │ │ │ │ ├── util_bsd.go
│ │ │ │ │ ├── util_linux.go
│ │ │ │ │ └── util_windows.go
│ │ │ │ ├── test/
│ │ │ │ │ ├── agent_unix_test.go
│ │ │ │ │ ├── cert_test.go
│ │ │ │ │ ├── doc.go
│ │ │ │ │ ├── forward_unix_test.go
│ │ │ │ │ ├── session_test.go
│ │ │ │ │ ├── tcpip_test.go
│ │ │ │ │ ├── test_unix_test.go
│ │ │ │ │ └── testdata_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ ├── doc.go
│ │ │ │ │ └── keys.go
│ │ │ │ ├── testdata_test.go
│ │ │ │ ├── transport.go
│ │ │ │ └── transport_test.go
│ │ │ ├── twofish/
│ │ │ │ ├── twofish.go
│ │ │ │ └── twofish_test.go
│ │ │ ├── xtea/
│ │ │ │ ├── block.go
│ │ │ │ ├── cipher.go
│ │ │ │ └── xtea_test.go
│ │ │ └── xts/
│ │ │ ├── xts.go
│ │ │ └── xts_test.go
│ │ ├── net/
│ │ │ ├── .gitattributes
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── CONTRIBUTORS
│ │ │ ├── LICENSE
│ │ │ ├── PATENTS
│ │ │ ├── README
│ │ │ ├── codereview.cfg
│ │ │ ├── context/
│ │ │ │ ├── context.go
│ │ │ │ ├── context_test.go
│ │ │ │ ├── ctxhttp/
│ │ │ │ │ ├── cancelreq.go
│ │ │ │ │ ├── cancelreq_go14.go
│ │ │ │ │ ├── ctxhttp.go
│ │ │ │ │ └── ctxhttp_test.go
│ │ │ │ └── withtimeout_test.go
│ │ │ ├── dict/
│ │ │ │ └── dict.go
│ │ │ ├── html/
│ │ │ │ ├── atom/
│ │ │ │ │ ├── atom.go
│ │ │ │ │ ├── atom_test.go
│ │ │ │ │ ├── gen.go
│ │ │ │ │ ├── table.go
│ │ │ │ │ └── table_test.go
│ │ │ │ ├── charset/
│ │ │ │ │ ├── charset.go
│ │ │ │ │ ├── charset_test.go
│ │ │ │ │ ├── gen.go
│ │ │ │ │ ├── table.go
│ │ │ │ │ └── testdata/
│ │ │ │ │ ├── HTTP-charset.html
│ │ │ │ │ ├── HTTP-vs-UTF-8-BOM.html
│ │ │ │ │ ├── HTTP-vs-meta-charset.html
│ │ │ │ │ ├── HTTP-vs-meta-content.html
│ │ │ │ │ ├── No-encoding-declaration.html
│ │ │ │ │ ├── README
│ │ │ │ │ ├── UTF-16BE-BOM.html
│ │ │ │ │ ├── UTF-16LE-BOM.html
│ │ │ │ │ ├── UTF-8-BOM-vs-meta-charset.html
│ │ │ │ │ ├── UTF-8-BOM-vs-meta-content.html
│ │ │ │ │ ├── meta-charset-attribute.html
│ │ │ │ │ └── meta-content-attribute.html
│ │ │ │ ├── const.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── doctype.go
│ │ │ │ ├── entity.go
│ │ │ │ ├── entity_test.go
│ │ │ │ ├── escape.go
│ │ │ │ ├── escape_test.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── foreign.go
│ │ │ │ ├── node.go
│ │ │ │ ├── node_test.go
│ │ │ │ ├── parse.go
│ │ │ │ ├── parse_test.go
│ │ │ │ ├── render.go
│ │ │ │ ├── render_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ ├── go1.html
│ │ │ │ │ └── webkit/
│ │ │ │ │ └── README
│ │ │ │ ├── token.go
│ │ │ │ └── token_test.go
│ │ │ ├── http2/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Dockerfile
│ │ │ │ ├── Makefile
│ │ │ │ ├── README
│ │ │ │ ├── buffer.go
│ │ │ │ ├── buffer_test.go
│ │ │ │ ├── errors.go
│ │ │ │ ├── errors_test.go
│ │ │ │ ├── flow.go
│ │ │ │ ├── flow_test.go
│ │ │ │ ├── frame.go
│ │ │ │ ├── frame_test.go
│ │ │ │ ├── gotrack.go
│ │ │ │ ├── gotrack_test.go
│ │ │ │ ├── h2i/
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── h2i.go
│ │ │ │ ├── headermap.go
│ │ │ │ ├── hpack/
│ │ │ │ │ ├── encode.go
│ │ │ │ │ ├── encode_test.go
│ │ │ │ │ ├── hpack.go
│ │ │ │ │ ├── hpack_test.go
│ │ │ │ │ ├── huffman.go
│ │ │ │ │ └── tables.go
│ │ │ │ ├── http2.go
│ │ │ │ ├── http2_test.go
│ │ │ │ ├── pipe.go
│ │ │ │ ├── pipe_test.go
│ │ │ │ ├── priority_test.go
│ │ │ │ ├── server.go
│ │ │ │ ├── server_test.go
│ │ │ │ ├── testdata/
│ │ │ │ │ └── draft-ietf-httpbis-http2.xml
│ │ │ │ ├── transport.go
│ │ │ │ ├── transport_test.go
│ │ │ │ ├── write.go
│ │ │ │ ├── writesched.go
│ │ │ │ └── z_spec_test.go
│ │ │ ├── icmp/
│ │ │ │ ├── dstunreach.go
│ │ │ │ ├── echo.go
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── extension.go
│ │ │ │ ├── extension_test.go
│ │ │ │ ├── helper_posix.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── ipv4.go
│ │ │ │ ├── ipv4_test.go
│ │ │ │ ├── ipv6.go
│ │ │ │ ├── listen_posix.go
│ │ │ │ ├── listen_stub.go
│ │ │ │ ├── message.go
│ │ │ │ ├── message_test.go
│ │ │ │ ├── messagebody.go
│ │ │ │ ├── mpls.go
│ │ │ │ ├── multipart.go
│ │ │ │ ├── multipart_test.go
│ │ │ │ ├── packettoobig.go
│ │ │ │ ├── paramprob.go
│ │ │ │ ├── ping_test.go
│ │ │ │ ├── sys_freebsd.go
│ │ │ │ └── timeexceeded.go
│ │ │ ├── idna/
│ │ │ │ ├── idna.go
│ │ │ │ ├── idna_test.go
│ │ │ │ ├── punycode.go
│ │ │ │ └── punycode_test.go
│ │ │ ├── internal/
│ │ │ │ ├── iana/
│ │ │ │ │ ├── const.go
│ │ │ │ │ └── gen.go
│ │ │ │ ├── nettest/
│ │ │ │ │ ├── error_posix.go
│ │ │ │ │ ├── error_stub.go
│ │ │ │ │ ├── interface.go
│ │ │ │ │ ├── rlimit.go
│ │ │ │ │ ├── rlimit_stub.go
│ │ │ │ │ ├── rlimit_unix.go
│ │ │ │ │ ├── rlimit_windows.go
│ │ │ │ │ ├── stack.go
│ │ │ │ │ ├── stack_stub.go
│ │ │ │ │ ├── stack_unix.go
│ │ │ │ │ └── stack_windows.go
│ │ │ │ └── timeseries/
│ │ │ │ ├── timeseries.go
│ │ │ │ └── timeseries_test.go
│ │ │ ├── ipv4/
│ │ │ │ ├── control.go
│ │ │ │ ├── control_bsd.go
│ │ │ │ ├── control_pktinfo.go
│ │ │ │ ├── control_stub.go
│ │ │ │ ├── control_unix.go
│ │ │ │ ├── control_windows.go
│ │ │ │ ├── defs_darwin.go
│ │ │ │ ├── defs_dragonfly.go
│ │ │ │ ├── defs_freebsd.go
│ │ │ │ ├── defs_linux.go
│ │ │ │ ├── defs_netbsd.go
│ │ │ │ ├── defs_openbsd.go
│ │ │ │ ├── defs_solaris.go
│ │ │ │ ├── dgramopt_posix.go
│ │ │ │ ├── dgramopt_stub.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── gen.go
│ │ │ │ ├── genericopt_posix.go
│ │ │ │ ├── genericopt_stub.go
│ │ │ │ ├── header.go
│ │ │ │ ├── header_test.go
│ │ │ │ ├── helper.go
│ │ │ │ ├── helper_stub.go
│ │ │ │ ├── helper_unix.go
│ │ │ │ ├── helper_windows.go
│ │ │ │ ├── iana.go
│ │ │ │ ├── icmp.go
│ │ │ │ ├── icmp_linux.go
│ │ │ │ ├── icmp_stub.go
│ │ │ │ ├── icmp_test.go
│ │ │ │ ├── mocktransponder_test.go
│ │ │ │ ├── multicast_test.go
│ │ │ │ ├── multicastlistener_test.go
│ │ │ │ ├── multicastsockopt_test.go
│ │ │ │ ├── packet.go
│ │ │ │ ├── payload.go
│ │ │ │ ├── payload_cmsg.go
│ │ │ │ ├── payload_nocmsg.go
│ │ │ │ ├── readwrite_test.go
│ │ │ │ ├── sockopt.go
│ │ │ │ ├── sockopt_asmreq.go
│ │ │ │ ├── sockopt_asmreq_stub.go
│ │ │ │ ├── sockopt_asmreq_unix.go
│ │ │ │ ├── sockopt_asmreq_windows.go
│ │ │ │ ├── sockopt_asmreqn_stub.go
│ │ │ │ ├── sockopt_asmreqn_unix.go
│ │ │ │ ├── sockopt_ssmreq_stub.go
│ │ │ │ ├── sockopt_ssmreq_unix.go
│ │ │ │ ├── sockopt_stub.go
│ │ │ │ ├── sockopt_unix.go
│ │ │ │ ├── sockopt_windows.go
│ │ │ │ ├── sys_bsd.go
│ │ │ │ ├── sys_darwin.go
│ │ │ │ ├── sys_freebsd.go
│ │ │ │ ├── sys_linux.go
│ │ │ │ ├── sys_openbsd.go
│ │ │ │ ├── sys_stub.go
│ │ │ │ ├── sys_windows.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_unix.go
│ │ │ │ ├── thunk_linux_386.s
│ │ │ │ ├── unicast_test.go
│ │ │ │ ├── unicastsockopt_test.go
│ │ │ │ ├── zsys_darwin.go
│ │ │ │ ├── zsys_dragonfly.go
│ │ │ │ ├── zsys_freebsd_386.go
│ │ │ │ ├── zsys_freebsd_amd64.go
│ │ │ │ ├── zsys_freebsd_arm.go
│ │ │ │ ├── zsys_linux_386.go
│ │ │ │ ├── zsys_linux_amd64.go
│ │ │ │ ├── zsys_linux_arm.go
│ │ │ │ ├── zsys_linux_arm64.go
│ │ │ │ ├── zsys_linux_ppc64.go
│ │ │ │ ├── zsys_linux_ppc64le.go
│ │ │ │ ├── zsys_netbsd.go
│ │ │ │ ├── zsys_openbsd.go
│ │ │ │ └── zsys_solaris.go
│ │ │ ├── ipv6/
│ │ │ │ ├── control.go
│ │ │ │ ├── control_rfc2292_unix.go
│ │ │ │ ├── control_rfc3542_unix.go
│ │ │ │ ├── control_stub.go
│ │ │ │ ├── control_unix.go
│ │ │ │ ├── control_windows.go
│ │ │ │ ├── defs_darwin.go
│ │ │ │ ├── defs_dragonfly.go
│ │ │ │ ├── defs_freebsd.go
│ │ │ │ ├── defs_linux.go
│ │ │ │ ├── defs_netbsd.go
│ │ │ │ ├── defs_openbsd.go
│ │ │ │ ├── defs_solaris.go
│ │ │ │ ├── dgramopt_posix.go
│ │ │ │ ├── dgramopt_stub.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── example_test.go
│ │ │ │ ├── gen.go
│ │ │ │ ├── genericopt_posix.go
│ │ │ │ ├── genericopt_stub.go
│ │ │ │ ├── header.go
│ │ │ │ ├── header_test.go
│ │ │ │ ├── helper.go
│ │ │ │ ├── helper_stub.go
│ │ │ │ ├── helper_unix.go
│ │ │ │ ├── helper_windows.go
│ │ │ │ ├── iana.go
│ │ │ │ ├── icmp.go
│ │ │ │ ├── icmp_bsd.go
│ │ │ │ ├── icmp_linux.go
│ │ │ │ ├── icmp_solaris.go
│ │ │ │ ├── icmp_stub.go
│ │ │ │ ├── icmp_test.go
│ │ │ │ ├── icmp_windows.go
│ │ │ │ ├── mocktransponder_test.go
│ │ │ │ ├── multicast_test.go
│ │ │ │ ├── multicastlistener_test.go
│ │ │ │ ├── multicastsockopt_test.go
│ │ │ │ ├── payload.go
│ │ │ │ ├── payload_cmsg.go
│ │ │ │ ├── payload_nocmsg.go
│ │ │ │ ├── readwrite_test.go
│ │ │ │ ├── sockopt.go
│ │ │ │ ├── sockopt_asmreq_unix.go
│ │ │ │ ├── sockopt_asmreq_windows.go
│ │ │ │ ├── sockopt_ssmreq_stub.go
│ │ │ │ ├── sockopt_ssmreq_unix.go
│ │ │ │ ├── sockopt_stub.go
│ │ │ │ ├── sockopt_test.go
│ │ │ │ ├── sockopt_unix.go
│ │ │ │ ├── sockopt_windows.go
│ │ │ │ ├── sys_bsd.go
│ │ │ │ ├── sys_darwin.go
│ │ │ │ ├── sys_freebsd.go
│ │ │ │ ├── sys_linux.go
│ │ │ │ ├── sys_stub.go
│ │ │ │ ├── sys_windows.go
│ │ │ │ ├── syscall_linux_386.go
│ │ │ │ ├── syscall_unix.go
│ │ │ │ ├── thunk_linux_386.s
│ │ │ │ ├── unicast_test.go
│ │ │ │ ├── unicastsockopt_test.go
│ │ │ │ ├── zsys_darwin.go
│ │ │ │ ├── zsys_dragonfly.go
│ │ │ │ ├── zsys_freebsd_386.go
│ │ │ │ ├── zsys_freebsd_amd64.go
│ │ │ │ ├── zsys_freebsd_arm.go
│ │ │ │ ├── zsys_linux_386.go
│ │ │ │ ├── zsys_linux_amd64.go
│ │ │ │ ├── zsys_linux_arm.go
│ │ │ │ ├── zsys_linux_arm64.go
│ │ │ │ ├── zsys_linux_ppc64.go
│ │ │ │ ├── zsys_linux_ppc64le.go
│ │ │ │ ├── zsys_netbsd.go
│ │ │ │ ├── zsys_openbsd.go
│ │ │ │ └── zsys_solaris.go
│ │ │ ├── netutil/
│ │ │ │ ├── listen.go
│ │ │ │ └── listen_test.go
│ │ │ ├── proxy/
│ │ │ │ ├── direct.go
│ │ │ │ ├── per_host.go
│ │ │ │ ├── per_host_test.go
│ │ │ │ ├── proxy.go
│ │ │ │ ├── proxy_test.go
│ │ │ │ └── socks5.go
│ │ │ ├── publicsuffix/
│ │ │ │ ├── gen.go
│ │ │ │ ├── list.go
│ │ │ │ ├── list_test.go
│ │ │ │ ├── table.go
│ │ │ │ └── table_test.go
│ │ │ ├── trace/
│ │ │ │ ├── events.go
│ │ │ │ ├── histogram.go
│ │ │ │ ├── histogram_test.go
│ │ │ │ ├── trace.go
│ │ │ │ └── trace_test.go
│ │ │ ├── webdav/
│ │ │ │ ├── file.go
│ │ │ │ ├── file_test.go
│ │ │ │ ├── if.go
│ │ │ │ ├── if_test.go
│ │ │ │ ├── internal/
│ │ │ │ │ └── xml/
│ │ │ │ │ ├── README
│ │ │ │ │ ├── atom_test.go
│ │ │ │ │ ├── example_test.go
│ │ │ │ │ ├── marshal.go
│ │ │ │ │ ├── marshal_test.go
│ │ │ │ │ ├── read.go
│ │ │ │ │ ├── read_test.go
│ │ │ │ │ ├── typeinfo.go
│ │ │ │ │ ├── xml.go
│ │ │ │ │ └── xml_test.go
│ │ │ │ ├── litmus_test_server.go
│ │ │ │ ├── lock.go
│ │ │ │ ├── lock_test.go
│ │ │ │ ├── prop.go
│ │ │ │ ├── prop_test.go
│ │ │ │ ├── webdav.go
│ │ │ │ ├── webdav_test.go
│ │ │ │ ├── xml.go
│ │ │ │ └── xml_test.go
│ │ │ └── websocket/
│ │ │ ├── client.go
│ │ │ ├── exampledial_test.go
│ │ │ ├── examplehandler_test.go
│ │ │ ├── hybi.go
│ │ │ ├── hybi_test.go
│ │ │ ├── server.go
│ │ │ ├── websocket.go
│ │ │ └── websocket_test.go
│ │ └── sys/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTING.md
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── README
│ │ ├── codereview.cfg
│ │ ├── plan9/
│ │ │ ├── asm.s
│ │ │ ├── asm_plan9_386.s
│ │ │ ├── asm_plan9_amd64.s
│ │ │ ├── const_plan9.go
│ │ │ ├── dir_plan9.go
│ │ │ ├── env_plan9.go
│ │ │ ├── env_unset.go
│ │ │ ├── errors_plan9.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mksyscall.pl
│ │ │ ├── mksysnum_plan9.sh
│ │ │ ├── pwd_go15_plan9.go
│ │ │ ├── pwd_plan9.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_plan9.go
│ │ │ ├── syscall_test.go
│ │ │ ├── zsyscall_plan9_386.go
│ │ │ ├── zsyscall_plan9_amd64.go
│ │ │ └── zsysnum_plan9.go
│ │ ├── unix/
│ │ │ ├── .gitignore
│ │ │ ├── asm.s
│ │ │ ├── asm_darwin_386.s
│ │ │ ├── asm_darwin_amd64.s
│ │ │ ├── asm_darwin_arm.s
│ │ │ ├── asm_darwin_arm64.s
│ │ │ ├── asm_dragonfly_386.s
│ │ │ ├── asm_dragonfly_amd64.s
│ │ │ ├── asm_freebsd_386.s
│ │ │ ├── asm_freebsd_amd64.s
│ │ │ ├── asm_freebsd_arm.s
│ │ │ ├── asm_linux_386.s
│ │ │ ├── asm_linux_amd64.s
│ │ │ ├── asm_linux_arm.s
│ │ │ ├── asm_linux_arm64.s
│ │ │ ├── asm_linux_ppc64x.s
│ │ │ ├── asm_netbsd_386.s
│ │ │ ├── asm_netbsd_amd64.s
│ │ │ ├── asm_netbsd_arm.s
│ │ │ ├── asm_openbsd_386.s
│ │ │ ├── asm_openbsd_amd64.s
│ │ │ ├── asm_solaris_amd64.s
│ │ │ ├── constants.go
│ │ │ ├── creds_test.go
│ │ │ ├── env_unix.go
│ │ │ ├── env_unset.go
│ │ │ ├── export_test.go
│ │ │ ├── flock.go
│ │ │ ├── flock_linux_32bit.go
│ │ │ ├── gccgo.go
│ │ │ ├── gccgo_c.c
│ │ │ ├── gccgo_linux_amd64.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mksyscall.pl
│ │ │ ├── mksyscall_solaris.pl
│ │ │ ├── mksysctl_openbsd.pl
│ │ │ ├── mksysnum_darwin.pl
│ │ │ ├── mksysnum_dragonfly.pl
│ │ │ ├── mksysnum_freebsd.pl
│ │ │ ├── mksysnum_linux.pl
│ │ │ ├── mksysnum_netbsd.pl
│ │ │ ├── mksysnum_openbsd.pl
│ │ │ ├── mmap_unix_test.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── sockcmsg_linux.go
│ │ │ ├── sockcmsg_unix.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_bsd.go
│ │ │ ├── syscall_bsd_test.go
│ │ │ ├── syscall_darwin.go
│ │ │ ├── syscall_darwin_386.go
│ │ │ ├── syscall_darwin_amd64.go
│ │ │ ├── syscall_darwin_arm.go
│ │ │ ├── syscall_darwin_arm64.go
│ │ │ ├── syscall_dragonfly.go
│ │ │ ├── syscall_dragonfly_386.go
│ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ ├── syscall_freebsd.go
│ │ │ ├── syscall_freebsd_386.go
│ │ │ ├── syscall_freebsd_amd64.go
│ │ │ ├── syscall_freebsd_arm.go
│ │ │ ├── syscall_freebsd_test.go
│ │ │ ├── syscall_linux.go
│ │ │ ├── syscall_linux_386.go
│ │ │ ├── syscall_linux_amd64.go
│ │ │ ├── syscall_linux_arm.go
│ │ │ ├── syscall_linux_arm64.go
│ │ │ ├── syscall_linux_ppc64x.go
│ │ │ ├── syscall_netbsd.go
│ │ │ ├── syscall_netbsd_386.go
│ │ │ ├── syscall_netbsd_amd64.go
│ │ │ ├── syscall_netbsd_arm.go
│ │ │ ├── syscall_no_getwd.go
│ │ │ ├── syscall_openbsd.go
│ │ │ ├── syscall_openbsd_386.go
│ │ │ ├── syscall_openbsd_amd64.go
│ │ │ ├── syscall_solaris.go
│ │ │ ├── syscall_solaris_amd64.go
│ │ │ ├── syscall_test.go
│ │ │ ├── syscall_unix.go
│ │ │ ├── syscall_unix_test.go
│ │ │ ├── types_darwin.go
│ │ │ ├── types_dragonfly.go
│ │ │ ├── types_freebsd.go
│ │ │ ├── types_linux.go
│ │ │ ├── types_netbsd.go
│ │ │ ├── types_openbsd.go
│ │ │ ├── types_solaris.go
│ │ │ ├── zerrors_darwin_386.go
│ │ │ ├── zerrors_darwin_amd64.go
│ │ │ ├── zerrors_darwin_arm.go
│ │ │ ├── zerrors_darwin_arm64.go
│ │ │ ├── zerrors_dragonfly_386.go
│ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ ├── zerrors_freebsd_386.go
│ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ ├── zerrors_freebsd_arm.go
│ │ │ ├── zerrors_linux_386.go
│ │ │ ├── zerrors_linux_amd64.go
│ │ │ ├── zerrors_linux_arm.go
│ │ │ ├── zerrors_linux_arm64.go
│ │ │ ├── zerrors_linux_ppc64.go
│ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ ├── zerrors_netbsd_386.go
│ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ ├── zerrors_netbsd_arm.go
│ │ │ ├── zerrors_openbsd_386.go
│ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ ├── zerrors_solaris_amd64.go
│ │ │ ├── zsyscall_darwin_386.go
│ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ ├── zsyscall_darwin_arm.go
│ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ ├── zsyscall_dragonfly_386.go
│ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ ├── zsyscall_freebsd_386.go
│ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ ├── zsyscall_linux_386.go
│ │ │ ├── zsyscall_linux_amd64.go
│ │ │ ├── zsyscall_linux_arm.go
│ │ │ ├── zsyscall_linux_arm64.go
│ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ ├── zsyscall_netbsd_386.go
│ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ ├── zsyscall_openbsd_386.go
│ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ ├── zsysctl_openbsd.go
│ │ │ ├── zsysnum_darwin_386.go
│ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ ├── zsysnum_darwin_arm.go
│ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ ├── zsysnum_dragonfly_386.go
│ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ ├── zsysnum_freebsd_386.go
│ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ ├── zsysnum_linux_386.go
│ │ │ ├── zsysnum_linux_amd64.go
│ │ │ ├── zsysnum_linux_arm.go
│ │ │ ├── zsysnum_linux_arm64.go
│ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ ├── zsysnum_netbsd_386.go
│ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ ├── zsysnum_openbsd_386.go
│ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ ├── zsysnum_solaris_amd64.go
│ │ │ ├── ztypes_darwin_386.go
│ │ │ ├── ztypes_darwin_amd64.go
│ │ │ ├── ztypes_darwin_arm.go
│ │ │ ├── ztypes_darwin_arm64.go
│ │ │ ├── ztypes_dragonfly_386.go
│ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ ├── ztypes_freebsd_386.go
│ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ ├── ztypes_freebsd_arm.go
│ │ │ ├── ztypes_linux_386.go
│ │ │ ├── ztypes_linux_amd64.go
│ │ │ ├── ztypes_linux_arm.go
│ │ │ ├── ztypes_linux_arm64.go
│ │ │ ├── ztypes_linux_ppc64.go
│ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ ├── ztypes_netbsd_386.go
│ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ ├── ztypes_netbsd_arm.go
│ │ │ ├── ztypes_openbsd_386.go
│ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ └── ztypes_solaris_amd64.go
│ │ └── windows/
│ │ ├── asm.s
│ │ ├── asm_windows_386.s
│ │ ├── asm_windows_amd64.s
│ │ ├── dll_windows.go
│ │ ├── env_unset.go
│ │ ├── env_windows.go
│ │ ├── eventlog.go
│ │ ├── exec_windows.go
│ │ ├── race.go
│ │ ├── race0.go
│ │ ├── registry/
│ │ │ ├── export_test.go
│ │ │ ├── key.go
│ │ │ ├── registry_test.go
│ │ │ ├── syscall.go
│ │ │ ├── value.go
│ │ │ └── zsyscall_windows.go
│ │ ├── security_windows.go
│ │ ├── service.go
│ │ ├── str.go
│ │ ├── svc/
│ │ │ ├── debug/
│ │ │ │ ├── log.go
│ │ │ │ └── service.go
│ │ │ ├── event.go
│ │ │ ├── eventlog/
│ │ │ │ ├── install.go
│ │ │ │ ├── log.go
│ │ │ │ └── log_test.go
│ │ │ ├── example/
│ │ │ │ ├── beep.go
│ │ │ │ ├── install.go
│ │ │ │ ├── main.go
│ │ │ │ ├── manage.go
│ │ │ │ └── service.go
│ │ │ ├── go12.c
│ │ │ ├── go12.go
│ │ │ ├── go13.go
│ │ │ ├── mgr/
│ │ │ │ ├── config.go
│ │ │ │ ├── mgr.go
│ │ │ │ ├── mgr_test.go
│ │ │ │ └── service.go
│ │ │ ├── security.go
│ │ │ ├── service.go
│ │ │ ├── svc_test.go
│ │ │ ├── sys_386.s
│ │ │ └── sys_amd64.s
│ │ ├── syscall.go
│ │ ├── syscall_test.go
│ │ ├── syscall_windows.go
│ │ ├── syscall_windows_test.go
│ │ ├── zsyscall_windows.go
│ │ ├── ztypes_windows.go
│ │ ├── ztypes_windows_386.go
│ │ └── ztypes_windows_amd64.go
│ ├── gopkg.in/
│ │ └── yaml.v2/
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── LICENSE.libyaml
│ │ ├── README.md
│ │ ├── apic.go
│ │ ├── decode.go
│ │ ├── decode_test.go
│ │ ├── emitterc.go
│ │ ├── encode.go
│ │ ├── encode_test.go
│ │ ├── parserc.go
│ │ ├── readerc.go
│ │ ├── resolve.go
│ │ ├── scannerc.go
│ │ ├── sorter.go
│ │ ├── suite_test.go
│ │ ├── writerc.go
│ │ ├── yaml.go
│ │ ├── yamlh.go
│ │ └── yamlprivateh.go
│ └── speter.net/
│ └── go/
│ └── exp/
│ └── math/
│ └── dec/
│ └── inf/
│ ├── LICENSE
│ ├── benchmark_test.go
│ ├── dec.go
│ ├── dec_go1_2_test.go
│ ├── dec_internal_test.go
│ ├── dec_test.go
│ ├── example_test.go
│ ├── rounder.go
│ ├── rounder_example_test.go
│ └── rounder_test.go
├── version/
│ ├── VERSION
│ └── info.go
└── winrm/
└── winrm.go
Showing preview only (9,112K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (115613 symbols across 2292 files)
FILE: ansible/ansible.go
constant AnsibleHostPodAnnotationPrefix (line 46) | AnsibleHostPodAnnotationPrefix = "pod.kansible.fabric8.io/"
constant HostInventoryAnnotation (line 49) | HostInventoryAnnotation = "kansible.fabric8.io/host-inventory"
constant HostNameAnnotation (line 52) | HostNameAnnotation = "kansible.fabric8.io/host-name"
constant HostAddressAnnotation (line 55) | HostAddressAnnotation = "kansible.fabric8.io/host-address"
constant IconAnnotation (line 58) | IconAnnotation = "fabric8.io/iconUrl"
constant IconURL (line 61) | IconURL = "https://cdn.rawgit.com/fabric8io/kansible/master/docs/images/...
constant WinRMShellAnnotationPrefix (line 64) | WinRMShellAnnotationPrefix = "winrm.shellid.kansible.fabric8.io/"
constant EnvHosts (line 67) | EnvHosts = "KANSIBLE_HOSTS"
constant EnvCommand (line 70) | EnvCommand = "KANSIBLE_COMMAND"
constant EnvRC (line 73) | EnvRC = "KANSIBLE_RC"
constant EnvNamespace (line 76) | EnvNamespace = "KANSIBLE_NAMESPACE"
constant EnvExportEnvVars (line 79) | EnvExportEnvVars = "KANSIBLE_EXPORT_ENV_VARS"
constant EnvPortForward (line 82) | EnvPortForward = "KANSIBLE_PORT_FORWARD"
constant EnvBash (line 86) | EnvBash = "KANSIBLE_BASH"
constant EnvIsBashShell (line 90) | EnvIsBashShell = "KANSIBLE_IS_BASH_SHELL"
constant PlaybookVolumeMount (line 93) | PlaybookVolumeMount = "/playbook"
constant AnsibleVariableHost (line 96) | AnsibleVariableHost = "ansible_host"
constant AnsibleVariableUser (line 99) | AnsibleVariableUser = "ansible_user"
constant AnsibleVariablePort (line 102) | AnsibleVariablePort = "ansible_port"
constant AnsibleVariablePrivateKey (line 105) | AnsibleVariablePrivateKey = "ansible_ssh_private_key_file"
constant AnsibleVariableConnection (line 108) | AnsibleVariableConnection = "ansible_connection"
constant AnsibleVariablePassword (line 111) | AnsibleVariablePassword = "ansible_ssh_pass"
constant ConnectionWinRM (line 114) | ConnectionWinRM = "winrm"
constant AppRunCommand (line 117) | AppRunCommand = "app_run_command"
constant gitURLPrefix (line 119) | gitURLPrefix = "url = "
constant gitConfig (line 120) | gitConfig = ".git/config"
type HostEntry (line 124) | type HostEntry struct
method write (line 838) | func (hostEntry HostEntry) write(buffer *bytes.Buffer) {
function LoadHostEntries (line 136) | func LoadHostEntries(inventoryFile string, hosts string) ([]*HostEntry, ...
function LoadHostEntriesFromText (line 183) | func LoadHostEntriesFromText(text string) ([]*HostEntry, error) {
function ChooseHostAndPrivateKey (line 200) | func ChooseHostAndPrivateKey(thisPodName string, hosts string, c *client...
function forwardPorts (line 331) | func forwardPorts(pod *api.Pod, hostEntry *HostEntry) error {
function forwardPortLoop (line 357) | func forwardPortLoop(name string, address string, forwardAddress string)...
function forwardPort (line 378) | func forwardPort(conn net.Conn, address string) {
function UpdateKansibleRC (line 398) | func UpdateKansibleRC(hostEntries []*HostEntry, hosts string, f *cmdutil...
function applyOtherKubernetesResources (line 526) | func applyOtherKubernetesResources(f *cmdutil.Factory, c *client.Client,...
function applyOtherKubernetesResource (line 563) | func applyOtherKubernetesResource(f *cmdutil.Factory, c *client.Client, ...
function ensureSCCExists (line 606) | func ensureSCCExists(ns string, serviceAccountName string) error {
function getCommandOutputString (line 660) | func getCommandOutputString(binary string, args []string, reader io.Read...
function runCommand (line 685) | func runCommand(binary string, args []string, reader io.Reader) error {
function generatePrivateKeySecrets (line 713) | func generatePrivateKeySecrets(c *client.Client, ns string, hostEntries ...
function findGitURL (line 765) | func findGitURL() (string, error) {
function removeHostEntry (line 785) | func removeHostEntry(hostEntries []*HostEntry, name string) []*HostEntry {
function GetHostEntryByName (line 799) | func GetHostEntryByName(hostEntries []*HostEntry, name string) *HostEntry {
function deletePodsForOldHosts (line 808) | func deletePodsForOldHosts(c *client.Client, ns string, annotations map[...
function random (line 823) | func random(min, max int) int {
function HostEntriesToString (line 829) | func HostEntriesToString(hostEntries []*HostEntry) string {
function parseHostEntry (line 891) | func parseHostEntry(text string) *HostEntry {
FILE: ansible/variables.go
constant AnsibleGlobalVariablesFile (line 29) | AnsibleGlobalVariablesFile = "group_vars/"
function LoadAnsibleVariables (line 34) | func LoadAnsibleVariables(hosts string) (map[string]string, error) {
function ReplaceVariables (line 56) | func ReplaceVariables(text string, variables map[string]string) string {
function LoadFileAndReplaceVariables (line 66) | func LoadFileAndReplaceVariables(filename string, variables map[string]s...
FILE: cmd/kill.go
function init (line 31) | func init() {
FILE: cmd/pod.go
function init (line 39) | func init() {
function generateBashScript (line 161) | func generateBashScript(file string, connection string) error {
FILE: cmd/rc.go
constant MessageFailedToCreateKubernetesClient (line 31) | MessageFailedToCreateKubernetesClient = "Failed to create Kubernetes cli...
function init (line 39) | func init() {
FILE: cmd/root.go
function init (line 51) | func init() {
function defaultClientConfig (line 58) | func defaultClientConfig(flags *pflag.FlagSet) clientcmd.ClientConfig {
FILE: cmd/run.go
function init (line 41) | func init() {
FILE: cmd/version.go
function init (line 53) | func init() {
FILE: k8s/k8s.go
function GetThisPodName (line 39) | func GetThisPodName() (string, error) {
function ReadReplicationControllerFromFile (line 55) | func ReadReplicationControllerFromFile(filename string) (*api.Replicatio...
function ReadReplicationController (line 64) | func ReadReplicationController(data []byte) (*api.ReplicationController,...
function PodIsRunning (line 73) | func PodIsRunning(pods *api.PodList, podName string) bool {
function GetFirstContainerOrCreate (line 84) | func GetFirstContainerOrCreate(rc *api.ReplicationController) *api.Conta...
function GetOrCreatePodSpec (line 94) | func GetOrCreatePodSpec(rc *api.ReplicationController) *api.PodSpec {
function GetContainerEnvVar (line 114) | func GetContainerEnvVar(container *api.Container, name string) string {
function EnsureContainerHasEnvVar (line 128) | func EnsureContainerHasEnvVar(container *api.Container, name string, val...
function EnsureContainerHasEnvVarFromField (line 145) | func EnsureContainerHasEnvVarFromField(container *api.Container, name st...
function EnsureContainerHasPreStopCommand (line 167) | func EnsureContainerHasPreStopCommand(container *api.Container, commands...
function EnsureContainerHasVolumeMount (line 183) | func EnsureContainerHasVolumeMount(container *api.Container, name string...
function EnsurePodSpecHasGitVolume (line 198) | func EnsurePodSpecHasGitVolume(podSpec *api.PodSpec, name string, gitRep...
function EnsurePodSpecHasSecretVolume (line 221) | func EnsurePodSpecHasSecretVolume(podSpec *api.PodSpec, name string, sec...
function EnsureServiceAccountExists (line 242) | func EnsureServiceAccountExists(c *client.Client, ns string, serviceAcco...
function ApplyResource (line 263) | func ApplyResource(f *cmdutil.Factory, c *client.Client, ns string, data...
FILE: kansible.go
function main (line 26) | func main() {
FILE: log/log.go
function Msg (line 37) | func Msg(format string, v ...interface{}) {
function Die (line 42) | func Die(format string, v ...interface{}) {
function CleanExit (line 51) | func CleanExit(format string, v ...interface{}) {
function Err (line 57) | func Err(format string, v ...interface{}) {
function Info (line 64) | func Info(format string, v ...interface{}) {
function Debug (line 70) | func Debug(format string, v ...interface{}) {
function Warn (line 78) | func Warn(format string, v ...interface{}) {
function appendNewLine (line 83) | func appendNewLine(format string) string {
FILE: ssh/ssh.go
function RemoteSSHCommand (line 33) | func RemoteSSHCommand(user string, privateKey string, host string, port ...
function PublicKeyFile (line 114) | func PublicKeyFile(file string) ssh.AuthMethod {
FILE: vendor/bitbucket.org/ww/goautoneg/autoneg.go
type Accept (line 50) | type Accept struct
type accept_slice (line 57) | type accept_slice
method Len (line 59) | func (accept accept_slice) Len() int {
method Less (line 64) | func (accept accept_slice) Less(i, j int) bool {
method Swap (line 79) | func (accept accept_slice) Swap(i, j int) {
function ParseAccept (line 86) | func ParseAccept(header string) (accept []Accept) {
function Negotiate (line 140) | func Negotiate(header string, alternatives []string) (content_type strin...
FILE: vendor/bitbucket.org/ww/goautoneg/autoneg_test.go
function TestParseAccept (line 9) | func TestParseAccept(t *testing.T) {
FILE: vendor/github.com/Masterminds/semver/benchmark_test.go
function benchNewConstraint (line 11) | func benchNewConstraint(c string, b *testing.B) {
function BenchmarkNewConstraintUnary (line 17) | func BenchmarkNewConstraintUnary(b *testing.B) {
function BenchmarkNewConstraintTilde (line 21) | func BenchmarkNewConstraintTilde(b *testing.B) {
function BenchmarkNewConstraintCaret (line 25) | func BenchmarkNewConstraintCaret(b *testing.B) {
function BenchmarkNewConstraintWildcard (line 29) | func BenchmarkNewConstraintWildcard(b *testing.B) {
function BenchmarkNewConstraintRange (line 33) | func BenchmarkNewConstraintRange(b *testing.B) {
function BenchmarkNewConstraintUnion (line 37) | func BenchmarkNewConstraintUnion(b *testing.B) {
function benchCheckVersion (line 43) | func benchCheckVersion(c, v string, b *testing.B) {
function BenchmarkCheckVersionUnary (line 52) | func BenchmarkCheckVersionUnary(b *testing.B) {
function BenchmarkCheckVersionTilde (line 56) | func BenchmarkCheckVersionTilde(b *testing.B) {
function BenchmarkCheckVersionCaret (line 60) | func BenchmarkCheckVersionCaret(b *testing.B) {
function BenchmarkCheckVersionWildcard (line 64) | func BenchmarkCheckVersionWildcard(b *testing.B) {
function BenchmarkCheckVersionRange (line 68) | func BenchmarkCheckVersionRange(b *testing.B) {
function BenchmarkCheckVersionUnion (line 72) | func BenchmarkCheckVersionUnion(b *testing.B) {
function benchValidateVersion (line 76) | func benchValidateVersion(c, v string, b *testing.B) {
function BenchmarkValidateVersionUnary (line 87) | func BenchmarkValidateVersionUnary(b *testing.B) {
function BenchmarkValidateVersionUnaryFail (line 91) | func BenchmarkValidateVersionUnaryFail(b *testing.B) {
function BenchmarkValidateVersionTilde (line 95) | func BenchmarkValidateVersionTilde(b *testing.B) {
function BenchmarkValidateVersionTildeFail (line 99) | func BenchmarkValidateVersionTildeFail(b *testing.B) {
function BenchmarkValidateVersionCaret (line 103) | func BenchmarkValidateVersionCaret(b *testing.B) {
function BenchmarkValidateVersionCaretFail (line 107) | func BenchmarkValidateVersionCaretFail(b *testing.B) {
function BenchmarkValidateVersionWildcard (line 111) | func BenchmarkValidateVersionWildcard(b *testing.B) {
function BenchmarkValidateVersionWildcardFail (line 115) | func BenchmarkValidateVersionWildcardFail(b *testing.B) {
function BenchmarkValidateVersionRange (line 119) | func BenchmarkValidateVersionRange(b *testing.B) {
function BenchmarkValidateVersionRangeFail (line 123) | func BenchmarkValidateVersionRangeFail(b *testing.B) {
function BenchmarkValidateVersionUnion (line 127) | func BenchmarkValidateVersionUnion(b *testing.B) {
function BenchmarkValidateVersionUnionFail (line 131) | func BenchmarkValidateVersionUnionFail(b *testing.B) {
function benchNewVersion (line 137) | func benchNewVersion(v string, b *testing.B) {
function BenchmarkNewVersionSimple (line 143) | func BenchmarkNewVersionSimple(b *testing.B) {
function BenchmarkNewVersionPre (line 147) | func BenchmarkNewVersionPre(b *testing.B) {
function BenchmarkNewVersionMeta (line 151) | func BenchmarkNewVersionMeta(b *testing.B) {
function BenchmarkNewVersionMetaDash (line 155) | func BenchmarkNewVersionMetaDash(b *testing.B) {
FILE: vendor/github.com/Masterminds/semver/collection.go
type Collection (line 6) | type Collection
method Len (line 10) | func (c Collection) Len() int {
method Less (line 16) | func (c Collection) Less(i, j int) bool {
method Swap (line 22) | func (c Collection) Swap(i, j int) {
FILE: vendor/github.com/Masterminds/semver/collection_test.go
function TestCollection (line 9) | func TestCollection(t *testing.T) {
FILE: vendor/github.com/Masterminds/semver/constraints.go
type Constraints (line 12) | type Constraints struct
method Check (line 44) | func (cs Constraints) Check(v *Version) bool {
method Validate (line 65) | func (cs Constraints) Validate(v *Version) (bool, []error) {
function NewConstraint (line 18) | func NewConstraint(c string) (*Constraints, error) {
function init (line 90) | func init() {
type constraint (line 137) | type constraint struct
method check (line 157) | func (c *constraint) check(v *Version) bool {
type cfunc (line 161) | type cfunc
function parseConstraint (line 163) | func parseConstraint(c string) (*constraint, error) {
function constraintNotEqual (line 205) | func constraintNotEqual(v *Version, c *constraint) bool {
function constraintGreaterThan (line 222) | func constraintGreaterThan(v *Version, c *constraint) bool {
function constraintLessThan (line 226) | func constraintLessThan(v *Version, c *constraint) bool {
function constraintGreaterThanEqual (line 240) | func constraintGreaterThanEqual(v *Version, c *constraint) bool {
function constraintLessThanEqual (line 244) | func constraintLessThanEqual(v *Version, c *constraint) bool {
function constraintTilde (line 264) | func constraintTilde(v *Version, c *constraint) bool {
function constraintTildeOrEqual (line 288) | func constraintTildeOrEqual(v *Version, c *constraint) bool {
function constraintCaret (line 303) | func constraintCaret(v *Version, c *constraint) bool {
constant cvRegex (line 317) | cvRegex string = `v?([0-9|x|X|\*]+)(\.[0-9|x|X|\*]+)?(\.[0-9|x|X|\*]+)?` +
function isX (line 321) | func isX(x string) bool {
function rewriteRange (line 330) | func rewriteRange(i string) string {
FILE: vendor/github.com/Masterminds/semver/constraints_test.go
function TestParseConstraint (line 8) | func TestParseConstraint(t *testing.T) {
function TestConstraintCheck (line 53) | func TestConstraintCheck(t *testing.T) {
function TestNewConstraint (line 97) | func TestNewConstraint(t *testing.T) {
function TestConstraintsCheck (line 141) | func TestConstraintsCheck(t *testing.T) {
function TestRewriteRange (line 225) | func TestRewriteRange(t *testing.T) {
function TestIsX (line 244) | func TestIsX(t *testing.T) {
function TestConstraintsValidate (line 264) | func TestConstraintsValidate(t *testing.T) {
FILE: vendor/github.com/Masterminds/semver/version.go
constant SemVerRegex (line 23) | SemVerRegex string = `v?([0-9]+)(\.[0-9]+)?(\.[0-9]+)?` +
type Version (line 28) | type Version struct
method String (line 88) | func (v *Version) String() string {
method Original (line 103) | func (v *Version) Original() string {
method Major (line 108) | func (v *Version) Major() int64 {
method Minor (line 113) | func (v *Version) Minor() int64 {
method Patch (line 118) | func (v *Version) Patch() int64 {
method Prerelease (line 123) | func (v *Version) Prerelease() string {
method Metadata (line 128) | func (v *Version) Metadata() string {
method LessThan (line 133) | func (v *Version) LessThan(o *Version) bool {
method GreaterThan (line 138) | func (v *Version) GreaterThan(o *Version) bool {
method Equal (line 145) | func (v *Version) Equal(o *Version) bool {
method Compare (line 154) | func (v *Version) Compare(o *Version) int {
function init (line 35) | func init() {
function NewVersion (line 41) | func NewVersion(v string) (*Version, error) {
function compareSegment (line 184) | func compareSegment(v, o int64) int {
function comparePrerelease (line 195) | func comparePrerelease(v, o string) int {
function comparePrePart (line 238) | func comparePrePart(s, o string) int {
FILE: vendor/github.com/Masterminds/semver/version_test.go
function TestNewVersion (line 7) | func TestNewVersion(t *testing.T) {
function TestOriginal (line 47) | func TestOriginal(t *testing.T) {
function TestParts (line 80) | func TestParts(t *testing.T) {
function TestString (line 103) | func TestString(t *testing.T) {
function TestCompare (line 139) | func TestCompare(t *testing.T) {
function TestLessThan (line 185) | func TestLessThan(t *testing.T) {
function TestGreaterThan (line 218) | func TestGreaterThan(t *testing.T) {
function TestEqual (line 251) | func TestEqual(t *testing.T) {
FILE: vendor/github.com/Masterminds/vcs/bzr.go
function NewBzrRepo (line 16) | func NewBzrRepo(remote, local string) (*BzrRepo, error) {
type BzrRepo (line 57) | type BzrRepo struct
method Vcs (line 62) | func (s BzrRepo) Vcs() Type {
method Get (line 67) | func (s *BzrRepo) Get() error {
method Update (line 82) | func (s *BzrRepo) Update() error {
method UpdateVersion (line 92) | func (s *BzrRepo) UpdateVersion(version string) error {
method Version (line 98) | func (s *BzrRepo) Version() (string, error) {
method Date (line 109) | func (s *BzrRepo) Date() (time.Time, error) {
method CheckLocal (line 122) | func (s *BzrRepo) CheckLocal() bool {
method Branches (line 134) | func (s *BzrRepo) Branches() ([]string, error) {
method Tags (line 140) | func (s *BzrRepo) Tags() ([]string, error) {
method IsReference (line 151) | func (s *BzrRepo) IsReference(r string) bool {
method IsDirty (line 162) | func (s *BzrRepo) IsDirty() bool {
method CommitInfo (line 168) | func (s *BzrRepo) CommitInfo(id string) (*CommitInfo, error) {
FILE: vendor/github.com/Masterminds/vcs/bzr_test.go
function TestBzr (line 18) | func TestBzr(t *testing.T) {
function TestBzrCheckLocal (line 173) | func TestBzrCheckLocal(t *testing.T) {
FILE: vendor/github.com/Masterminds/vcs/git.go
function NewGitRepo (line 14) | func NewGitRepo(remote, local string) (*GitRepo, error) {
type GitRepo (line 55) | type GitRepo struct
method Vcs (line 61) | func (s GitRepo) Vcs() Type {
method Get (line 66) | func (s *GitRepo) Get() error {
method Update (line 91) | func (s *GitRepo) Update() error {
method UpdateVersion (line 115) | func (s *GitRepo) UpdateVersion(version string) error {
method Version (line 121) | func (s *GitRepo) Version() (string, error) {
method Date (line 131) | func (s *GitRepo) Date() (time.Time, error) {
method Branches (line 144) | func (s *GitRepo) Branches() ([]string, error) {
method Tags (line 154) | func (s *GitRepo) Tags() ([]string, error) {
method CheckLocal (line 164) | func (s *GitRepo) CheckLocal() bool {
method IsReference (line 174) | func (s *GitRepo) IsReference(r string) bool {
method IsDirty (line 193) | func (s *GitRepo) IsDirty() bool {
method CommitInfo (line 199) | func (s *GitRepo) CommitInfo(id string) (*CommitInfo, error) {
method isUnableToCreateDir (line 247) | func (s *GitRepo) isUnableToCreateDir(err error) bool {
function isDetachedHead (line 232) | func isDetachedHead(dir string) (bool, error) {
FILE: vendor/github.com/Masterminds/vcs/git_test.go
function TestGit (line 17) | func TestGit(t *testing.T) {
function TestGitCheckLocal (line 192) | func TestGitCheckLocal(t *testing.T) {
FILE: vendor/github.com/Masterminds/vcs/hg.go
function NewHgRepo (line 16) | func NewHgRepo(remote, local string) (*HgRepo, error) {
type HgRepo (line 58) | type HgRepo struct
method Vcs (line 63) | func (s HgRepo) Vcs() Type {
method Get (line 68) | func (s *HgRepo) Get() error {
method Update (line 74) | func (s *HgRepo) Update() error {
method UpdateVersion (line 80) | func (s *HgRepo) UpdateVersion(version string) error {
method Version (line 90) | func (s *HgRepo) Version() (string, error) {
method Date (line 102) | func (s *HgRepo) Date() (time.Time, error) {
method CheckLocal (line 119) | func (s *HgRepo) CheckLocal() bool {
method Branches (line 128) | func (s *HgRepo) Branches() ([]string, error) {
method Tags (line 138) | func (s *HgRepo) Tags() ([]string, error) {
method IsReference (line 149) | func (s *HgRepo) IsReference(r string) bool {
method IsDirty (line 160) | func (s *HgRepo) IsDirty() bool {
method CommitInfo (line 166) | func (s *HgRepo) CommitInfo(id string) (*CommitInfo, error) {
FILE: vendor/github.com/Masterminds/vcs/hg_test.go
function TestHg (line 17) | func TestHg(t *testing.T) {
function TestHgCheckLocal (line 176) | func TestHgCheckLocal(t *testing.T) {
FILE: vendor/github.com/Masterminds/vcs/repo.go
function init (line 62) | func init() {
constant longForm (line 69) | longForm = "2006-01-02 15:04:05 -0700"
type Type (line 72) | type Type
constant NoVCS (line 76) | NoVCS Type = ""
constant Git (line 77) | Git Type = "git"
constant Svn (line 78) | Svn Type = "svn"
constant Bzr (line 79) | Bzr Type = "bzr"
constant Hg (line 80) | Hg Type = "hg"
type Repo (line 86) | type Repo interface
function NewRepo (line 141) | func NewRepo(remote, local string) (Repo, error) {
type CommitInfo (line 172) | type CommitInfo struct
type base (line 186) | type base struct
method log (line 191) | func (b *base) log(v interface{}) {
method Remote (line 196) | func (b *base) Remote() string {
method LocalPath (line 201) | func (b *base) LocalPath() string {
method setRemote (line 205) | func (b *base) setRemote(remote string) {
method setLocalPath (line 209) | func (b *base) setLocalPath(local string) {
method run (line 213) | func (b base) run(cmd string, args ...string) ([]byte, error) {
method runFromDir (line 222) | func (b *base) runFromDir(cmd string, args ...string) ([]byte, error) {
method referenceList (line 230) | func (b *base) referenceList(c, r string) []string {
function envForDir (line 240) | func envForDir(dir string) []string {
function mergeEnvLists (line 245) | func mergeEnvLists(in, out []string) []string {
FILE: vendor/github.com/Masterminds/vcs/repo_test.go
function ExampleNewRepo (line 10) | func ExampleNewRepo() {
function TestTypeSwitch (line 34) | func TestTypeSwitch(t *testing.T) {
FILE: vendor/github.com/Masterminds/vcs/svn.go
function NewSvnRepo (line 18) | func NewSvnRepo(remote, local string) (*SvnRepo, error) {
type SvnRepo (line 57) | type SvnRepo struct
method Vcs (line 62) | func (s SvnRepo) Vcs() Type {
method Get (line 69) | func (s *SvnRepo) Get() error {
method Update (line 75) | func (s *SvnRepo) Update() error {
method UpdateVersion (line 81) | func (s *SvnRepo) UpdateVersion(version string) error {
method Version (line 87) | func (s *SvnRepo) Version() (string, error) {
method Date (line 97) | func (s *SvnRepo) Date() (time.Time, error) {
method CheckLocal (line 115) | func (s *SvnRepo) CheckLocal() bool {
method Tags (line 130) | func (s *SvnRepo) Tags() ([]string, error) {
method Branches (line 140) | func (s *SvnRepo) Branches() ([]string, error) {
method IsReference (line 146) | func (s *SvnRepo) IsReference(r string) bool {
method IsDirty (line 164) | func (s *SvnRepo) IsDirty() bool {
method CommitInfo (line 170) | func (s *SvnRepo) CommitInfo(id string) (*CommitInfo, error) {
FILE: vendor/github.com/Masterminds/vcs/svn_test.go
function TestSvn (line 17) | func TestSvn(t *testing.T) {
function TestSvnCheckLocal (line 184) | func TestSvnCheckLocal(t *testing.T) {
FILE: vendor/github.com/Masterminds/vcs/vcs_local_lookup.go
function DetectVcsFromFS (line 9) | func DetectVcsFromFS(vcsPath string) (Type, error) {
FILE: vendor/github.com/Masterminds/vcs/vcs_remote_lookup.go
type vcsInfo (line 15) | type vcsInfo struct
function init (line 77) | func init() {
function detectVcsFromRemote (line 87) | func detectVcsFromRemote(vcsURL string) (Type, string, error) {
function detectVcsFromURL (line 132) | func detectVcsFromURL(vcsURL string) (Type, error) {
function checkBitbucket (line 227) | func checkBitbucket(i map[string]string, ul *url.URL) (Type, error) {
function checkGoogle (line 262) | func checkGoogle(i map[string]string, u *url.URL) (Type, error) {
function checkURL (line 291) | func checkURL(i map[string]string, u *url.URL) (Type, error) {
function get (line 295) | func get(url string) ([]byte, error) {
function expand (line 311) | func expand(match map[string]string, s string) string {
function parseImportFromBody (line 318) | func parseImportFromBody(ur *url.URL, r io.ReadCloser) (tp Type, u strin...
function charsetReader (line 374) | func charsetReader(charset string, input io.Reader) (io.Reader, error) {
function attrValue (line 383) | func attrValue(attrs []xml.Attr, name string) string {
FILE: vendor/github.com/Masterminds/vcs/vcs_remote_lookup_test.go
function TestVCSLookup (line 7) | func TestVCSLookup(t *testing.T) {
FILE: vendor/github.com/beorn7/perks/histogram/bench_test.go
function BenchmarkInsert10Bins (line 8) | func BenchmarkInsert10Bins(b *testing.B) {
function BenchmarkInsert100Bins (line 18) | func BenchmarkInsert100Bins(b *testing.B) {
FILE: vendor/github.com/beorn7/perks/histogram/histogram.go
type Bin (line 11) | type Bin struct
method Update (line 16) | func (b *Bin) Update(x *Bin) {
method Mean (line 21) | func (b *Bin) Mean() float64 {
type Bins (line 25) | type Bins
method Len (line 27) | func (bs Bins) Len() int { return len(bs) }
method Less (line 28) | func (bs Bins) Less(i, j int) bool { return bs[i].Mean() < bs[j].Mean() }
method Swap (line 29) | func (bs Bins) Swap(i, j int) { bs[i], bs[j] = bs[j], bs[i] }
method Push (line 31) | func (bs *Bins) Push(x interface{}) {
method Pop (line 35) | func (bs *Bins) Pop() interface{} {
method remove (line 39) | func (bs *Bins) remove(n int) *Bin {
type Histogram (line 48) | type Histogram struct
method Insert (line 56) | func (h *Histogram) Insert(f float64) {
method Bins (line 61) | func (h *Histogram) Bins() Bins {
function New (line 52) | func New(maxBins int) *Histogram {
type reservoir (line 65) | type reservoir struct
method insert (line 75) | func (r *reservoir) insert(bin *Bin) {
method compress (line 89) | func (r *reservoir) compress() {
function newReservoir (line 71) | func newReservoir(maxBins int) *reservoir {
function gapWeight (line 106) | func gapWeight(prev, next *Bin) float64 {
FILE: vendor/github.com/beorn7/perks/histogram/histogram_test.go
function TestHistogram (line 8) | func TestHistogram(t *testing.T) {
function count (line 32) | func count(bins Bins) int {
FILE: vendor/github.com/beorn7/perks/quantile/bench_test.go
function BenchmarkInsertTargeted (line 7) | func BenchmarkInsertTargeted(b *testing.B) {
function BenchmarkInsertTargetedSmallEpsilon (line 17) | func BenchmarkInsertTargetedSmallEpsilon(b *testing.B) {
function BenchmarkInsertBiased (line 25) | func BenchmarkInsertBiased(b *testing.B) {
function BenchmarkInsertBiasedSmallEpsilon (line 33) | func BenchmarkInsertBiasedSmallEpsilon(b *testing.B) {
function BenchmarkQuery (line 41) | func BenchmarkQuery(b *testing.B) {
function BenchmarkQuerySmallEpsilon (line 53) | func BenchmarkQuerySmallEpsilon(b *testing.B) {
FILE: vendor/github.com/beorn7/perks/quantile/example_test.go
function Example_simple (line 16) | func Example_simple() {
function Example_mergeMultipleStreams (line 41) | func Example_mergeMultipleStreams() {
function Example_window (line 67) | func Example_window() {
function sendStreamValues (line 91) | func sendStreamValues(ch chan float64) {
function flushToDB (line 95) | func flushToDB(t time.Time, samples quantile.Samples) {
function getDBQuerySamples (line 101) | func getDBQuerySamples(ch chan quantile.Samples) {}
function sendFloats (line 103) | func sendFloats(ch chan<- float64) {
FILE: vendor/github.com/beorn7/perks/quantile/stream.go
type Sample (line 24) | type Sample struct
type Samples (line 31) | type Samples
method Len (line 33) | func (a Samples) Len() int { return len(a) }
method Less (line 34) | func (a Samples) Less(i, j int) bool { return a[i].Value < a[j].Value }
method Swap (line 35) | func (a Samples) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
type invariant (line 37) | type invariant
function NewLowBiased (line 49) | func NewLowBiased(epsilon float64) *Stream {
function NewHighBiased (line 66) | func NewHighBiased(epsilon float64) *Stream {
function NewTargeted (line 80) | func NewTargeted(targets map[float64]float64) *Stream {
type Stream (line 101) | type Stream struct
method Insert (line 113) | func (s *Stream) Insert(v float64) {
method insert (line 117) | func (s *Stream) insert(sample Sample) {
method Query (line 128) | func (s *Stream) Query(q float64) float64 {
method Merge (line 152) | func (s *Stream) Merge(samples Samples) {
method Reset (line 158) | func (s *Stream) Reset() {
method Samples (line 164) | func (s *Stream) Samples() Samples {
method Count (line 174) | func (s *Stream) Count() int {
method flush (line 178) | func (s *Stream) flush() {
method maybeSort (line 184) | func (s *Stream) maybeSort() {
method flushed (line 191) | func (s *Stream) flushed() bool {
function newStream (line 107) | func newStream(ƒ invariant) *Stream {
type stream (line 195) | type stream struct
method reset (line 201) | func (s *stream) reset() {
method insert (line 206) | func (s *stream) insert(v float64) {
method merge (line 210) | func (s *stream) merge(samples Samples) {
method count (line 244) | func (s *stream) count() int {
method query (line 248) | func (s *stream) query(q float64) float64 {
method compress (line 263) | func (s *stream) compress() {
method samples (line 288) | func (s *stream) samples() Samples {
FILE: vendor/github.com/beorn7/perks/quantile/stream_test.go
constant RelativeEpsilon (line 29) | RelativeEpsilon = 0.01
function verifyPercsWithAbsoluteEpsilon (line 31) | func verifyPercsWithAbsoluteEpsilon(t *testing.T, a []float64, s *Stream) {
function verifyLowPercsWithRelativeEpsilon (line 51) | func verifyLowPercsWithRelativeEpsilon(t *testing.T, a []float64, s *Str...
function verifyHighPercsWithRelativeEpsilon (line 66) | func verifyHighPercsWithRelativeEpsilon(t *testing.T, a []float64, s *St...
function populateStream (line 81) | func populateStream(s *Stream) []float64 {
function TestTargetedQuery (line 95) | func TestTargetedQuery(t *testing.T) {
function TestLowBiasedQuery (line 102) | func TestLowBiasedQuery(t *testing.T) {
function TestHighBiasedQuery (line 109) | func TestHighBiasedQuery(t *testing.T) {
function BrokenTestTargetedMerge (line 117) | func BrokenTestTargetedMerge(t *testing.T) {
function BrokenTestLowBiasedMerge (line 128) | func BrokenTestLowBiasedMerge(t *testing.T) {
function BrokenTestHighBiasedMerge (line 139) | func BrokenTestHighBiasedMerge(t *testing.T) {
function TestUncompressed (line 149) | func TestUncompressed(t *testing.T) {
function TestUncompressedSamples (line 166) | func TestUncompressedSamples(t *testing.T) {
function TestUncompressedOne (line 176) | func TestUncompressedOne(t *testing.T) {
function TestDefaults (line 184) | func TestDefaults(t *testing.T) {
FILE: vendor/github.com/beorn7/perks/topk/topk.go
type Element (line 9) | type Element struct
type Samples (line 14) | type Samples
method Len (line 16) | func (sm Samples) Len() int {
method Less (line 20) | func (sm Samples) Less(i, j int) bool {
method Swap (line 24) | func (sm Samples) Swap(i, j int) {
type Stream (line 28) | type Stream struct
method Insert (line 47) | func (s *Stream) Insert(x string) {
method Merge (line 51) | func (s *Stream) Merge(sm Samples) {
method insert (line 57) | func (s *Stream) insert(in *Element) {
method Query (line 78) | func (s *Stream) Query() Samples {
function New (line 36) | func New(k int) *Stream {
FILE: vendor/github.com/beorn7/perks/topk/topk_test.go
function TestTopK (line 10) | func TestTopK(t *testing.T) {
function TestQuery (line 40) | func TestQuery(t *testing.T) {
FILE: vendor/github.com/blang/semver/examples/main.go
function main (line 8) | func main() {
FILE: vendor/github.com/blang/semver/json.go
method MarshalJSON (line 8) | func (v Version) MarshalJSON() ([]byte, error) {
method UnmarshalJSON (line 13) | func (v *Version) UnmarshalJSON(data []byte) (err error) {
FILE: vendor/github.com/blang/semver/json_test.go
function TestJSONMarshal (line 9) | func TestJSONMarshal(t *testing.T) {
function TestJSONUnmarshal (line 28) | func TestJSONUnmarshal(t *testing.T) {
FILE: vendor/github.com/blang/semver/semver.go
constant numbers (line 11) | numbers string = "0123456789"
constant alphas (line 12) | alphas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-"
constant alphanum (line 13) | alphanum = alphas + numbers
type Version (line 24) | type Version struct
method String (line 33) | func (v Version) String() string {
method Equals (line 65) | func (v Version) Equals(o Version) bool {
method EQ (line 70) | func (v Version) EQ(o Version) bool {
method NE (line 75) | func (v Version) NE(o Version) bool {
method GT (line 80) | func (v Version) GT(o Version) bool {
method GTE (line 85) | func (v Version) GTE(o Version) bool {
method GE (line 90) | func (v Version) GE(o Version) bool {
method LT (line 95) | func (v Version) LT(o Version) bool {
method LTE (line 100) | func (v Version) LTE(o Version) bool {
method LE (line 105) | func (v Version) LE(o Version) bool {
method Compare (line 113) | func (v Version) Compare(o Version) int {
method Validate (line 165) | func (v Version) Validate() error {
function New (line 192) | func New(s string) (vp *Version, err error) {
function Make (line 199) | func Make(s string) (Version, error) {
function Parse (line 204) | func Parse(s string) (Version, error) {
function MustParse (line 293) | func MustParse(s string) Version {
type PRVersion (line 302) | type PRVersion struct
method IsNumeric (line 336) | func (v PRVersion) IsNumeric() bool {
method Compare (line 344) | func (v PRVersion) Compare(o PRVersion) int {
method String (line 369) | func (v PRVersion) String() string {
function NewPRVersion (line 309) | func NewPRVersion(s string) (PRVersion, error) {
function containsOnly (line 376) | func containsOnly(s string, set string) bool {
function hasLeadingZeroes (line 382) | func hasLeadingZeroes(s string) bool {
function NewBuildVersion (line 387) | func NewBuildVersion(s string) (string, error) {
FILE: vendor/github.com/blang/semver/semver_test.go
function prstr (line 7) | func prstr(s string) PRVersion {
function prnum (line 11) | func prnum(i uint64) PRVersion {
type formatTest (line 15) | type formatTest struct
function TestStringer (line 33) | func TestStringer(t *testing.T) {
function TestParse (line 41) | func TestParse(t *testing.T) {
function TestMustParse (line 53) | func TestMustParse(t *testing.T) {
function TestMustParse_panic (line 57) | func TestMustParse_panic(t *testing.T) {
function TestValidate (line 66) | func TestValidate(t *testing.T) {
type compareTest (line 74) | type compareTest struct
function TestCompare (line 111) | func TestCompare(t *testing.T) {
type wrongformatTest (line 123) | type wrongformatTest struct
function TestWrongFormat (line 172) | func TestWrongFormat(t *testing.T) {
function TestCompareHelper (line 187) | func TestCompareHelper(t *testing.T) {
function TestPreReleaseVersions (line 225) | func TestPreReleaseVersions(t *testing.T) {
function TestBuildMetaDataVersions (line 248) | func TestBuildMetaDataVersions(t *testing.T) {
function TestNewHelper (line 270) | func TestNewHelper(t *testing.T) {
function TestMakeHelper (line 285) | func TestMakeHelper(t *testing.T) {
function BenchmarkParseSimple (line 295) | func BenchmarkParseSimple(b *testing.B) {
function BenchmarkParseComplex (line 304) | func BenchmarkParseComplex(b *testing.B) {
function BenchmarkParseAverage (line 313) | func BenchmarkParseAverage(b *testing.B) {
function BenchmarkStringSimple (line 322) | func BenchmarkStringSimple(b *testing.B) {
function BenchmarkStringLarger (line 332) | func BenchmarkStringLarger(b *testing.B) {
function BenchmarkStringComplex (line 342) | func BenchmarkStringComplex(b *testing.B) {
function BenchmarkStringAverage (line 352) | func BenchmarkStringAverage(b *testing.B) {
function BenchmarkValidateSimple (line 361) | func BenchmarkValidateSimple(b *testing.B) {
function BenchmarkValidateComplex (line 371) | func BenchmarkValidateComplex(b *testing.B) {
function BenchmarkValidateAverage (line 381) | func BenchmarkValidateAverage(b *testing.B) {
function BenchmarkCompareSimple (line 390) | func BenchmarkCompareSimple(b *testing.B) {
function BenchmarkCompareComplex (line 400) | func BenchmarkCompareComplex(b *testing.B) {
function BenchmarkCompareAverage (line 410) | func BenchmarkCompareAverage(b *testing.B) {
FILE: vendor/github.com/blang/semver/sort.go
type Versions (line 8) | type Versions
method Len (line 11) | func (s Versions) Len() int {
method Swap (line 16) | func (s Versions) Swap(i, j int) {
method Less (line 21) | func (s Versions) Less(i, j int) bool {
function Sort (line 26) | func Sort(versions []Version) {
FILE: vendor/github.com/blang/semver/sort_test.go
function TestSort (line 8) | func TestSort(t *testing.T) {
function BenchmarkSort (line 21) | func BenchmarkSort(b *testing.B) {
FILE: vendor/github.com/blang/semver/sql.go
method Scan (line 9) | func (v *Version) Scan(src interface{}) (err error) {
method Value (line 28) | func (v Version) Value() (driver.Value, error) {
FILE: vendor/github.com/blang/semver/sql_test.go
type scanTest (line 7) | type scanTest struct
function TestScanString (line 21) | func TestScanString(t *testing.T) {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/api.go
function yaml_parser_initialize (line 25) | func yaml_parser_initialize(parser *yaml_parser_t) bool {
function yaml_parser_delete (line 37) | func yaml_parser_delete(parser *yaml_parser_t) {
function yaml_string_read_handler (line 45) | func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (int...
function yaml_file_read_handler (line 59) | func yaml_file_read_handler(parser *yaml_parser_t, buffer []byte) (int, ...
function yaml_parser_set_input_string (line 67) | func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {
function yaml_parser_set_input_reader (line 81) | func yaml_parser_set_input_reader(parser *yaml_parser_t, reader io.Reade...
function yaml_parser_set_input (line 94) | func yaml_parser_set_input(parser *yaml_parser_t, handler yaml_read_hand...
function yaml_parser_set_encoding (line 106) | func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encod...
function yaml_emitter_initialize (line 118) | func yaml_emitter_initialize(emitter *yaml_emitter_t) {
function yaml_emitter_delete (line 127) | func yaml_emitter_delete(emitter *yaml_emitter_t) {
function yaml_string_write_handler (line 135) | func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) e...
function yaml_writer_write_handler (line 144) | func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) e...
function yaml_emitter_set_output_string (line 153) | func yaml_emitter_set_output_string(emitter *yaml_emitter_t, buffer *[]b...
function yaml_emitter_set_output_writer (line 166) | func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) {
function yaml_emitter_set_output (line 179) | func yaml_emitter_set_output(emitter *yaml_emitter_t, handler yaml_write...
function yaml_emitter_set_encoding (line 191) | func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_en...
function yaml_emitter_set_canonical (line 203) | func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {
function yaml_emitter_set_indent (line 211) | func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {
function yaml_emitter_set_width (line 222) | func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {
function yaml_emitter_set_unicode (line 233) | func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {
function yaml_emitter_set_break (line 241) | func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_bre...
function yaml_stream_start_event_initialize (line 334) | func yaml_stream_start_event_initialize(event *yaml_event_t, encoding ya...
function yaml_stream_end_event_initialize (line 345) | func yaml_stream_end_event_initialize(event *yaml_event_t) {
function yaml_document_start_event_initialize (line 355) | func yaml_document_start_event_initialize(event *yaml_event_t,
function yaml_document_end_event_initialize (line 371) | func yaml_document_end_event_initialize(event *yaml_event_t, implicit bo...
function yaml_alias_event_initialize (line 382) | func yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) {
function yaml_scalar_event_initialize (line 393) | func yaml_scalar_event_initialize(event *yaml_event_t,
function yaml_sequence_start_event_initialize (line 414) | func yaml_sequence_start_event_initialize(event *yaml_event_t,
function yaml_sequence_end_event_initialize (line 429) | func yaml_sequence_end_event_initialize(event *yaml_event_t) {
function yaml_mapping_start_event_initialize (line 439) | func yaml_mapping_start_event_initialize(event *yaml_event_t,
function yaml_mapping_end_event_initialize (line 454) | func yaml_mapping_end_event_initialize(event *yaml_event_t) {
function yaml_event_delete (line 464) | func yaml_event_delete(event *yaml_event_t) {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/candiedyaml_suite_test.go
function TestCandiedyaml (line 24) | func TestCandiedyaml(t *testing.T) {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/decode.go
type Unmarshaler (line 28) | type Unmarshaler interface
type Number (line 33) | type Number
method String (line 36) | func (n Number) String() string { return string(n) }
method Float64 (line 39) | func (n Number) Float64() (float64, error) {
method Int64 (line 44) | func (n Number) Int64() (int64, error) {
type Decoder (line 48) | type Decoder struct
method Decode (line 115) | func (d *Decoder) Decode(v interface{}) (err error) {
method UseNumber (line 137) | func (d *Decoder) UseNumber() { d.useNumber = true }
method error (line 139) | func (d *Decoder) error(err error) {
method nextEvent (line 143) | func (d *Decoder) nextEvent() {
method document (line 176) | func (d *Decoder) document(rv reflect.Value) {
method parse (line 191) | func (d *Decoder) parse(rv reflect.Value) {
method begin_anchor (line 224) | func (d *Decoder) begin_anchor(anchor string) {
method end_anchor (line 231) | func (d *Decoder) end_anchor(anchor string) {
method indirect (line 247) | func (d *Decoder) indirect(v reflect.Value, decodingNull bool) (Unmars...
method sequence (line 290) | func (d *Decoder) sequence(v reflect.Value) {
method mapping (line 381) | func (d *Decoder) mapping(v reflect.Value) {
method mappingStruct (line 446) | func (d *Decoder) mappingStruct(v reflect.Value) {
method scalar (line 499) | func (d *Decoder) scalar(v reflect.Value) {
method alias (line 526) | func (d *Decoder) alias(rv reflect.Value) {
method valueInterface (line 537) | func (d *Decoder) valueInterface() interface{} {
method scalarInterface (line 568) | func (d *Decoder) scalarInterface() interface{} {
method sequenceInterface (line 576) | func (d *Decoder) sequenceInterface() []interface{} {
method mappingInterface (line 599) | func (d *Decoder) mappingInterface() map[interface{}]interface{} {
type ParserError (line 58) | type ParserError struct
method Error (line 66) | func (e *ParserError) Error() string {
type UnexpectedEventError (line 70) | type UnexpectedEventError struct
method Error (line 76) | func (e *UnexpectedEventError) Error() string {
function recovery (line 80) | func recovery(err *error) {
function Unmarshal (line 100) | func Unmarshal(data []byte, v interface{}) error {
function NewDecoder (line 105) | func NewDecoder(r io.Reader) *Decoder {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/emitter.go
function flush (line 30) | func flush(emitter *yaml_emitter_t) bool {
function put (line 40) | func put(emitter *yaml_emitter_t, value byte) bool {
function put_break (line 55) | func put_break(emitter *yaml_emitter_t) bool {
function write (line 81) | func write(emitter *yaml_emitter_t, src []byte, src_pos *int) bool {
function write_break (line 94) | func write_break(emitter *yaml_emitter_t, src []byte, src_pos *int) bool {
function yaml_emitter_set_emitter_error (line 115) | func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem str...
function yaml_emitter_emit (line 125) | func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {
function yaml_emitter_need_more_events (line 150) | func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {
function yaml_emitter_append_tag_directive (line 191) | func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t,
function yaml_emitter_increase_indent (line 218) | func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow bool, in...
function yaml_emitter_state_machine (line 239) | func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_eve...
function yaml_emitter_emit_stream_start (line 305) | func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml...
function yaml_emitter_emit_document_start (line 358) | func yaml_emitter_emit_document_start(emitter *yaml_emitter_t,
function yaml_emitter_emit_document_content (line 485) | func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *...
function yaml_emitter_emit_document_end (line 495) | func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml...
function yaml_emitter_emit_flow_sequence_item (line 527) | func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event...
function yaml_emitter_emit_flow_mapping_key (line 579) | func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t,
function yaml_emitter_emit_flow_mapping_value (line 644) | func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t,
function yaml_emitter_emit_block_sequence_item (line 669) | func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t,
function yaml_emitter_emit_block_mapping_key (line 705) | func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t,
function yaml_emitter_emit_block_mapping_value (line 746) | func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t,
function yaml_emitter_emit_node (line 770) | func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,
function yaml_emitter_emit_alias (line 802) | func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_...
function yaml_emitter_emit_scalar (line 817) | func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event...
function yaml_emitter_emit_sequence_start (line 846) | func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *ya...
function yaml_emitter_emit_mapping_start (line 869) | func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yam...
function yaml_emitter_check_empty_document (line 892) | func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {
function yaml_emitter_check_empty_sequence (line 900) | func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {
function yaml_emitter_check_empty_mapping (line 913) | func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {
function yaml_emitter_check_simple_key (line 926) | func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {
function yaml_emitter_select_scalar_style (line 975) | func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *ya...
function yaml_emitter_process_anchor (line 1038) | func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {
function yaml_emitter_process_tag (line 1058) | func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {
function yaml_emitter_process_scalar (line 1096) | func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {
function yaml_emitter_analyze_version_directive (line 1132) | func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t,
function yaml_emitter_analyze_tag_directive (line 1146) | func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t,
function yaml_emitter_analyze_anchor (line 1185) | func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t,
function yaml_emitter_analyze_tag (line 1215) | func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {
function yaml_emitter_analyze_scalar (line 1239) | func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) ...
function yaml_emitter_analyze_event (line 1403) | func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_eve...
function yaml_emitter_write_bom (line 1470) | func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {
function yaml_emitter_write_indent (line 1483) | func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {
function yaml_emitter_write_indicator (line 1508) | func yaml_emitter_write_indicator(emitter *yaml_emitter_t,
function yaml_emitter_write_anchor (line 1531) | func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bo...
function yaml_emitter_write_tag_handle (line 1545) | func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte...
function yaml_emitter_write_tag_content (line 1565) | func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte,
function yaml_emitter_write_plain_scalar (line 1625) | func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte,
function yaml_emitter_write_single_quoted_scalar (line 1686) | func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, va...
function yaml_emitter_write_double_quoted_scalar (line 1752) | func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, va...
function yaml_emitter_write_block_scalar_hints (line 1925) | func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, valu...
function yaml_emitter_write_literal_scalar (line 1971) | func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []...
function yaml_emitter_write_folded_scalar (line 2014) | func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []b...
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/encode.go
type Marshaler (line 49) | type Marshaler interface
type Encoder (line 54) | type Encoder struct
method Encode (line 82) | func (e *Encoder) Encode(v interface{}) (err error) {
method emit (line 100) | func (e *Encoder) emit() {
method marshal (line 106) | func (e *Encoder) marshal(tag string, v reflect.Value, allowAddr bool) {
method emitMap (line 155) | func (e *Encoder) emitMap(tag string, v reflect.Value) {
method emitStruct (line 166) | func (e *Encoder) emitStruct(tag string, v reflect.Value) {
method emitTime (line 188) | func (e *Encoder) emitTime(tag string, v reflect.Value) {
method mapping (line 212) | func (e *Encoder) mapping(tag string, f func()) {
method emitSlice (line 228) | func (e *Encoder) emitSlice(tag string, v reflect.Value) {
method emitBase64 (line 252) | func (e *Encoder) emitBase64(tag string, v reflect.Value) {
method emitString (line 266) | func (e *Encoder) emitString(tag string, v reflect.Value) {
method emitBool (line 296) | func (e *Encoder) emitBool(tag string, v reflect.Value) {
method emitInt (line 301) | func (e *Encoder) emitInt(tag string, v reflect.Value) {
method emitUint (line 306) | func (e *Encoder) emitUint(tag string, v reflect.Value) {
method emitFloat (line 311) | func (e *Encoder) emitFloat(tag string, v reflect.Value) {
method emitNil (line 329) | func (e *Encoder) emitNil() {
method emitScalar (line 333) | func (e *Encoder) emitScalar(value, anchor, tag string, style yaml_sca...
method emitMarshaler (line 348) | func (e *Encoder) emitMarshaler(tag string, v reflect.Value) {
method emitAddrMarshaler (line 371) | func (e *Encoder) emitAddrMarshaler(tag string, v reflect.Value) {
function Marshal (line 62) | func Marshal(v interface{}) ([]byte, error) {
function NewEncoder (line 70) | func NewEncoder(w io.Writer) *Encoder {
function isEmptyValue (line 194) | func isEmptyValue(v reflect.Value) bool {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/encode_test.go
type hasMarshaler (line 614) | type hasMarshaler struct
method MarshalYAML (line 619) | func (m hasMarshaler) MarshalYAML() (string, interface{}, error) {
method UnmarshalYAML (line 623) | func (m hasMarshaler) UnmarshalYAML(tag string, value interface{}) err...
type hasPtrMarshaler (line 628) | type hasPtrMarshaler struct
method MarshalYAML (line 634) | func (m *hasPtrMarshaler) MarshalYAML() (string, interface{}, error) {
method UnmarshalYAML (line 638) | func (m *hasPtrMarshaler) UnmarshalYAML(tag string, value interface{})...
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/parser.go
function peek_token (line 64) | func peek_token(parser *yaml_parser_t) *yaml_token_t {
function skip_token (line 74) | func skip_token(parser *yaml_parser_t) {
function yaml_parser_parse (line 85) | func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {
function yaml_parser_set_parser_error (line 105) | func yaml_parser_set_parser_error(parser *yaml_parser_t,
function yaml_parser_set_parser_error_context (line 114) | func yaml_parser_set_parser_error_context(parser *yaml_parser_t,
function yaml_parser_state_machine (line 130) | func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_...
function yaml_parser_parse_stream_start (line 211) | func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_e...
function yaml_parser_parse_document_start (line 242) | func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml...
function yaml_parser_parse_document_content (line 335) | func yaml_parser_parse_document_content(parser *yaml_parser_t, event *ya...
function yaml_parser_parse_document_end (line 363) | func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_e...
function yaml_parser_parse_node (line 421) | func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t,
function yaml_parser_parse_block_sequence_entry (line 656) | func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t,
function yaml_parser_parse_indentless_sequence_entry (line 713) | func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t,
function yaml_parser_parse_block_mapping_key (line 762) | func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t,
function yaml_parser_parse_block_mapping_value (line 824) | func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t,
function yaml_parser_parse_flow_sequence_entry (line 867) | func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t,
function yaml_parser_parse_flow_sequence_entry_mapping_key (line 936) | func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_pars...
function yaml_parser_parse_flow_sequence_entry_mapping_value (line 962) | func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_pa...
function yaml_parser_parse_flow_sequence_entry_mapping_end (line 991) | func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_pars...
function yaml_parser_parse_flow_mapping_key (line 1022) | func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t,
function yaml_parser_parse_flow_mapping_value (line 1094) | func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t,
function yaml_parser_process_empty_scalar (line 1128) | func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml...
function yaml_parser_process_directives (line 1146) | func yaml_parser_process_directives(parser *yaml_parser_t,
function yaml_parser_append_tag_directive (line 1216) | func yaml_parser_append_tag_directive(parser *yaml_parser_t,
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/reader.go
function yaml_parser_set_reader_error (line 25) | func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string,
constant BOM_UTF8 (line 39) | BOM_UTF8 = "\xef\xbb\xbf"
constant BOM_UTF16LE (line 40) | BOM_UTF16LE = "\xff\xfe"
constant BOM_UTF16BE (line 41) | BOM_UTF16BE = "\xfe\xff"
function yaml_parser_determine_encoding (line 49) | func yaml_parser_determine_encoding(parser *yaml_parser_t) bool {
function yaml_parser_update_raw_buffer (line 88) | func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {
function yaml_parser_update_buffer (line 131) | func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/reader_test.go
type test_case (line 28) | type test_case struct
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/resolver.go
function init (line 42) | func init() {
function resolve (line 63) | func resolve(event yaml_event_t, v reflect.Value, useNumber bool) (strin...
function hasBinaryTag (line 118) | func hasBinaryTag(event yaml_event_t) bool {
function decode_binary (line 127) | func decode_binary(value []byte, event yaml_event_t) ([]byte, error) {
function resolve_string (line 136) | func resolve_string(val string, v reflect.Value, event yaml_event_t) (st...
function resolve_bool (line 150) | func resolve_bool(val string, v reflect.Value, event yaml_event_t) (stri...
function resolve_int (line 160) | func resolve_int(val string, v reflect.Value, useNumber bool, event yaml...
function resolve_uint (line 220) | func resolve_uint(val string, v reflect.Value, useNumber bool, event yam...
function resolve_float (line 269) | func resolve_float(val string, v reflect.Value, useNumber bool, event ya...
function resolve_time (line 315) | func resolve_time(val string, v reflect.Value, event yaml_event_t) (stri...
function resolveInterface (line 365) | func resolveInterface(event yaml_event_t, useNumber bool) (string, inter...
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/run_parser.go
function Run_parser (line 22) | func Run_parser(cmd string, args []string) {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/scanner.go
function cache (line 501) | func cache(parser *yaml_parser_t, length int) bool {
function skip (line 512) | func skip(parser *yaml_parser_t) {
function skip_line (line 519) | func skip_line(parser *yaml_parser_t) {
function read (line 539) | func read(parser *yaml_parser_t, s []byte) []byte {
function read_line (line 564) | func read_line(parser *yaml_parser_t, s []byte) []byte {
function yaml_parser_scan (line 601) | func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {
function yaml_parser_set_scanner_error (line 637) | func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string,
function yaml_parser_set_scanner_tag_error (line 648) | func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive ...
function yaml_parser_fetch_more_tokens (line 661) | func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {
function yaml_parser_fetch_next_token (line 719) | func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {
function yaml_parser_stale_simple_keys (line 931) | func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool {
function yaml_parser_save_simple_key (line 967) | func yaml_parser_save_simple_key(parser *yaml_parser_t) bool {
function yaml_parser_remove_simple_key (line 1011) | func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {
function yaml_parser_increase_flow_level (line 1035) | func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {
function yaml_parser_decrease_flow_level (line 1051) | func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {
function yaml_parser_roll_indent (line 1067) | func yaml_parser_roll_indent(parser *yaml_parser_t, column int,
function yaml_parser_unroll_indent (line 1107) | func yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool {
function yaml_parser_reset_indent (line 1150) | func yaml_parser_reset_indent(parser *yaml_parser_t) bool {
function yaml_parser_fetch_stream_start (line 1181) | func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {
function yaml_parser_fetch_stream_end (line 1213) | func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {
function yaml_parser_fetch_directive (line 1251) | func yaml_parser_fetch_directive(parser *yaml_parser_t) bool {
function yaml_parser_fetch_document_indicator (line 1282) | func yaml_parser_fetch_document_indicator(parser *yaml_parser_t,
function yaml_parser_fetch_flow_collection_start (line 1328) | func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t,
function yaml_parser_fetch_flow_collection_end (line 1372) | func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t,
function yaml_parser_fetch_flow_entry (line 1416) | func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {
function yaml_parser_fetch_block_entry (line 1451) | func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {
function yaml_parser_fetch_key (line 1510) | func yaml_parser_fetch_key(parser *yaml_parser_t) bool {
function yaml_parser_fetch_value (line 1562) | func yaml_parser_fetch_value(parser *yaml_parser_t) bool {
function yaml_parser_fetch_anchor (line 1644) | func yaml_parser_fetch_anchor(parser *yaml_parser_t, token_type yaml_tok...
function yaml_parser_fetch_tag (line 1671) | func yaml_parser_fetch_tag(parser *yaml_parser_t) bool {
function yaml_parser_fetch_block_scalar (line 1697) | func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool)...
function yaml_parser_fetch_flow_scalar (line 1723) | func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) b...
function yaml_parser_fetch_plain_scalar (line 1750) | func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {
function yaml_parser_scan_to_next_token (line 1776) | func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {
function yaml_parser_scan_directive (line 1857) | func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token...
function yaml_parser_scan_directive_name (line 1970) | func yaml_parser_scan_directive_name(parser *yaml_parser_t,
function yaml_parser_scan_version_directive_value (line 2016) | func yaml_parser_scan_version_directive_value(parser *yaml_parser_t,
constant MAX_NUMBER_LENGTH (line 2055) | MAX_NUMBER_LENGTH = 9
function yaml_parser_scan_version_directive_number (line 2067) | func yaml_parser_scan_version_directive_number(parser *yaml_parser_t,
function yaml_parser_scan_tag_directive_value (line 2116) | func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t,
function yaml_parser_scan_anchor (line 2183) | func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t,
function yaml_parser_scan_tag (line 2245) | func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bo...
function yaml_parser_scan_tag_handle (line 2353) | func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool,
function yaml_parser_scan_tag_uri (line 2412) | func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool,
function yaml_parser_scan_uri_escapes (line 2484) | func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool,
function yaml_parser_scan_block_scalar (line 2541) | func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_to...
function yaml_parser_scan_block_scalar_breaks (line 2775) | func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t,
function yaml_parser_scan_flow_scalar (line 2844) | func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_tok...
function yaml_parser_scan_plain_scalar (line 3142) | func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_to...
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/tags.go
type field (line 26) | type field struct
type byName (line 38) | type byName
method Len (line 40) | func (x byName) Len() int { return len(x) }
method Swap (line 42) | func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
method Less (line 44) | func (x byName) Less(i, j int) bool {
type byIndex (line 58) | type byIndex
method Len (line 60) | func (x byIndex) Len() int { return len(x) }
method Swap (line 62) | func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
method Less (line 64) | func (x byIndex) Less(i, j int) bool {
function typeFields (line 79) | func typeFields(t reflect.Type) []field {
function dominantField (line 197) | func dominantField(fields []field) (field, bool) {
function cachedTypeFields (line 235) | func cachedTypeFields(t reflect.Type) []field {
type tagOptions (line 261) | type tagOptions
method Contains (line 343) | func (o tagOptions) Contains(optionName string) bool {
function isValidTag (line 263) | func isValidTag(s string) bool {
function fieldByIndex (line 282) | func fieldByIndex(v reflect.Value, index []int) reflect.Value {
function typeByIndex (line 295) | func typeByIndex(t reflect.Type, index []int) reflect.Type {
type stringValues (line 307) | type stringValues
method Len (line 309) | func (sv stringValues) Len() int { return len(sv) }
method Swap (line 310) | func (sv stringValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[i] }
method Less (line 311) | func (sv stringValues) Less(i, j int) bool {
function getElem (line 321) | func getElem(v reflect.Value) (reflect.Value, reflect.Kind) {
function parseTag (line 333) | func parseTag(tag string) (string, tagOptions) {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/writer.go
function yaml_emitter_set_writer_error (line 21) | func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem stri...
function yaml_emitter_flush (line 32) | func yaml_emitter_flush(emitter *yaml_emitter_t) bool {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/yaml_definesh.go
constant yaml_VERSION_MAJOR (line 18) | yaml_VERSION_MAJOR = 0
constant yaml_VERSION_MINOR (line 19) | yaml_VERSION_MINOR = 1
constant yaml_VERSION_PATCH (line 20) | yaml_VERSION_PATCH = 6
constant yaml_VERSION_STRING (line 21) | yaml_VERSION_STRING = "0.1.6"
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/yaml_privateh.go
constant INPUT_RAW_BUFFER_SIZE (line 18) | INPUT_RAW_BUFFER_SIZE = 1024
constant INPUT_BUFFER_SIZE (line 25) | INPUT_BUFFER_SIZE = (INPUT_RAW_BUFFER_SIZE * 3)
constant OUTPUT_BUFFER_SIZE (line 31) | OUTPUT_BUFFER_SIZE = 512
constant OUTPUT_RAW_BUFFER_SIZE (line 39) | OUTPUT_RAW_BUFFER_SIZE = (OUTPUT_BUFFER_SIZE*2 + 2)
constant INITIAL_STACK_SIZE (line 41) | INITIAL_STACK_SIZE = 16
constant INITIAL_QUEUE_SIZE (line 42) | INITIAL_QUEUE_SIZE = 16
function width (line 45) | func width(b byte) int {
function copy_bytes (line 65) | func copy_bytes(dest []byte, dest_pos *int, src []byte, src_pos *int) {
function is_alpha (line 91) | func is_alpha(b byte) bool {
function is_digit (line 102) | func is_digit(b byte) bool {
function as_digit (line 110) | func as_digit(b byte) int {
function is_hex (line 118) | func is_hex(b byte) bool {
function as_hex (line 129) | func as_hex(b byte) int {
function is_blankz_at (line 150) | func is_blankz_at(b []byte, i int) bool {
function is_break_at (line 157) | func is_break_at(b []byte, i int) bool {
function is_breakz_at (line 165) | func is_breakz_at(b []byte, i int) bool {
function is_crlf_at (line 169) | func is_crlf_at(b []byte, i int) bool {
function is_z (line 176) | func is_z(b byte) bool {
function is_space (line 183) | func is_space(b byte) bool {
function is_tab (line 191) | func is_tab(b byte) bool {
function is_blank (line 198) | func is_blank(b byte) bool {
function is_ascii (line 205) | func is_ascii(b byte) bool {
function is_printable_at (line 212) | func is_printable_at(b []byte, i int) bool {
function insert_token (line 224) | func insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {
function is_bom_at (line 248) | func is_bom_at(b []byte, i int) bool {
FILE: vendor/github.com/cloudfoundry-incubator/candiedyaml/yamlh.go
type yaml_version_directive_t (line 23) | type yaml_version_directive_t struct
type yaml_tag_directive_t (line 29) | type yaml_tag_directive_t struct
type yaml_encoding_t (line 35) | type yaml_encoding_t
constant yaml_ANY_ENCODING (line 39) | yaml_ANY_ENCODING yaml_encoding_t = iota
constant yaml_UTF8_ENCODING (line 41) | yaml_UTF8_ENCODING
constant yaml_UTF16LE_ENCODING (line 43) | yaml_UTF16LE_ENCODING
constant yaml_UTF16BE_ENCODING (line 45) | yaml_UTF16BE_ENCODING
type yaml_break_t (line 49) | type yaml_break_t
constant yaml_ANY_BREAK (line 52) | yaml_ANY_BREAK yaml_break_t = iota
constant yaml_CR_BREAK (line 53) | yaml_CR_BREAK
constant yaml_LN_BREAK (line 54) | yaml_LN_BREAK
constant yaml_CRLN_BREAK (line 55) | yaml_CRLN_BREAK
type YAML_error_type_t (line 59) | type YAML_error_type_t
constant yaml_NO_ERROR (line 63) | yaml_NO_ERROR YAML_error_type_t = iota
constant yaml_MEMORY_ERROR (line 66) | yaml_MEMORY_ERROR
constant yaml_READER_ERROR (line 69) | yaml_READER_ERROR
constant yaml_SCANNER_ERROR (line 71) | yaml_SCANNER_ERROR
constant yaml_PARSER_ERROR (line 73) | yaml_PARSER_ERROR
constant yaml_COMPOSER_ERROR (line 75) | yaml_COMPOSER_ERROR
constant yaml_WRITER_ERROR (line 78) | yaml_WRITER_ERROR
constant yaml_EMITTER_ERROR (line 80) | yaml_EMITTER_ERROR
type YAML_mark_t (line 84) | type YAML_mark_t struct
method String (line 95) | func (m YAML_mark_t) String() string {
type yaml_style_t (line 106) | type yaml_style_t
type yaml_scalar_style_t (line 109) | type yaml_scalar_style_t
constant yaml_ANY_SCALAR_STYLE (line 113) | yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota
constant yaml_PLAIN_SCALAR_STYLE (line 116) | yaml_PLAIN_SCALAR_STYLE
constant yaml_SINGLE_QUOTED_SCALAR_STYLE (line 119) | yaml_SINGLE_QUOTED_SCALAR_STYLE
constant yaml_DOUBLE_QUOTED_SCALAR_STYLE (line 121) | yaml_DOUBLE_QUOTED_SCALAR_STYLE
constant yaml_LITERAL_SCALAR_STYLE (line 124) | yaml_LITERAL_SCALAR_STYLE
constant yaml_FOLDED_SCALAR_STYLE (line 126) | yaml_FOLDED_SCALAR_STYLE
type yaml_sequence_style_t (line 130) | type yaml_sequence_style_t
constant yaml_ANY_SEQUENCE_STYLE (line 134) | yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota
constant yaml_BLOCK_SEQUENCE_STYLE (line 137) | yaml_BLOCK_SEQUENCE_STYLE
constant yaml_FLOW_SEQUENCE_STYLE (line 139) | yaml_FLOW_SEQUENCE_STYLE
type yaml_mapping_style_t (line 143) | type yaml_mapping_style_t
constant yaml_ANY_MAPPING_STYLE (line 147) | yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota
constant yaml_BLOCK_MAPPING_STYLE (line 150) | yaml_BLOCK_MAPPING_STYLE
constant yaml_FLOW_MAPPING_STYLE (line 152) | yaml_FLOW_MAPPING_STYLE
type yaml_token_type_t (line 165) | type yaml_token_type_t
constant yaml_NO_TOKEN (line 169) | yaml_NO_TOKEN yaml_token_type_t = iota
constant yaml_STREAM_START_TOKEN (line 172) | yaml_STREAM_START_TOKEN
constant yaml_STREAM_END_TOKEN (line 174) | yaml_STREAM_END_TOKEN
constant yaml_VERSION_DIRECTIVE_TOKEN (line 177) | yaml_VERSION_DIRECTIVE_TOKEN
constant yaml_TAG_DIRECTIVE_TOKEN (line 179) | yaml_TAG_DIRECTIVE_TOKEN
constant yaml_DOCUMENT_START_TOKEN (line 181) | yaml_DOCUMENT_START_TOKEN
constant yaml_DOCUMENT_END_TOKEN (line 183) | yaml_DOCUMENT_END_TOKEN
constant yaml_BLOCK_SEQUENCE_START_TOKEN (line 186) | yaml_BLOCK_SEQUENCE_START_TOKEN
constant yaml_BLOCK_MAPPING_START_TOKEN (line 188) | yaml_BLOCK_MAPPING_START_TOKEN
constant yaml_BLOCK_END_TOKEN (line 190) | yaml_BLOCK_END_TOKEN
constant yaml_FLOW_SEQUENCE_START_TOKEN (line 193) | yaml_FLOW_SEQUENCE_START_TOKEN
constant yaml_FLOW_SEQUENCE_END_TOKEN (line 195) | yaml_FLOW_SEQUENCE_END_TOKEN
constant yaml_FLOW_MAPPING_START_TOKEN (line 197) | yaml_FLOW_MAPPING_START_TOKEN
constant yaml_FLOW_MAPPING_END_TOKEN (line 199) | yaml_FLOW_MAPPING_END_TOKEN
constant yaml_BLOCK_ENTRY_TOKEN (line 202) | yaml_BLOCK_ENTRY_TOKEN
constant yaml_FLOW_ENTRY_TOKEN (line 204) | yaml_FLOW_ENTRY_TOKEN
constant yaml_KEY_TOKEN (line 206) | yaml_KEY_TOKEN
constant yaml_VALUE_TOKEN (line 208) | yaml_VALUE_TOKEN
constant yaml_ALIAS_TOKEN (line 211) | yaml_ALIAS_TOKEN
constant yaml_ANCHOR_TOKEN (line 213) | yaml_ANCHOR_TOKEN
constant yaml_TAG_TOKEN (line 215) | yaml_TAG_TOKEN
constant yaml_SCALAR_TOKEN (line 217) | yaml_SCALAR_TOKEN
type yaml_token_t (line 221) | type yaml_token_t struct
type yaml_event_type_t (line 262) | type yaml_event_type_t
constant yaml_NO_EVENT (line 266) | yaml_NO_EVENT yaml_event_type_t = iota
constant yaml_STREAM_START_EVENT (line 269) | yaml_STREAM_START_EVENT
constant yaml_STREAM_END_EVENT (line 271) | yaml_STREAM_END_EVENT
constant yaml_DOCUMENT_START_EVENT (line 274) | yaml_DOCUMENT_START_EVENT
constant yaml_DOCUMENT_END_EVENT (line 276) | yaml_DOCUMENT_END_EVENT
constant yaml_ALIAS_EVENT (line 279) | yaml_ALIAS_EVENT
constant yaml_SCALAR_EVENT (line 281) | yaml_SCALAR_EVENT
constant yaml_SEQUENCE_START_EVENT (line 284) | yaml_SEQUENCE_START_EVENT
constant yaml_SEQUENCE_END_EVENT (line 286) | yaml_SEQUENCE_END_EVENT
constant yaml_MAPPING_START_EVENT (line 289) | yaml_MAPPING_START_EVENT
constant yaml_MAPPING_END_EVENT (line 291) | yaml_MAPPING_END_EVENT
type yaml_event_t (line 295) | type yaml_event_t struct
constant yaml_NULL_TAG (line 344) | yaml_NULL_TAG = "tag:yaml.org,2002:null"
constant yaml_BOOL_TAG (line 346) | yaml_BOOL_TAG = "tag:yaml.org,2002:bool"
constant yaml_STR_TAG (line 348) | yaml_STR_TAG = "tag:yaml.org,2002:str"
constant yaml_INT_TAG (line 350) | yaml_INT_TAG = "tag:yaml.org,2002:int"
constant yaml_FLOAT_TAG (line 352) | yaml_FLOAT_TAG = "tag:yaml.org,2002:float"
constant yaml_TIMESTAMP_TAG (line 354) | yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp"
constant yaml_SEQ_TAG (line 357) | yaml_SEQ_TAG = "tag:yaml.org,2002:seq"
constant yaml_MAP_TAG (line 359) | yaml_MAP_TAG = "tag:yaml.org,2002:map"
constant yaml_DEFAULT_SCALAR_TAG (line 362) | yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG
constant yaml_DEFAULT_SEQUENCE_TAG (line 364) | yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG
constant yaml_DEFAULT_MAPPING_TAG (line 366) | yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG
constant yaml_BINARY_TAG (line 368) | yaml_BINARY_TAG = "tag:yaml.org,2002:binary"
type yaml_node_type_t (line 372) | type yaml_node_type_t
constant yaml_NO_NODE (line 376) | yaml_NO_NODE yaml_node_type_t = iota
constant yaml_SCALAR_NODE (line 379) | yaml_SCALAR_NODE
constant yaml_SEQUENCE_NODE (line 381) | yaml_SEQUENCE_NODE
constant yaml_MAPPING_NODE (line 383) | yaml_MAPPING_NODE
type yaml_node_item_t (line 387) | type yaml_node_item_t
type yaml_node_pair_t (line 390) | type yaml_node_pair_t struct
type yaml_node_t (line 398) | type yaml_node_t struct
type yaml_document_t (line 437) | type yaml_document_t struct
type yaml_read_handler_t (line 477) | type yaml_read_handler_t
type yaml_simple_key_t (line 483) | type yaml_simple_key_t struct
type yaml_parser_state_t (line 500) | type yaml_parser_state_t
constant yaml_PARSE_STREAM_START_STATE (line 504) | yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota
constant yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE (line 506) | yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE
constant yaml_PARSE_DOCUMENT_START_STATE (line 508) | yaml_PARSE_DOCUMENT_START_STATE
constant yaml_PARSE_DOCUMENT_CONTENT_STATE (line 510) | yaml_PARSE_DOCUMENT_CONTENT_STATE
constant yaml_PARSE_DOCUMENT_END_STATE (line 512) | yaml_PARSE_DOCUMENT_END_STATE
constant yaml_PARSE_BLOCK_NODE_STATE (line 514) | yaml_PARSE_BLOCK_NODE_STATE
constant yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE (line 516) | yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE
constant yaml_PARSE_FLOW_NODE_STATE (line 518) | yaml_PARSE_FLOW_NODE_STATE
constant yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE (line 520) | yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE
constant yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE (line 522) | yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE
constant yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE (line 524) | yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
constant yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE (line 526) | yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE
constant yaml_PARSE_BLOCK_MAPPING_KEY_STATE (line 528) | yaml_PARSE_BLOCK_MAPPING_KEY_STATE
constant yaml_PARSE_BLOCK_MAPPING_VALUE_STATE (line 530) | yaml_PARSE_BLOCK_MAPPING_VALUE_STATE
constant yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE (line 532) | yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE
constant yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE (line 534) | yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE
constant yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE (line 536) | yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE
constant yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE (line 538) | yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE
constant yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE (line 540) | yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE
constant yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE (line 542) | yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE
constant yaml_PARSE_FLOW_MAPPING_KEY_STATE (line 544) | yaml_PARSE_FLOW_MAPPING_KEY_STATE
constant yaml_PARSE_FLOW_MAPPING_VALUE_STATE (line 546) | yaml_PARSE_FLOW_MAPPING_VALUE_STATE
constant yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE (line 548) | yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE
constant yaml_PARSE_END_STATE (line 550) | yaml_PARSE_END_STATE
type yaml_alias_data_t (line 557) | type yaml_alias_data_t struct
type yaml_parser_t (line 573) | type yaml_parser_t struct
type yaml_write_handler_t (line 733) | type yaml_write_handler_t
type yaml_emitter_state_t (line 736) | type yaml_emitter_state_t
constant yaml_EMIT_STREAM_START_STATE (line 740) | yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota
constant yaml_EMIT_FIRST_DOCUMENT_START_STATE (line 742) | yaml_EMIT_FIRST_DOCUMENT_START_STATE
constant yaml_EMIT_DOCUMENT_START_STATE (line 744) | yaml_EMIT_DOCUMENT_START_STATE
constant yaml_EMIT_DOCUMENT_CONTENT_STATE (line 746) | yaml_EMIT_DOCUMENT_CONTENT_STATE
constant yaml_EMIT_DOCUMENT_END_STATE (line 748) | yaml_EMIT_DOCUMENT_END_STATE
constant yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE (line 750) | yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE
constant yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE (line 752) | yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE
constant yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE (line 754) | yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE
constant yaml_EMIT_FLOW_MAPPING_KEY_STATE (line 756) | yaml_EMIT_FLOW_MAPPING_KEY_STATE
constant yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE (line 758) | yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE
constant yaml_EMIT_FLOW_MAPPING_VALUE_STATE (line 760) | yaml_EMIT_FLOW_MAPPING_VALUE_STATE
constant yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE (line 762) | yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE
constant yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE (line 764) | yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE
constant yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE (line 766) | yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE
constant yaml_EMIT_BLOCK_MAPPING_KEY_STATE (line 768) | yaml_EMIT_BLOCK_MAPPING_KEY_STATE
constant yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE (line 770) | yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE
constant yaml_EMIT_BLOCK_MAPPING_VALUE_STATE (line 772) | yaml_EMIT_BLOCK_MAPPING_VALUE_STATE
constant yaml_EMIT_END_STATE (line 774) | yaml_EMIT_END_STATE
type yaml_emitter_t (line 784) | type yaml_emitter_t struct
FILE: vendor/github.com/davecgh/go-spew/spew/common.go
constant ptrSize (line 31) | ptrSize = unsafe.Sizeof((*byte)(nil))
function init (line 63) | func init() {
function unsafeReflectValue (line 104) | func unsafeReflectValue(v reflect.Value) (rv reflect.Value) {
function catchPanic (line 180) | func catchPanic(w io.Writer, v reflect.Value) {
function handleMethods (line 193) | func handleMethods(cs *ConfigState, w io.Writer, v reflect.Value) (handl...
function printBool (line 253) | func printBool(w io.Writer, val bool) {
function printInt (line 262) | func printInt(w io.Writer, val int64, base int) {
function printUint (line 267) | func printUint(w io.Writer, val uint64, base int) {
function printFloat (line 273) | func printFloat(w io.Writer, val float64, precision int) {
function printComplex (line 279) | func printComplex(w io.Writer, c complex128, floatPrecision int) {
function printHexPtr (line 294) | func printHexPtr(w io.Writer, p uintptr) {
type valuesSorter (line 328) | type valuesSorter struct
method Len (line 388) | func (s *valuesSorter) Len() int {
method Swap (line 394) | func (s *valuesSorter) Swap(i, j int) {
method Less (line 435) | func (s *valuesSorter) Less(i, j int) bool {
function newValuesSorter (line 337) | func newValuesSorter(values []reflect.Value, cs *ConfigState) sort.Inter...
function canSortSimply (line 365) | func canSortSimply(kind reflect.Kind) bool {
function valueSortLess (line 404) | func valueSortLess(a, b reflect.Value) bool {
function sortValues (line 445) | func sortValues(values []reflect.Value, cs *ConfigState) {
FILE: vendor/github.com/davecgh/go-spew/spew/common_test.go
type stringer (line 28) | type stringer
method String (line 32) | func (s stringer) String() string {
type pstringer (line 37) | type pstringer
method String (line 41) | func (s *pstringer) String() string {
type xref1 (line 47) | type xref1 struct
type xref2 (line 50) | type xref2 struct
type indirCir1 (line 56) | type indirCir1 struct
type indirCir2 (line 59) | type indirCir2 struct
type indirCir3 (line 62) | type indirCir3 struct
type embed (line 67) | type embed struct
type embedwrap (line 72) | type embedwrap struct
type panicer (line 79) | type panicer
method String (line 81) | func (p panicer) String() string {
type customError (line 86) | type customError
method Error (line 88) | func (e customError) Error() string {
function stringizeWants (line 94) | func stringizeWants(wants []string) string {
function testFailed (line 108) | func testFailed(result string, wants []string) bool {
type sortableStruct (line 117) | type sortableStruct struct
method String (line 121) | func (ss sortableStruct) String() string {
type unsortableStruct (line 125) | type unsortableStruct struct
type sortTestCase (line 129) | type sortTestCase struct
function helpTestSortValues (line 134) | func helpTestSortValues(tests []sortTestCase, cs *spew.ConfigState, t *t...
function TestSortValues (line 159) | func TestSortValues(t *testing.T) {
function TestSortValuesWithMethods (line 233) | func TestSortValuesWithMethods(t *testing.T) {
function TestSortValuesWithSpew (line 268) | func TestSortValuesWithSpew(t *testing.T) {
FILE: vendor/github.com/davecgh/go-spew/spew/config.go
type ConfigState (line 37) | type ConfigState struct
method Errorf (line 103) | func (c *ConfigState) Errorf(format string, a ...interface{}) (err err...
method Fprint (line 115) | func (c *ConfigState) Fprint(w io.Writer, a ...interface{}) (n int, er...
method Fprintf (line 127) | func (c *ConfigState) Fprintf(w io.Writer, format string, a ...interfa...
method Fprintln (line 138) | func (c *ConfigState) Fprintln(w io.Writer, a ...interface{}) (n int, ...
method Print (line 150) | func (c *ConfigState) Print(a ...interface{}) (n int, err error) {
method Printf (line 162) | func (c *ConfigState) Printf(format string, a ...interface{}) (n int, ...
method Println (line 174) | func (c *ConfigState) Println(a ...interface{}) (n int, err error) {
method Sprint (line 185) | func (c *ConfigState) Sprint(a ...interface{}) string {
method Sprintf (line 196) | func (c *ConfigState) Sprintf(format string, a ...interface{}) string {
method Sprintln (line 207) | func (c *ConfigState) Sprintln(a ...interface{}) string {
method NewFormatter (line 228) | func (c *ConfigState) NewFormatter(v interface{}) fmt.Formatter {
method Fdump (line 234) | func (c *ConfigState) Fdump(w io.Writer, a ...interface{}) {
method Dump (line 261) | func (c *ConfigState) Dump(a ...interface{}) {
method Sdump (line 267) | func (c *ConfigState) Sdump(a ...interface{}) string {
method convertArgs (line 276) | func (c *ConfigState) convertArgs(args []interface{}) (formatters []in...
function NewDefaultConfig (line 292) | func NewDefaultConfig() *ConfigState {
FILE: vendor/github.com/davecgh/go-spew/spew/dump.go
type dumpState (line 51) | type dumpState struct
method indent (line 62) | func (d *dumpState) indent() {
method unpackValue (line 73) | func (d *dumpState) unpackValue(v reflect.Value) reflect.Value {
method dumpPtr (line 81) | func (d *dumpState) dumpPtr(v reflect.Value) {
method dumpSlice (line 161) | func (d *dumpState) dumpSlice(v reflect.Value) {
method dump (line 248) | func (d *dumpState) dump(v reflect.Value) {
function fdump (line 450) | func fdump(cs *ConfigState, w io.Writer, a ...interface{}) {
function Fdump (line 469) | func Fdump(w io.Writer, a ...interface{}) {
function Sdump (line 475) | func Sdump(a ...interface{}) string {
function Dump (line 504) | func Dump(a ...interface{}) {
FILE: vendor/github.com/davecgh/go-spew/spew/dump_test.go
type dumpTest (line 74) | type dumpTest struct
function addDumpTest (line 84) | func addDumpTest(in interface{}, wants ...string) {
function addIntDumpTests (line 89) | func addIntDumpTests() {
function addUintDumpTests (line 156) | func addUintDumpTests() {
function addBoolDumpTests (line 223) | func addBoolDumpTests() {
function addFloatDumpTests (line 249) | func addFloatDumpTests() {
function addComplexDumpTests (line 277) | func addComplexDumpTests() {
function addArrayDumpTests (line 305) | func addArrayDumpTests() {
function addSliceDumpTests (line 396) | func addSliceDumpTests() {
function addStringDumpTests (line 501) | func addStringDumpTests() {
function addInterfaceDumpTests (line 517) | func addInterfaceDumpTests() {
function addMapDumpTests (line 543) | func addMapDumpTests() {
function addStructDumpTests (line 639) | func addStructDumpTests() {
function addUintptrDumpTests (line 723) | func addUintptrDumpTests() {
function addUnsafePointerDumpTests (line 750) | func addUnsafePointerDumpTests() {
function addChanDumpTests (line 778) | func addChanDumpTests() {
function addFuncDumpTests (line 804) | func addFuncDumpTests() {
function addCircularDumpTests (line 847) | func addCircularDumpTests() {
function addPanicDumpTests (line 910) | func addPanicDumpTests() {
function addErrorDumpTests (line 925) | func addErrorDumpTests() {
function TestDump (line 941) | func TestDump(t *testing.T) {
function TestDumpSortedKeys (line 975) | func TestDumpSortedKeys(t *testing.T) {
FILE: vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go
function addCgoDumpTests (line 31) | func addCgoDumpTests() {
FILE: vendor/github.com/davecgh/go-spew/spew/dumpnocgo_test.go
function addCgoDumpTests (line 23) | func addCgoDumpTests() {
FILE: vendor/github.com/davecgh/go-spew/spew/example_test.go
type Flag (line 24) | type Flag
method String (line 36) | func (f Flag) String() string {
constant flagOne (line 27) | flagOne Flag = iota
constant flagTwo (line 28) | flagTwo
type Bar (line 43) | type Bar struct
type Foo (line 48) | type Foo struct
function ExampleDump (line 54) | func ExampleDump() {
function ExamplePrintf (line 123) | func ExamplePrintf() {
function ExampleConfigState (line 147) | func ExampleConfigState() {
function ExampleConfigState_Dump (line 166) | func ExampleConfigState_Dump() {
function ExampleConfigState_Printf (line 206) | func ExampleConfigState_Printf() {
FILE: vendor/github.com/davecgh/go-spew/spew/format.go
constant supportedFlags (line 28) | supportedFlags = "0-+# "
type formatState (line 34) | type formatState struct
method buildDefaultFormat (line 47) | func (f *formatState) buildDefaultFormat() (format string) {
method constructOrigFormat (line 65) | func (f *formatState) constructOrigFormat(verb rune) (format string) {
method unpackValue (line 94) | func (f *formatState) unpackValue(v reflect.Value) reflect.Value {
method formatPtr (line 105) | func (f *formatState) formatPtr(v reflect.Value) {
method format (line 201) | func (f *formatState) format(v reflect.Value) {
method Format (line 371) | func (f *formatState) Format(fs fmt.State, verb rune) {
function newFormatter (line 394) | func newFormatter(cs *ConfigState, v interface{}) fmt.Formatter {
function NewFormatter (line 417) | func NewFormatter(v interface{}) fmt.Formatter {
FILE: vendor/github.com/davecgh/go-spew/spew/format_test.go
type formatterTest (line 79) | type formatterTest struct
function addFormatterTest (line 90) | func addFormatterTest(format string, in interface{}, wants ...string) {
function addIntFormatterTests (line 95) | func addIntFormatterTests() {
function addUintFormatterTests (line 222) | func addUintFormatterTests() {
function addBoolFormatterTests (line 349) | func addBoolFormatterTests() {
function addFloatFormatterTests (line 396) | func addFloatFormatterTests() {
function addComplexFormatterTests (line 448) | func addComplexFormatterTests() {
function addArrayFormatterTests (line 500) | func addArrayFormatterTests() {
function addSliceFormatterTests (line 581) | func addSliceFormatterTests() {
function addStringFormatterTests (line 689) | func addStringFormatterTests() {
function addInterfaceFormatterTests (line 716) | func addInterfaceFormatterTests() {
function addMapFormatterTests (line 763) | func addMapFormatterTests() {
function addStructFormatterTests (line 879) | func addStructFormatterTests() {
function addUintptrFormatterTests (line 1018) | func addUintptrFormatterTests() {
function addUnsafePointerFormatterTests (line 1066) | func addUnsafePointerFormatterTests() {
function addChanFormatterTests (line 1114) | func addChanFormatterTests() {
function addFuncFormatterTests (line 1161) | func addFuncFormatterTests() {
function addCircularFormatterTests (line 1240) | func addCircularFormatterTests() {
function addPanicFormatterTests (line 1352) | func addPanicFormatterTests() {
function addErrorFormatterTests (line 1379) | func addErrorFormatterTests() {
function addPassthroughFormatterTests (line 1406) | func addPassthroughFormatterTests() {
function TestFormatter (line 1447) | func TestFormatter(t *testing.T) {
type testStruct (line 1482) | type testStruct struct
method String (line 1486) | func (ts testStruct) String() string {
type testStructP (line 1490) | type testStructP struct
method String (line 1494) | func (ts *testStructP) String() string {
function TestPrintSortedKeys (line 1498) | func TestPrintSortedKeys(t *testing.T) {
FILE: vendor/github.com/davecgh/go-spew/spew/internal_test.go
type dummyFmtState (line 35) | type dummyFmtState struct
method Flag (line 39) | func (dfs *dummyFmtState) Flag(f int) bool {
method Precision (line 46) | func (dfs *dummyFmtState) Precision() (int, bool) {
method Width (line 50) | func (dfs *dummyFmtState) Width() (int, bool) {
function TestInvalidReflectValue (line 58) | func TestInvalidReflectValue(t *testing.T) {
function changeKind (line 88) | func changeKind(v *reflect.Value, readOnly bool) {
function TestAddedReflectValue (line 101) | func TestAddedReflectValue(t *testing.T) {
function SortValues (line 154) | func SortValues(values []reflect.Value, cs *ConfigState) {
FILE: vendor/github.com/davecgh/go-spew/spew/spew.go
function Errorf (line 32) | func Errorf(format string, a ...interface{}) (err error) {
function Fprint (line 44) | func Fprint(w io.Writer, a ...interface{}) (n int, err error) {
function Fprintf (line 56) | func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err e...
function Fprintln (line 67) | func Fprintln(w io.Writer, a ...interface{}) (n int, err error) {
function Print (line 79) | func Print(a ...interface{}) (n int, err error) {
function Printf (line 91) | func Printf(format string, a ...interface{}) (n int, err error) {
function Println (line 103) | func Println(a ...interface{}) (n int, err error) {
function Sprint (line 114) | func Sprint(a ...interface{}) string {
function Sprintf (line 125) | func Sprintf(format string, a ...interface{}) string {
function Sprintln (line 136) | func Sprintln(a ...interface{}) string {
function convertArgs (line 142) | func convertArgs(args []interface{}) (formatters []interface{}) {
FILE: vendor/github.com/davecgh/go-spew/spew/spew_test.go
type spewFunc (line 30) | type spewFunc
method String (line 81) | func (f spewFunc) String() string {
constant fCSFdump (line 33) | fCSFdump spewFunc = iota
constant fCSFprint (line 34) | fCSFprint
constant fCSFprintf (line 35) | fCSFprintf
constant fCSFprintln (line 36) | fCSFprintln
constant fCSPrint (line 37) | fCSPrint
constant fCSPrintln (line 38) | fCSPrintln
constant fCSSdump (line 39) | fCSSdump
constant fCSSprint (line 40) | fCSSprint
constant fCSSprintf (line 41) | fCSSprintf
constant fCSSprintln (line 42) | fCSSprintln
constant fCSErrorf (line 43) | fCSErrorf
constant fCSNewFormatter (line 44) | fCSNewFormatter
constant fErrorf (line 45) | fErrorf
constant fFprint (line 46) | fFprint
constant fFprintln (line 47) | fFprintln
constant fPrint (line 48) | fPrint
constant fPrintln (line 49) | fPrintln
constant fSdump (line 50) | fSdump
constant fSprint (line 51) | fSprint
constant fSprintf (line 52) | fSprintf
constant fSprintln (line 53) | fSprintln
type spewTest (line 90) | type spewTest struct
function redirStdout (line 108) | func redirStdout(f func()) ([]byte, error) {
function initSpewTests (line 125) | func initSpewTests() {
function TestSpew (line 198) | func TestSpew(t *testing.T) {
FILE: vendor/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go
function GetCgoNullCharPointer (line 44) | func GetCgoNullCharPointer() interface{} {
function GetCgoCharPointer (line 50) | func GetCgoCharPointer() interface{} {
function GetCgoCharArray (line 56) | func GetCgoCharArray() (interface{}, int, int) {
function GetCgoUnsignedCharArray (line 62) | func GetCgoUnsignedCharArray() (interface{}, int, int) {
function GetCgoSignedCharArray (line 68) | func GetCgoSignedCharArray() (interface{}, int, int) {
function GetCgoUint8tArray (line 74) | func GetCgoUint8tArray() (interface{}, int, int) {
function GetCgoTypdefedUnsignedCharArray (line 80) | func GetCgoTypdefedUnsignedCharArray() (interface{}, int, int) {
FILE: vendor/github.com/docker/docker/api/api_unit_test.go
function TestJsonContentType (line 7) | func TestJsonContentType(t *testing.T) {
FILE: vendor/github.com/docker/docker/api/client/attach.go
method CmdAttach (line 18) | func (cli *DockerCli) CmdAttach(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/build.go
constant tarHeaderSize (line 38) | tarHeaderSize = 512
method CmdBuild (line 46) | func (cli *DockerCli) CmdBuild(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/cli.go
type DockerCli (line 23) | type DockerCli struct
method Out (line 65) | func (cli *DockerCli) Out() io.Writer {
method Err (line 69) | func (cli *DockerCli) Err() io.Writer {
method getMethod (line 73) | func (cli *DockerCli) getMethod(args ...string) (func(...string) error...
method Cmd (line 90) | func (cli *DockerCli) Cmd(args ...string) error {
method Subcmd (line 124) | func (cli *DockerCli) Subcmd(name string, synopses []string, descripti...
method CheckTtyInput (line 172) | func (cli *DockerCli) CheckTtyInput(attachStdin, ttyMode bool) error {
function NewDockerCli (line 186) | func NewDockerCli(in io.ReadCloser, out, err io.Writer, keyFile string, ...
FILE: vendor/github.com/docker/docker/api/client/client.go
type StatusError (line 10) | type StatusError struct
method Error (line 15) | func (e StatusError) Error() string {
FILE: vendor/github.com/docker/docker/api/client/commit.go
method CmdCommit (line 19) | func (cli *DockerCli) CmdCommit(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/cp.go
type copyDirection (line 19) | type copyDirection
constant fromContainer (line 22) | fromContainer copyDirection = (1 << iota)
constant toContainer (line 23) | toContainer
constant acrossContainers (line 24) | acrossContainers = fromContainer | toContainer
method CmdCp (line 39) | func (cli *DockerCli) CmdCp(args ...string) error {
function splitCpArg (line 102) | func splitCpArg(arg string) (container, path string) {
method statContainerPath (line 119) | func (cli *DockerCli) statContainerPath(containerName, path string) (typ...
function getContainerPathStatFromHeader (line 140) | func getContainerPathStatFromHeader(header http.Header) (types.Container...
function resolveLocalPath (line 154) | func resolveLocalPath(localPath string) (absPath string, err error) {
method copyFromContainer (line 162) | func (cli *DockerCli) copyFromContainer(srcContainer, srcPath, dstPath s...
method copyToContainer (line 217) | func (cli *DockerCli) copyToContainer(srcPath, dstContainer, dstPath str...
FILE: vendor/github.com/docker/docker/api/client/create.go
method pullImage (line 20) | func (cli *DockerCli) pullImage(image string) error {
method pullImageCustomOut (line 24) | func (cli *DockerCli) pullImageCustomOut(image string, out io.Writer) er...
type cidFile (line 61) | type cidFile struct
function newCIDFile (line 67) | func newCIDFile(path string) (*cidFile, error) {
method createContainer (line 80) | func (cli *DockerCli) createContainer(config *runconfig.Config, hostConf...
method CmdCreate (line 139) | func (cli *DockerCli) CmdCreate(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/diff.go
method CmdDiff (line 19) | func (cli *DockerCli) CmdDiff(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/events.go
method CmdEvents (line 16) | func (cli *DockerCli) CmdEvents(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/exec.go
method CmdExec (line 17) | func (cli *DockerCli) CmdExec(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/export.go
method CmdExport (line 16) | func (cli *DockerCli) CmdExport(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/help.go
method CmdHelp (line 14) | func (cli *DockerCli) CmdHelp(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/hijack.go
type tlsClientCon (line 24) | type tlsClientCon struct
method CloseWrite (line 29) | func (c *tlsClientCon) CloseWrite() error {
function tlsDial (line 40) | func tlsDial(network, addr string, config *tls.Config) (net.Conn, error) {
function tlsDialWithDialer (line 49) | func tlsDialWithDialer(dialer *net.Dialer, network, addr string, config ...
method dial (line 122) | func (cli *DockerCli) dial() (net.Conn, error) {
method hijack (line 130) | func (cli *DockerCli) hijack(method, path string, setRawTerminal bool, i...
FILE: vendor/github.com/docker/docker/api/client/history.go
method CmdHistory (line 19) | func (cli *DockerCli) CmdHistory(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/images.go
method CmdImages (line 23) | func (cli *DockerCli) CmdImages(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/import.go
method CmdImport (line 21) | func (cli *DockerCli) CmdImport(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/info.go
method CmdInfo (line 17) | func (cli *DockerCli) CmdInfo(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/inspect.go
method CmdInspect (line 18) | func (cli *DockerCli) CmdInspect(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/kill.go
method CmdKill (line 12) | func (cli *DockerCli) CmdKill(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/load.go
method CmdLoad (line 15) | func (cli *DockerCli) CmdLoad(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/login.go
method CmdLogin (line 23) | func (cli *DockerCli) CmdLogin(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/logout.go
method CmdLogout (line 15) | func (cli *DockerCli) CmdLogout(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/logs.go
method CmdLogs (line 17) | func (cli *DockerCli) CmdLogs(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/network.go
method CmdNetwork (line 11) | func (cli *DockerCli) CmdNetwork(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/pause.go
method CmdPause (line 12) | func (cli *DockerCli) CmdPause(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/port.go
method CmdPort (line 16) | func (cli *DockerCli) CmdPort(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/ps.go
method CmdPs (line 25) | func (cli *DockerCli) CmdPs(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/pull.go
method CmdPull (line 17) | func (cli *DockerCli) CmdPull(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/push.go
method CmdPush (line 15) | func (cli *DockerCli) CmdPush(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/rename.go
method CmdRename (line 12) | func (cli *DockerCli) CmdRename(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/restart.go
method CmdRestart (line 14) | func (cli *DockerCli) CmdRestart(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/rm.go
method CmdRm (line 14) | func (cli *DockerCli) CmdRm(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/rmi.go
method CmdRmi (line 15) | func (cli *DockerCli) CmdRmi(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/run.go
method Close (line 18) | func (cid *cidFile) Close() error {
method Write (line 30) | func (cid *cidFile) Write(id string) error {
method CmdRun (line 41) | func (cli *DockerCli) CmdRun(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/save.go
method CmdSave (line 17) | func (cli *DockerCli) CmdSave(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/search.go
type ByStars (line 18) | type ByStars
method Len (line 20) | func (r ByStars) Len() int { return len(r) }
method Swap (line 21) | func (r ByStars) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
method Less (line 22) | func (r ByStars) Less(i, j int) bool { return r[i].StarCount < r[j].St...
method CmdSearch (line 27) | func (cli *DockerCli) CmdSearch(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/service.go
method CmdService (line 11) | func (cli *DockerCli) CmdService(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/start.go
method forwardAllSignals (line 17) | func (cli *DockerCli) forwardAllSignals(cid string) chan os.Signal {
method CmdStart (line 46) | func (cli *DockerCli) CmdStart(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/stats.go
type containerStats (line 19) | type containerStats struct
method Collect (line 31) | func (s *containerStats) Collect(cli *DockerCli, streamStats bool) {
method Display (line 106) | func (s *containerStats) Display(w io.Writer) error {
method CmdStats (line 126) | func (cli *DockerCli) CmdStats(args ...string) error {
function calculateCPUPercent (line 188) | func calculateCPUPercent(previousCPU, previousSystem uint64, v *types.St...
FILE: vendor/github.com/docker/docker/api/client/stats_unit_test.go
function TestDisplay (line 9) | func TestDisplay(t *testing.T) {
FILE: vendor/github.com/docker/docker/api/client/stop.go
method CmdStop (line 16) | func (cli *DockerCli) CmdStop(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/tag.go
method CmdTag (line 14) | func (cli *DockerCli) CmdTag(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/top.go
method CmdTop (line 17) | func (cli *DockerCli) CmdTop(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/unpause.go
method CmdUnpause (line 12) | func (cli *DockerCli) CmdUnpause(args ...string) error {
FILE: vendor/github.com/docker/docker/api/client/utils.go
type serverResponse (line 36) | type serverResponse struct
method HTTPClient (line 43) | func (cli *DockerCli) HTTPClient() *http.Client {
method encodeData (line 47) | func (cli *DockerCli) encodeData(data interface{}) (*bytes.Buffer, error) {
method clientRequest (line 57) | func (cli *DockerCli) clientRequest(method, path string, in io.Reader, h...
method clientRequestAttemptLogin (line 128) | func (cli *DockerCli) clientRequestAttemptLogin(method, path string, in ...
method callWrapper (line 174) | func (cli *DockerCli) callWrapper(method, path string, data interface{},...
method call (line 179) | func (cli *DockerCli) call(method, path string, data interface{}, header...
type streamOpts (line 201) | type streamOpts struct
method stream (line 209) | func (cli *DockerCli) stream(method, path string, opts *streamOpts) (*se...
method streamBody (line 217) | func (cli *DockerCli) streamBody(body io.ReadCloser, contentType string,...
method resizeTty (line 237) | func (cli *DockerCli) resizeTty(id string, isExec bool) {
function waitForExit (line 258) | func waitForExit(cli *DockerCli, containerID string) (int, error) {
function getExitCode (line 276) | func getExitCode(cli *DockerCli, containerID string) (bool, int, error) {
function getExecExitCode (line 298) | func getExecExitCode(cli *DockerCli, execID string) (bool, int, error) {
method monitorTtySize (line 324) | func (cli *DockerCli) monitorTtySize(id string, isExec bool) error {
method getTtySize (line 353) | func (cli *DockerCli) getTtySize() (int, int) {
function readBody (line 367) | func readBody(serverResp *serverResponse, err error) ([]byte, int, error) {
FILE: vendor/github.com/docker/docker/api/client/version.go
type VersionData (line 33) | type VersionData struct
method CmdVersion (line 44) | func (cli *DockerCli) CmdVersion(args ...string) (err error) {
FILE: vendor/github.com/docker/docker/api/client/wait.go
method CmdWait (line 14) | func (cli *DockerCli) CmdWait(args ...string) error {
FILE: vendor/github.com/docker/docker/api/common.go
constant Version (line 20) | Version version.Version = "1.20"
constant MinVersion (line 23) | MinVersion version.Version = "1.12"
constant DefaultDockerfileName (line 26) | DefaultDockerfileName string = "Dockerfile"
type ByPrivatePort (line 29) | type ByPrivatePort
method Len (line 31) | func (r ByPrivatePort) Len() int { return len(r) }
method Swap (line 32) | func (r ByPrivatePort) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
method Less (line 33) | func (r ByPrivatePort) Less(i, j int) bool { return r[i].PrivatePort <...
function DisplayablePorts (line 35) | func DisplayablePorts(ports []types.Port) string {
function FormGroup (line 83) | func FormGroup(key string, start, last int) string {
function MatchesContentType (line 105) | func MatchesContentType(contentType, expectedType string) bool {
function LoadOrCreateTrustKey (line 115) | func LoadOrCreateTrustKey(trustKeyPath string) (libtrust.PrivateKey, err...
FILE: vendor/github.com/docker/docker/api/server/form.go
function boolValue (line 9) | func boolValue(r *http.Request, k string) bool {
function boolValueOrDefault (line 16) | func boolValueOrDefault(r *http.Request, k string, d bool) bool {
function int64ValueOrZero (line 23) | func int64ValueOrZero(r *http.Request, k string) int64 {
FILE: vendor/github.com/docker/docker/api/server/form_test.go
function TestBoolValue (line 9) | func TestBoolValue(t *testing.T) {
function TestBoolValueOrDefault (line 36) | func TestBoolValueOrDefault(t *testing.T) {
function TestInt64ValueOrZero (line 51) | func TestInt64ValueOrZero(t *testing.T) {
FILE: vendor/github.com/docker/docker/api/server/profiler.go
function ProfilerSetup (line 12) | func ProfilerSetup(mainRouter *mux.Router, path string) {
function expVars (line 26) | func expVars(w http.ResponseWriter, r *http.Request) {
FILE: vendor/github.com/docker/docker/api/server/server.go
type ServerConfig (line 42) | type ServerConfig struct
type Server (line 51) | type Server struct
method Close (line 69) | func (s *Server) Close() {
method ServeApi (line 84) | func (s *Server) ServeApi(protoAddrs []string) error {
method postAuth (line 228) | func (s *Server) postAuth(version version.Version, w http.ResponseWrit...
method getVersion (line 244) | func (s *Server) getVersion(version version.Version, w http.ResponseWr...
method postContainersKill (line 266) | func (s *Server) postContainersKill(version version.Version, w http.Re...
method postContainersPause (line 307) | func (s *Server) postContainersPause(version version.Version, w http.R...
method postContainersUnpause (line 324) | func (s *Server) postContainersUnpause(version version.Version, w http...
method getContainersExport (line 341) | func (s *Server) getContainersExport(version version.Version, w http.R...
method getImagesJSON (line 349) | func (s *Server) getImagesJSON(version version.Version, w http.Respons...
method getInfo (line 369) | func (s *Server) getInfo(version version.Version, w http.ResponseWrite...
method getEvents (line 378) | func (s *Server) getEvents(version version.Version, w http.ResponseWri...
method getImagesHistory (line 500) | func (s *Server) getImagesHistory(version version.Version, w http.Resp...
method getContainersChanges (line 514) | func (s *Server) getContainersChanges(version version.Version, w http....
method getContainersTop (line 527) | func (s *Server) getContainersTop(version version.Version, w http.Resp...
method getContainersJSON (line 544) | func (s *Server) getContainersJSON(version version.Version, w http.Res...
method getContainersStats (line 573) | func (s *Server) getContainersStats(version version.Version, w http.Re...
method getContainersLogs (line 604) | func (s *Server) getContainersLogs(version version.Version, w http.Res...
method postImagesTag (line 650) | func (s *Server) postImagesTag(version version.Version, w http.Respons...
method postCommit (line 670) | func (s *Server) postCommit(version version.Version, w http.ResponseWr...
method postImagesCreate (line 712) | func (s *Server) postImagesCreate(version version.Version, w http.Resp...
method getImagesSearch (line 794) | func (s *Server) getImagesSearch(version version.Version, w http.Respo...
method postImagesPush (line 824) | func (s *Server) postImagesPush(version version.Version, w http.Respon...
method getImagesGet (line 877) | func (s *Server) getImagesGet(version version.Version, w http.Response...
method postImagesLoad (line 906) | func (s *Server) postImagesLoad(version version.Version, w http.Respon...
method postContainersCreate (line 910) | func (s *Server) postContainersCreate(version version.Version, w http....
method postContainersRestart (line 939) | func (s *Server) postContainersRestart(version version.Version, w http...
method postContainerRename (line 958) | func (s *Server) postContainerRename(version version.Version, w http.R...
method deleteContainers (line 975) | func (s *Server) deleteContainers(version version.Version, w http.Resp...
method deleteImages (line 1003) | func (s *Server) deleteImages(version version.Version, w http.Response...
method postContainersStart (line 1023) | func (s *Server) postContainersStart(version version.Version, w http.R...
method postContainersStop (line 1059) | func (s *Server) postContainersStop(version version.Version, w http.Re...
method postContainersWait (line 1081) | func (s *Server) postContainersWait(version version.Version, w http.Re...
method postContainersResize (line 1096) | func (s *Server) postContainersResize(version version.Version, w http....
method postContainersAttach (line 1116) | func (s *Server) postContainersAttach(version version.Version, w http....
method wsContainersAttach (line 1158) | func (s *Server) wsContainersAttach(version version.Version, w http.Re...
method getContainersByName (line 1191) | func (s *Server) getContainersByName(version version.Version, w http.R...
method getExecByID (line 1211) | func (s *Server) getExecByID(version version.Version, w http.ResponseW...
method getImagesByName (line 1224) | func (s *Server) getImagesByName(version version.Version, w http.Respo...
method postBuild (line 1237) | func (s *Server) postBuild(version version.Version, w http.ResponseWri...
method postContainersCopy (line 1313) | func (s *Server) postContainersCopy(version version.Version, w http.Re...
method headContainersArchive (line 1367) | func (s *Server) headContainersArchive(version version.Version, w http...
method getContainersArchive (line 1393) | func (s *Server) getContainersArchive(version version.Version, w http....
method putContainersArchive (line 1427) | func (s *Server) putContainersArchive(version version.Version, w http....
method postContainerExecCreate (line 1450) | func (s *Server) postContainerExecCreate(version version.Version, w ht...
method postContainerExecStart (line 1482) | func (s *Server) postContainerExecStart(version version.Version, w htt...
method postContainerExecResize (line 1534) | func (s *Server) postContainerExecResize(version version.Version, w ht...
method optionsHandler (line 1554) | func (s *Server) optionsHandler(version version.Version, w http.Respon...
method ping (line 1565) | func (s *Server) ping(version version.Version, w http.ResponseWriter, ...
method initTcpSocket (line 1570) | func (s *Server) initTcpSocket(addr string) (l net.Listener, err error) {
function New (line 59) | func New(cfg *ServerConfig) *Server {
type serverCloser (line 77) | type serverCloser interface
type HttpServer (line 119) | type HttpServer struct
method Serve (line 124) | func (s *HttpServer) Serve() error {
method Close (line 127) | func (s *HttpServer) Close() error {
type HttpApiFunc (line 131) | type HttpApiFunc
function hijackServer (line 133) | func hijackServer(w http.ResponseWriter) (io.ReadCloser, io.Writer, erro...
function closeStreams (line 143) | func closeStreams(streams ...interface{}) {
function checkForJson (line 156) | func checkForJson(r *http.Request) error {
function parseForm (line 174) | func parseForm(r *http.Request) error {
function parseMultipartForm (line 184) | func parseMultipartForm(r *http.Request) error {
function httpError (line 191) | func httpError(w http.ResponseWriter, err error) {
function writeJSON (line 222) | func writeJSON(w http.ResponseWriter, code int, v interface{}) error {
function setContainerPathStatHeader (line 1353) | func setContainerPathStatHeader(stat *types.ContainerPathStat, header ht...
function writeCorsHeaders (line 1558) | func writeCorsHeaders(w http.ResponseWriter, r *http.Request, corsHeader...
function makeHttpHandler (line 1583) | func makeHttpHandler(logging bool, localMethod string, localRoute string...
function createRouter (line 1632) | func createRouter(s *Server) *mux.Router {
FILE: vendor/github.com/docker/docker/api/server/server_experimental.go
method registerSubRouter (line 5) | func (s *Server) registerSubRouter() {
FILE: vendor/github.com/docker/docker/api/server/server_linux.go
constant linuxMinCpuShares (line 22) | linuxMinCpuShares = 2
constant linuxMaxCpuShares (line 23) | linuxMaxCpuShares = 262144
method newServer (line 27) | func (s *Server) newServer(proto, addr string) ([]serverCloser, error) {
method AcceptConnections (line 70) | func (s *Server) AcceptConnections(d *daemon.Daemon) {
function allocateDaemonPort (line 83) | func allocateDaemonPort(addr string) error {
function adjustCpuShares (line 110) | func adjustCpuShares(version version.Version, hostConfig *runconfig.Host...
FILE: vendor/github.com/docker/docker/api/server/server_linux_test.go
function TestAdjustCpuSharesOldApi (line 12) | func TestAdjustCpuSharesOldApi(t *testing.T) {
function TestAdjustCpuSharesNoAdjustment (line 41) | func TestAdjustCpuSharesNoAdjustment(t *testing.T) {
FILE: vendor/github.com/docker/docker/api/server/server_stub.go
method registerSubRouter (line 5) | func (s *Server) registerSubRouter() {
FILE: vendor/github.com/docker/docker/api/server/server_windows.go
method newServer (line 16) | func (s *Server) newServer(proto, addr string) ([]serverCloser, error) {
method AcceptConnections (line 46) | func (s *Server) AcceptConnections(d *daemon.Daemon) {
function allocateDaemonPort (line 57) | func allocateDaemonPort(addr string) error {
function adjustCpuShares (line 61) | func adjustCpuShares(version version.Version, hostConfig *runconfig.Host...
FILE: vendor/github.com/docker/docker/api/types/stats.go
type ThrottlingData (line 7) | type ThrottlingData struct
type CpuUsage (line 17) | type CpuUsage struct
type CpuStats (line 32) | type CpuStats struct
type MemoryStats (line 38) | type MemoryStats struct
type BlkioStatEntry (line 52) | type BlkioStatEntry struct
type BlkioStats (line 60) | type BlkioStats struct
type Network (line 73) | type Network struct
type Stats (line 84) | type Stats struct
FILE: vendor/github.com/docker/docker/api/types/types.go
type ContainerCreateResponse (line 14) | type ContainerCreateResponse struct
type ContainerExecCreateResponse (line 23) | type ContainerExecCreateResponse struct
type AuthResponse (line 29) | type AuthResponse struct
type ContainerWaitResponse (line 35) | type ContainerWaitResponse struct
type ContainerCommitResponse (line 41) | type ContainerCommitResponse struct
type ContainerChange (line 46) | type ContainerChange struct
type ImageHistory (line 52) | type ImageHistory struct
type ImageDelete (line 62) | type ImageDelete struct
type Image (line 68) | type Image struct
type GraphDriverData (line 79) | type GraphDriverData struct
type ImageInspect (line 85) | type ImageInspect struct
type Port (line 103) | type Port struct
type Container (line 110) | type Container struct
type CopyConfig (line 127) | type CopyConfig struct
type ContainerPathStat (line 135) | type ContainerPathStat struct
type ContainerProcessList (line 144) | type ContainerProcessList struct
type Version (line 149) | type Version struct
type Info (line 162) | type Info struct
type ExecStartCheck (line 202) | type ExecStartCheck struct
type ContainerState (line 209) | type ContainerState struct
type ContainerJSONBase (line 223) | type ContainerJSONBase struct
type ContainerJSON (line 247) | type ContainerJSON struct
type ContainerJSONPre120 (line 254) | type ContainerJSONPre120 struct
type ContainerConfig (line 261) | type ContainerConfig struct
type MountPoint (line 272) | type MountPoint struct
FILE: vendor/github.com/docker/docker/builder/bflag.go
type FlagType (line 8) | type FlagType
constant boolType (line 11) | boolType FlagType = iota
constant stringType (line 12) | stringType
type BuilderFlags (line 15) | type BuilderFlags struct
method AddBool (line 36) | func (bf *BuilderFlags) AddBool(name string, def bool) *Flag {
method AddString (line 49) | func (bf *BuilderFlags) AddString(name string, def string) *Flag {
method addFlag (line 58) | func (bf *BuilderFlags) addFlag(name string, flagType FlagType) *Flag {
method Parse (line 89) | func (bf *BuilderFlags) Parse() error {
type Flag (line 22) | type Flag struct
method IsUsed (line 74) | func (fl *Flag) IsUsed() bool {
method IsTrue (line 81) | func (fl *Flag) IsTrue() bool {
function NewBuilderFlags (line 29) | func NewBuilderFlags() *BuilderFlags {
FILE: vendor/github.com/docker/docker/builder/bflag_test.go
function TestBuilderFlags (line 7) | func TestBuilderFlags(t *testing.T) {
FILE: vendor/github.com/docker/docker/builder/command/command.go
constant Env (line 5) | Env = "env"
constant Label (line 6) | Label = "label"
constant Maintainer (line 7) | Maintainer = "maintainer"
constant Add (line 8) | Add = "add"
constant Copy (line 9) | Copy = "copy"
constant From (line 10) | From = "from"
constant Onbuild (line 11) | Onbuild = "onbuild"
constant Workdir (line 12) | Workdir = "workdir"
constant Run (line 13) | Run = "run"
constant Cmd (line 14) | Cmd = "cmd"
constant Entrypoint (line 15) | Entrypoint = "entrypoint"
constant Expose (line 16) | Expose = "expose"
constant Volume (line 17) | Volume = "volume"
constant User (line 18) | User = "user"
FILE: vendor/github.com/docker/docker/builder/dispatchers.go
constant NoBaseImageSpecifier (line 29) | NoBaseImageSpecifier string = "scratch"
function nullDispatch (line 33) | func nullDispatch(b *Builder, args []string, attributes map[string]bool,...
function env (line 42) | func env(b *Builder, args []string, attributes map[string]bool, original...
function maintainer (line 101) | func maintainer(b *Builder, args []string, attributes map[string]bool, o...
function label (line 118) | func label(b *Builder, args []string, attributes map[string]bool, origin...
function add (line 154) | func add(b *Builder, args []string, attributes map[string]bool, original...
function dispatchCopy (line 170) | func dispatchCopy(b *Builder, args []string, attributes map[string]bool,...
function from (line 186) | func from(b *Builder, args []string, attributes map[string]bool, origina...
function onbuild (line 234) | func onbuild(b *Builder, args []string, attributes map[string]bool, orig...
function workdir (line 261) | func workdir(b *Builder, args []string, attributes map[string]bool, orig...
function run (line 318) | func run(b *Builder, args []string, attributes map[string]bool, original...
function cmd (line 389) | func cmd(b *Builder, args []string, attributes map[string]bool, original...
function entrypoint (line 425) | func entrypoint(b *Builder, args []string, attributes map[string]bool, o...
function expose (line 466) | func expose(b *Builder, args []string, attributes map[string]bool, origi...
function user (line 507) | func user(b *Builder, args []string, attributes map[string]bool, origina...
function volume (line 528) | func volume(b *Builder, args []string, attributes map[string]bool, origi...
FILE: vendor/github.com/docker/docker/builder/evaluator.go
function init (line 58) | func init() {
type Builder (line 79) | type Builder struct
method Run (line 151) | func (b *Builder) Run(context io.Reader) (string, error) {
method readDockerfile (line 202) | func (b *Builder) readDockerfile() error {
method dispatch (line 280) | func (b *Builder) dispatch(stepN int, ast *parser.Node) error {
FILE: vendor/github.com/docker/docker/builder/internals.go
method readContext (line 43) | func (b *Builder) readContext(context io.Reader) (err error) {
method commit (line 76) | func (b *Builder) commit(id string, autoCmd *runconfig.Command, comment ...
type copyInfo (line 138) | type copyInfo struct
method runContextCommand (line 146) | func (b *Builder) runContextCommand(args []string, allowRemote bool, all...
function calcCopyInfo (line 264) | func calcCopyInfo(b *Builder, cmdName string, cInfos *[]*copyInfo, origP...
function ContainsWildcards (line 478) | func ContainsWildcards(name string) bool {
method pullImage (line 490) | func (b *Builder) pullImage(name string) (*image.Image, error) {
method processImageFrom (line 528) | func (b *Builder) processImageFrom(img *image.Image) error {
method probeCache (line 580) | func (b *Builder) probeCache() (bool, error) {
method create (line 603) | func (b *Builder) create() (*daemon.Container, error) {
method run (line 646) | func (b *Builder) run(c *daemon.Container) error {
method checkPathForAddition (line 686) | func (b *Builder) checkPathForAddition(orig string) error {
method addContext (line 711) | func (b *Builder) addContext(container *daemon.Container, orig, dest str...
function copyAsDirectory (line 787) | func copyAsDirectory(source, destination string, destExisted bool) error {
method clearTmp (line 794) | func (b *Builder) clearTmp() {
FILE: vendor/github.com/docker/docker/builder/internals_linux.go
function fixPermissions (line 10) | func fixPermissions(source, destination string, uid, gid int, destExiste...
FILE: vendor/github.com/docker/docker/builder/internals_windows.go
function fixPermissions (line 5) | func fixPermissions(source, destination string, uid, gid int, destExiste...
FILE: vendor/github.com/docker/docker/builder/job.go
constant maxPreambleLength (line 32) | maxPreambleLength = 100
type Config (line 47) | type Config struct
method Cancel (line 76) | func (b *Config) Cancel() {
method WaitCancelled (line 83) | func (b *Config) WaitCancelled() <-chan struct{} {
function NewBuildConfig (line 87) | func NewBuildConfig() *Config {
function Build (line 94) | func Build(d *daemon.Daemon, buildConfig *Config) error {
function BuildFromConfig (line 221) | func BuildFromConfig(d *daemon.Daemon, c *runconfig.Config, changes []st...
type BuilderCommitConfig (line 251) | type BuilderCommitConfig struct
function Commit (line 261) | func Commit(name string, d *daemon.Daemon, c *BuilderCommitConfig) (stri...
function inspectResponse (line 304) | func inspectResponse(ct string, r io.ReadCloser, clen int) (string, io.R...
FILE: vendor/github.com/docker/docker/builder/job_test.go
function TestInspectEmptyResponse (line 12) | func TestInspectEmptyResponse(t *testing.T) {
function TestInspectResponseBinary (line 31) | func TestInspectResponseBinary(t *testing.T) {
function TestResponseUnsupportedContentType (line 55) | func TestResponseUnsupportedContentType(t *testing.T) {
function TestInspectResponseTextSimple (line 76) | func TestInspectResponseTextSimple(t *testing.T) {
function TestInspectResponseEmptyContentType (line 96) | func TestInspectResponseEmptyContentType(t *testing.T) {
FILE: vendor/github.com/docker/docker/builder/parser/dumper/main.go
function main (line 10) | func main() {
FILE: vendor/github.com/docker/docker/builder/parser/json_test.go
function TestJSONArraysOfStrings (line 29) | func TestJSONArraysOfStrings(t *testing.T) {
FILE: vendor/github.com/docker/docker/builder/parser/line_parsers.go
function parseIgnore (line 23) | func parseIgnore(rest string) (*Node, map[string]bool, error) {
function parseSubCommand (line 32) | func parseSubCommand(rest string) (*Node, map[string]bool, error) {
function parseNameVal (line 47) | func parseNameVal(rest string, key string) (*Node, map[string]bool, erro...
function parseEnv (line 190) | func parseEnv(rest string) (*Node, map[string]bool, error) {
function parseLabel (line 194) | func parseLabel(rest string) (*Node, map[string]bool, error) {
function parseStringsWhitespaceDelimited (line 200) | func parseStringsWhitespaceDelimited(rest string) (*Node, map[string]boo...
function parseString (line 224) | func parseString(rest string) (*Node, map[string]bool, error) {
function parseJSON (line 234) | func parseJSON(rest string) (*Node, map[string]bool, error) {
function parseMaybeJSON (line 262) | func parseMaybeJSON(rest string) (*Node, map[string]bool, error) {
function parseMaybeJSONToList (line 284) | func parseMaybeJSONToList(rest string) (*Node, map[string]bool, error) {
FILE: vendor/github.com/docker/docker/builder/parser/parser.go
type Node (line 26) | type Node struct
function init (line 42) | func init() {
function parseLine (line 68) | func parseLine(line string) (string, *Node, error) {
function Parse (line 101) | func Parse(rwc io.Reader) (*Node, error) {
FILE: vendor/github.com/docker/docker/builder/parser/parser_test.go
constant testDir (line 11) | testDir = "testfiles"
constant negativeTestDir (line 12) | negativeTestDir = "testfiles-negative"
function getDirs (line 14) | func getDirs(t *testing.T, dir string) []string {
function TestTestNegative (line 30) | func TestTestNegative(t *testing.T) {
function TestTestData (line 48) | func TestTestData(t *testing.T) {
FILE: vendor/github.com/docker/docker/builder/parser/utils.go
method Dump (line 12) | func (node *Node) Dump() string {
function fullDispatch (line 39) | func fullDispatch(cmd, args string) (*Node, map[string]bool, error) {
function splitCommand (line 57) | func splitCommand(line string) (string, []string, string, error) {
function stripComments (line 78) | func stripComments(line string) string {
function extractBuilderFlags (line 87) | func extractBuilderFlags(line string) (string, []string, error) {
FILE: vendor/github.com/docker/docker/builder/shell_parser.go
type shellWord (line 15) | type shellWord struct
method process (line 30) | func (sw *shellWord) process() (string, error) {
method processStopOn (line 36) | func (sw *shellWord) processStopOn(stopChar rune) (string, error) {
method peek (line 74) | func (sw *shellWord) peek() rune {
method next (line 81) | func (sw *shellWord) next() rune {
method processSingleQuote (line 90) | func (sw *shellWord) processSingleQuote() (string, error) {
method processDoubleQuote (line 107) | func (sw *shellWord) processDoubleQuote() (string, error) {
method processDollar (line 148) | func (sw *shellWord) processDollar() (string, error) {
method processName (line 203) | func (sw *shellWord) processName() string {
method getEnv (line 224) | func (sw *shellWord) getEnv(name string) string {
function ProcessWord (line 21) | func ProcessWord(word string, env []string) (string, error) {
FILE: vendor/github.com/docker/docker/builder/shell_parser_test.go
function TestShellParser (line 10) | func TestShellParser(t *testing.T) {
FILE: vendor/github.com/docker/docker/builder/support.go
constant acceptableRemoteMIME (line 8) | acceptableRemoteMIME = `(?:application/(?:(?:x\-)?tar|octet\-stream|((?:...
function selectAcceptableMIME (line 12) | func selectAcceptableMIME(ct string) string {
function handleJsonArgs (line 16) | func handleJsonArgs(args []string, attributes map[string]bool) []string {
FILE: vendor/github.com/docker/docker/builder/support_test.go
function TestSelectAcceptableMIME (line 8) | func TestSelectAcceptableMIME(t *testing.T) {
FILE: vendor/github.com/docker/docker/cliconfig/config.go
constant ConfigFileName (line 18) | ConfigFileName = "config.json"
constant oldConfigfile (line 19) | oldConfigfile = ".dockercfg"
constant defaultIndexserver (line 24) | defaultIndexserver = "https://index.docker.io/v1/"
function init (line 31) | func init() {
function ConfigDir (line 38) | func ConfigDir() string {
function SetConfigDir (line 43) | func SetConfigDir(dir string) {
type AuthConfig (line 48) | type AuthConfig struct
type ConfigFile (line 57) | type ConfigFile struct
method Save (line 161) | func (configFile *ConfigFile) Save() error {
method Filename (line 195) | func (configFile *ConfigFile) Filename() string {
function NewConfigFile (line 64) | func NewConfigFile(fn string) *ConfigFile {
function Load (line 75) | func Load(configDir string) (*ConfigFile, error) {
function EncodeAuth (line 200) | func EncodeAuth(authConfig *AuthConfig) string {
function DecodeAuth (line 209) | func DecodeAuth(authStr string) (string, string, error) {
FILE: vendor/github.com/docker/docker/cliconfig/config_test.go
function TestMissingFile (line 14) | func TestMissingFile(t *testing.T) {
function TestSaveFileToDirs (line 34) | func TestSaveFileToDirs(t *testing.T) {
function TestEmptyFile (line 56) | func TestEmptyFile(t *testing.T) {
function TestEmptyJson (line 67) | func TestEmptyJson(t *testing.T) {
function TestOldJson (line 89) | func TestOldJson(t *testing.T) {
function TestNewJson (line 130) | func TestNewJson(t *testing.T) {
FILE: vendor/github.com/docker/docker/contrib/docker-device-tool/device_tool.go
function usage (line 17) | func usage() {
function byteSizeFromString (line 23) | func byteSizeFromString(arg string) (int64, error) {
function main (line 58) | func main() {
FILE: vendor/github.com/docker/docker/contrib/host-integration/manager.go
function main (line 39) | func main() {
FILE: vendor/github.com/docker/docker/contrib/httpserver/server.go
function main (line 8) | func main() {
FILE: vendor/github.com/docker/docker/daemon/archive.go
method ContainerCopy (line 22) | func (daemon *Daemon) ContainerCopy(name string, res string) (io.ReadClo...
method ContainerStatPath (line 37) | func (daemon *Daemon) ContainerStatPath(name string, path string) (stat ...
method ContainerArchivePath (line 49) | func (daemon *Daemon) ContainerArchivePath(name string, path string) (co...
method ContainerExtractToDir (line 64) | func (daemon *Daemon) ContainerExtractToDir(name, path string, noOverwri...
method StatPath (line 75) | func (container *Container) StatPath(path string) (stat *types.Container...
method ArchivePath (line 128) | func (container *Container) ArchivePath(path string) (content io.ReadClo...
method ExtractToDir (line 215) | func (container *Container) ExtractToDir(path string, noOverwriteDirNonD...
FILE: vendor/github.com/docker/docker/daemon/attach.go
type ContainerAttachWithLogsConfig (line 9) | type ContainerAttachWithLogsConfig struct
method ContainerAttachWithLogs (line 16) | func (daemon *Daemon) ContainerAttachWithLogs(container *Container, c *C...
type ContainerWsAttachWithLogsConfig (line 42) | type ContainerWsAttachWithLogsConfig struct
method ContainerWsAttachWithLogs (line 48) | func (daemon *Daemon) ContainerWsAttachWithLogs(container *Container, c ...
FILE: vendor/github.com/docker/docker/daemon/changes.go
method ContainerChanges (line 6) | func (daemon *Daemon) ContainerChanges(name string) ([]archive.Change, e...
FILE: vendor/github.com/docker/docker/daemon/commit.go
type ContainerCommitConfig (line 8) | type ContainerCommitConfig struct
method Commit (line 19) | func (daemon *Daemon) Commit(container *Container, c *ContainerCommitCon...
FILE: vendor/github.com/docker/docker/daemon/config.go
constant defaultNetworkMtu (line 10) | defaultNetworkMtu = 1500
constant disableNetworkBridge (line 11) | disableNetworkBridge = "none"
type CommonConfig (line 16) | type CommonConfig struct
method InstallCommonFlags (line 44) | func (config *Config) InstallCommonFlags() {
FILE: vendor/github.com/docker/docker/daemon/config_experimental.go
method attachExperimentalFlags (line 7) | func (config *Config) attachExperimentalFlags() {
FILE: vendor/github.com/docker/docker/daemon/config_linux.go
type Config (line 20) | type Config struct
method InstallFlags (line 52) | func (config *Config) InstallFlags() {
type bridgeConfig (line 32) | type bridgeConfig struct
FILE: vendor/github.com/docker/docker/daemon/config_stub.go
method attachExperimentalFlags (line 5) | func (config *Config) attachExperimentalFlags() {
FILE: vendor/github.com/docker/docker/daemon/config_windows.go
type bridgeConfig (line 17) | type bridgeConfig struct
type Config (line 24) | type Config struct
method InstallFlags (line 35) | func (config *Config) InstallFlags() {
FILE: vendor/github.com/docker/docker/daemon/container.go
type StreamConfig (line 45) | type StreamConfig struct
method StdinPipe (line 322) | func (streamConfig *StreamConfig) StdinPipe() io.WriteCloser {
method StdoutPipe (line 326) | func (streamConfig *StreamConfig) StdoutPipe() io.ReadCloser {
method StderrPipe (line 332) | func (streamConfig *StreamConfig) StderrPipe() io.ReadCloser {
method StdoutLogPipe (line 338) | func (streamConfig *StreamConfig) StdoutLogPipe() io.ReadCloser {
method StderrLogPipe (line 344) | func (streamConfig *StreamConfig) StderrLogPipe() io.ReadCloser {
type CommonContainer (line 54) | type CommonContainer struct
method FromDisk (line 95) | func (container *Container) FromDisk() error {
method toDisk (line 121) | func (container *Container) toDisk() error {
method ToDisk (line 139) | func (container *Container) ToDisk() error {
method readHostConfig (line 146) | func (container *Container) readHostConfig() error {
method WriteHostConfig (line 170) | func (container *Container) WriteHostConfig() error {
method LogEvent (line 184) | func (container *Container) LogEvent(action string) {
method GetResourcePath (line 206) | func (container *Container) GetResourcePath(path string) (string, error) {
method GetRootResourcePath (line 226) | func (container *Container) GetRootResourcePath(path string) (string, er...
method Start (line 233) | func (container *Container) Start() (err error) {
method Run (line 294) | func (container *Container) Run() error {
method Output (line 303) | func (container *Container) Output() (output []byte, err error) {
method isNetworkAllocated (line 350) | func (container *Container) isNetworkAllocated() bool {
method cleanup (line 356) | func (container *Container) cleanup() {
method KillSig (line 376) | func (container *Container) KillSig(sig int) error {
method killPossiblyDeadProcess (line 409) | func (container *Container) killPossiblyDeadProcess(sig int) error {
method Pause (line 418) | func (container *Container) Pause() error {
method Unpause (line 440) | func (container *Container) Unpause() error {
method Kill (line 462) | func (container *Container) Kill() error {
method Stop (line 497) | func (container *Container) Stop(seconds int) error {
method Restart (line 524) | func (container *Container) Restart(seconds int) error {
method Resize (line 544) | func (container *Container) Resize(h, w int) error {
method Export (line 555) | func (container *Container) Export() (archive.Archive, error) {
method Mount (line 574) | func (container *Container) Mount() error {
method changes (line 578) | func (container *Container) changes() ([]archive.Change, error) {
method Changes (line 582) | func (container *Container) Changes() ([]archive.Change, error) {
method GetImage (line 588) | func (container *Container) GetImage() (*image.Image, error) {
method Unmount (line 595) | func (container *Container) Unmount() error {
method hostConfigPath (line 599) | func (container *Container) hostConfigPath() (string, error) {
method jsonPath (line 603) | func (container *Container) jsonPath() (string, error) {
method RootfsPath (line 609) | func (container *Container) RootfsPath() string {
function validateID (line 613) | func validateID(id string) error {
method Copy (line 620) | func (container *Container) Copy(resource string) (rc io.ReadCloser, err...
method Exposes (line 692) | func (container *Container) Exposes(p nat.Port) bool {
method HostConfig (line 697) | func (container *Container) HostConfig() *runconfig.HostConfig {
method SetHostConfig (line 701) | func (container *Container) SetHostConfig(hostConfig *runconfig.HostConf...
method getLogConfig (line 705) | func (container *Container) getLogConfig() runconfig.LogConfig {
method getLogger (line 717) | func (container *Container) getLogger() (logger.Logger, error) {
method startLogging (line 747) | func (container *Container) startLogging() error {
method waitForStart (line 774) | func (container *Container) waitForStart() error {
method GetProcessLabel (line 788) | func (container *Container) GetProcessLabel() string {
method GetMountLabel (line 797) | func (container *Container) GetMountLabel() string {
method Stats (line 804) | func (container *Container) Stats() (*execdriver.ResourceStats, error) {
method LogDriverType (line 808) | func (c *Container) LogDriverType() string {
method GetExecIDs (line 817) | func (container *Container) GetExecIDs() []string {
method Exec (line 821) | func (container *Container) Exec(execConfig *execConfig) error {
method monitorExec (line 853) | func (container *Container) monitorExec(execConfig *execConfig, callback...
method Attach (line 886) | func (c *Container) Attach(stdin io.ReadCloser, stdout io.Writer, stderr...
method AttachWithLogs (line 890) | func (c *Container) AttachWithLogs(stdin io.ReadCloser, stdout, stderr i...
function attach (line 949) | func attach(streamConfig *StreamConfig, openStdin, stdinOnce, tty bool, ...
function copyEscapable (line 1052) | func copyEscapable(dst io.Writer, src io.ReadCloser) (written int64, err...
method networkMounts (line 1094) | func (container *Container) networkMounts() []execdriver.Mount {
method addBindMountPoint (line 1126) | func (container *Container) addBindMountPoint(name, source, destination ...
method addLocalMountPoint (line 1135) | func (container *Container) addLocalMountPoint(name, destination string,...
method addMountPointWithVolume (line 1144) | func (container *Container) addMountPointWithVolume(destination string, ...
method isDestinationMounted (line 1154) | func (container *Container) isDestinationMounted(destination string) bool {
method prepareMountPoints (line 1158) | func (container *Container) prepareMountPoints() error {
method removeMountPoints (line 1171) | func (container *Container) removeMountPoints() error {
method shouldRestart (line 1182) | func (container *Container) shouldRestart() bool {
method mountVolumes (line 1187) | func (container *Container) mountVolumes() error {
method copyImagePathContent (line 1221) | func (container *Container) copyImagePathContent(v volume.Volume, destin...
FILE: vendor/github.com/docker/docker/daemon/container_unit_test.go
function TestGetFullName (line 5) | func TestGetFullName(t *testing.T) {
function TestValidContainerNames (line 18) | func TestValidContainerNames(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/container_unix.go
constant DefaultPathEnv (line 38) | DefaultPathEnv = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbi...
type Container (line 40) | type Container struct
method setupLinkedContainers (line 65) | func (container *Container) setupLinkedContainers() ([]string, error) {
method createDaemonEnvironment (line 119) | func (container *Container) createDaemonEnvironment(linkedEnv []string...
method GetSize (line 336) | func (container *Container) GetSize() (int64, int64) {
method buildHostnameFile (line 366) | func (container *Container) buildHostnameFile() error {
method buildJoinOptions (line 379) | func (container *Container) buildJoinOptions() ([]libnetwork.EndpointO...
method buildPortMapInfo (line 496) | func (container *Container) buildPortMapInfo(n libnetwork.Network, ep ...
method buildEndpointInfo (line 552) | func (container *Container) buildEndpointInfo(n libnetwork.Network, ep...
method updateJoinInfo (line 605) | func (container *Container) updateJoinInfo(ep libnetwork.Endpoint) err...
method updateNetworkSettings (line 622) | func (container *Container) updateNetworkSettings(n libnetwork.Network...
method UpdateNetwork (line 643) | func (container *Container) UpdateNetwork() error {
method buildCreateEndpointOptions (line 675) | func (container *Container) buildCreateEndpointOptions() ([]libnetwork...
method secondaryNetworkRequired (line 784) | func (container *Container) secondaryNetworkRequired(primaryNetworkTyp...
method AllocateNetwork (line 803) | func (container *Container) AllocateNetwork() error {
method configureNetwork (line 851) | func (container *Container) configureNetwork(networkName, service, net...
method initializeNetworking (line 901) | func (container *Container) initializeNetworking() error {
method ExportRw (line 944) | func (container *Container) ExportRw() (archive.Archive, error) {
method getIpcContainer (line 959) | func (container *Container) getIpcContainer() (*Container, error) {
method setupWorkingDirectory (line 971) | func (container *Container) setupWorkingDirectory() error {
method getNetworkedContainer (line 997) | func (container *Container) getNetworkedContainer() (*Container, error) {
method ReleaseNetwork (line 1020) | func (container *Container) ReleaseNetwork() {
method DisableLink (line 1076) | func (container *Container) DisableLink(name string) {
method UnmountVolumes (line 1090) | func (container *Container) UnmountVolumes(forceSyscall bool) error {
method PrepareStorage (line 1126) | func (container *Container) PrepareStorage() error {
method CleanupStorage (line 1130) | func (container *Container) CleanupStorage() error {
function killProcessDirectly (line 49) | func killProcessDirectly(container *Container) error {
function getDevicesFromPath (line 146) | func getDevicesFromPath(deviceMapping runconfig.DeviceMapping) (devs []*...
function populateCommand (line 185) | func populateCommand(c *Container, env []string) error {
function mergeDevices (line 316) | func mergeDevices(defaultDevices, userDevices []*configs.Device) []*conf...
function parseService (line 753) | func parseService(controller libnetwork.NetworkController, service strin...
function createNetwork (line 767) | func createNetwork(controller libnetwork.NetworkController, dnet string,...
function disableAllActiveLinks (line 1068) | func disableAllActiveLinks(container *Container) {
FILE: vendor/github.com/docker/docker/daemon/container_windows.go
constant DefaultPathEnv (line 19) | DefaultPathEnv = ""
type Container (line 21) | type Container struct
method setupContainerDns (line 43) | func (container *Container) setupContainerDns() error {
method updateParentsHosts (line 47) | func (container *Container) updateParentsHosts() error {
method setupLinkedContainers (line 51) | func (container *Container) setupLinkedContainers() ([]string, error) {
method createDaemonEnvironment (line 55) | func (container *Container) createDaemonEnvironment(linkedEnv []string...
method initializeNetworking (line 60) | func (container *Container) initializeNetworking() error {
method setupWorkingDirectory (line 64) | func (container *Container) setupWorkingDirectory() error {
method GetSize (line 153) | func (container *Container) GetSize() (int64, int64) {
method AllocateNetwork (line 158) | func (container *Container) AllocateNetwork() error {
method ExportRw (line 162) | func (container *Container) ExportRw() (archive.Archive, error) {
method ReleaseNetwork (line 170) | func (container *Container) ReleaseNetwork() {
method RestoreNetwork (line 173) | func (container *Container) RestoreNetwork() error {
method DisableLink (line 180) | func (container *Container) DisableLink(name string) {
method UnmountVolumes (line 183) | func (container *Container) UnmountVolumes(forceSyscall bool) error {
method PrepareStorage (line 187) | func (container *Container) PrepareStorage() error {
method CleanupStorage (line 210) | func (container *Container) CleanupStorage() error {
function killProcessDirectly (line 39) | func killProcessDirectly(container *Container) error {
function populateCommand (line 68) | func populateCommand(c *Container, env []string) error {
function disableAllActiveLinks (line 177) | func disableAllActiveLinks(container *Container) {
FILE: vendor/github.com/docker/docker/daemon/create.go
method ContainerCreate (line 18) | func (daemon *Daemon) ContainerCreate(name string, config *runconfig.Con...
method Create (line 46) | func (daemon *Daemon) Create(config *runconfig.Config, hostConfig *runco...
method GenerateSecurityOpt (line 147) | func (daemon *Daemon) GenerateSecurityOpt(ipcMode runconfig.IpcMode, pid...
FILE: vendor/github.com/docker/docker/daemon/daemon.go
type contStore (line 50) | type contStore struct
method Add (line 55) | func (c *contStore) Add(id string, cont *Container) {
method Get (line 61) | func (c *contStore) Get(id string) *Container {
method Delete (line 68) | func (c *contStore) Delete(id string) {
method List (line 74) | func (c *contStore) List() []*Container {
type Daemon (line 85) | type Daemon struct
method Get (line 114) | func (daemon *Daemon) Get(prefixOrName string) (*Container, error) {
method Exists (line 135) | func (daemon *Daemon) Exists(id string) bool {
method containerRoot (line 140) | func (daemon *Daemon) containerRoot(id string) string {
method load (line 146) | func (daemon *Daemon) load(id string) (*Container, error) {
method Register (line 164) | func (daemon *Daemon) Register(container *Container) error {
method register (line 169) | func (daemon *Daemon) register(container *Container, updateSuffixarray...
method ensureName (line 228) | func (daemon *Daemon) ensureName(container *Container) error {
method restore (line 243) | func (daemon *Daemon) restore() error {
method mergeAndVerifyConfig (line 340) | func (daemon *Daemon) mergeAndVerifyConfig(config *runconfig.Config, i...
method generateIdAndName (line 352) | func (daemon *Daemon) generateIdAndName(name string) (string, string, ...
method reserveName (line 372) | func (daemon *Daemon) reserveName(id, name string) (string, error) {
method generateNewName (line 406) | func (daemon *Daemon) generateNewName(id string) (string, error) {
method generateHostname (line 430) | func (daemon *Daemon) generateHostname(id string, config *runconfig.Co...
method getEntrypointAndArgs (line 438) | func (daemon *Daemon) getEntrypointAndArgs(configEntrypoint *runconfig...
method newContainer (line 456) | func (daemon *Daemon) newContainer(name string, config *runconfig.Conf...
method GetByName (line 498) | func (daemon *Daemon) GetByName(name string) (*Container, error) {
method Children (line 514) | func (daemon *Daemon) Children(name string) (map[string]*Container, er...
method Parents (line 536) | func (daemon *Daemon) Parents(name string) ([]string, error) {
method RegisterLink (line 545) | func (daemon *Daemon) RegisterLink(parent, child *Container, alias str...
method Shutdown (line 751) | func (daemon *Daemon) Shutdown() error {
method Mount (line 795) | func (daemon *Daemon) Mount(container *Container) error {
method Unmount (line 815) | func (daemon *Daemon) Unmount(container *Container) error {
method Run (line 820) | func (daemon *Daemon) Run(c *Container, pipes *execdriver.Pipes, start...
method Kill (line 824) | func (daemon *Daemon) Kill(c *Container, sig int) error {
method Stats (line 828) | func (daemon *Daemon) Stats(c *Container) (*execdriver.ResourceStats, ...
method SubscribeToContainerStats (line 832) | func (daemon *Daemon) SubscribeToContainerStats(name string) (chan int...
method UnsubscribeToContainerStats (line 841) | func (daemon *Daemon) UnsubscribeToContainerStats(name string, ch chan...
method Graph (line 854) | func (daemon *Daemon) Graph() *graph.Graph {
method Repositories (line 858) | func (daemon *Daemon) Repositories() *graph.TagStore {
method Config (line 862) | func (daemon *Daemon) Config() *Config {
method SystemConfig (line 866) | func (daemon *Daemon) SystemConfig() *sysinfo.SysInfo {
method SystemInitPath (line 870) | func (daemon *Daemon) SystemInitPath() string {
method GraphDriver (line 874) | func (daemon *Daemon) GraphDriver() graphdriver.Driver {
method ExecutionDriver (line 878) | func (daemon *Daemon) ExecutionDriver() execdriver.Driver {
method ContainerGraph (line 882) | func (daemon *Daemon) ContainerGraph() *graphdb.Database {
method ImageGetCached (line 886) | func (daemon *Daemon) ImageGetCached(imgID string, config *runconfig.C...
method setHostConfig (line 924) | func (daemon *Daemon) setHostConfig(container *Container, hostConfig *...
method newBaseContainer (line 950) | func (daemon *Daemon) newBaseContainer(id string) CommonContainer {
function GetFullContainerName (line 488) | func GetFullContainerName(name string) (string, error) {
function NewDaemon (line 554) | func NewDaemon(config *Config, registryService *registry.Service) (daemo...
function tempDir (line 916) | func tempDir(rootDir string) (string, error) {
function setDefaultMtu (line 962) | func setDefaultMtu(config *Config) {
function getDefaultRouteMtu (line 976) | func getDefaultRouteMtu() (int, error) {
FILE: vendor/github.com/docker/docker/daemon/daemon_aufs.go
function migrateIfAufs (line 13) | func migrateIfAufs(driver graphdriver.Driver, root string) error {
FILE: vendor/github.com/docker/docker/daemon/daemon_no_aufs.go
function migrateIfAufs (line 9) | func migrateIfAufs(driver graphdriver.Driver, root string) error {
FILE: vendor/github.com/docker/docker/daemon/daemon_test.go
function TestGet (line 23) | func TestGet(t *testing.T) {
function TestLoadWithVolume (line 125) | func TestLoadWithVolume(t *testing.T) {
function TestLoadWithBindMount (line 230) | func TestLoadWithBindMount(t *testing.T) {
function TestLoadWithVolume17RC (line 309) | func TestLoadWithVolume17RC(t *testing.T) {
function TestRemoveLocalVolumesFollowingSymlinks (line 409) | func TestRemoveLocalVolumesFollowingSymlinks(t *testing.T) {
function initDaemonForVolumesTest (line 503) | func initDaemonForVolumesTest(tmp string) (*Daemon, error) {
FILE: vendor/github.com/docker/docker/daemon/daemon_unit_test.go
function TestParseSecurityOpt (line 9) | func TestParseSecurityOpt(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/daemon_unix.go
method Changes (line 35) | func (daemon *Daemon) Changes(container *Container) ([]archive.Change, e...
method Diff (line 40) | func (daemon *Daemon) Diff(container *Container) (archive.Archive, error) {
function parseSecurityOpt (line 45) | func parseSecurityOpt(container *Container, config *runconfig.HostConfig...
method createRootfs (line 70) | func (daemon *Daemon) createRootfs(container *Container) error {
function checkKernel (line 96) | func checkKernel() error {
method verifyContainerSettings (line 116) | func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.Host...
function checkConfigOptions (line 199) | func checkConfigOptions(config *Config) error {
function checkSystem (line 214) | func checkSystem() error {
function configureKernelSecuritySupport (line 225) | func configureKernelSecuritySupport(config *Config, driverName string) e...
function migrateIfDownlevel (line 243) | func migrateIfDownlevel(driver graphdriver.Driver, root string) error {
function configureVolumes (line 247) | func configureVolumes(config *Config) error {
function configureSysInit (line 256) | func configureSysInit(config *Config) (string, error) {
function isBridgeNetworkDisabled (line 279) | func isBridgeNetworkDisabled(config *Config) bool {
function networkOptions (line 283) | func networkOptions(dconfig *Config) ([]nwconfig.Option, error) {
function initNetworkController (line 315) | func initNetworkController(config *Config) (libnetwork.NetworkController...
function initBridgeDriver (line 357) | func initBridgeDriver(controller libnetwork.NetworkController, config *C...
function setupInitLayer (line 433) | func setupInitLayer(initLayer string) error {
method NetworkApiRouter (line 485) | func (daemon *Daemon) NetworkApiRouter() func(w http.ResponseWriter, req...
method RegisterLinks (line 489) | func (daemon *Daemon) RegisterLinks(container *Container, hostConfig *ru...
FILE: vendor/github.com/docker/docker/daemon/daemon_windows.go
constant DefaultVirtualSwitch (line 18) | DefaultVirtualSwitch = "Virtual Switch"
method Changes (line 20) | func (daemon *Daemon) Changes(container *Container) ([]archive.Change, e...
method Diff (line 24) | func (daemon *Daemon) Diff(container *Container) (archive.Archive, error) {
function parseSecurityOpt (line 28) | func parseSecurityOpt(container *Container, config *runconfig.HostConfig...
method createRootfs (line 32) | func (daemon *Daemon) createRootfs(container *Container) error {
function checkKernel (line 72) | func checkKernel() error {
method verifyContainerSettings (line 76) | func (daemon *Daemon) verifyContainerSettings(hostConfig *runconfig.Host...
function checkConfigOptions (line 82) | func checkConfigOptions(config *Config) error {
function checkSystem (line 87) | func checkSystem() error {
function configureKernelSecuritySupport (line 107) | func configureKernelSecuritySupport(config *Config, driverName string) e...
function migrateIfDownlevel (line 111) | func migrateIfDownlevel(driver graphdriver.Driver, root string) error {
function configureVolumes (line 115) | func configureVolumes(config *Config) error {
function configureSysInit (line 120) | func configureSysInit(config *Config) (string, error) {
function isBridgeNetworkDisabled (line 125) | func isBridgeNetworkDisabled(config *Config) bool {
function initNetworkController (line 129) | func initNetworkController(config *Config) (libnetwork.NetworkController...
method RegisterLinks (line 137) | func (daemon *Daemon) RegisterLinks(container *Container, hostConfig *ru...
FILE: vendor/github.com/docker/docker/daemon/debugtrap_unix.go
function setupDumpStackTrap (line 13) | func setupDumpStackTrap() {
FILE: vendor/github.com/docker/docker/daemon/debugtrap_unsupported.go
function setupDumpStackTrap (line 5) | func setupDumpStackTrap() {
FILE: vendor/github.com/docker/docker/daemon/debugtrap_windows.go
function setupDumpStackTrap (line 13) | func setupDumpStackTrap() {
FILE: vendor/github.com/docker/docker/daemon/delete.go
type ContainerRmConfig (line 12) | type ContainerRmConfig struct
method ContainerRm (line 16) | func (daemon *Daemon) ContainerRm(name string, config *ContainerRmConfig...
method rm (line 59) | func (daemon *Daemon) rm(container *Container, forceRemove bool) (err er...
method DeleteVolumes (line 142) | func (daemon *Daemon) DeleteVolumes(c *Container) error {
FILE: vendor/github.com/docker/docker/daemon/events/events.go
constant eventsLimit (line 11) | eventsLimit = 64
type Events (line 14) | type Events struct
method Subscribe (line 31) | func (e *Events) Subscribe() ([]*jsonmessage.JSONMessage, chan interfa...
method Evict (line 41) | func (e *Events) Evict(l chan interface{}) {
method Log (line 47) | func (e *Events) Log(action, id, from string) {
method SubscribersCount (line 64) | func (e *Events) SubscribersCount() int {
function New (line 21) | func New() *Events {
FILE: vendor/github.com/docker/docker/daemon/events/events_test.go
function TestEventsLog (line 11) | func TestEventsLog(t *testing.T) {
function TestEventsLogTimeout (line 66) | func TestEventsLogTimeout(t *testing.T) {
function TestLogEvents (line 84) | func TestLogEvents(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/exec.go
type execConfig (line 20) | type execConfig struct
method Resize (line 72) | func (execConfig *execConfig) Resize(h, w int) error {
type execStore (line 34) | type execStore struct
method Add (line 43) | func (e *execStore) Add(id string, execConfig *execConfig) {
method Get (line 49) | func (e *execStore) Get(id string) *execConfig {
method Delete (line 56) | func (e *execStore) Delete(id string) {
method List (line 62) | func (e *execStore) List() []string {
function newExecStore (line 39) | func newExecStore() *execStore {
method registerExecCommand (line 76) | func (d *Daemon) registerExecCommand(execConfig *execConfig) {
method getExecConfig (line 83) | func (d *Daemon) getExecConfig(name string) (*execConfig, error) {
method unregisterExecCommand (line 94) | func (d *Daemon) unregisterExecCommand(execConfig *execConfig) {
method getActiveContainer (line 99) | func (d *Daemon) getActiveContainer(name string) (*Container, error) {
method ContainerExecCreate (line 114) | func (d *Daemon) ContainerExecCreate(config *runconfig.ExecConfig) (stri...
method ContainerExecStart (line 159) | func (d *Daemon) ContainerExecStart(execName string, stdin io.ReadCloser...
method Exec (line 239) | func (d *Daemon) Exec(c *Container, execConfig *execConfig, pipes *execd...
method execCommandGC (line 255) | func (d *Daemon) execCommandGC() {
method containerExecIds (line 279) | func (d *Daemon) containerExecIds() map[string]struct{} {
FILE: vendor/github.com/docker/docker/daemon/exec_linux.go
function checkExecSupport (line 13) | func checkExecSupport(drivername string) error {
FILE: vendor/github.com/docker/docker/daemon/exec_windows.go
function checkExecSupport (line 7) | func checkExecSupport(DriverName string) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/driver.go
type Context (line 17) | type Context
type StartCallback (line 26) | type StartCallback
type Info (line 30) | type Info interface
type Terminal (line 37) | type Terminal interface
type ExitStatus (line 43) | type ExitStatus struct
type Driver (line 51) | type Driver interface
type Network (line 67) | type Network struct
type Ipc (line 76) | type Ipc struct
type Pid (line 82) | type Pid struct
type UTS (line 87) | type UTS struct
type NetworkInterface (line 91) | type NetworkInterface struct
type Resources (line 105) | type Resources struct
type ResourceStats (line 119) | type ResourceStats struct
type Mount (line 126) | type Mount struct
type ProcessConfig (line 135) | type ProcessConfig struct
type Command (line 152) | type Command struct
FILE: vendor/github.com/docker/docker/daemon/execdriver/driver_linux.go
function InitContainer (line 18) | func InitContainer(c *Command) *configs.Config {
function getEnv (line 39) | func getEnv(key string, env []string) string {
function SetupCgroups (line 49) | func SetupCgroups(container *configs.Config, c *Command) error {
function getNetworkInterfaceStats (line 68) | func getNetworkInterfaceStats(interfaceName string) (*libcontainer.Netwo...
function readSysfsNetworkStats (line 104) | func readSysfsNetworkStats(ethInterface, statsFile string) (uint64, erro...
function Stats (line 112) | func Stats(containerDir string, containerMemoryLimit int64, machineMemor...
FILE: vendor/github.com/docker/docker/daemon/execdriver/execdrivers/execdrivers_linux.go
function NewDriver (line 15) | func NewDriver(name string, options []string, root, libPath, initPath st...
FILE: vendor/github.com/docker/docker/daemon/execdriver/execdrivers/execdrivers_windows.go
function NewDriver (line 13) | func NewDriver(name string, options []string, root, libPath, initPath st...
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/driver.go
constant DriverName (line 37) | DriverName = "lxc"
type driver (line 41) | type driver struct
method Name (line 80) | func (d *driver) Name() string {
method Run (line 120) | func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, s...
method createContainer (line 395) | func (d *driver) createContainer(c *execdriver.Command) (*configs.Conf...
method Kill (line 518) | func (d *driver) Kill(c *execdriver.Command, sig int) error {
method Pause (line 526) | func (d *driver) Pause(c *execdriver.Command) error {
method Unpause (line 538) | func (d *driver) Unpause(c *execdriver.Command) error {
method Terminate (line 550) | func (d *driver) Terminate(c *execdriver.Command) error {
method version (line 554) | func (d *driver) version() string {
method waitForStart (line 593) | func (d *driver) waitForStart(c *execdriver.Command, waitLock chan str...
method getInfo (line 625) | func (d *driver) getInfo(id string) ([]byte, error) {
method Info (line 648) | func (d *driver) Info(id string) execdriver.Info {
method GetPidsForContainer (line 668) | func (d *driver) GetPidsForContainer(id string) ([]int, error) {
method containerDir (line 733) | func (d *driver) containerDir(containerId string) string {
method generateLXCConfig (line 737) | func (d *driver) generateLXCConfig(c *execdriver.Command) (string, err...
method generateEnvConfig (line 759) | func (d *driver) generateEnvConfig(c *execdriver.Command) error {
method Clean (line 776) | func (d *driver) Clean(id string) error {
method Exec (line 847) | func (d *driver) Exec(c *execdriver.Command, processConfig *execdriver...
method Stats (line 851) | func (d *driver) Stats(id string) (*execdriver.ResourceStats, error) {
type activeContainer (line 52) | type activeContainer struct
function NewDriver (line 57) | func NewDriver(root, libPath, initPath string, apparmor bool) (*driver, ...
function setupNetNs (line 85) | func setupNetNs(nsPath string) (*os.Process, error) {
function killNetNsProc (line 115) | func killNetNsProc(proc *os.Process) {
function notifyOnOOM (line 346) | func notifyOnOOM(paths map[string]string) (<-chan struct{}, error) {
function cgroupPaths (line 404) | func cgroupPaths(containerId string) (map[string]string, error) {
function createDeviceNodes (line 426) | func createDeviceNodes(rootfs string, nodesToCreate []*configs.Device) e...
function createDeviceNode (line 439) | func createDeviceNode(rootfs string, node *configs.Device) error {
function setupUser (line 472) | func setupUser(userSpec string) error {
function getExitCode (line 511) | func getExitCode(c *execdriver.Command) int {
function KillLxc (line 574) | func KillLxc(id string, sig int) error {
type info (line 629) | type info struct
method IsRunning (line 634) | func (i *info) IsRunning() bool {
function findCgroupRootAndDir (line 655) | func findCgroupRootAndDir(subsystem string) (string, string, error) {
function linkLxcStart (line 701) | func linkLxcStart(root string) error {
function rootIsShared (line 719) | func rootIsShared() bool {
type TtyConsole (line 780) | type TtyConsole struct
method Resize (line 811) | func (t *TtyConsole) Resize(h, w int) error {
method AttachPipes (line 815) | func (t *TtyConsole) AttachPipes(command *exec.Cmd, pipes *execdriver....
method Close (line 842) | func (t *TtyConsole) Close() error {
function NewTtyConsole (line 785) | func NewTtyConsole(processConfig *execdriver.ProcessConfig, pipes *execd...
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/info.go
type lxcInfo (line 16) | type lxcInfo struct
function parseLxcInfo (line 21) | func parseLxcInfo(raw string) (*lxcInfo, error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/info_test.go
function TestParseRunningInfo (line 9) | func TestParseRunningInfo(t *testing.T) {
function TestEmptyInfo (line 26) | func TestEmptyInfo(t *testing.T) {
function TestBadInfo (line 33) | func TestBadInfo(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/init.go
type InitArgs (line 20) | type InitArgs struct
function init (line 36) | func init() {
function dockerInititalizer (line 41) | func dockerInititalizer() {
function initializer (line 47) | func initializer() {
function setupNamespace (line 57) | func setupNamespace(args *InitArgs) error {
function getArgs (line 79) | func getArgs() *InitArgs {
function setupEnv (line 108) | func setupEnv(args *InitArgs) error {
function setupWorkingDirectory (line 137) | func setupWorkingDirectory(args *InitArgs) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/lxc_init_linux.go
function finalizeNamespace (line 11) | func finalizeNamespace(args *InitArgs) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/lxc_init_unsupported.go
function finalizeNamespace (line 5) | func finalizeNamespace(args *InitArgs) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/lxc_template.go
constant LxcTemplate (line 18) | LxcTemplate = `
function escapeFstabSpaces (line 165) | func escapeFstabSpaces(field string) string {
function keepCapabilities (line 169) | func keepCapabilities(adds []string, drops []string) ([]string, error) {
function dropList (line 187) | func dropList(drops []string) ([]string, error) {
function isDirectory (line 201) | func isDirectory(source string) string {
function getMemorySwap (line 216) | func getMemorySwap(v *execdriver.Resources) int64 {
function getLabel (line 225) | func getLabel(c map[string][]string, name string) string {
function getHostname (line 236) | func getHostname(env []string) string {
function init (line 246) | func init() {
FILE: vendor/github.com/docker/docker/daemon/execdriver/lxc/lxc_template_unit_test.go
function TestLXCConfig (line 22) | func TestLXCConfig(t *testing.T) {
function TestCustomLxcConfig (line 70) | func TestCustomLxcConfig(t *testing.T) {
function grepFile (line 108) | func grepFile(t *testing.T, path string, pattern string) {
function grepFileWithReverse (line 112) | func grepFileWithReverse(t *testing.T, path string, pattern string, inve...
function TestEscapeFstabSpaces (line 138) | func TestEscapeFstabSpaces(t *testing.T) {
function TestIsDirectory (line 156) | func TestIsDirectory(t *testing.T) {
function TestCustomLxcConfigMounts (line 179) | func TestCustomLxcConfigMounts(t *testing.T) {
function TestCustomLxcConfigMisc (line 244) | func TestCustomLxcConfigMisc(t *testing.T) {
function TestCustomLxcConfigMiscOverride (line 297) | func TestCustomLxcConfigMiscOverride(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/create.go
method createContainer (line 21) | func (d *driver) createContainer(c *execdriver.Command) (*configs.Config...
function generateIfaceName (line 100) | func generateIfaceName() (string, error) {
method createNetwork (line 116) | func (d *driver) createNetwork(container *configs.Config, c *execdriver....
method createIpc (line 146) | func (d *driver) createIpc(container *configs.Config, c *execdriver.Comm...
method createPid (line 171) | func (d *driver) createPid(container *configs.Config, c *execdriver.Comm...
method createUTS (line 180) | func (d *driver) createUTS(container *configs.Config, c *execdriver.Comm...
method setPrivileged (line 190) | func (d *driver) setPrivileged(container *configs.Config) (err error) {
method setCapabilities (line 207) | func (d *driver) setCapabilities(container *configs.Config, c *execdrive...
method setupRlimits (line 212) | func (d *driver) setupRlimits(container *configs.Config, c *execdriver.C...
method setupMounts (line 226) | func (d *driver) setupMounts(container *configs.Config, c *execdriver.Co...
method setupLabels (line 263) | func (d *driver) setupLabels(container *configs.Config, c *execdriver.Co...
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/driver.go
constant DriverName (line 31) | DriverName = "native"
constant Version (line 32) | Version = "0.2"
type driver (line 35) | type driver struct
method Run (line 113) | func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, s...
method Kill (line 241) | func (d *driver) Kill(c *execdriver.Command, sig int) error {
method Pause (line 255) | func (d *driver) Pause(c *execdriver.Command) error {
method Unpause (line 265) | func (d *driver) Unpause(c *execdriver.Command) error {
method Terminate (line 275) | func (d *driver) Terminate(c *execdriver.Command) error {
method Info (line 298) | func (d *driver) Info(id string) execdriver.Info {
method Name (line 305) | func (d *driver) Name() string {
method GetPidsForContainer (line 309) | func (d *driver) GetPidsForContainer(id string) ([]int, error) {
method cleanContainer (line 320) | func (d *driver) cleanContainer(id string) error {
method createContainerRoot (line 327) | func (d *driver) createContainerRoot(id string) error {
method Clean (line 331) | func (d *driver) Clean(id string) error {
method Stats (line 335) | func (d *driver) Stats(id string) (*execdriver.ResourceStats, error) {
function NewDriver (line 44) | func NewDriver(root, initPath string, options []string) (*driver, error) {
type execOutput (line 108) | type execOutput struct
function notifyOnOOM (line 180) | func notifyOnOOM(container libcontainer.Container) <-chan struct{} {
function killCgroupProcs (line 191) | func killCgroupProcs(c libcontainer.Container) {
function waitInPIDHost (line 219) | func waitInPIDHost(p *libcontainer.Process, c libcontainer.Container) fu...
type TtyConsole (line 360) | type TtyConsole struct
method Resize (line 377) | func (t *TtyConsole) Resize(h, w int) error {
method AttachPipes (line 381) | func (t *TtyConsole) AttachPipes(pipes *execdriver.Pipes) error {
method Close (line 403) | func (t *TtyConsole) Close() error {
function NewTtyConsole (line 364) | func NewTtyConsole(console libcontainer.Console, pipes *execdriver.Pipes...
function setupPipes (line 407) | func setupPipes(container *configs.Config, processConfig *execdriver.Pro...
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/driver_unsupported.go
function NewDriver (line 11) | func NewDriver(root, initPath string) (execdriver.Driver, error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/driver_unsupported_nocgo.go
function NewDriver (line 11) | func NewDriver(root, initPath string) (execdriver.Driver, error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/exec.go
method Exec (line 18) | func (d *driver) Exec(c *execdriver.Command, processConfig *execdriver.P...
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/info.go
type info (line 5) | type info struct
method IsRunning (line 13) | func (i *info) IsRunning() bool {
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/init.go
function init (line 14) | func init() {
function fatal (line 18) | func fatal(err error) {
function initializer (line 28) | func initializer() {
function writeError (line 42) | func writeError(err error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/native/template/default_template.go
constant defaultMountFlags (line 10) | defaultMountFlags = syscall.MS_NOEXEC | syscall.MS_NOSUID | syscall.MS_N...
function New (line 13) | func New() *configs.Config {
FILE: vendor/github.com/docker/docker/daemon/execdriver/pipes.go
type Pipes (line 9) | type Pipes struct
function NewPipes (line 14) | func NewPipes(stdin io.ReadCloser, stdout, stderr io.Writer, useStdin bo...
FILE: vendor/github.com/docker/docker/daemon/execdriver/termconsole.go
type StdConsole (line 8) | type StdConsole struct
method AttachPipes (line 20) | func (s *StdConsole) AttachPipes(command *exec.Cmd, pipes *Pipes) error {
method Resize (line 38) | func (s *StdConsole) Resize(h, w int) error {
method Close (line 43) | func (s *StdConsole) Close() error {
function NewStdConsole (line 11) | func NewStdConsole(processConfig *ProcessConfig, pipes *Pipes) (*StdCons...
FILE: vendor/github.com/docker/docker/daemon/execdriver/utils.go
function init (line 13) | func init() {
type CapabilityMapping (line 33) | type CapabilityMapping struct
method String (line 40) | func (c *CapabilityMapping) String() string {
type Capabilities (line 37) | type Capabilities
function GetCapability (line 44) | func GetCapability(key string) *CapabilityMapping {
function GetAllCapabilities (line 54) | func GetAllCapabilities() []string {
function TweakCapabilities (line 62) | func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/checkoptions.go
function checkSupportedOptions (line 11) | func checkSupportedOptions(c *execdriver.Command) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/clean.go
method Clean (line 5) | func (d *driver) Clean(id string) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/exec.go
method Exec (line 16) | func (d *driver) Exec(c *execdriver.Command, processConfig *execdriver.P...
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/getpids.go
method GetPidsForContainer (line 7) | func (d *driver) GetPidsForContainer(id string) ([]int, error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/info.go
type info (line 7) | type info struct
method IsRunning (line 19) | func (i *info) IsRunning() bool {
method Info (line 12) | func (d *driver) Info(id string) execdriver.Info {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/namedpipes.go
function stdinAccept (line 24) | func stdinAccept(inListen *npipe.PipeListener, pipeName string, copyfrom...
function stdouterrAccept (line 55) | func stdouterrAccept(outerrListen *npipe.PipeListener, pipeName string, ...
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/pauseunpause.go
method Pause (line 11) | func (d *driver) Pause(c *execdriver.Command) error {
method Unpause (line 15) | func (d *driver) Unpause(c *execdriver.Command) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/run.go
type layer (line 19) | type layer struct
type defConfig (line 24) | type defConfig struct
type networkConnection (line 28) | type networkConnection struct
type networkSettings (line 32) | type networkSettings struct
type device (line 36) | type device struct
type containerInit (line 42) | type containerInit struct
method Run (line 53) | func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, sta...
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/stats.go
method Stats (line 11) | func (d *driver) Stats(id string) (*execdriver.ResourceStats, error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/stdconsole.go
type StdConsole (line 6) | type StdConsole struct
method Resize (line 13) | func (s *StdConsole) Resize(h, w int) error {
method Close (line 18) | func (s *StdConsole) Close() error {
function NewStdConsole (line 9) | func NewStdConsole() *StdConsole {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/terminatekill.go
method Terminate (line 11) | func (d *driver) Terminate(p *execdriver.Command) error {
method Kill (line 16) | func (d *driver) Kill(p *execdriver.Command, sig int) error {
function kill (line 21) | func kill(id string, pid int) error {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/ttyconsole.go
type TtyConsole (line 10) | type TtyConsole struct
method Resize (line 23) | func (t *TtyConsole) Resize(h, w int) error {
method Close (line 27) | func (t *TtyConsole) Close() error {
function NewTtyConsole (line 15) | func NewTtyConsole(id string, processid uint32) *TtyConsole {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/unsupported.go
function NewDriver (line 11) | func NewDriver(root, initPath string) (execdriver.Driver, error) {
FILE: vendor/github.com/docker/docker/daemon/execdriver/windows/windows.go
type activeContainer (line 28) | type activeContainer struct
type driver (line 32) | type driver struct
method Name (line 39) | func (d *driver) Name() string {
function NewDriver (line 43) | func NewDriver(root, initPath string, options []string) (*driver, error) {
function setupEnvironmentVariables (line 81) | func setupEnvironmentVariables(a []string) map[string]string {
FILE: vendor/github.com/docker/docker/daemon/export.go
method ContainerExport (line 8) | func (daemon *Daemon) ContainerExport(name string, out io.Writer) error {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/aufs/aufs.go
function init (line 58) | func init() {
type Driver (line 62) | type Driver struct
method rootPath (line 147) | func (a *Driver) rootPath() string {
method String (line 151) | func (*Driver) String() string {
method Status (line 155) | func (a *Driver) Status() [][2]string {
method GetMetadata (line 165) | func (a *Driver) GetMetadata(id string) (map[string]string, error) {
method Exists (line 171) | func (a *Driver) Exists(id string) bool {
method Create (line 180) | func (a *Driver) Create(id, parent string) error {
method createDirsFor (line 209) | func (a *Driver) createDirsFor(id string) error {
method Remove (line 224) | func (a *Driver) Remove(id string) error {
method Get (line 264) | func (a *Driver) Get(id, mountLabel string) (string, error) {
method Put (line 297) | func (a *Driver) Put(id string) error {
method Diff (line 317) | func (a *Driver) Diff(id, parent string) (archive.Archive, error) {
method applyDiff (line 325) | func (a *Driver) applyDiff(id string, diff archive.ArchiveReader) error {
method DiffSize (line 332) | func (a *Driver) DiffSize(id, parent string) (size int64, err error) {
method ApplyDiff (line 340) | func (a *Driver) ApplyDiff(id, parent string, diff archive.ArchiveRead...
method Changes (line 351) | func (a *Driver) Changes(id, parent string) ([]archive.Change, error) {
method getParentLayerPaths (line 361) | func (a *Driver) getParentLayerPaths(id string) ([]string, error) {
method mount (line 375) | func (a *Driver) mount(id, mountLabel string) error {
method unmount (line 397) | func (a *Driver) unmount(id string) error {
method mounted (line 405) | func (a *Driver) mounted(id string) (bool, error) {
method Cleanup (line 411) | func (a *Driver) Cleanup() error {
method aufsMount (line 426) | func (a *Driver) aufsMount(ro []string, rw, target, mountLabel string)...
function Init (line 70) | func Init(root string, options []string) (graphdriver.Driver, error) {
function supportsAufs (line 127) | func supportsAufs() error {
function useDirperm (line 485) | func useDirperm() bool {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/aufs/aufs_test.go
function init (line 24) | func init() {
function testInit (line 28) | func testInit(dir string, t *testing.T) graphdriver.Driver {
function newDriver (line 40) | func newDriver(t *testing.T) *Driver {
function TestNewDriver (line 49) | func TestNewDriver(t *testing.T) {
function TestAufsString (line 61) | func TestAufsString(t *testing.T) {
function TestCreateDirStructure (line 70) | func TestCreateDirStructure(t *testing.T) {
function TestNewDriverFromExistingDir (line 88) | func TestNewDriverFromExistingDir(t *testing.T) {
function TestCreateNewDir (line 98) | func TestCreateNewDir(t *testing.T) {
function TestCreateNewDirStructure (line 107) | func TestCreateNewDirStructure(t *testing.T) {
function TestRemoveImage (line 128) | func TestRemoveImage(t *testing.T) {
function TestGetWithoutParent (line 153) | func TestGetWithoutParent(t *testing.T) {
function TestCleanupWithNoDirs (line 171) | func TestCleanupWithNoDirs(t *testing.T) {
function TestCleanupWithDir (line 180) | func TestCleanupWithDir(t *testing.T) {
function TestMountedFalseResponse (line 193) | func TestMountedFalseResponse(t *testing.T) {
function TestMountedTrueReponse (line 211) | func TestMountedTrueReponse(t *testing.T) {
function TestMountWithParent (line 238) | func TestMountWithParent(t *testing.T) {
function TestRemoveMountedDir (line 269) | func TestRemoveMountedDir(t *testing.T) {
function TestCreateWithInvalidParent (line 308) | func TestCreateWithInvalidParent(t *testing.T) {
function TestGetDiff (line 317) | func TestGetDiff(t *testing.T) {
function TestChanges (line 351) | func TestChanges(t *testing.T) {
function TestDiffSize (line 445) | func TestDiffSize(t *testing.T) {
function TestChildDiffSize (line 486) | func TestChildDiffSize(t *testing.T) {
function TestExists (line 541) | func TestExists(t *testing.T) {
function TestStatus (line 559) | func TestStatus(t *testing.T) {
function TestApplyDiff (line 588) | func TestApplyDiff(t *testing.T) {
function hash (line 641) | func hash(c string) string {
function testMountMoreThan42Layers (line 647) | func testMountMoreThan42Layers(t *testing.T, mountPath string) {
function TestMountMoreThan42Layers (line 712) | func TestMountMoreThan42Layers(t *testing.T) {
function TestMountMoreThan42LayersMatchingPathLength (line 717) | func TestMountMoreThan42LayersMatchingPathLength(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/aufs/dirs.go
function loadIds (line 13) | func loadIds(root string) ([]string, error) {
function getParentIds (line 32) | func getParentIds(root, id string) ([]string, error) {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/aufs/migrate.go
type metadata (line 13) | type metadata struct
function pathExists (line 21) | func pathExists(pth string) bool {
method Migrate (line 41) | func (a *Driver) Migrate(pth string, setupInit func(p string) error) err...
method migrateRepositories (line 54) | func (a *Driver) migrateRepositories(pth string) error {
method migrateContainers (line 62) | func (a *Driver) migrateContainers(pth string, setupInit func(p string) ...
method migrateImages (line 104) | func (a *Driver) migrateImages(pth string) error {
method migrateImage (line 140) | func (a *Driver) migrateImage(m *metadata, pth string, migrated map[stri...
function tryRelocate (line 160) | func tryRelocate(oldPath, newPath string) error {
function loadMetadata (line 180) | func loadMetadata(pth string) (*metadata, error) {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/aufs/mount.go
function Unmount (line 12) | func Unmount(target string) error {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/aufs/mount_linux.go
constant MsRemount (line 5) | MsRemount = syscall.MS_REMOUNT
function mount (line 7) | func mount(source string, target string, fstype string, flags uintptr, d...
FILE: vendor/github.com/docker/docker/daemon/graphdriver/aufs/mount_unsupported.go
constant MsRemount (line 7) | MsRemount = 0
function mount (line 9) | func mount(source string, target string, fstype string, flags uintptr, d...
FILE: vendor/github.com/docker/docker/daemon/graphdriver/btrfs/btrfs.go
function init (line 23) | func init() {
function Init (line 27) | func Init(home string, options []string) (graphdriver.Driver, error) {
type Driver (line 54) | type Driver struct
method String (line 58) | func (d *Driver) String() string {
method Status (line 62) | func (d *Driver) Status() [][2]string {
method GetMetadata (line 73) | func (d *Driver) GetMetadata(id string) (map[string]string, error) {
method Cleanup (line 77) | func (d *Driver) Cleanup() error {
method subvolumesDir (line 173) | func (d *Driver) subvolumesDir() string {
method subvolumesDirId (line 177) | func (d *Driver) subvolumesDirId(id string) string {
method Create (line 181) | func (d *Driver) Create(id string, parent string) error {
method Remove (line 202) | func (d *Driver) Remove(id string) error {
method Get (line 213) | func (d *Driver) Get(id, mountLabel string) (string, error) {
method Put (line 227) | func (d *Driver) Put(id string) error {
method Exists (line 233) | func (d *Driver) Exists(id string) bool {
function free (line 81) | func free(p *C.char) {
function openDir (line 85) | func openDir(path string) (*C.DIR, error) {
function closeDir (line 96) | func closeDir(dir *C.DIR) {
function getDirFd (line 102) | func getDirFd(dir *C.DIR) uintptr {
function subvolCreate (line 106) | func subvolCreate(path, name string) error {
function subvolSnapshot (line 126) | func subvolSnapshot(src, dest, name string) error {
function subvolDelete (line 153) | func subvolDelete(path, name string) error {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/btrfs/btrfs_test.go
function TestBtrfsSetup (line 12) | func TestBtrfsSetup(t *testing.T) {
function TestBtrfsCreateEmpty (line 16) | func TestBtrfsCreateEmpty(t *testing.T) {
function TestBtrfsCreateBase (line 20) | func TestBtrfsCreateBase(t *testing.T) {
function TestBtrfsCreateSnap (line 24) | func TestBtrfsCreateSnap(t *testing.T) {
function TestBtrfsTeardown (line 28) | func TestBtrfsTeardown(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/btrfs/version.go
function BtrfsBuildVersion (line 20) | func BtrfsBuildVersion() string {
function BtrfsLibVersion (line 24) | func BtrfsLibVersion() int {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/btrfs/version_none.go
function BtrfsBuildVersion (line 8) | func BtrfsBuildVersion() string {
function BtrfsLibVersion (line 12) | func BtrfsLibVersion() int {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/btrfs/version_test.go
function TestLibVersion (line 9) | func TestLibVersion(t *testing.T) {
FILE: vendor/github.com/docker/docker/daemon/graphdriver/devmapper/deviceset.go
constant deviceSetMetaFile (line 45) | deviceSetMetaFile string = "deviceset-metadata"
constant transactionMetaFile (line 46) | transactionMetaFile string = "transaction-metadata"
type Transaction (line 48) | type Transaction struct
type DevInfo (line 54) | type DevInfo struct
method Name (line 151) | func (info *DevInfo) Name() string {
method DevName (line 159) | func (info *DevInfo) DevName() string {
type MetaData (line 78) | type MetaData struct
type DeviceSet (line 83) | type DeviceSet struct
method loopbackDir (line 163) | func (devices *DeviceSet) loopbackDir() string {
method metadataDir (line 167) | func (devices *DeviceSet) metadataDir() string {
method metadataFile (line 171) | func (devices *DeviceSet) metadataFile(info *DevInfo) string {
method transactionMetaFile (line 179) | func (devices *DeviceSet) transactionMetaFile() string {
method deviceSetMetaFile (line 183) | func (devices *DeviceSet) deviceSetMetaFile() string {
method oldMetadataFile (line 187) | func (devices *DeviceSet) oldMetadataFile() string {
method getPoolName (line 191) | func (devices *DeviceSet) getPoolName() string {
method getPoolDevName (line 198) | func (devices *DeviceSet) getPoolDevName() string {
method hasImage (line 202) | func (devices *DeviceSet) hasImage(name string) bool {
method ensureImage (line 214) | func (devices *DeviceSet) ensureImage(name string, size int64) (string...
method allocateTransactionId (line 240) | func (devices *DeviceSet) allocateTransactionId() uint64 {
method updatePoolTransactionId (line 245) | func (devices *DeviceSet) updatePoolTransactionId() error {
method removeMetadata (line 253) | func (devices *DeviceSet) removeMetadata(info *DevInfo) error {
method writeMetaFile (line 261) | func (devices *DeviceSet) writeMetaFile(jsonData []byte, filePath stri...
method saveMetadata (line 287) | func (devices *DeviceSet) saveMetadata(info *DevInfo) error {
method markDeviceIdUsed (line 298) | func (devices *DeviceSet) markDeviceIdUsed(deviceId int) {
method markDeviceIdFree (line 305) | func (devices *DeviceSet) markDeviceIdFree(deviceId int) {
method isDeviceIdFree (line 312) | func (devices *DeviceSet) isDeviceIdFree(deviceId int) bool {
method lookupDevice (line 322) | func (devices *DeviceSet) lookupDevice(hash string) (*DevInfo, error) {
method deviceFileWalkFunction (line 337) | func (devices *DeviceSet) deviceFileWalkFunction(path string, finfo os...
method constructDeviceIdMap (line 380) | func (devices *DeviceSet) constructDeviceIdMap() error {
method unregisterDevice (line 401) | func (devices *DeviceSet) unregisterDevice(id int, hash string) error {
method registerDevice (line 420) | func (devices *DeviceSet) registerDevice(id int, hash string, size uin...
method activateDeviceIfNeeded (line 446) | func (devices *DeviceSet) activateDeviceIfNeeded(info *DevInfo) error {
method createFilesystem (line 462) | func (devices *DeviceSet) createFilesystem(info *DevInfo) error {
method migrateOldMetaData (line 495) | func (devices *DeviceSet) migrateOldMetaData() error {
method initMetaData (line 522) | func (devices *DeviceSet) initMetaData() error {
method incNextDeviceId (line 544) | func (devices *DeviceSet) incNextDeviceId() {
method getNextFreeDeviceId (line 549) | func (devices *DeviceSet) getNextFreeDeviceId() (int, error) {
method createRegisterDevice (line 562) | func (devices *DeviceSet) createRegisterDevice(hash string) (*DevInfo,...
method createRegisterSnapDevice (line 614) | func (devices *DeviceSet) createRegisterSnapDevice(hash string, baseIn...
method loadMetadata (line 665) | func (devices *DeviceSet) loadMetadata(hash string) *DevInfo {
method verifyBaseDeviceUUID (line 693) | func (devices *DeviceSet) verifyBaseDeviceUUID(baseInfo *DevInfo) error {
method saveBaseDeviceUUID (line 715) | func (devices *DeviceSet) saveBaseDeviceUUID(baseInfo *DevInfo) error {
method setupBaseImage (line 735) | func (devices *DeviceSet) setupBaseImage() error {
method DMLog (line 820) | func (devices *DeviceSet) DMLog(level int, file string, line int, dmEr...
method ResizePool (line 847) | func (devices *DeviceSet) ResizePool(size int64) error {
method loadTransactionMetaData (line 919) | func (devices *DeviceSet) loadTransactionMetaData() error {
method saveTransactionMetaData (line 935) | func (devices *DeviceSet) saveTransactionMetaData() error {
method removeTransactionMetaData (line 944) | func (devices *DeviceSet) removeTransactionMetaData() error {
method rollbackTransaction (line 951) | func (devices *DeviceSet) rollbackTransaction() error {
method processPendingTransaction (line 975) | func (devices *DeviceSet) processPendingTransaction() error {
method loadDeviceSetMetaData (line 1003) | func (devices *DeviceSet) loadDeviceSetMetaData() error {
method saveDeviceSetMetaData (line 1017) | func (devices *DeviceSet) saveDeviceSetMetaData() error {
method openTransaction (line 1026) | func (devices *DeviceSet) openTransaction(hash string, DeviceId int) e...
method refreshTransaction (line 1036) | func (devices *DeviceSet) refreshTransaction(DeviceId int) error {
method closeTransaction (line 1044) | func (devices *DeviceSet) closeTransaction() error {
method getThinPoolDataMetaMajMin (line 1131) | func (devices *DeviceSet) getThinPoolDataMetaMajMin() (uint64, uint64,...
method loadThinPoolLoopBackInfo (line 1170) | func (devices *DeviceSet) loadThinPoolLoopBackInfo() error {
method initDevmapper (line 1212) | func (devices *DeviceSet) initDevmapper(doInit bool) error {
method AddDevice (line 1392) | func (devices *DeviceSet) AddDevice(hash, baseHash string) error {
method deleteDevice (line 1418) | func (devices *DeviceSet) deleteDevice(info *DevInfo) error {
method DeleteDevice (line 1461) | func (devices *DeviceSet) DeleteDevice(hash string) error {
method deactivatePool (line 1476) | func (devices *DeviceSet) deactivatePool() error {
method deactivateDevice (line 1496) | func (devices *DeviceSet) deactivateDevice(info *DevInfo) error {
method removeDevice (line 1522) | func (devices *DeviceSet) removeDevice(devname string) error {
method cancelDeferredRemoval (line 1547) | func (devices *DeviceSet) cancelDeferredRemoval(info *DevInfo) error {
method Shutdown (line 1586) | func (devices *DeviceSet) Shutdown() error {
method MountDevice (line 1642) | func (devices *DeviceSet) MountDevice(hash, path, mountLabel string) e...
method UnmountDevice (line 1694) | func (devices *DeviceSet) UnmountDevice(hash string) error {
method HasDevice (line 1733) | func (devices *DeviceSet) HasDevice(hash string) bool {
method HasActivatedDevice (line 1741) | func (devices *DeviceSet) HasActivatedDevice(hash string) bool {
method List (line 1757) | func (devices *DeviceSet) List() []string {
method deviceStatus (line 1773) | func (devices *DeviceSet) deviceStatus(devName string) (sizeInSectors,...
method GetDeviceStatus (line 1785) | func (devices *DeviceSet) GetDeviceStatus(hash string) (*DevStatus, er...
method poolStatus (line 1820) | func (devices *DeviceSet) poolStatus() (totalSizeInSectors, transactio...
method DataDevicePath (line 1830) | func (devices *DeviceSet) DataDevicePath() string {
method MetadataDevicePath (line 1836) | func (devices *DeviceSet) MetadataDevicePath() string {
method getUnderlyingAvailableSpace (line 1840) | func (devices *DeviceSet) getUnderlyingAvailableSpace(loopFile string)...
method isRealFile (line 1849) | func (devices *DeviceSet) isRealFile(loopFile string) (bool, error) {
method Status (line 1862) | func (devices *DeviceSet) Status() *Status {
method ExportDeviceMetadata (line 1911) | func (devices *DeviceSet) ExportDeviceMetadata(hash string) (*DeviceMe...
type DiskUsage (line 112) | type DiskUsage struct
type Status (line 118) | type Status struct
type DeviceMetadata (line 132) | type DeviceMetadata struct
type DevStatus (line 138) | type DevStatus struct
function getDevName (line 147) | func getDevName(name string) string {
function getDeviceUUID (line 680) | func getDeviceUUID(device string) (string, error) {
function setCloseOnExec (line 806) | func setCloseOnExec(name string) {
function major (line 839) | func major(device uint64) uint64 {
function minor (line 843) | func minor(device uint64) uint64 {
function determineDriverCapabilities (line 1052) | func
Copy disabled (too large)
Download .json
Condensed preview — 3439 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (25,668K chars).
[
{
"path": ".dockerignore",
"chars": 13,
"preview": "vendor\ngolib\n"
},
{
"path": ".gitignore",
"chars": 38,
"preview": "*.swp\nbin/\n_dist/\n.idea\ngolib\nrelease\n"
},
{
"path": "BUILDING.md",
"chars": 2699,
"preview": "## Building\n\n * install [go version 1.5.1 or later](https://golang.org/doc/install)\n * install [glide](https://github.co"
},
{
"path": "Dockerfile",
"chars": 145,
"preview": "FROM centos:7\n\nWORKDIR /playbook\n\nENV PATH $PATH:/usr/local/kansible/\n\nADD ./bin/kansible /usr/local/kansible/\n\nCMD kans"
},
{
"path": "Dockerfile.scratch",
"chars": 227,
"preview": "FROM scratch\n# Call 'make build-all' before building it\nADD bin/kansible-docker /kansible\n# Variables are interpolated n"
},
{
"path": "Jenkinsfile",
"chars": 650,
"preview": "#!/usr/bin/groovy\nnode{\n stage 'canary release'\n git 'https://github.com/fabric8io/kansible.git'\n\n kubernetes.pod('bu"
},
{
"path": "LICENSE",
"chars": 554,
"preview": "Copyright 2016 Red Hat, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file "
},
{
"path": "Makefile",
"chars": 3767,
"preview": "ifndef GOPATH\n$(error No GOPATH set)\nendif\n\nNAME := kansible\nVERSION := $(shell cat version/VERSION)\nREVISION=$(shell gi"
},
{
"path": "README.md",
"chars": 21468,
"preview": "# Kansible\n\nKansible lets you orchestrate operating system _processes_ on Windows or any Unix in the same way as you orc"
},
{
"path": "add-headers.sh",
"chars": 416,
"preview": "#!/bin/bash\n\nfunction join { local IFS=\"$1\"; shift; echo \"$*\"; }\n\ncopyright-header \\\n --copyright-software Kansible \\\n "
},
{
"path": "ansible/ansible.go",
"chars": 27583,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "ansible/variables.go",
"chars": 2208,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "circle.yml",
"chars": 1034,
"preview": "machine:\n environment:\n IMPORT_PATH: \"github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME\"\n\ndependencies:\n "
},
{
"path": "cmd/kill.go",
"chars": 3856,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "cmd/pod.go",
"chars": 5294,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "cmd/rc.go",
"chars": 2751,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "cmd/root.go",
"chars": 2418,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "cmd/run.go",
"chars": 2968,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "cmd/version.go",
"chars": 1438,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "glide.yaml",
"chars": 644,
"preview": "package: github.com/fabric8io/gosupervise\nimport:\n- package: github.com/Masterminds/vcs\n- package: github.com/Mastermind"
},
{
"path": "header.txt",
"chars": 599,
"preview": "Copyright <%=copyright_years.join(', ')%> <%=copyright_holders.join(', ')%>\n\nLicensed under the Apache License, Version "
},
{
"path": "headers.yml",
"chars": 2610,
"preview": "ruby:\n ext: ['.rb', '.rake']\n after: ['^#!', '^#.*encoding:']\n comment:\n open: '#\\n'\n close: '#\\n'\n prefi"
},
{
"path": "k8s/k8s.go",
"chars": 10543,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "kansible.go",
"chars": 766,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "log/log.go",
"chars": 2184,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "ssh/ssh.go",
"chars": 3612,
"preview": "/*\n * Copyright 2016 Red Hat\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use th"
},
{
"path": "tools/create-intellij-idea-golib.sh",
"chars": 835,
"preview": "#!/bin/bash\n\n# Build up a GOPATH directory for IntelliJ IDEA\n# which doesn't support GO15VENDOREXPERIMENT yet\n\n\npushd `d"
},
{
"path": "vendor/bitbucket.org/ww/goautoneg/Makefile",
"chars": 188,
"preview": "include $(GOROOT)/src/Make.inc\n\nTARG=bitbucket.org/ww/goautoneg\nGOFILES=autoneg.go\n\ninclude $(GOROOT)/src/Make.pkg\n\nform"
},
{
"path": "vendor/bitbucket.org/ww/goautoneg/README.txt",
"chars": 2268,
"preview": "PACKAGE\n\npackage goautoneg\nimport \"bitbucket.org/ww/goautoneg\"\n\nHTTP Content-Type Autonegotiation.\n\nThe functions in thi"
},
{
"path": "vendor/bitbucket.org/ww/goautoneg/autoneg.go",
"chars": 4301,
"preview": "/*\nHTTP Content-Type Autonegotiation.\n\nThe functions in this package implement the behaviour specified in\nhttp://www.w3."
},
{
"path": "vendor/bitbucket.org/ww/goautoneg/autoneg_test.go",
"chars": 970,
"preview": "package goautoneg\n\nimport (\n\t\"testing\"\n)\n\nvar chrome = \"application/xml,application/xhtml+xml,text/html;q=0.9,text/plain"
},
{
"path": "vendor/github.com/Masterminds/semver/.travis.yml",
"chars": 383,
"preview": "language: go\n\ngo:\n - 1.3\n - 1.4\n - 1.5\n - tip\n\n# Setting sudo access to false will let Travis CI use containers rath"
},
{
"path": "vendor/github.com/Masterminds/semver/CHANGELOG.md",
"chars": 398,
"preview": "# Release 1.x.x (xxxx-xx-xx)\n\n- Issue #9: Speed up version comparison performance (thanks @sdboyer)\n- Issue #8: Added be"
},
{
"path": "vendor/github.com/Masterminds/semver/LICENSE.txt",
"chars": 1094,
"preview": "The Masterminds\nCopyright (C) 2014-2015, Matt Butcher and Matt Farina\n\nPermission is hereby granted, free of charge, to "
},
{
"path": "vendor/github.com/Masterminds/semver/README.md",
"chars": 5221,
"preview": "# SemVer\n\nThe `semver` package provides the ability to work with [Semantic Versions](http://semver.org) in Go. Specifica"
},
{
"path": "vendor/github.com/Masterminds/semver/appveyor.yml",
"chars": 281,
"preview": "version: build-{build}.{branch}\n\nclone_folder: C:\\gopath\\src\\github.com\\Masterminds\\semver\nshallow_clone: true\n\nenvironm"
},
{
"path": "vendor/github.com/Masterminds/semver/benchmark_test.go",
"chars": 3496,
"preview": "package semver_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/Masterminds/semver\"\n)\n\n/* Constraint creation benchmarks */\n\nfunc"
},
{
"path": "vendor/github.com/Masterminds/semver/collection.go",
"chars": 729,
"preview": "package semver\n\n// Collection is a collection of Version instances and implements the sort\n// interface. See the sort pa"
},
{
"path": "vendor/github.com/Masterminds/semver/collection_test.go",
"chars": 589,
"preview": "package semver\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\t\"testing\"\n)\n\nfunc TestCollection(t *testing.T) {\n\traw := []string{\n\t\t\"1.2.3"
},
{
"path": "vendor/github.com/Masterminds/semver/constraints.go",
"chars": 7550,
"preview": "package semver\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n)\n\n// Constraints is one or more constraint that a semant"
},
{
"path": "vendor/github.com/Masterminds/semver/constraints_test.go",
"chars": 11033,
"preview": "package semver\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestParseConstraint(t *testing.T) {\n\ttests := []struct {\n\t\tin st"
},
{
"path": "vendor/github.com/Masterminds/semver/doc.go",
"chars": 3720,
"preview": "/*\nPackage semver provides the ability to work with Semantic Versions (http://semver.org) in Go.\n\nSpecifically it provid"
},
{
"path": "vendor/github.com/Masterminds/semver/version.go",
"chars": 5945,
"preview": "package semver\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// The compiled version of the reg"
},
{
"path": "vendor/github.com/Masterminds/semver/version_test.go",
"chars": 5933,
"preview": "package semver\n\nimport (\n\t\"testing\"\n)\n\nfunc TestNewVersion(t *testing.T) {\n\ttests := []struct {\n\t\tversion string\n\t\terr "
},
{
"path": "vendor/github.com/Masterminds/vcs/.gitignore",
"chars": 266,
"preview": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture spe"
},
{
"path": "vendor/github.com/Masterminds/vcs/.travis.yml",
"chars": 391,
"preview": "language: go\n\ngo:\n - 1.3\n - 1.4\n - 1.5\n - 1.6\n - tip\n\n# Setting sudo access to false will let Travis CI use contain"
},
{
"path": "vendor/github.com/Masterminds/vcs/CHANGELOG.md",
"chars": 1486,
"preview": "# 1.5.1 (2016-03-23)\n\n- Fixing bug parsing some Git commit dates.\n\n# 1.5.0 (2016-03-22)\n\n- Add Travis CI testing for Go "
},
{
"path": "vendor/github.com/Masterminds/vcs/LICENSE.txt",
"chars": 1094,
"preview": "The Masterminds\nCopyright (C) 2014-2015, Matt Butcher and Matt Farina\n\nPermission is hereby granted, free of charge, to "
},
{
"path": "vendor/github.com/Masterminds/vcs/README.md",
"chars": 1987,
"preview": "# VCS Repository Management for Go\n\nManage repos in varying version control systems with ease through a common\ninterface"
},
{
"path": "vendor/github.com/Masterminds/vcs/bzr.go",
"chars": 5406,
"preview": "package vcs\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar bzrDetectURL = regexp.MustCo"
},
{
"path": "vendor/github.com/Masterminds/vcs/bzr_test.go",
"chars": 4778,
"preview": "package vcs\n\nimport (\n\t\"io/ioutil\"\n\t\"time\"\n\t//\"log\"\n\t\"os\"\n\t\"testing\"\n)\n\n// Canary test to ensure BzrRepo implements the "
},
{
"path": "vendor/github.com/Masterminds/vcs/git.go",
"chars": 6777,
"preview": "package vcs\n\nimport (\n\t\"encoding/xml\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n)\n\n// NewGitRepo creates a ne"
},
{
"path": "vendor/github.com/Masterminds/vcs/git_test.go",
"chars": 5564,
"preview": "package vcs\n\nimport (\n\t\"io/ioutil\"\n\t\"time\"\n\t//\"log\"\n\t\"os\"\n\t\"testing\"\n)\n\n// Canary test to ensure GitRepo implements the "
},
{
"path": "vendor/github.com/Masterminds/vcs/hg.go",
"chars": 4911,
"preview": "package vcs\n\nimport (\n\t\"encoding/xml\"\n\t\"os\"\n\t\"os/exec\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar hgDetectURL = regexp.MustComp"
},
{
"path": "vendor/github.com/Masterminds/vcs/hg_test.go",
"chars": 4827,
"preview": "package vcs\n\nimport (\n\t\"io/ioutil\"\n\t\"time\"\n\t//\"log\"\n\t\"os\"\n\t\"testing\"\n)\n\n// Canary test to ensure HgRepo implements the R"
},
{
"path": "vendor/github.com/Masterminds/vcs/repo.go",
"chars": 7191,
"preview": "// Package vcs provides the ability to work with varying version control systems\n// (VCS), also known as source control"
},
{
"path": "vendor/github.com/Masterminds/vcs/repo_test.go",
"chars": 1403,
"preview": "package vcs\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"testing\"\n)\n\nfunc ExampleNewRepo() {\n\tremote := \"https://github.com/Mas"
},
{
"path": "vendor/github.com/Masterminds/vcs/svn.go",
"chars": 5783,
"preview": "package vcs\n\nimport (\n\t\"encoding/xml\"\n\t\"os\"\n\t\"os/exec\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar svnDetectURL = regexp.MustCom"
},
{
"path": "vendor/github.com/Masterminds/vcs/svn_test.go",
"chars": 5344,
"preview": "package vcs\n\nimport (\n\t\"io/ioutil\"\n\t\"time\"\n\t//\"log\"\n\t\"os\"\n\t\"testing\"\n)\n\n// To verify svn is working we perform integrati"
},
{
"path": "vendor/github.com/Masterminds/vcs/vcs_local_lookup.go",
"chars": 1011,
"preview": "package vcs\n\nimport (\n\t\"os\"\n)\n\n// DetectVcsFromFS detects the type from the local path.\n// Is there a better way to do t"
},
{
"path": "vendor/github.com/Masterminds/vcs/vcs_remote_lookup.go",
"chars": 9967,
"preview": "package vcs\n\nimport (\n\t\"encoding/json\"\n\t\"encoding/xml\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"stri"
},
{
"path": "vendor/github.com/Masterminds/vcs/vcs_remote_lookup_test.go",
"chars": 3413,
"preview": "package vcs\n\nimport (\n\t\"testing\"\n)\n\nfunc TestVCSLookup(t *testing.T) {\n\t// TODO: Expand to make sure it detected the rig"
},
{
"path": "vendor/github.com/beorn7/perks/.gitignore",
"chars": 14,
"preview": "*.test\n*.prof\n"
},
{
"path": "vendor/github.com/beorn7/perks/README.md",
"chars": 1882,
"preview": "# Perks for Go (golang.org)\n\nPerks contains the Go package quantile that computes approximate quantiles over\nan unbounde"
},
{
"path": "vendor/github.com/beorn7/perks/histogram/bench_test.go",
"chars": 378,
"preview": "package histogram\n\nimport (\n\t\"math/rand\"\n\t\"testing\"\n)\n\nfunc BenchmarkInsert10Bins(b *testing.B) {\n\tb.StopTimer()\n\th := N"
},
{
"path": "vendor/github.com/beorn7/perks/histogram/histogram.go",
"chars": 2098,
"preview": "// Package histogram provides a Go implementation of BigML's histogram package\n// for Clojure/Java. It is currently expe"
},
{
"path": "vendor/github.com/beorn7/perks/histogram/histogram_test.go",
"chars": 607,
"preview": "package histogram\n\nimport (\n\t\"math/rand\"\n\t\"testing\"\n)\n\nfunc TestHistogram(t *testing.T) {\n\tconst numPoints = 1e6\n\tconst "
},
{
"path": "vendor/github.com/beorn7/perks/quantile/bench_test.go",
"chars": 1149,
"preview": "package quantile\n\nimport (\n\t\"testing\"\n)\n\nfunc BenchmarkInsertTargeted(b *testing.B) {\n\tb.ReportAllocs()\n\n\ts := NewTarget"
},
{
"path": "vendor/github.com/beorn7/perks/quantile/example_test.go",
"chars": 2715,
"preview": "// +build go1.1\n\npackage quantile_test\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/beorn7/pe"
},
{
"path": "vendor/github.com/beorn7/perks/quantile/exampledata.txt",
"chars": 5339,
"preview": "8\n5\n26\n12\n5\n235\n13\n6\n28\n30\n3\n3\n3\n3\n5\n2\n33\n7\n2\n4\n7\n12\n14\n5\n8\n3\n10\n4\n5\n3\n6\n6\n209\n20\n3\n10\n14\n3\n4\n6\n8\n5\n11\n7\n3\n2\n3\n3\n212\n5\n2"
},
{
"path": "vendor/github.com/beorn7/perks/quantile/stream.go",
"chars": 7395,
"preview": "// Package quantile computes approximate quantiles over an unbounded data\n// stream within low memory and CPU bounds.\n//"
},
{
"path": "vendor/github.com/beorn7/perks/quantile/stream_test.go",
"chars": 4560,
"preview": "package quantile\n\nimport (\n\t\"math\"\n\t\"math/rand\"\n\t\"sort\"\n\t\"testing\"\n)\n\nvar (\n\tTargets = map[float64]float64{\n\t\t0.01: 0.00"
},
{
"path": "vendor/github.com/beorn7/perks/topk/topk.go",
"chars": 1375,
"preview": "package topk\n\nimport (\n\t\"sort\"\n)\n\n// http://www.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf\n\ntype Element stru"
},
{
"path": "vendor/github.com/beorn7/perks/topk/topk_test.go",
"chars": 975,
"preview": "package topk\n\nimport (\n\t\"fmt\"\n\t\"math/rand\"\n\t\"sort\"\n\t\"testing\"\n)\n\nfunc TestTopK(t *testing.T) {\n\tstream := New(10)\n\tss :="
},
{
"path": "vendor/github.com/blang/semver/LICENSE",
"chars": 1103,
"preview": "The MIT License\n\nCopyright (c) 2014 Benedikt Lang <github at benediktlang.de>\n\nPermission is hereby granted, free of cha"
},
{
"path": "vendor/github.com/blang/semver/README.md",
"chars": 4199,
"preview": "semver for golang [](https://drone.io/github.com/bla"
},
{
"path": "vendor/github.com/blang/semver/examples/main.go",
"chars": 2561,
"preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/blang/semver\"\n)\n\nfunc main() {\n\tv, err := semver.Parse(\"0.0.1-alpha.preview.2"
},
{
"path": "vendor/github.com/blang/semver/json.go",
"chars": 467,
"preview": "package semver\n\nimport (\n\t\"encoding/json\"\n)\n\n// MarshalJSON implements the encoding/json.Marshaler interface.\nfunc (v Ve"
},
{
"path": "vendor/github.com/blang/semver/json_test.go",
"chars": 1119,
"preview": "package semver\n\nimport (\n\t\"encoding/json\"\n\t\"strconv\"\n\t\"testing\"\n)\n\nfunc TestJSONMarshal(t *testing.T) {\n\tversionString :"
},
{
"path": "vendor/github.com/blang/semver/semver.go",
"chars": 9129,
"preview": "package semver\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst (\n\tnumbers string = \"0123456789\"\n\talphas "
},
{
"path": "vendor/github.com/blang/semver/semver_test.go",
"chars": 10807,
"preview": "package semver\n\nimport (\n\t\"testing\"\n)\n\nfunc prstr(s string) PRVersion {\n\treturn PRVersion{s, 0, false}\n}\n\nfunc prnum(i u"
},
{
"path": "vendor/github.com/blang/semver/sort.go",
"chars": 555,
"preview": "package semver\n\nimport (\n\t\"sort\"\n)\n\n// Versions represents multiple versions.\ntype Versions []Version\n\n// Len returns le"
},
{
"path": "vendor/github.com/blang/semver/sort_test.go",
"chars": 582,
"preview": "package semver\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestSort(t *testing.T) {\n\tv100, _ := Parse(\"1.0.0\")\n\tv010, _ := P"
},
{
"path": "vendor/github.com/blang/semver/sql.go",
"chars": 556,
"preview": "package semver\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n)\n\n// Scan implements the database/sql.Scanner interface.\nfunc (v"
},
{
"path": "vendor/github.com/blang/semver/sql_test.go",
"chars": 779,
"preview": "package semver\n\nimport (\n\t\"testing\"\n)\n\ntype scanTest struct {\n\tval interface{}\n\tshouldError bool\n\texpected st"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/.gitignore",
"chars": 15,
"preview": "*.coverprofile\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/.travis.yml",
"chars": 208,
"preview": "language: go\n\ngo:\n - 1.4.1\n\ninstall:\n - go get -t -v ./...\n - go install github.com/onsi/ginkgo/ginkgo\n\nscript:\n - e"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/LICENSE",
"chars": 10173,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/README.md",
"chars": 1155,
"preview": "[](https://travis-ci.org/cloudfoundry-incub"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/api.go",
"chars": 21605,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/candiedyaml_suite_test.go",
"chars": 732,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/decode.go",
"chars": 13138,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/decode_test.go",
"chars": 22194,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/emitter.go",
"chars": 46282,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/encode.go",
"chars": 8668,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/encode_test.go",
"chars": 13391,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_1.yaml",
"chars": 42,
"preview": "- Mark McGwire\n- Sammy Sosa\n- Ken Griffey\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_10.yaml",
"chars": 127,
"preview": "---\nhr:\n - Mark McGwire\n # Following node labeled SS\n - &SS Sammy Sosa\nrbi:\n - *SS # Subsequent occurrence\n - Ken G"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_11.yaml",
"chars": 142,
"preview": "? - Detroit Tigers\n - Chicago cubs\n:\n - 2001-07-23\n\n? [ New York Yankees,\n Atlanta Braves ]\n: [ 2001-07-02, 2001-08"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_12.yaml",
"chars": 135,
"preview": "---\n# products purchased\n- item : Super Hoop\n quantity: 1\n- item : Basketball\n quantity: 4\n- item : Big Shoes"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_13.yaml",
"chars": 44,
"preview": "# ASCII Art\n--- |\n \\//||\\/||\n // || ||__\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_14.yaml",
"chars": 61,
"preview": "---\n Mark McGwire's\n year was crippled\n by a knee injury.\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_15.yaml",
"chars": 120,
"preview": ">\n Sammy Sosa completed another\n fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\n What a year!\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_15_dumped.yaml",
"chars": 122,
"preview": ">\n Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\n What a yea"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_16.yaml",
"chars": 138,
"preview": "name: Mark McGwire\naccomplishment: >\n Mark set a major league\n home run record in 1998.\nstats: |\n 65 Home Runs\n 0.27"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_17.yaml",
"chars": 177,
"preview": "unicode: \"Sosa did fine.\\u263A\"\ncontrol: \"\\b1998\\t1999\\t2000\\n\"\nhexesc: \"\\x0D\\x0A is \\r\\n\"\n\nsingle: '\"Howdy!\" he cried."
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_17_control.yaml",
"chars": 33,
"preview": "control: \"\\b1998\\t1999\\t2000\\n\"\n\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_17_hexesc.yaml",
"chars": 29,
"preview": "hexesc: \"\\x0D\\x0A is \\r\\n\"\n\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_17_quoted.yaml",
"chars": 33,
"preview": "quoted: ' # not a ''comment''.'\n\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_17_single.yaml",
"chars": 29,
"preview": "single: '\"Howdy!\" he cried.'\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_17_tie_fighter.yaml",
"chars": 23,
"preview": "tie-fighter: '|\\-*-/|'\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_17_unicode.yaml",
"chars": 33,
"preview": "unicode: \"Sosa did fine.\\u263A\"\n\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_18.yaml",
"chars": 93,
"preview": "plain:\n This unquoted scalar\n spans many lines.\n\nquoted: \"So does this\n quoted scalar.\\n\"\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_19.yaml",
"chars": 62,
"preview": "canonical: 12345\ndecimal: +12_345\noctal: 014\nhexadecimal: 0xC\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_2.yaml",
"chars": 80,
"preview": "hr: 65 # Home runs\navg: 0.278 # Batting average\nrbi: 147 # Runs Batted In\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_20.yaml",
"chars": 107,
"preview": "canonical: 1.23015e+3\nexponential: 12.3015e+02\nfixed: 1_230.15\nnegative infinity: -.inf\nnot a number: .NaN\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_21.yaml",
"chars": 44,
"preview": "null: ~\ntrue: yes\nfalse: no\nstring: '12345'\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_22.yaml",
"chars": 123,
"preview": "canonical: 2001-12-15T02:59:43.1Z\niso8601: 2001-12-14t21:59:43.10-05:00\nspaced: 2001-12-14 21:59:43.10 -5\ndate: 2002-12-"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_23.yaml",
"chars": 270,
"preview": "---\nnot-date: !!str 2002-04-28\n\npicture: !!binary \"\\\n R0lGODlhDAAMAIQAAP//9/X\\\n 17unp5WZmZgAAAOfn515eXv\\\n Pz7Y6OjuDg4J+f"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_23_application.yaml",
"chars": 119,
"preview": "---\napplication specific tag: !something |\n The semantics of the tag\n above may be different for\n different documents.\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_23_non_date.yaml",
"chars": 32,
"preview": "---\nnot-date: !!str 2002-04-28\n\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_23_picture.yaml",
"chars": 130,
"preview": "---\npicture: !!binary \"\\\n R0lGODlhDAAMAIQAAP//9/X\\\n 17unp5WZmZgAAAOfn515eXv\\\n Pz7Y6OjuDg4J+fn5OTk6enp\\\n 56enmleECcgggoBA"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_24.yaml",
"chars": 298,
"preview": "%TAG ! tag:clarkevans.com,2002:\n--- !shape\n # Use the ! handle for presenting\n # tag:clarkevans.com,2002:circle\n- !cir"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_24_dumped.yaml",
"chars": 185,
"preview": "!shape\n- !circle\n center: &id001 {x: 73, y: 129}\n radius: 7\n- !line\n finish: {x: 89, y: 102}\n start: *id001\n- !label"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_25.yaml",
"chars": 141,
"preview": "# sets are represented as a\n# mapping where each key is\n# associated with the empty string\n--- !!set\n? Mark McGwire\n? Sa"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_26.yaml",
"chars": 159,
"preview": "# ordered maps are represented as\n# a sequence of mappings, with\n# each mapping having one key\n--- !!omap\n- Mark McGwire"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_27.yaml",
"chars": 642,
"preview": "--- !<tag:clarkevans.com,2002:invoice>\ninvoice: 34843\ndate : 2001-01-23\nbillTo: &id001\n given : Chris\n family :"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_27_dumped.yaml",
"chars": 494,
"preview": "!!org.yaml.snakeyaml.Invoice\nbillTo: &id001\n address:\n city: Royal Oak\n lines: |\n 458 Walkman Dr.\n Suit"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_28.yaml",
"chars": 414,
"preview": "---\nTime: 2001-11-23 15:01:42 -5\nUser: ed\nWarning:\n This is an error message\n for the log file\n---\nTime: 2001-11-23 15"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_3.yaml",
"chars": 132,
"preview": "american:\n - Boston Red Sox\n - Detroit Tigers\n - New York Yankees\nnational:\n - New York Mets\n - Chicago Cubs\n - At"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_4.yaml",
"chars": 94,
"preview": "-\n name: Mark McGwire\n hr: 65\n avg: 0.278\n-\n name: Sammy Sosa\n hr: 63\n avg: 0.288\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_5.yaml",
"chars": 84,
"preview": "- [name , hr, avg ]\n- [Mark McGwire, 65, 0.278]\n- [Sammy Sosa , 63, 0.288]\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_6.yaml",
"chars": 80,
"preview": "Mark McGwire: {hr: 65, avg: 0.278}\nSammy Sosa: {\n hr: 63,\n avg: 0.288\n }\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_7.yaml",
"chars": 130,
"preview": "# Ranking of 1998 home runs\n---\n- Mark McGwire\n- Sammy Sosa\n- Ken Griffey\n\n# Team ranking\n---\n- Chicago Cubs\n- St Louis "
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_8.yaml",
"chars": 125,
"preview": "---\ntime: 20:03:20\nplayer: Sammy Sosa\naction: strike (miss)\n...\n---\ntime: 20:03:47\nplayer: Sammy Sosa\naction: grand slam"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example2_9.yaml",
"chars": 115,
"preview": "---\nhr: # 1998 hr ranking\n - Mark McGwire\n - Sammy Sosa\nrbi:\n # 1998 rbi ranking\n - Sammy Sosa\n - Ken Griffey\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/example_empty.yaml",
"chars": 0,
"preview": ""
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/map.yaml",
"chars": 178,
"preview": "# Unordered set of key: value pairs.\nBlock style: !!map\n Clark : Evans\n Brian : Ingerson\n Oren : Ben-Kiki\nFlow style"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/map_mixed_tags.yaml",
"chars": 191,
"preview": "# Unordered set of key: value pairs.\nBlock style: !<tag:yaml.org,2002:map>\n Clark : Evans\n Brian : Ingerson\n Oren : "
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/merge.yaml",
"chars": 389,
"preview": "---\n- &CENTER { x: 1, y: 2 }\n- &LEFT { x: 0, y: 2 }\n- &BIG { r: 10 }\n- &SMALL { r: 1 }\n\n# All the following maps are equ"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/omap.yaml",
"chars": 286,
"preview": "# Explicitly typed ordered map (dictionary).\nBestiary: !!omap\n - aardvark: African pig-like ant eater. Ugly.\n - anteat"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/pairs.yaml",
"chars": 202,
"preview": "# Explicitly typed pairs.\nBlock tasks: !!pairs\n - meeting: with team.\n - meeting: with boss.\n - break: lunch.\n - mee"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/seq.yaml",
"chars": 531,
"preview": "# Ordered sequence of nodes\nBlock style: !!seq\n- Mercury # Rotates - no light/dark sides.\n- Venus # Deadliest. Apt"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/set.yaml",
"chars": 184,
"preview": "# Explicitly typed set.\nbaseball players: !!set\n ? Mark McGwire\n ? Sammy Sosa\n ? Ken Griffey\n# Flow style\nbaseball te"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/v.yaml",
"chars": 70,
"preview": "--- # New schema\nlink with:\n - = : library1.dll\n version: 1.2\n"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/fixtures/specification/types/value.yaml",
"chars": 174,
"preview": "--- # Old schema\nlink with:\n - library1.dll\n - library2.dll\n--- # New schema\nlink with:\n - = : library1.dll\n "
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/libyaml-LICENSE",
"chars": 1058,
"preview": "Copyright (c) 2006 Kirill Simonov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis "
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/parser.go",
"chars": 35795,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/parser_test.go",
"chars": 1919,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/reader.go",
"chars": 12673,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/reader_test.go",
"chars": 10022,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/resolver.go",
"chars": 10790,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/resolver_test.go",
"chars": 17553,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/run_parser.go",
"chars": 1462,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/scanner.go",
"chars": 75975,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/scanner_test.go",
"chars": 1776,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/tags.go",
"chars": 9104,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/writer.go",
"chars": 3209,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/yaml_definesh.go",
"chars": 668,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/yaml_privateh.go",
"chars": 36544,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/cloudfoundry-incubator/candiedyaml/yamlh.go",
"chars": 22519,
"preview": "/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with t"
},
{
"path": "vendor/github.com/davecgh/go-spew/.gitignore",
"chars": 252,
"preview": "# Compiled Object files, Static and Dynamic libs (Shared Objects)\n*.o\n*.a\n*.so\n\n# Folders\n_obj\n_test\n\n# Architecture spe"
},
{
"path": "vendor/github.com/davecgh/go-spew/.travis.yml",
"chars": 332,
"preview": "language: go\ngo: 1.2\ninstall:\n - go get -v code.google.com/p/go.tools/cmd/cover\nscript:\n - go test -v -tags=testcg"
},
{
"path": "vendor/github.com/davecgh/go-spew/LICENSE",
"chars": 750,
"preview": "Copyright (c) 2012-2013 Dave Collins <dave@davec.name>\n\nPermission to use, copy, modify, and distribute this software fo"
},
{
"path": "vendor/github.com/davecgh/go-spew/README.md",
"chars": 5104,
"preview": "go-spew\n=======\n\n[]\n(https://travis-ci.org/davec"
},
{
"path": "vendor/github.com/davecgh/go-spew/cov_report.sh",
"chars": 658,
"preview": "#!/bin/sh\n\n# This script uses gocov to generate a test coverage report.\n# The gocov tool my be obtained with the followi"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/common.go",
"chars": 14249,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/common_test.go",
"chars": 7925,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/config.go",
"chars": 12211,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/doc.go",
"chars": 8153,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/dump.go",
"chars": 13667,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/dump_test.go",
"chars": 32744,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/dumpcgo_test.go",
"chars": 3806,
"preview": "// Copyright (c) 2013 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this software"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/dumpnocgo_test.go",
"chars": 1219,
"preview": "// Copyright (c) 2013 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this software"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/example_test.go",
"chars": 5742,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/format.go",
"chars": 11325,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/format_test.go",
"chars": 56979,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/internal_test.go",
"chars": 4476,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/spew.go",
"chars": 5964,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/spew_test.go",
"chars": 9119,
"preview": "/*\n * Copyright (c) 2013 Dave Collins <dave@davec.name>\n *\n * Permission to use, copy, modify, and distribute this softw"
},
{
"path": "vendor/github.com/davecgh/go-spew/spew/testdata/dumpcgo.go",
"chars": 3284,
"preview": "// Copyright (c) 2013 Dave Collins <dave@davec.name>\n//\n// Permission to use, copy, modify, and distribute this software"
},
{
"path": "vendor/github.com/davecgh/go-spew/test_coverage.txt",
"chars": 4414,
"preview": "\ngithub.com/davecgh/go-spew/spew/dump.go\t\t dumpState.dump\t\t\t 100.00% (88/88)\ngithub.com/davecgh/go-spew/spew/format.go\t "
},
{
"path": "vendor/github.com/docker/docker/.dockerignore",
"chars": 16,
"preview": "bundles\n.gopath\n"
},
{
"path": "vendor/github.com/docker/docker/.gitignore",
"chars": 559,
"preview": "# Docker project generated files to ignore\n# if you want to ignore files created by your editor/tools,\n# please consid"
},
{
"path": "vendor/github.com/docker/docker/.mailmap",
"chars": 8807,
"preview": "# Generate AUTHORS: hack/generate-authors.sh\n\n# Tip for finding duplicates (besides scanning the output of AUTHORS for n"
},
{
"path": "vendor/github.com/docker/docker/AUTHORS",
"chars": 38353,
"preview": "# This file lists all individuals having contributed content to the repository.\n# For how it is generated, see `hack/gen"
},
{
"path": "vendor/github.com/docker/docker/CHANGELOG.md",
"chars": 65511,
"preview": "# Changelog\n\n## 1.7.1 (2015-07-14)\n\n#### Runtime\n\n- Fix default user spawning exec process with `docker exec`\n- Make `--"
},
{
"path": "vendor/github.com/docker/docker/CONTRIBUTING.md",
"chars": 17735,
"preview": "# Contributing to Docker\n\nWant to hack on Docker? Awesome! We have a contributor's guide that explains\n[setting up a Do"
},
{
"path": "vendor/github.com/docker/docker/Dockerfile",
"chars": 7601,
"preview": "# This file describes the standard way to build Docker, using docker\n#\n# Usage:\n#\n# # Assemble the full dev environment."
},
{
"path": "vendor/github.com/docker/docker/Dockerfile.simple",
"chars": 960,
"preview": "# docker build -t docker:simple -f Dockerfile.simple .\n# docker run --rm docker:simple hack/make.sh dynbinary\n# docker r"
},
{
"path": "vendor/github.com/docker/docker/LICENSE",
"chars": 10765,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "vendor/github.com/docker/docker/MAINTAINERS",
"chars": 18059,
"preview": "# Docker maintainers file\n#\n# This file describes who runs the Docker project and how.\n# This is a living document - if "
},
{
"path": "vendor/github.com/docker/docker/Makefile",
"chars": 2646,
"preview": ".PHONY: all binary build cross default docs docs-build docs-shell shell test test-unit test-integration-cli test-docker-"
},
{
"path": "vendor/github.com/docker/docker/NOTICE",
"chars": 638,
"preview": "Docker\nCopyright 2012-2015 Docker, Inc.\n\nThis product includes software developed at Docker, Inc. (https://www.docker.co"
},
{
"path": "vendor/github.com/docker/docker/README.md",
"chars": 12484,
"preview": "Docker: the Linux container engine\n==================================\n\nDocker is an open source project to pack, ship an"
},
{
"path": "vendor/github.com/docker/docker/ROADMAP.md",
"chars": 8249,
"preview": "Docker Engine Roadmap\n=====================\n\n### How should I use this document?\n\nThis document provides description of "
},
{
"path": "vendor/github.com/docker/docker/VERSION",
"chars": 10,
"preview": "1.8.0-dev\n"
},
{
"path": "vendor/github.com/docker/docker/api/README.md",
"chars": 205,
"preview": "This directory contains code pertaining to the Docker API:\n\n - Used by the docker client when communicating with the doc"
},
{
"path": "vendor/github.com/docker/docker/api/api_unit_test.go",
"chars": 341,
"preview": "package api\n\nimport (\n\t\"testing\"\n)\n\nfunc TestJsonContentType(t *testing.T) {\n\tif !MatchesContentType(\"application/json\","
},
{
"path": "vendor/github.com/docker/docker/api/client/attach.go",
"chars": 1941,
"preview": "package client\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\n\t\"github.com/Sirupsen/logrus\"\n\t\"github.com/docker/doc"
}
]
// ... and 3239 more files (download for full content)
About this extraction
This page contains the full source code of the fabric8io/kansible GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3439 files (22.4 MB), approximately 6.1M tokens, and a symbol index with 115613 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.