From 97857ff4c240c2f661f09b0be1fbb6fc02fd86e5 Mon Sep 17 00:00:00 2001 From: smileboywtu Date: Fri, 9 Feb 2018 10:41:10 +0800 Subject: [PATCH] update go dependency --- Gopkg.lock | 44 +- vendor/github.com/codegangsta/cli/.flake8 | 2 + vendor/github.com/codegangsta/cli/.gitignore | 2 + vendor/github.com/codegangsta/cli/.travis.yml | 27 + .../github.com/codegangsta/cli/CHANGELOG.md | 435 +++ vendor/github.com/codegangsta/cli/LICENSE | 21 + vendor/github.com/codegangsta/cli/README.md | 1381 +++++++++ .../codegangsta/cli/altsrc/altsrc.go | 3 + .../github.com/codegangsta/cli/altsrc/flag.go | 261 ++ .../codegangsta/cli/altsrc/flag_generated.go | 347 +++ .../codegangsta/cli/altsrc/flag_test.go | 336 ++ .../codegangsta/cli/altsrc/helpers_test.go | 18 + .../cli/altsrc/input_source_context.go | 21 + .../cli/altsrc/map_input_source.go | 262 ++ .../cli/altsrc/toml_command_test.go | 310 ++ .../cli/altsrc/toml_file_loader.go | 113 + .../cli/altsrc/yaml_command_test.go | 313 ++ .../cli/altsrc/yaml_file_loader.go | 92 + vendor/github.com/codegangsta/cli/app.go | 497 +++ vendor/github.com/codegangsta/cli/app_test.go | 1742 +++++++++++ .../github.com/codegangsta/cli/appveyor.yml | 26 + .../cli/autocomplete/bash_autocomplete | 16 + .../cli/autocomplete/zsh_autocomplete | 5 + vendor/github.com/codegangsta/cli/category.go | 44 + vendor/github.com/codegangsta/cli/cli.go | 22 + vendor/github.com/codegangsta/cli/command.go | 304 ++ .../codegangsta/cli/command_test.go | 240 ++ vendor/github.com/codegangsta/cli/context.go | 278 ++ .../codegangsta/cli/context_test.go | 403 +++ vendor/github.com/codegangsta/cli/errors.go | 115 + .../github.com/codegangsta/cli/errors_test.go | 122 + .../codegangsta/cli/flag-types.json | 93 + vendor/github.com/codegangsta/cli/flag.go | 799 +++++ .../codegangsta/cli/flag_generated.go | 627 ++++ .../github.com/codegangsta/cli/flag_test.go | 1215 ++++++++ vendor/github.com/codegangsta/cli/funcs.go | 28 + .../codegangsta/cli/generate-flag-types | 255 ++ vendor/github.com/codegangsta/cli/help.go | 338 ++ .../github.com/codegangsta/cli/help_test.go | 452 +++ .../codegangsta/cli/helpers_test.go | 28 + .../codegangsta/cli/helpers_unix_test.go | 9 + .../codegangsta/cli/helpers_windows_test.go | 20 + vendor/github.com/codegangsta/cli/runtests | 122 + vendor/github.com/fatih/structs/.gitignore | 23 + vendor/github.com/fatih/structs/.travis.yml | 11 + vendor/github.com/fatih/structs/LICENSE | 21 + vendor/github.com/fatih/structs/README.md | 163 + vendor/github.com/fatih/structs/field.go | 141 + vendor/github.com/fatih/structs/field_test.go | 397 +++ vendor/github.com/fatih/structs/structs.go | 586 ++++ .../fatih/structs/structs_example_test.go | 351 +++ .../github.com/fatih/structs/structs_test.go | 1453 +++++++++ vendor/github.com/fatih/structs/tags.go | 32 + vendor/github.com/fatih/structs/tags_test.go | 46 + vendor/github.com/hashicorp/errwrap/LICENSE | 354 +++ vendor/github.com/hashicorp/errwrap/README.md | 89 + .../github.com/hashicorp/errwrap/errwrap.go | 169 + .../hashicorp/errwrap/errwrap_test.go | 94 + .../hashicorp/go-multierror/.travis.yml | 12 + .../hashicorp/go-multierror/LICENSE | 353 +++ .../hashicorp/go-multierror/Makefile | 31 + .../hashicorp/go-multierror/README.md | 97 + .../hashicorp/go-multierror/append.go | 41 + .../hashicorp/go-multierror/append_test.go | 82 + .../hashicorp/go-multierror/flatten.go | 26 + .../hashicorp/go-multierror/flatten_test.go | 48 + .../hashicorp/go-multierror/format.go | 27 + .../hashicorp/go-multierror/format_test.go | 38 + .../hashicorp/go-multierror/multierror.go | 51 + .../go-multierror/multierror_test.go | 70 + .../hashicorp/go-multierror/prefix.go | 37 + .../hashicorp/go-multierror/prefix_test.go | 33 + .../hashicorp/go-multierror/scripts/deps.sh | 54 + .../yudai/gotty/.github/ISSUE_TEMPLATE.md | 27 + vendor/github.com/yudai/gotty/.gitignore | 4 + vendor/github.com/yudai/gotty/.gotty | 302 ++ vendor/github.com/yudai/gotty/CONTRIBUTING.md | 44 + .../github.com/yudai/gotty/Godeps/Godeps.json | 54 + vendor/github.com/yudai/gotty/Godeps/Readme | 5 + vendor/github.com/yudai/gotty/LICENSE | 21 + vendor/github.com/yudai/gotty/Makefile | 80 + vendor/github.com/yudai/gotty/README.md | 191 ++ vendor/github.com/yudai/gotty/backend/doc.go | 1 + .../yudai/gotty/backend/localcommand/doc.go | 3 + .../gotty/backend/localcommand/factory.go | 48 + .../backend/localcommand/local_command.go | 132 + .../gotty/backend/localcommand/options.go | 20 + vendor/github.com/yudai/gotty/favicon.psd | Bin 0 -> 506267 bytes vendor/github.com/yudai/gotty/help.go | 19 + .../yudai/gotty/js/dist/gotty-bundle.js | 88 + .../github.com/yudai/gotty/js/dist/hterm.d.ts | 24 + .../github.com/yudai/gotty/js/dist/main.d.ts | 0 .../yudai/gotty/js/dist/websocket.d.ts | 17 + .../yudai/gotty/js/dist/webtty.d.ts | 48 + .../github.com/yudai/gotty/js/dist/xterm.d.ts | 26 + .../yudai/gotty/js/package-lock.json | 2404 +++++++++++++++ vendor/github.com/yudai/gotty/js/package.json | 13 + vendor/github.com/yudai/gotty/js/src/hterm.ts | 92 + vendor/github.com/yudai/gotty/js/src/main.ts | 30 + .../yudai/gotty/js/src/websocket.ts | 60 + .../github.com/yudai/gotty/js/src/webtty.ts | 148 + vendor/github.com/yudai/gotty/js/src/xterm.ts | 105 + .../github.com/yudai/gotty/js/tsconfig.json | 20 + .../yudai/gotty/js/typings/libapps/index.d.ts | 51 + .../yudai/gotty/js/webpack.config.js | 29 + vendor/github.com/yudai/gotty/main.go | 152 + .../yudai/gotty/pkg/homedir/expand.go | 13 + .../yudai/gotty/pkg/randomstring/generate.go | 18 + .../yudai/gotty/resources/favicon.png | Bin 0 -> 863 bytes .../yudai/gotty/resources/index.css | 7 + .../yudai/gotty/resources/index.html | 16 + .../yudai/gotty/resources/xterm_customize.css | 19 + vendor/github.com/yudai/gotty/screenshot.gif | Bin 0 -> 2174622 bytes vendor/github.com/yudai/gotty/server/asset.go | 379 +++ .../yudai/gotty/server/handler_atomic.go | 70 + .../github.com/yudai/gotty/server/handlers.go | 235 ++ .../yudai/gotty/server/init_message.go | 6 + .../yudai/gotty/server/list_address.go | 28 + .../yudai/gotty/server/log_response_writer.go | 23 + .../yudai/gotty/server/middleware.go | 51 + .../github.com/yudai/gotty/server/options.go | 99 + .../yudai/gotty/server/run_option.go | 21 + .../github.com/yudai/gotty/server/server.go | 246 ++ vendor/github.com/yudai/gotty/server/slave.go | 17 + .../yudai/gotty/server/ws_wrapper.go | 33 + .../github.com/yudai/gotty/utils/default.go | 41 + vendor/github.com/yudai/gotty/utils/flags.go | 124 + vendor/github.com/yudai/gotty/version.go | 4 + vendor/github.com/yudai/gotty/webtty/doc.go | 3 + .../github.com/yudai/gotty/webtty/errors.go | 13 + .../github.com/yudai/gotty/webtty/master.go | 8 + .../yudai/gotty/webtty/message_types.go | 31 + .../github.com/yudai/gotty/webtty/option.go | 62 + vendor/github.com/yudai/gotty/webtty/slave.go | 17 + .../github.com/yudai/gotty/webtty/webtty.go | 219 ++ .../yudai/gotty/webtty/webtty_test.go | 139 + vendor/github.com/yudai/gotty/wercker.yml | 32 + vendor/github.com/yudai/hcl/.gitignore | 1 + vendor/github.com/yudai/hcl/LICENSE | 354 +++ vendor/github.com/yudai/hcl/Makefile | 17 + vendor/github.com/yudai/hcl/README.md | 84 + vendor/github.com/yudai/hcl/decoder.go | 490 +++ vendor/github.com/yudai/hcl/decoder_test.go | 481 +++ vendor/github.com/yudai/hcl/hcl.go | 11 + vendor/github.com/yudai/hcl/hcl/hcl_test.go | 4 + vendor/github.com/yudai/hcl/hcl/lex.go | 447 +++ vendor/github.com/yudai/hcl/hcl/lex_test.go | 113 + vendor/github.com/yudai/hcl/hcl/object.go | 128 + vendor/github.com/yudai/hcl/hcl/parse.go | 39 + vendor/github.com/yudai/hcl/hcl/parse.y | 281 ++ vendor/github.com/yudai/hcl/hcl/parse_test.go | 83 + .../hcl/hcl/test-fixtures/array_comment.hcl | 4 + .../hcl/hcl/test-fixtures/assign_colon.hcl | 6 + .../hcl/hcl/test-fixtures/assign_deep.hcl | 5 + .../yudai/hcl/hcl/test-fixtures/comment.hcl | 15 + .../hcl/hcl/test-fixtures/comment_single.hcl | 1 + .../yudai/hcl/hcl/test-fixtures/complex.hcl | 42 + .../hcl/hcl/test-fixtures/complex_key.hcl | 1 + .../yudai/hcl/hcl/test-fixtures/empty.hcl | 0 .../yudai/hcl/hcl/test-fixtures/list.hcl | 1 + .../hcl/hcl/test-fixtures/list_comma.hcl | 1 + .../yudai/hcl/hcl/test-fixtures/multiple.hcl | 2 + .../yudai/hcl/hcl/test-fixtures/null.hcl | 5 + .../yudai/hcl/hcl/test-fixtures/old.hcl | 3 + .../yudai/hcl/hcl/test-fixtures/structure.hcl | 5 + .../hcl/hcl/test-fixtures/structure_basic.hcl | 5 + .../hcl/hcl/test-fixtures/structure_empty.hcl | 1 + .../yudai/hcl/hcl/test-fixtures/types.hcl | 8 + .../yudai/hcl/hcl/valuetype_string.go | 16 + vendor/github.com/yudai/hcl/hcl/y.go | 790 +++++ vendor/github.com/yudai/hcl/hcl_test.go | 19 + vendor/github.com/yudai/hcl/json/json_test.go | 4 + vendor/github.com/yudai/hcl/json/lex.go | 256 ++ vendor/github.com/yudai/hcl/json/lex_test.go | 78 + vendor/github.com/yudai/hcl/json/parse.go | 40 + vendor/github.com/yudai/hcl/json/parse.y | 210 ++ .../github.com/yudai/hcl/json/parse_test.go | 43 + .../yudai/hcl/json/test-fixtures/array.json | 4 + .../yudai/hcl/json/test-fixtures/basic.json | 3 + .../yudai/hcl/json/test-fixtures/object.json | 5 + .../yudai/hcl/json/test-fixtures/types.json | 10 + vendor/github.com/yudai/hcl/json/y.go | 699 +++++ vendor/github.com/yudai/hcl/lex.go | 31 + vendor/github.com/yudai/hcl/lex_test.go | 37 + vendor/github.com/yudai/hcl/parse.go | 22 + .../yudai/hcl/test-fixtures/basic.hcl | 2 + .../yudai/hcl/test-fixtures/basic.json | 4 + .../hcl/test-fixtures/basic_int_string.hcl | 1 + .../yudai/hcl/test-fixtures/basic_squish.hcl | 3 + .../yudai/hcl/test-fixtures/decode_policy.hcl | 15 + .../hcl/test-fixtures/decode_policy.json | 19 + .../hcl/test-fixtures/decode_tf_variable.hcl | 10 + .../hcl/test-fixtures/decode_tf_variable.json | 14 + .../yudai/hcl/test-fixtures/empty.hcl | 1 + .../yudai/hcl/test-fixtures/escape.hcl | 1 + .../yudai/hcl/test-fixtures/flat.hcl | 2 + .../yudai/hcl/test-fixtures/float.hcl | 1 + .../yudai/hcl/test-fixtures/float.json | 3 + .../yudai/hcl/test-fixtures/multiline.json | 3 + .../yudai/hcl/test-fixtures/multiline_bad.hcl | 4 + .../test-fixtures/nested_block_comment.hcl | 5 + .../yudai/hcl/test-fixtures/null.hcl | 1 + .../yudai/hcl/test-fixtures/scientific.hcl | 6 + .../yudai/hcl/test-fixtures/scientific.json | 8 + .../yudai/hcl/test-fixtures/structure.hcl | 5 + .../yudai/hcl/test-fixtures/structure.json | 8 + .../yudai/hcl/test-fixtures/structure2.hcl | 9 + .../yudai/hcl/test-fixtures/structure2.json | 10 + .../hcl/test-fixtures/structure_flat.json | 8 + .../hcl/test-fixtures/structure_flatmap.hcl | 7 + .../hcl/test-fixtures/structure_list.hcl | 6 + .../hcl/test-fixtures/structure_list.json | 7 + .../test-fixtures/structure_list_deep.json | 16 + .../hcl/test-fixtures/structure_multi.hcl | 7 + .../hcl/test-fixtures/structure_multi.json | 11 + .../hcl/test-fixtures/terraform_heroku.hcl | 5 + .../hcl/test-fixtures/terraform_heroku.json | 6 + .../unterminated_block_comment.hcl | 2 + vendor/gopkg.in/yaml.v2/.travis.yml | 9 + vendor/gopkg.in/yaml.v2/LICENSE | 201 ++ vendor/gopkg.in/yaml.v2/LICENSE.libyaml | 31 + vendor/gopkg.in/yaml.v2/README.md | 135 + vendor/gopkg.in/yaml.v2/apic.go | 742 +++++ vendor/gopkg.in/yaml.v2/decode.go | 685 +++++ vendor/gopkg.in/yaml.v2/decode_test.go | 1032 +++++++ vendor/gopkg.in/yaml.v2/emitterc.go | 1684 ++++++++++ vendor/gopkg.in/yaml.v2/encode.go | 306 ++ vendor/gopkg.in/yaml.v2/encode_test.go | 501 +++ .../gopkg.in/yaml.v2/example_embedded_test.go | 41 + vendor/gopkg.in/yaml.v2/parserc.go | 1095 +++++++ vendor/gopkg.in/yaml.v2/readerc.go | 394 +++ vendor/gopkg.in/yaml.v2/resolve.go | 208 ++ vendor/gopkg.in/yaml.v2/scannerc.go | 2711 +++++++++++++++++ vendor/gopkg.in/yaml.v2/sorter.go | 104 + vendor/gopkg.in/yaml.v2/suite_test.go | 12 + vendor/gopkg.in/yaml.v2/writerc.go | 89 + vendor/gopkg.in/yaml.v2/yaml.go | 357 +++ vendor/gopkg.in/yaml.v2/yamlh.go | 716 +++++ vendor/gopkg.in/yaml.v2/yamlprivateh.go | 173 ++ 239 files changed, 39290 insertions(+), 1 deletion(-) create mode 100644 vendor/github.com/codegangsta/cli/.flake8 create mode 100644 vendor/github.com/codegangsta/cli/.gitignore create mode 100644 vendor/github.com/codegangsta/cli/.travis.yml create mode 100644 vendor/github.com/codegangsta/cli/CHANGELOG.md create mode 100644 vendor/github.com/codegangsta/cli/LICENSE create mode 100644 vendor/github.com/codegangsta/cli/README.md create mode 100644 vendor/github.com/codegangsta/cli/altsrc/altsrc.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/flag.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/flag_generated.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/flag_test.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/helpers_test.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/input_source_context.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/map_input_source.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/toml_command_test.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/toml_file_loader.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/yaml_command_test.go create mode 100644 vendor/github.com/codegangsta/cli/altsrc/yaml_file_loader.go create mode 100644 vendor/github.com/codegangsta/cli/app.go create mode 100644 vendor/github.com/codegangsta/cli/app_test.go create mode 100644 vendor/github.com/codegangsta/cli/appveyor.yml create mode 100755 vendor/github.com/codegangsta/cli/autocomplete/bash_autocomplete create mode 100644 vendor/github.com/codegangsta/cli/autocomplete/zsh_autocomplete create mode 100644 vendor/github.com/codegangsta/cli/category.go create mode 100644 vendor/github.com/codegangsta/cli/cli.go create mode 100644 vendor/github.com/codegangsta/cli/command.go create mode 100644 vendor/github.com/codegangsta/cli/command_test.go create mode 100644 vendor/github.com/codegangsta/cli/context.go create mode 100644 vendor/github.com/codegangsta/cli/context_test.go create mode 100644 vendor/github.com/codegangsta/cli/errors.go create mode 100644 vendor/github.com/codegangsta/cli/errors_test.go create mode 100644 vendor/github.com/codegangsta/cli/flag-types.json create mode 100644 vendor/github.com/codegangsta/cli/flag.go create mode 100644 vendor/github.com/codegangsta/cli/flag_generated.go create mode 100644 vendor/github.com/codegangsta/cli/flag_test.go create mode 100644 vendor/github.com/codegangsta/cli/funcs.go create mode 100755 vendor/github.com/codegangsta/cli/generate-flag-types create mode 100644 vendor/github.com/codegangsta/cli/help.go create mode 100644 vendor/github.com/codegangsta/cli/help_test.go create mode 100644 vendor/github.com/codegangsta/cli/helpers_test.go create mode 100644 vendor/github.com/codegangsta/cli/helpers_unix_test.go create mode 100644 vendor/github.com/codegangsta/cli/helpers_windows_test.go create mode 100755 vendor/github.com/codegangsta/cli/runtests create mode 100644 vendor/github.com/fatih/structs/.gitignore create mode 100644 vendor/github.com/fatih/structs/.travis.yml create mode 100644 vendor/github.com/fatih/structs/LICENSE create mode 100644 vendor/github.com/fatih/structs/README.md create mode 100644 vendor/github.com/fatih/structs/field.go create mode 100644 vendor/github.com/fatih/structs/field_test.go create mode 100644 vendor/github.com/fatih/structs/structs.go create mode 100644 vendor/github.com/fatih/structs/structs_example_test.go create mode 100644 vendor/github.com/fatih/structs/structs_test.go create mode 100644 vendor/github.com/fatih/structs/tags.go create mode 100644 vendor/github.com/fatih/structs/tags_test.go create mode 100644 vendor/github.com/hashicorp/errwrap/LICENSE create mode 100644 vendor/github.com/hashicorp/errwrap/README.md create mode 100644 vendor/github.com/hashicorp/errwrap/errwrap.go create mode 100644 vendor/github.com/hashicorp/errwrap/errwrap_test.go create mode 100644 vendor/github.com/hashicorp/go-multierror/.travis.yml create mode 100644 vendor/github.com/hashicorp/go-multierror/LICENSE create mode 100644 vendor/github.com/hashicorp/go-multierror/Makefile create mode 100644 vendor/github.com/hashicorp/go-multierror/README.md create mode 100644 vendor/github.com/hashicorp/go-multierror/append.go create mode 100644 vendor/github.com/hashicorp/go-multierror/append_test.go create mode 100644 vendor/github.com/hashicorp/go-multierror/flatten.go create mode 100644 vendor/github.com/hashicorp/go-multierror/flatten_test.go create mode 100644 vendor/github.com/hashicorp/go-multierror/format.go create mode 100644 vendor/github.com/hashicorp/go-multierror/format_test.go create mode 100644 vendor/github.com/hashicorp/go-multierror/multierror.go create mode 100644 vendor/github.com/hashicorp/go-multierror/multierror_test.go create mode 100644 vendor/github.com/hashicorp/go-multierror/prefix.go create mode 100644 vendor/github.com/hashicorp/go-multierror/prefix_test.go create mode 100755 vendor/github.com/hashicorp/go-multierror/scripts/deps.sh create mode 100644 vendor/github.com/yudai/gotty/.github/ISSUE_TEMPLATE.md create mode 100644 vendor/github.com/yudai/gotty/.gitignore create mode 100644 vendor/github.com/yudai/gotty/.gotty create mode 100644 vendor/github.com/yudai/gotty/CONTRIBUTING.md create mode 100644 vendor/github.com/yudai/gotty/Godeps/Godeps.json create mode 100644 vendor/github.com/yudai/gotty/Godeps/Readme create mode 100644 vendor/github.com/yudai/gotty/LICENSE create mode 100644 vendor/github.com/yudai/gotty/Makefile create mode 100644 vendor/github.com/yudai/gotty/README.md create mode 100644 vendor/github.com/yudai/gotty/backend/doc.go create mode 100644 vendor/github.com/yudai/gotty/backend/localcommand/doc.go create mode 100644 vendor/github.com/yudai/gotty/backend/localcommand/factory.go create mode 100644 vendor/github.com/yudai/gotty/backend/localcommand/local_command.go create mode 100644 vendor/github.com/yudai/gotty/backend/localcommand/options.go create mode 100755 vendor/github.com/yudai/gotty/favicon.psd create mode 100644 vendor/github.com/yudai/gotty/help.go create mode 100644 vendor/github.com/yudai/gotty/js/dist/gotty-bundle.js create mode 100644 vendor/github.com/yudai/gotty/js/dist/hterm.d.ts create mode 100644 vendor/github.com/yudai/gotty/js/dist/main.d.ts create mode 100644 vendor/github.com/yudai/gotty/js/dist/websocket.d.ts create mode 100644 vendor/github.com/yudai/gotty/js/dist/webtty.d.ts create mode 100644 vendor/github.com/yudai/gotty/js/dist/xterm.d.ts create mode 100644 vendor/github.com/yudai/gotty/js/package-lock.json create mode 100644 vendor/github.com/yudai/gotty/js/package.json create mode 100644 vendor/github.com/yudai/gotty/js/src/hterm.ts create mode 100644 vendor/github.com/yudai/gotty/js/src/main.ts create mode 100644 vendor/github.com/yudai/gotty/js/src/websocket.ts create mode 100644 vendor/github.com/yudai/gotty/js/src/webtty.ts create mode 100644 vendor/github.com/yudai/gotty/js/src/xterm.ts create mode 100644 vendor/github.com/yudai/gotty/js/tsconfig.json create mode 100644 vendor/github.com/yudai/gotty/js/typings/libapps/index.d.ts create mode 100644 vendor/github.com/yudai/gotty/js/webpack.config.js create mode 100644 vendor/github.com/yudai/gotty/main.go create mode 100644 vendor/github.com/yudai/gotty/pkg/homedir/expand.go create mode 100644 vendor/github.com/yudai/gotty/pkg/randomstring/generate.go create mode 100644 vendor/github.com/yudai/gotty/resources/favicon.png create mode 100644 vendor/github.com/yudai/gotty/resources/index.css create mode 100644 vendor/github.com/yudai/gotty/resources/index.html create mode 100644 vendor/github.com/yudai/gotty/resources/xterm_customize.css create mode 100644 vendor/github.com/yudai/gotty/screenshot.gif create mode 100644 vendor/github.com/yudai/gotty/server/asset.go create mode 100644 vendor/github.com/yudai/gotty/server/handler_atomic.go create mode 100644 vendor/github.com/yudai/gotty/server/handlers.go create mode 100644 vendor/github.com/yudai/gotty/server/init_message.go create mode 100644 vendor/github.com/yudai/gotty/server/list_address.go create mode 100644 vendor/github.com/yudai/gotty/server/log_response_writer.go create mode 100644 vendor/github.com/yudai/gotty/server/middleware.go create mode 100644 vendor/github.com/yudai/gotty/server/options.go create mode 100644 vendor/github.com/yudai/gotty/server/run_option.go create mode 100644 vendor/github.com/yudai/gotty/server/server.go create mode 100644 vendor/github.com/yudai/gotty/server/slave.go create mode 100644 vendor/github.com/yudai/gotty/server/ws_wrapper.go create mode 100644 vendor/github.com/yudai/gotty/utils/default.go create mode 100644 vendor/github.com/yudai/gotty/utils/flags.go create mode 100644 vendor/github.com/yudai/gotty/version.go create mode 100644 vendor/github.com/yudai/gotty/webtty/doc.go create mode 100644 vendor/github.com/yudai/gotty/webtty/errors.go create mode 100644 vendor/github.com/yudai/gotty/webtty/master.go create mode 100644 vendor/github.com/yudai/gotty/webtty/message_types.go create mode 100644 vendor/github.com/yudai/gotty/webtty/option.go create mode 100644 vendor/github.com/yudai/gotty/webtty/slave.go create mode 100644 vendor/github.com/yudai/gotty/webtty/webtty.go create mode 100644 vendor/github.com/yudai/gotty/webtty/webtty_test.go create mode 100644 vendor/github.com/yudai/gotty/wercker.yml create mode 100644 vendor/github.com/yudai/hcl/.gitignore create mode 100644 vendor/github.com/yudai/hcl/LICENSE create mode 100644 vendor/github.com/yudai/hcl/Makefile create mode 100644 vendor/github.com/yudai/hcl/README.md create mode 100644 vendor/github.com/yudai/hcl/decoder.go create mode 100644 vendor/github.com/yudai/hcl/decoder_test.go create mode 100644 vendor/github.com/yudai/hcl/hcl.go create mode 100644 vendor/github.com/yudai/hcl/hcl/hcl_test.go create mode 100644 vendor/github.com/yudai/hcl/hcl/lex.go create mode 100644 vendor/github.com/yudai/hcl/hcl/lex_test.go create mode 100644 vendor/github.com/yudai/hcl/hcl/object.go create mode 100644 vendor/github.com/yudai/hcl/hcl/parse.go create mode 100644 vendor/github.com/yudai/hcl/hcl/parse.y create mode 100644 vendor/github.com/yudai/hcl/hcl/parse_test.go create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/array_comment.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_colon.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_deep.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/comment.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/comment_single.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/complex.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/complex_key.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/empty.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/list.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/list_comma.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/multiple.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/null.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/old.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/structure.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_basic.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_empty.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/test-fixtures/types.hcl create mode 100644 vendor/github.com/yudai/hcl/hcl/valuetype_string.go create mode 100644 vendor/github.com/yudai/hcl/hcl/y.go create mode 100644 vendor/github.com/yudai/hcl/hcl_test.go create mode 100644 vendor/github.com/yudai/hcl/json/json_test.go create mode 100644 vendor/github.com/yudai/hcl/json/lex.go create mode 100644 vendor/github.com/yudai/hcl/json/lex_test.go create mode 100644 vendor/github.com/yudai/hcl/json/parse.go create mode 100644 vendor/github.com/yudai/hcl/json/parse.y create mode 100644 vendor/github.com/yudai/hcl/json/parse_test.go create mode 100644 vendor/github.com/yudai/hcl/json/test-fixtures/array.json create mode 100644 vendor/github.com/yudai/hcl/json/test-fixtures/basic.json create mode 100644 vendor/github.com/yudai/hcl/json/test-fixtures/object.json create mode 100644 vendor/github.com/yudai/hcl/json/test-fixtures/types.json create mode 100644 vendor/github.com/yudai/hcl/json/y.go create mode 100644 vendor/github.com/yudai/hcl/lex.go create mode 100644 vendor/github.com/yudai/hcl/lex_test.go create mode 100644 vendor/github.com/yudai/hcl/parse.go create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/basic.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/basic.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/basic_int_string.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/basic_squish.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/decode_policy.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/decode_policy.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/empty.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/escape.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/flat.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/float.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/float.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/multiline.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/multiline_bad.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/nested_block_comment.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/null.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/scientific.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/scientific.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure2.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure2.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure_flat.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure_flatmap.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure_list.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure_list.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure_list_deep.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure_multi.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/structure_multi.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/terraform_heroku.hcl create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/terraform_heroku.json create mode 100644 vendor/github.com/yudai/hcl/test-fixtures/unterminated_block_comment.hcl create mode 100644 vendor/gopkg.in/yaml.v2/.travis.yml create mode 100644 vendor/gopkg.in/yaml.v2/LICENSE create mode 100644 vendor/gopkg.in/yaml.v2/LICENSE.libyaml create mode 100644 vendor/gopkg.in/yaml.v2/README.md create mode 100644 vendor/gopkg.in/yaml.v2/apic.go create mode 100644 vendor/gopkg.in/yaml.v2/decode.go create mode 100644 vendor/gopkg.in/yaml.v2/decode_test.go create mode 100644 vendor/gopkg.in/yaml.v2/emitterc.go create mode 100644 vendor/gopkg.in/yaml.v2/encode.go create mode 100644 vendor/gopkg.in/yaml.v2/encode_test.go create mode 100644 vendor/gopkg.in/yaml.v2/example_embedded_test.go create mode 100644 vendor/gopkg.in/yaml.v2/parserc.go create mode 100644 vendor/gopkg.in/yaml.v2/readerc.go create mode 100644 vendor/gopkg.in/yaml.v2/resolve.go create mode 100644 vendor/gopkg.in/yaml.v2/scannerc.go create mode 100644 vendor/gopkg.in/yaml.v2/sorter.go create mode 100644 vendor/gopkg.in/yaml.v2/suite_test.go create mode 100644 vendor/gopkg.in/yaml.v2/writerc.go create mode 100644 vendor/gopkg.in/yaml.v2/yaml.go create mode 100644 vendor/gopkg.in/yaml.v2/yamlh.go create mode 100644 vendor/gopkg.in/yaml.v2/yamlprivateh.go diff --git a/Gopkg.lock b/Gopkg.lock index 73a2d76..d7890af 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -1,12 +1,36 @@ # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. +[[projects]] + name = "github.com/codegangsta/cli" + packages = ["."] + revision = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1" + version = "v1.20.0" + [[projects]] branch = "master" name = "github.com/dustin/go-humanize" packages = ["."] revision = "6d15c0ae71e55ed645c21ac4945aaadbc0e9a590" +[[projects]] + name = "github.com/fatih/structs" + packages = ["."] + revision = "a720dfa8df582c51dee1b36feabb906bde1588bd" + version = "v1.0" + +[[projects]] + branch = "master" + name = "github.com/hashicorp/errwrap" + packages = ["."] + revision = "7554cd9344cec97297fa6649b055a8c98c2a1e55" + +[[projects]] + branch = "master" + name = "github.com/hashicorp/go-multierror" + packages = ["."] + revision = "b7773ae218740a7be65057fc60b366a49b538a44" + [[projects]] branch = "master" name = "github.com/mars9/crypt" @@ -43,6 +67,18 @@ revision = "f006c2ac4710855cf0f916dd6b77acf6b048dc6e" version = "v1.0.3" +[[projects]] + name = "github.com/yudai/gotty" + packages = ["pkg/homedir"] + revision = "a080c85cbc59226c94c6941ad8c395232d72d517" + version = "v2.0.0-alpha.3" + +[[projects]] + branch = "master" + name = "github.com/yudai/hcl" + packages = [".","hcl","json"] + revision = "5fa2393b3552119bf33a69adb1402a1160cba23d" + [[projects]] branch = "master" name = "golang.org/x/crypto" @@ -61,9 +97,15 @@ packages = ["transform"] revision = "88f656faf3f37f690df1a32515b479415e1a6769" +[[projects]] + branch = "v2" + name = "gopkg.in/yaml.v2" + packages = ["."] + revision = "d670f9405373e636a5a2765eea47fac0c9bc91a4" + [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "12bd97b8551ca41a157e3e1d8f42f1e0b1ee2e484b00d1eaec92e928e42f0244" + inputs-digest = "8ee0066f90aab988cd1553eedcde5f62c9d2a9d3c18d2a4ea0a57a85df4b2eab" solver-name = "gps-cdcl" solver-version = 1 diff --git a/vendor/github.com/codegangsta/cli/.flake8 b/vendor/github.com/codegangsta/cli/.flake8 new file mode 100644 index 0000000..6deafc2 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/.flake8 @@ -0,0 +1,2 @@ +[flake8] +max-line-length = 120 diff --git a/vendor/github.com/codegangsta/cli/.gitignore b/vendor/github.com/codegangsta/cli/.gitignore new file mode 100644 index 0000000..faf70c4 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/.gitignore @@ -0,0 +1,2 @@ +*.coverprofile +node_modules/ diff --git a/vendor/github.com/codegangsta/cli/.travis.yml b/vendor/github.com/codegangsta/cli/.travis.yml new file mode 100644 index 0000000..cf8d098 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/.travis.yml @@ -0,0 +1,27 @@ +language: go +sudo: false +dist: trusty +osx_image: xcode8.3 +go: 1.8.x + +os: +- linux +- osx + +cache: + directories: + - node_modules + +before_script: +- go get github.com/urfave/gfmrun/... || true +- go get golang.org/x/tools/cmd/goimports +- if [ ! -f node_modules/.bin/markdown-toc ] ; then + npm install markdown-toc ; + fi + +script: +- ./runtests gen +- ./runtests vet +- ./runtests test +- ./runtests gfmrun +- ./runtests toc diff --git a/vendor/github.com/codegangsta/cli/CHANGELOG.md b/vendor/github.com/codegangsta/cli/CHANGELOG.md new file mode 100644 index 0000000..401eae5 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/CHANGELOG.md @@ -0,0 +1,435 @@ +# Change Log + +**ATTN**: This project uses [semantic versioning](http://semver.org/). + +## [Unreleased] + +## 1.20.0 - 2017-08-10 + +### Fixed + +* `HandleExitCoder` is now correctly iterates over all errors in + a `MultiError`. The exit code is the exit code of the last error or `1` if + there are no `ExitCoder`s in the `MultiError`. +* Fixed YAML file loading on Windows (previously would fail validate the file path) +* Subcommand `Usage`, `Description`, `ArgsUsage`, `OnUsageError` correctly + propogated +* `ErrWriter` is now passed downwards through command structure to avoid the + need to redefine it +* Pass `Command` context into `OnUsageError` rather than parent context so that + all fields are avaiable +* Errors occuring in `Before` funcs are no longer double printed +* Use `UsageText` in the help templates for commands and subcommands if + defined; otherwise build the usage as before (was previously ignoring this + field) +* `IsSet` and `GlobalIsSet` now correctly return whether a flag is set if + a program calls `Set` or `GlobalSet` directly after flag parsing (would + previously only return `true` if the flag was set during parsing) + +### Changed + +* No longer exit the program on command/subcommand error if the error raised is + not an `OsExiter`. This exiting behavior was introduced in 1.19.0, but was + determined to be a regression in functionality. See [the + PR](https://github.com/urfave/cli/pull/595) for discussion. + +### Added + +* `CommandsByName` type was added to make it easy to sort `Command`s by name, + alphabetically +* `altsrc` now handles loading of string and int arrays from TOML +* Support for definition of custom help templates for `App` via + `CustomAppHelpTemplate` +* Support for arbitrary key/value fields on `App` to be used with + `CustomAppHelpTemplate` via `ExtraInfo` +* `HelpFlag`, `VersionFlag`, and `BashCompletionFlag` changed to explictly be + `cli.Flag`s allowing for the use of custom flags satisfying the `cli.Flag` + interface to be used. + + +## [1.19.1] - 2016-11-21 + +### Fixed + +- Fixes regression introduced in 1.19.0 where using an `ActionFunc` as + the `Action` for a command would cause it to error rather than calling the + function. Should not have a affected declarative cases using `func(c + *cli.Context) err)`. +- Shell completion now handles the case where the user specifies + `--generate-bash-completion` immediately after a flag that takes an argument. + Previously it call the application with `--generate-bash-completion` as the + flag value. + +## [1.19.0] - 2016-11-19 +### Added +- `FlagsByName` was added to make it easy to sort flags (e.g. `sort.Sort(cli.FlagsByName(app.Flags))`) +- A `Description` field was added to `App` for a more detailed description of + the application (similar to the existing `Description` field on `Command`) +- Flag type code generation via `go generate` +- Write to stderr and exit 1 if action returns non-nil error +- Added support for TOML to the `altsrc` loader +- `SkipArgReorder` was added to allow users to skip the argument reordering. + This is useful if you want to consider all "flags" after an argument as + arguments rather than flags (the default behavior of the stdlib `flag` + library). This is backported functionality from the [removal of the flag + reordering](https://github.com/urfave/cli/pull/398) in the unreleased version + 2 +- For formatted errors (those implementing `ErrorFormatter`), the errors will + be formatted during output. Compatible with `pkg/errors`. + +### Changed +- Raise minimum tested/supported Go version to 1.2+ + +### Fixed +- Consider empty environment variables as set (previously environment variables + with the equivalent of `""` would be skipped rather than their value used). +- Return an error if the value in a given environment variable cannot be parsed + as the flag type. Previously these errors were silently swallowed. +- Print full error when an invalid flag is specified (which includes the invalid flag) +- `App.Writer` defaults to `stdout` when `nil` +- If no action is specified on a command or app, the help is now printed instead of `panic`ing +- `App.Metadata` is initialized automatically now (previously was `nil` unless initialized) +- Correctly show help message if `-h` is provided to a subcommand +- `context.(Global)IsSet` now respects environment variables. Previously it + would return `false` if a flag was specified in the environment rather than + as an argument +- Removed deprecation warnings to STDERR to avoid them leaking to the end-user +- `altsrc`s import paths were updated to use `gopkg.in/urfave/cli.v1`. This + fixes issues that occurred when `gopkg.in/urfave/cli.v1` was imported as well + as `altsrc` where Go would complain that the types didn't match + +## [1.18.1] - 2016-08-28 +### Fixed +- Removed deprecation warnings to STDERR to avoid them leaking to the end-user (backported) + +## [1.18.0] - 2016-06-27 +### Added +- `./runtests` test runner with coverage tracking by default +- testing on OS X +- testing on Windows +- `UintFlag`, `Uint64Flag`, and `Int64Flag` types and supporting code + +### Changed +- Use spaces for alignment in help/usage output instead of tabs, making the + output alignment consistent regardless of tab width + +### Fixed +- Printing of command aliases in help text +- Printing of visible flags for both struct and struct pointer flags +- Display the `help` subcommand when using `CommandCategories` +- No longer swallows `panic`s that occur within the `Action`s themselves when + detecting the signature of the `Action` field + +## [1.17.1] - 2016-08-28 +### Fixed +- Removed deprecation warnings to STDERR to avoid them leaking to the end-user + +## [1.17.0] - 2016-05-09 +### Added +- Pluggable flag-level help text rendering via `cli.DefaultFlagStringFunc` +- `context.GlobalBoolT` was added as an analogue to `context.GlobalBool` +- Support for hiding commands by setting `Hidden: true` -- this will hide the + commands in help output + +### Changed +- `Float64Flag`, `IntFlag`, and `DurationFlag` default values are no longer + quoted in help text output. +- All flag types now include `(default: {value})` strings following usage when a + default value can be (reasonably) detected. +- `IntSliceFlag` and `StringSliceFlag` usage strings are now more consistent + with non-slice flag types +- Apps now exit with a code of 3 if an unknown subcommand is specified + (previously they printed "No help topic for...", but still exited 0. This + makes it easier to script around apps built using `cli` since they can trust + that a 0 exit code indicated a successful execution. +- cleanups based on [Go Report Card + feedback](https://goreportcard.com/report/github.com/urfave/cli) + +## [1.16.1] - 2016-08-28 +### Fixed +- Removed deprecation warnings to STDERR to avoid them leaking to the end-user + +## [1.16.0] - 2016-05-02 +### Added +- `Hidden` field on all flag struct types to omit from generated help text + +### Changed +- `BashCompletionFlag` (`--enable-bash-completion`) is now omitted from +generated help text via the `Hidden` field + +### Fixed +- handling of error values in `HandleAction` and `HandleExitCoder` + +## [1.15.0] - 2016-04-30 +### Added +- This file! +- Support for placeholders in flag usage strings +- `App.Metadata` map for arbitrary data/state management +- `Set` and `GlobalSet` methods on `*cli.Context` for altering values after +parsing. +- Support for nested lookup of dot-delimited keys in structures loaded from +YAML. + +### Changed +- The `App.Action` and `Command.Action` now prefer a return signature of +`func(*cli.Context) error`, as defined by `cli.ActionFunc`. If a non-nil +`error` is returned, there may be two outcomes: + - If the error fulfills `cli.ExitCoder`, then `os.Exit` will be called + automatically + - Else the error is bubbled up and returned from `App.Run` +- Specifying an `Action` with the legacy return signature of +`func(*cli.Context)` will produce a deprecation message to stderr +- Specifying an `Action` that is not a `func` type will produce a non-zero exit +from `App.Run` +- Specifying an `Action` func that has an invalid (input) signature will +produce a non-zero exit from `App.Run` + +### Deprecated +- +`cli.App.RunAndExitOnError`, which should now be done by returning an error +that fulfills `cli.ExitCoder` to `cli.App.Run`. +- the legacy signature for +`cli.App.Action` of `func(*cli.Context)`, which should now have a return +signature of `func(*cli.Context) error`, as defined by `cli.ActionFunc`. + +### Fixed +- Added missing `*cli.Context.GlobalFloat64` method + +## [1.14.0] - 2016-04-03 (backfilled 2016-04-25) +### Added +- Codebeat badge +- Support for categorization via `CategorizedHelp` and `Categories` on app. + +### Changed +- Use `filepath.Base` instead of `path.Base` in `Name` and `HelpName`. + +### Fixed +- Ensure version is not shown in help text when `HideVersion` set. + +## [1.13.0] - 2016-03-06 (backfilled 2016-04-25) +### Added +- YAML file input support. +- `NArg` method on context. + +## [1.12.0] - 2016-02-17 (backfilled 2016-04-25) +### Added +- Custom usage error handling. +- Custom text support in `USAGE` section of help output. +- Improved help messages for empty strings. +- AppVeyor CI configuration. + +### Changed +- Removed `panic` from default help printer func. +- De-duping and optimizations. + +### Fixed +- Correctly handle `Before`/`After` at command level when no subcommands. +- Case of literal `-` argument causing flag reordering. +- Environment variable hints on Windows. +- Docs updates. + +## [1.11.1] - 2015-12-21 (backfilled 2016-04-25) +### Changed +- Use `path.Base` in `Name` and `HelpName` +- Export `GetName` on flag types. + +### Fixed +- Flag parsing when skipping is enabled. +- Test output cleanup. +- Move completion check to account for empty input case. + +## [1.11.0] - 2015-11-15 (backfilled 2016-04-25) +### Added +- Destination scan support for flags. +- Testing against `tip` in Travis CI config. + +### Changed +- Go version in Travis CI config. + +### Fixed +- Removed redundant tests. +- Use correct example naming in tests. + +## [1.10.2] - 2015-10-29 (backfilled 2016-04-25) +### Fixed +- Remove unused var in bash completion. + +## [1.10.1] - 2015-10-21 (backfilled 2016-04-25) +### Added +- Coverage and reference logos in README. + +### Fixed +- Use specified values in help and version parsing. +- Only display app version and help message once. + +## [1.10.0] - 2015-10-06 (backfilled 2016-04-25) +### Added +- More tests for existing functionality. +- `ArgsUsage` at app and command level for help text flexibility. + +### Fixed +- Honor `HideHelp` and `HideVersion` in `App.Run`. +- Remove juvenile word from README. + +## [1.9.0] - 2015-09-08 (backfilled 2016-04-25) +### Added +- `FullName` on command with accompanying help output update. +- Set default `$PROG` in bash completion. + +### Changed +- Docs formatting. + +### Fixed +- Removed self-referential imports in tests. + +## [1.8.0] - 2015-06-30 (backfilled 2016-04-25) +### Added +- Support for `Copyright` at app level. +- `Parent` func at context level to walk up context lineage. + +### Fixed +- Global flag processing at top level. + +## [1.7.1] - 2015-06-11 (backfilled 2016-04-25) +### Added +- Aggregate errors from `Before`/`After` funcs. +- Doc comments on flag structs. +- Include non-global flags when checking version and help. +- Travis CI config updates. + +### Fixed +- Ensure slice type flags have non-nil values. +- Collect global flags from the full command hierarchy. +- Docs prose. + +## [1.7.0] - 2015-05-03 (backfilled 2016-04-25) +### Changed +- `HelpPrinter` signature includes output writer. + +### Fixed +- Specify go 1.1+ in docs. +- Set `Writer` when running command as app. + +## [1.6.0] - 2015-03-23 (backfilled 2016-04-25) +### Added +- Multiple author support. +- `NumFlags` at context level. +- `Aliases` at command level. + +### Deprecated +- `ShortName` at command level. + +### Fixed +- Subcommand help output. +- Backward compatible support for deprecated `Author` and `Email` fields. +- Docs regarding `Names`/`Aliases`. + +## [1.5.0] - 2015-02-20 (backfilled 2016-04-25) +### Added +- `After` hook func support at app and command level. + +### Fixed +- Use parsed context when running command as subcommand. +- Docs prose. + +## [1.4.1] - 2015-01-09 (backfilled 2016-04-25) +### Added +- Support for hiding `-h / --help` flags, but not `help` subcommand. +- Stop flag parsing after `--`. + +### Fixed +- Help text for generic flags to specify single value. +- Use double quotes in output for defaults. +- Use `ParseInt` instead of `ParseUint` for int environment var values. +- Use `0` as base when parsing int environment var values. + +## [1.4.0] - 2014-12-12 (backfilled 2016-04-25) +### Added +- Support for environment variable lookup "cascade". +- Support for `Stdout` on app for output redirection. + +### Fixed +- Print command help instead of app help in `ShowCommandHelp`. + +## [1.3.1] - 2014-11-13 (backfilled 2016-04-25) +### Added +- Docs and example code updates. + +### Changed +- Default `-v / --version` flag made optional. + +## [1.3.0] - 2014-08-10 (backfilled 2016-04-25) +### Added +- `FlagNames` at context level. +- Exposed `VersionPrinter` var for more control over version output. +- Zsh completion hook. +- `AUTHOR` section in default app help template. +- Contribution guidelines. +- `DurationFlag` type. + +## [1.2.0] - 2014-08-02 +### Added +- Support for environment variable defaults on flags plus tests. + +## [1.1.0] - 2014-07-15 +### Added +- Bash completion. +- Optional hiding of built-in help command. +- Optional skipping of flag parsing at command level. +- `Author`, `Email`, and `Compiled` metadata on app. +- `Before` hook func support at app and command level. +- `CommandNotFound` func support at app level. +- Command reference available on context. +- `GenericFlag` type. +- `Float64Flag` type. +- `BoolTFlag` type. +- `IsSet` flag helper on context. +- More flag lookup funcs at context level. +- More tests & docs. + +### Changed +- Help template updates to account for presence/absence of flags. +- Separated subcommand help template. +- Exposed `HelpPrinter` var for more control over help output. + +## [1.0.0] - 2013-11-01 +### Added +- `help` flag in default app flag set and each command flag set. +- Custom handling of argument parsing errors. +- Command lookup by name at app level. +- `StringSliceFlag` type and supporting `StringSlice` type. +- `IntSliceFlag` type and supporting `IntSlice` type. +- Slice type flag lookups by name at context level. +- Export of app and command help functions. +- More tests & docs. + +## 0.1.0 - 2013-07-22 +### Added +- Initial implementation. + +[Unreleased]: https://github.com/urfave/cli/compare/v1.18.0...HEAD +[1.18.0]: https://github.com/urfave/cli/compare/v1.17.0...v1.18.0 +[1.17.0]: https://github.com/urfave/cli/compare/v1.16.0...v1.17.0 +[1.16.0]: https://github.com/urfave/cli/compare/v1.15.0...v1.16.0 +[1.15.0]: https://github.com/urfave/cli/compare/v1.14.0...v1.15.0 +[1.14.0]: https://github.com/urfave/cli/compare/v1.13.0...v1.14.0 +[1.13.0]: https://github.com/urfave/cli/compare/v1.12.0...v1.13.0 +[1.12.0]: https://github.com/urfave/cli/compare/v1.11.1...v1.12.0 +[1.11.1]: https://github.com/urfave/cli/compare/v1.11.0...v1.11.1 +[1.11.0]: https://github.com/urfave/cli/compare/v1.10.2...v1.11.0 +[1.10.2]: https://github.com/urfave/cli/compare/v1.10.1...v1.10.2 +[1.10.1]: https://github.com/urfave/cli/compare/v1.10.0...v1.10.1 +[1.10.0]: https://github.com/urfave/cli/compare/v1.9.0...v1.10.0 +[1.9.0]: https://github.com/urfave/cli/compare/v1.8.0...v1.9.0 +[1.8.0]: https://github.com/urfave/cli/compare/v1.7.1...v1.8.0 +[1.7.1]: https://github.com/urfave/cli/compare/v1.7.0...v1.7.1 +[1.7.0]: https://github.com/urfave/cli/compare/v1.6.0...v1.7.0 +[1.6.0]: https://github.com/urfave/cli/compare/v1.5.0...v1.6.0 +[1.5.0]: https://github.com/urfave/cli/compare/v1.4.1...v1.5.0 +[1.4.1]: https://github.com/urfave/cli/compare/v1.4.0...v1.4.1 +[1.4.0]: https://github.com/urfave/cli/compare/v1.3.1...v1.4.0 +[1.3.1]: https://github.com/urfave/cli/compare/v1.3.0...v1.3.1 +[1.3.0]: https://github.com/urfave/cli/compare/v1.2.0...v1.3.0 +[1.2.0]: https://github.com/urfave/cli/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/urfave/cli/compare/v1.0.0...v1.1.0 +[1.0.0]: https://github.com/urfave/cli/compare/v0.1.0...v1.0.0 diff --git a/vendor/github.com/codegangsta/cli/LICENSE b/vendor/github.com/codegangsta/cli/LICENSE new file mode 100644 index 0000000..42a597e --- /dev/null +++ b/vendor/github.com/codegangsta/cli/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Jeremy Saenz & Contributors + +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. diff --git a/vendor/github.com/codegangsta/cli/README.md b/vendor/github.com/codegangsta/cli/README.md new file mode 100644 index 0000000..2bbbd8e --- /dev/null +++ b/vendor/github.com/codegangsta/cli/README.md @@ -0,0 +1,1381 @@ +cli +=== + +[![Build Status](https://travis-ci.org/urfave/cli.svg?branch=master)](https://travis-ci.org/urfave/cli) +[![Windows Build Status](https://ci.appveyor.com/api/projects/status/rtgk5xufi932pb2v?svg=true)](https://ci.appveyor.com/project/urfave/cli) +[![GoDoc](https://godoc.org/github.com/urfave/cli?status.svg)](https://godoc.org/github.com/urfave/cli) +[![codebeat](https://codebeat.co/badges/0a8f30aa-f975-404b-b878-5fab3ae1cc5f)](https://codebeat.co/projects/github-com-urfave-cli) +[![Go Report Card](https://goreportcard.com/badge/urfave/cli)](https://goreportcard.com/report/urfave/cli) +[![top level coverage](https://gocover.io/_badge/github.com/urfave/cli?0 "top level coverage")](http://gocover.io/github.com/urfave/cli) / +[![altsrc coverage](https://gocover.io/_badge/github.com/urfave/cli/altsrc?0 "altsrc coverage")](http://gocover.io/github.com/urfave/cli/altsrc) + +**Notice:** This is the library formerly known as +`github.com/codegangsta/cli` -- Github will automatically redirect requests +to this repository, but we recommend updating your references for clarity. + +cli is a simple, fast, and fun package for building command line apps in Go. The +goal is to enable developers to write fast and distributable command line +applications in an expressive way. + + + +- [Overview](#overview) +- [Installation](#installation) + * [Supported platforms](#supported-platforms) + * [Using the `v2` branch](#using-the-v2-branch) + * [Pinning to the `v1` releases](#pinning-to-the-v1-releases) +- [Getting Started](#getting-started) +- [Examples](#examples) + * [Arguments](#arguments) + * [Flags](#flags) + + [Placeholder Values](#placeholder-values) + + [Alternate Names](#alternate-names) + + [Ordering](#ordering) + + [Values from the Environment](#values-from-the-environment) + + [Values from alternate input sources (YAML, TOML, and others)](#values-from-alternate-input-sources-yaml-toml-and-others) + * [Subcommands](#subcommands) + * [Subcommands categories](#subcommands-categories) + * [Exit code](#exit-code) + * [Bash Completion](#bash-completion) + + [Enabling](#enabling) + + [Distribution](#distribution) + + [Customization](#customization) + * [Generated Help Text](#generated-help-text) + + [Customization](#customization-1) + * [Version Flag](#version-flag) + + [Customization](#customization-2) + + [Full API Example](#full-api-example) +- [Contribution Guidelines](#contribution-guidelines) + + + +## Overview + +Command line apps are usually so tiny that there is absolutely no reason why +your code should *not* be self-documenting. Things like generating help text and +parsing command flags/options should not hinder productivity when writing a +command line app. + +**This is where cli comes into play.** cli makes command line programming fun, +organized, and expressive! + +## Installation + +Make sure you have a working Go environment. Go version 1.2+ is supported. [See +the install instructions for Go](http://golang.org/doc/install.html). + +To install cli, simply run: +``` +$ go get github.com/urfave/cli +``` + +Make sure your `PATH` includes the `$GOPATH/bin` directory so your commands can +be easily used: +``` +export PATH=$PATH:$GOPATH/bin +``` + +### Supported platforms + +cli is tested against multiple versions of Go on Linux, and against the latest +released version of Go on OS X and Windows. For full details, see +[`./.travis.yml`](./.travis.yml) and [`./appveyor.yml`](./appveyor.yml). + +### Using the `v2` branch + +**Warning**: The `v2` branch is currently unreleased and considered unstable. + +There is currently a long-lived branch named `v2` that is intended to land as +the new `master` branch once development there has settled down. The current +`master` branch (mirrored as `v1`) is being manually merged into `v2` on +an irregular human-based schedule, but generally if one wants to "upgrade" to +`v2` *now* and accept the volatility (read: "awesomeness") that comes along with +that, please use whatever version pinning of your preference, such as via +`gopkg.in`: + +``` +$ go get gopkg.in/urfave/cli.v2 +``` + +``` go +... +import ( + "gopkg.in/urfave/cli.v2" // imports as package "cli" +) +... +``` + +### Pinning to the `v1` releases + +Similarly to the section above describing use of the `v2` branch, if one wants +to avoid any unexpected compatibility pains once `v2` becomes `master`, then +pinning to `v1` is an acceptable option, e.g.: + +``` +$ go get gopkg.in/urfave/cli.v1 +``` + +``` go +... +import ( + "gopkg.in/urfave/cli.v1" // imports as package "cli" +) +... +``` + +This will pull the latest tagged `v1` release (e.g. `v1.18.1` at the time of writing). + +## Getting Started + +One of the philosophies behind cli is that an API should be playful and full of +discovery. So a cli app can be as little as one line of code in `main()`. + + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + cli.NewApp().Run(os.Args) +} +``` + +This app will run and show help text, but is not very useful. Let's give an +action to execute and some help documentation: + + +``` go +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + app.Name = "boom" + app.Usage = "make an explosive entrance" + app.Action = func(c *cli.Context) error { + fmt.Println("boom! I say!") + return nil + } + + app.Run(os.Args) +} +``` + +Running this already gives you a ton of functionality, plus support for things +like subcommands and flags, which are covered below. + +## Examples + +Being a programmer can be a lonely job. Thankfully by the power of automation +that is not the case! Let's create a greeter app to fend off our demons of +loneliness! + +Start by creating a directory named `greet`, and within it, add a file, +`greet.go` with the following code in it: + + +``` go +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + app.Name = "greet" + app.Usage = "fight the loneliness!" + app.Action = func(c *cli.Context) error { + fmt.Println("Hello friend!") + return nil + } + + app.Run(os.Args) +} +``` + +Install our command to the `$GOPATH/bin` directory: + +``` +$ go install +``` + +Finally run our new command: + +``` +$ greet +Hello friend! +``` + +cli also generates neat help text: + +``` +$ greet help +NAME: + greet - fight the loneliness! + +USAGE: + greet [global options] command [command options] [arguments...] + +VERSION: + 0.0.0 + +COMMANDS: + help, h Shows a list of commands or help for one command + +GLOBAL OPTIONS + --version Shows version information +``` + +### Arguments + +You can lookup arguments by calling the `Args` function on `cli.Context`, e.g.: + + +``` go +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Action = func(c *cli.Context) error { + fmt.Printf("Hello %q", c.Args().Get(0)) + return nil + } + + app.Run(os.Args) +} +``` + +### Flags + +Setting and querying flags is simple. + + +``` go +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Flags = []cli.Flag { + cli.StringFlag{ + Name: "lang", + Value: "english", + Usage: "language for the greeting", + }, + } + + app.Action = func(c *cli.Context) error { + name := "Nefertiti" + if c.NArg() > 0 { + name = c.Args().Get(0) + } + if c.String("lang") == "spanish" { + fmt.Println("Hola", name) + } else { + fmt.Println("Hello", name) + } + return nil + } + + app.Run(os.Args) +} +``` + +You can also set a destination variable for a flag, to which the content will be +scanned. + + +``` go +package main + +import ( + "os" + "fmt" + + "github.com/urfave/cli" +) + +func main() { + var language string + + app := cli.NewApp() + + app.Flags = []cli.Flag { + cli.StringFlag{ + Name: "lang", + Value: "english", + Usage: "language for the greeting", + Destination: &language, + }, + } + + app.Action = func(c *cli.Context) error { + name := "someone" + if c.NArg() > 0 { + name = c.Args()[0] + } + if language == "spanish" { + fmt.Println("Hola", name) + } else { + fmt.Println("Hello", name) + } + return nil + } + + app.Run(os.Args) +} +``` + +See full list of flags at http://godoc.org/github.com/urfave/cli + +#### Placeholder Values + +Sometimes it's useful to specify a flag's value within the usage string itself. +Such placeholders are indicated with back quotes. + +For example this: + + +```go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Flags = []cli.Flag{ + cli.StringFlag{ + Name: "config, c", + Usage: "Load configuration from `FILE`", + }, + } + + app.Run(os.Args) +} +``` + +Will result in help output like: + +``` +--config FILE, -c FILE Load configuration from FILE +``` + +Note that only the first placeholder is used. Subsequent back-quoted words will +be left as-is. + +#### Alternate Names + +You can set alternate (or short) names for flags by providing a comma-delimited +list for the `Name`. e.g. + + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Flags = []cli.Flag { + cli.StringFlag{ + Name: "lang, l", + Value: "english", + Usage: "language for the greeting", + }, + } + + app.Run(os.Args) +} +``` + +That flag can then be set with `--lang spanish` or `-l spanish`. Note that +giving two different forms of the same flag in the same command invocation is an +error. + +#### Ordering + +Flags for the application and commands are shown in the order they are defined. +However, it's possible to sort them from outside this library by using `FlagsByName` +or `CommandsByName` with `sort`. + +For example this: + + +``` go +package main + +import ( + "os" + "sort" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Flags = []cli.Flag { + cli.StringFlag{ + Name: "lang, l", + Value: "english", + Usage: "Language for the greeting", + }, + cli.StringFlag{ + Name: "config, c", + Usage: "Load configuration from `FILE`", + }, + } + + app.Commands = []cli.Command{ + { + Name: "complete", + Aliases: []string{"c"}, + Usage: "complete a task on the list", + Action: func(c *cli.Context) error { + return nil + }, + }, + { + Name: "add", + Aliases: []string{"a"}, + Usage: "add a task to the list", + Action: func(c *cli.Context) error { + return nil + }, + }, + } + + sort.Sort(cli.FlagsByName(app.Flags)) + sort.Sort(cli.CommandsByName(app.Commands)) + + app.Run(os.Args) +} +``` + +Will result in help output like: + +``` +--config FILE, -c FILE Load configuration from FILE +--lang value, -l value Language for the greeting (default: "english") +``` + +#### Values from the Environment + +You can also have the default value set from the environment via `EnvVar`. e.g. + + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Flags = []cli.Flag { + cli.StringFlag{ + Name: "lang, l", + Value: "english", + Usage: "language for the greeting", + EnvVar: "APP_LANG", + }, + } + + app.Run(os.Args) +} +``` + +The `EnvVar` may also be given as a comma-delimited "cascade", where the first +environment variable that resolves is used as the default. + + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Flags = []cli.Flag { + cli.StringFlag{ + Name: "lang, l", + Value: "english", + Usage: "language for the greeting", + EnvVar: "LEGACY_COMPAT_LANG,APP_LANG,LANG", + }, + } + + app.Run(os.Args) +} +``` + +#### Values from alternate input sources (YAML, TOML, and others) + +There is a separate package altsrc that adds support for getting flag values +from other file input sources. + +Currently supported input source formats: +* YAML +* TOML + +In order to get values for a flag from an alternate input source the following +code would be added to wrap an existing cli.Flag like below: + +``` go + altsrc.NewIntFlag(cli.IntFlag{Name: "test"}) +``` + +Initialization must also occur for these flags. Below is an example initializing +getting data from a yaml file below. + +``` go + command.Before = altsrc.InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) +``` + +The code above will use the "load" string as a flag name to get the file name of +a yaml file from the cli.Context. It will then use that file name to initialize +the yaml input source for any flags that are defined on that command. As a note +the "load" flag used would also have to be defined on the command flags in order +for this code snipped to work. + +Currently only the aboved specified formats are supported but developers can +add support for other input sources by implementing the +altsrc.InputSourceContext for their given sources. + +Here is a more complete sample of a command using YAML support: + + +``` go +package notmain + +import ( + "fmt" + "os" + + "github.com/urfave/cli" + "github.com/urfave/cli/altsrc" +) + +func main() { + app := cli.NewApp() + + flags := []cli.Flag{ + altsrc.NewIntFlag(cli.IntFlag{Name: "test"}), + cli.StringFlag{Name: "load"}, + } + + app.Action = func(c *cli.Context) error { + fmt.Println("yaml ist rad") + return nil + } + + app.Before = altsrc.InitInputSourceWithContext(flags, altsrc.NewYamlSourceFromFlagFunc("load")) + app.Flags = flags + + app.Run(os.Args) +} +``` + +### Subcommands + +Subcommands can be defined for a more git-like command line app. + + +```go +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Commands = []cli.Command{ + { + Name: "add", + Aliases: []string{"a"}, + Usage: "add a task to the list", + Action: func(c *cli.Context) error { + fmt.Println("added task: ", c.Args().First()) + return nil + }, + }, + { + Name: "complete", + Aliases: []string{"c"}, + Usage: "complete a task on the list", + Action: func(c *cli.Context) error { + fmt.Println("completed task: ", c.Args().First()) + return nil + }, + }, + { + Name: "template", + Aliases: []string{"t"}, + Usage: "options for task templates", + Subcommands: []cli.Command{ + { + Name: "add", + Usage: "add a new template", + Action: func(c *cli.Context) error { + fmt.Println("new task template: ", c.Args().First()) + return nil + }, + }, + { + Name: "remove", + Usage: "remove an existing template", + Action: func(c *cli.Context) error { + fmt.Println("removed task template: ", c.Args().First()) + return nil + }, + }, + }, + }, + } + + app.Run(os.Args) +} +``` + +### Subcommands categories + +For additional organization in apps that have many subcommands, you can +associate a category for each command to group them together in the help +output. + +E.g. + +```go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + + app.Commands = []cli.Command{ + { + Name: "noop", + }, + { + Name: "add", + Category: "template", + }, + { + Name: "remove", + Category: "template", + }, + } + + app.Run(os.Args) +} +``` + +Will include: + +``` +COMMANDS: + noop + + Template actions: + add + remove +``` + +### Exit code + +Calling `App.Run` will not automatically call `os.Exit`, which means that by +default the exit code will "fall through" to being `0`. An explicit exit code +may be set by returning a non-nil error that fulfills `cli.ExitCoder`, *or* a +`cli.MultiError` that includes an error that fulfills `cli.ExitCoder`, e.g.: + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + app := cli.NewApp() + app.Flags = []cli.Flag{ + cli.BoolTFlag{ + Name: "ginger-crouton", + Usage: "is it in the soup?", + }, + } + app.Action = func(ctx *cli.Context) error { + if !ctx.Bool("ginger-crouton") { + return cli.NewExitError("it is not in the soup", 86) + } + return nil + } + + app.Run(os.Args) +} +``` + +### Bash Completion + +You can enable completion commands by setting the `EnableBashCompletion` +flag on the `App` object. By default, this setting will only auto-complete to +show an app's subcommands, but you can write your own completion methods for +the App or its subcommands. + + +``` go +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli" +) + +func main() { + tasks := []string{"cook", "clean", "laundry", "eat", "sleep", "code"} + + app := cli.NewApp() + app.EnableBashCompletion = true + app.Commands = []cli.Command{ + { + Name: "complete", + Aliases: []string{"c"}, + Usage: "complete a task on the list", + Action: func(c *cli.Context) error { + fmt.Println("completed task: ", c.Args().First()) + return nil + }, + BashComplete: func(c *cli.Context) { + // This will complete if no args are passed + if c.NArg() > 0 { + return + } + for _, t := range tasks { + fmt.Println(t) + } + }, + }, + } + + app.Run(os.Args) +} +``` + +#### Enabling + +Source the `autocomplete/bash_autocomplete` file in your `.bashrc` file while +setting the `PROG` variable to the name of your program: + +`PROG=myprogram source /.../cli/autocomplete/bash_autocomplete` + +#### Distribution + +Copy `autocomplete/bash_autocomplete` into `/etc/bash_completion.d/` and rename +it to the name of the program you wish to add autocomplete support for (or +automatically install it there if you are distributing a package). Don't forget +to source the file to make it active in the current shell. + +``` +sudo cp src/bash_autocomplete /etc/bash_completion.d/ +source /etc/bash_completion.d/ +``` + +Alternatively, you can just document that users should source the generic +`autocomplete/bash_autocomplete` in their bash configuration with `$PROG` set +to the name of their program (as above). + +#### Customization + +The default bash completion flag (`--generate-bash-completion`) is defined as +`cli.BashCompletionFlag`, and may be redefined if desired, e.g.: + + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + cli.BashCompletionFlag = cli.BoolFlag{ + Name: "compgen", + Hidden: true, + } + + app := cli.NewApp() + app.EnableBashCompletion = true + app.Commands = []cli.Command{ + { + Name: "wat", + }, + } + app.Run(os.Args) +} +``` + +### Generated Help Text + +The default help flag (`-h/--help`) is defined as `cli.HelpFlag` and is checked +by the cli internals in order to print generated help text for the app, command, +or subcommand, and break execution. + +#### Customization + +All of the help text generation may be customized, and at multiple levels. The +templates are exposed as variables `AppHelpTemplate`, `CommandHelpTemplate`, and +`SubcommandHelpTemplate` which may be reassigned or augmented, and full override +is possible by assigning a compatible func to the `cli.HelpPrinter` variable, +e.g.: + + +``` go +package main + +import ( + "fmt" + "io" + "os" + + "github.com/urfave/cli" +) + +func main() { + // EXAMPLE: Append to an existing template + cli.AppHelpTemplate = fmt.Sprintf(`%s + +WEBSITE: http://awesometown.example.com + +SUPPORT: support@awesometown.example.com + +`, cli.AppHelpTemplate) + + // EXAMPLE: Override a template + cli.AppHelpTemplate = `NAME: + {{.Name}} - {{.Usage}} +USAGE: + {{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}} + {{if len .Authors}} +AUTHOR: + {{range .Authors}}{{ . }}{{end}} + {{end}}{{if .Commands}} +COMMANDS: +{{range .Commands}}{{if not .HideHelp}} {{join .Names ", "}}{{ "\t"}}{{.Usage}}{{ "\n" }}{{end}}{{end}}{{end}}{{if .VisibleFlags}} +GLOBAL OPTIONS: + {{range .VisibleFlags}}{{.}} + {{end}}{{end}}{{if .Copyright }} +COPYRIGHT: + {{.Copyright}} + {{end}}{{if .Version}} +VERSION: + {{.Version}} + {{end}} +` + + // EXAMPLE: Replace the `HelpPrinter` func + cli.HelpPrinter = func(w io.Writer, templ string, data interface{}) { + fmt.Println("Ha HA. I pwnd the help!!1") + } + + cli.NewApp().Run(os.Args) +} +``` + +The default flag may be customized to something other than `-h/--help` by +setting `cli.HelpFlag`, e.g.: + + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + cli.HelpFlag = cli.BoolFlag{ + Name: "halp, haaaaalp", + Usage: "HALP", + EnvVar: "SHOW_HALP,HALPPLZ", + } + + cli.NewApp().Run(os.Args) +} +``` + +### Version Flag + +The default version flag (`-v/--version`) is defined as `cli.VersionFlag`, which +is checked by the cli internals in order to print the `App.Version` via +`cli.VersionPrinter` and break execution. + +#### Customization + +The default flag may be customized to something other than `-v/--version` by +setting `cli.VersionFlag`, e.g.: + + +``` go +package main + +import ( + "os" + + "github.com/urfave/cli" +) + +func main() { + cli.VersionFlag = cli.BoolFlag{ + Name: "print-version, V", + Usage: "print only the version", + } + + app := cli.NewApp() + app.Name = "partay" + app.Version = "19.99.0" + app.Run(os.Args) +} +``` + +Alternatively, the version printer at `cli.VersionPrinter` may be overridden, e.g.: + + +``` go +package main + +import ( + "fmt" + "os" + + "github.com/urfave/cli" +) + +var ( + Revision = "fafafaf" +) + +func main() { + cli.VersionPrinter = func(c *cli.Context) { + fmt.Printf("version=%s revision=%s\n", c.App.Version, Revision) + } + + app := cli.NewApp() + app.Name = "partay" + app.Version = "19.99.0" + app.Run(os.Args) +} +``` + +#### Full API Example + +**Notice**: This is a contrived (functioning) example meant strictly for API +demonstration purposes. Use of one's imagination is encouraged. + + +``` go +package main + +import ( + "errors" + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "time" + + "github.com/urfave/cli" +) + +func init() { + cli.AppHelpTemplate += "\nCUSTOMIZED: you bet ur muffins\n" + cli.CommandHelpTemplate += "\nYMMV\n" + cli.SubcommandHelpTemplate += "\nor something\n" + + cli.HelpFlag = cli.BoolFlag{Name: "halp"} + cli.BashCompletionFlag = cli.BoolFlag{Name: "compgen", Hidden: true} + cli.VersionFlag = cli.BoolFlag{Name: "print-version, V"} + + cli.HelpPrinter = func(w io.Writer, templ string, data interface{}) { + fmt.Fprintf(w, "best of luck to you\n") + } + cli.VersionPrinter = func(c *cli.Context) { + fmt.Fprintf(c.App.Writer, "version=%s\n", c.App.Version) + } + cli.OsExiter = func(c int) { + fmt.Fprintf(cli.ErrWriter, "refusing to exit %d\n", c) + } + cli.ErrWriter = ioutil.Discard + cli.FlagStringer = func(fl cli.Flag) string { + return fmt.Sprintf("\t\t%s", fl.GetName()) + } +} + +type hexWriter struct{} + +func (w *hexWriter) Write(p []byte) (int, error) { + for _, b := range p { + fmt.Printf("%x", b) + } + fmt.Printf("\n") + + return len(p), nil +} + +type genericType struct{ + s string +} + +func (g *genericType) Set(value string) error { + g.s = value + return nil +} + +func (g *genericType) String() string { + return g.s +} + +func main() { + app := cli.NewApp() + app.Name = "kənˈtrīv" + app.Version = "19.99.0" + app.Compiled = time.Now() + app.Authors = []cli.Author{ + cli.Author{ + Name: "Example Human", + Email: "human@example.com", + }, + } + app.Copyright = "(c) 1999 Serious Enterprise" + app.HelpName = "contrive" + app.Usage = "demonstrate available API" + app.UsageText = "contrive - demonstrating the available API" + app.ArgsUsage = "[args and such]" + app.Commands = []cli.Command{ + cli.Command{ + Name: "doo", + Aliases: []string{"do"}, + Category: "motion", + Usage: "do the doo", + UsageText: "doo - does the dooing", + Description: "no really, there is a lot of dooing to be done", + ArgsUsage: "[arrgh]", + Flags: []cli.Flag{ + cli.BoolFlag{Name: "forever, forevvarr"}, + }, + Subcommands: cli.Commands{ + cli.Command{ + Name: "wop", + Action: wopAction, + }, + }, + SkipFlagParsing: false, + HideHelp: false, + Hidden: false, + HelpName: "doo!", + BashComplete: func(c *cli.Context) { + fmt.Fprintf(c.App.Writer, "--better\n") + }, + Before: func(c *cli.Context) error { + fmt.Fprintf(c.App.Writer, "brace for impact\n") + return nil + }, + After: func(c *cli.Context) error { + fmt.Fprintf(c.App.Writer, "did we lose anyone?\n") + return nil + }, + Action: func(c *cli.Context) error { + c.Command.FullName() + c.Command.HasName("wop") + c.Command.Names() + c.Command.VisibleFlags() + fmt.Fprintf(c.App.Writer, "dodododododoodododddooooododododooo\n") + if c.Bool("forever") { + c.Command.Run(c) + } + return nil + }, + OnUsageError: func(c *cli.Context, err error, isSubcommand bool) error { + fmt.Fprintf(c.App.Writer, "for shame\n") + return err + }, + }, + } + app.Flags = []cli.Flag{ + cli.BoolFlag{Name: "fancy"}, + cli.BoolTFlag{Name: "fancier"}, + cli.DurationFlag{Name: "howlong, H", Value: time.Second * 3}, + cli.Float64Flag{Name: "howmuch"}, + cli.GenericFlag{Name: "wat", Value: &genericType{}}, + cli.Int64Flag{Name: "longdistance"}, + cli.Int64SliceFlag{Name: "intervals"}, + cli.IntFlag{Name: "distance"}, + cli.IntSliceFlag{Name: "times"}, + cli.StringFlag{Name: "dance-move, d"}, + cli.StringSliceFlag{Name: "names, N"}, + cli.UintFlag{Name: "age"}, + cli.Uint64Flag{Name: "bigage"}, + } + app.EnableBashCompletion = true + app.HideHelp = false + app.HideVersion = false + app.BashComplete = func(c *cli.Context) { + fmt.Fprintf(c.App.Writer, "lipstick\nkiss\nme\nlipstick\nringo\n") + } + app.Before = func(c *cli.Context) error { + fmt.Fprintf(c.App.Writer, "HEEEERE GOES\n") + return nil + } + app.After = func(c *cli.Context) error { + fmt.Fprintf(c.App.Writer, "Phew!\n") + return nil + } + app.CommandNotFound = func(c *cli.Context, command string) { + fmt.Fprintf(c.App.Writer, "Thar be no %q here.\n", command) + } + app.OnUsageError = func(c *cli.Context, err error, isSubcommand bool) error { + if isSubcommand { + return err + } + + fmt.Fprintf(c.App.Writer, "WRONG: %#v\n", err) + return nil + } + app.Action = func(c *cli.Context) error { + cli.DefaultAppComplete(c) + cli.HandleExitCoder(errors.New("not an exit coder, though")) + cli.ShowAppHelp(c) + cli.ShowCommandCompletions(c, "nope") + cli.ShowCommandHelp(c, "also-nope") + cli.ShowCompletions(c) + cli.ShowSubcommandHelp(c) + cli.ShowVersion(c) + + categories := c.App.Categories() + categories.AddCommand("sounds", cli.Command{ + Name: "bloop", + }) + + for _, category := range c.App.Categories() { + fmt.Fprintf(c.App.Writer, "%s\n", category.Name) + fmt.Fprintf(c.App.Writer, "%#v\n", category.Commands) + fmt.Fprintf(c.App.Writer, "%#v\n", category.VisibleCommands()) + } + + fmt.Printf("%#v\n", c.App.Command("doo")) + if c.Bool("infinite") { + c.App.Run([]string{"app", "doo", "wop"}) + } + + if c.Bool("forevar") { + c.App.RunAsSubcommand(c) + } + c.App.Setup() + fmt.Printf("%#v\n", c.App.VisibleCategories()) + fmt.Printf("%#v\n", c.App.VisibleCommands()) + fmt.Printf("%#v\n", c.App.VisibleFlags()) + + fmt.Printf("%#v\n", c.Args().First()) + if len(c.Args()) > 0 { + fmt.Printf("%#v\n", c.Args()[1]) + } + fmt.Printf("%#v\n", c.Args().Present()) + fmt.Printf("%#v\n", c.Args().Tail()) + + set := flag.NewFlagSet("contrive", 0) + nc := cli.NewContext(c.App, set, c) + + fmt.Printf("%#v\n", nc.Args()) + fmt.Printf("%#v\n", nc.Bool("nope")) + fmt.Printf("%#v\n", nc.BoolT("nerp")) + fmt.Printf("%#v\n", nc.Duration("howlong")) + fmt.Printf("%#v\n", nc.Float64("hay")) + fmt.Printf("%#v\n", nc.Generic("bloop")) + fmt.Printf("%#v\n", nc.Int64("bonk")) + fmt.Printf("%#v\n", nc.Int64Slice("burnks")) + fmt.Printf("%#v\n", nc.Int("bips")) + fmt.Printf("%#v\n", nc.IntSlice("blups")) + fmt.Printf("%#v\n", nc.String("snurt")) + fmt.Printf("%#v\n", nc.StringSlice("snurkles")) + fmt.Printf("%#v\n", nc.Uint("flub")) + fmt.Printf("%#v\n", nc.Uint64("florb")) + fmt.Printf("%#v\n", nc.GlobalBool("global-nope")) + fmt.Printf("%#v\n", nc.GlobalBoolT("global-nerp")) + fmt.Printf("%#v\n", nc.GlobalDuration("global-howlong")) + fmt.Printf("%#v\n", nc.GlobalFloat64("global-hay")) + fmt.Printf("%#v\n", nc.GlobalGeneric("global-bloop")) + fmt.Printf("%#v\n", nc.GlobalInt("global-bips")) + fmt.Printf("%#v\n", nc.GlobalIntSlice("global-blups")) + fmt.Printf("%#v\n", nc.GlobalString("global-snurt")) + fmt.Printf("%#v\n", nc.GlobalStringSlice("global-snurkles")) + + fmt.Printf("%#v\n", nc.FlagNames()) + fmt.Printf("%#v\n", nc.GlobalFlagNames()) + fmt.Printf("%#v\n", nc.GlobalIsSet("wat")) + fmt.Printf("%#v\n", nc.GlobalSet("wat", "nope")) + fmt.Printf("%#v\n", nc.NArg()) + fmt.Printf("%#v\n", nc.NumFlags()) + fmt.Printf("%#v\n", nc.Parent()) + + nc.Set("wat", "also-nope") + + ec := cli.NewExitError("ohwell", 86) + fmt.Fprintf(c.App.Writer, "%d", ec.ExitCode()) + fmt.Printf("made it!\n") + return ec + } + + if os.Getenv("HEXY") != "" { + app.Writer = &hexWriter{} + app.ErrWriter = &hexWriter{} + } + + app.Metadata = map[string]interface{}{ + "layers": "many", + "explicable": false, + "whatever-values": 19.99, + } + + app.Run(os.Args) +} + +func wopAction(c *cli.Context) error { + fmt.Fprintf(c.App.Writer, ":wave: over here, eh\n") + return nil +} +``` + +## Contribution Guidelines + +Feel free to put up a pull request to fix a bug or maybe add a feature. I will +give it a code review and make sure that it does not break backwards +compatibility. If I or any other collaborators agree that it is in line with +the vision of the project, we will work with you to get the code into +a mergeable state and merge it into the master branch. + +If you have contributed something significant to the project, we will most +likely add you as a collaborator. As a collaborator you are given the ability +to merge others pull requests. It is very important that new code does not +break existing code, so be careful about what code you do choose to merge. + +If you feel like you have contributed to the project but have not yet been +added as a collaborator, we probably forgot to add you, please open an issue. diff --git a/vendor/github.com/codegangsta/cli/altsrc/altsrc.go b/vendor/github.com/codegangsta/cli/altsrc/altsrc.go new file mode 100644 index 0000000..ac34bf6 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/altsrc.go @@ -0,0 +1,3 @@ +package altsrc + +//go:generate python ../generate-flag-types altsrc -i ../flag-types.json -o flag_generated.go diff --git a/vendor/github.com/codegangsta/cli/altsrc/flag.go b/vendor/github.com/codegangsta/cli/altsrc/flag.go new file mode 100644 index 0000000..84ef009 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/flag.go @@ -0,0 +1,261 @@ +package altsrc + +import ( + "fmt" + "strconv" + "strings" + "syscall" + + "gopkg.in/urfave/cli.v1" +) + +// FlagInputSourceExtension is an extension interface of cli.Flag that +// allows a value to be set on the existing parsed flags. +type FlagInputSourceExtension interface { + cli.Flag + ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error +} + +// ApplyInputSourceValues iterates over all provided flags and +// executes ApplyInputSourceValue on flags implementing the +// FlagInputSourceExtension interface to initialize these flags +// to an alternate input source. +func ApplyInputSourceValues(context *cli.Context, inputSourceContext InputSourceContext, flags []cli.Flag) error { + for _, f := range flags { + inputSourceExtendedFlag, isType := f.(FlagInputSourceExtension) + if isType { + err := inputSourceExtendedFlag.ApplyInputSourceValue(context, inputSourceContext) + if err != nil { + return err + } + } + } + + return nil +} + +// InitInputSource is used to to setup an InputSourceContext on a cli.Command Before method. It will create a new +// input source based on the func provided. If there is no error it will then apply the new input source to any flags +// that are supported by the input source +func InitInputSource(flags []cli.Flag, createInputSource func() (InputSourceContext, error)) cli.BeforeFunc { + return func(context *cli.Context) error { + inputSource, err := createInputSource() + if err != nil { + return fmt.Errorf("Unable to create input source: inner error: \n'%v'", err.Error()) + } + + return ApplyInputSourceValues(context, inputSource, flags) + } +} + +// InitInputSourceWithContext is used to to setup an InputSourceContext on a cli.Command Before method. It will create a new +// input source based on the func provided with potentially using existing cli.Context values to initialize itself. If there is +// no error it will then apply the new input source to any flags that are supported by the input source +func InitInputSourceWithContext(flags []cli.Flag, createInputSource func(context *cli.Context) (InputSourceContext, error)) cli.BeforeFunc { + return func(context *cli.Context) error { + inputSource, err := createInputSource(context) + if err != nil { + return fmt.Errorf("Unable to create input source with context: inner error: \n'%v'", err.Error()) + } + + return ApplyInputSourceValues(context, inputSource, flags) + } +} + +// ApplyInputSourceValue applies a generic value to the flagSet if required +func (f *GenericFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) { + value, err := isc.Generic(f.GenericFlag.Name) + if err != nil { + return err + } + if value != nil { + eachName(f.Name, func(name string) { + f.set.Set(f.Name, value.String()) + }) + } + } + } + + return nil +} + +// ApplyInputSourceValue applies a StringSlice value to the flagSet if required +func (f *StringSliceFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) { + value, err := isc.StringSlice(f.StringSliceFlag.Name) + if err != nil { + return err + } + if value != nil { + var sliceValue cli.StringSlice = value + eachName(f.Name, func(name string) { + underlyingFlag := f.set.Lookup(f.Name) + if underlyingFlag != nil { + underlyingFlag.Value = &sliceValue + } + }) + } + } + } + return nil +} + +// ApplyInputSourceValue applies a IntSlice value if required +func (f *IntSliceFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) { + value, err := isc.IntSlice(f.IntSliceFlag.Name) + if err != nil { + return err + } + if value != nil { + var sliceValue cli.IntSlice = value + eachName(f.Name, func(name string) { + underlyingFlag := f.set.Lookup(f.Name) + if underlyingFlag != nil { + underlyingFlag.Value = &sliceValue + } + }) + } + } + } + return nil +} + +// ApplyInputSourceValue applies a Bool value to the flagSet if required +func (f *BoolFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) { + value, err := isc.Bool(f.BoolFlag.Name) + if err != nil { + return err + } + if value { + eachName(f.Name, func(name string) { + f.set.Set(f.Name, strconv.FormatBool(value)) + }) + } + } + } + return nil +} + +// ApplyInputSourceValue applies a BoolT value to the flagSet if required +func (f *BoolTFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !context.IsSet(f.Name) && !isEnvVarSet(f.EnvVar) { + value, err := isc.BoolT(f.BoolTFlag.Name) + if err != nil { + return err + } + if !value { + eachName(f.Name, func(name string) { + f.set.Set(f.Name, strconv.FormatBool(value)) + }) + } + } + } + return nil +} + +// ApplyInputSourceValue applies a String value to the flagSet if required +func (f *StringFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) { + value, err := isc.String(f.StringFlag.Name) + if err != nil { + return err + } + if value != "" { + eachName(f.Name, func(name string) { + f.set.Set(f.Name, value) + }) + } + } + } + return nil +} + +// ApplyInputSourceValue applies a int value to the flagSet if required +func (f *IntFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) { + value, err := isc.Int(f.IntFlag.Name) + if err != nil { + return err + } + if value > 0 { + eachName(f.Name, func(name string) { + f.set.Set(f.Name, strconv.FormatInt(int64(value), 10)) + }) + } + } + } + return nil +} + +// ApplyInputSourceValue applies a Duration value to the flagSet if required +func (f *DurationFlag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) { + value, err := isc.Duration(f.DurationFlag.Name) + if err != nil { + return err + } + if value > 0 { + eachName(f.Name, func(name string) { + f.set.Set(f.Name, value.String()) + }) + } + } + } + return nil +} + +// ApplyInputSourceValue applies a Float64 value to the flagSet if required +func (f *Float64Flag) ApplyInputSourceValue(context *cli.Context, isc InputSourceContext) error { + if f.set != nil { + if !(context.IsSet(f.Name) || isEnvVarSet(f.EnvVar)) { + value, err := isc.Float64(f.Float64Flag.Name) + if err != nil { + return err + } + if value > 0 { + floatStr := float64ToString(value) + eachName(f.Name, func(name string) { + f.set.Set(f.Name, floatStr) + }) + } + } + } + return nil +} + +func isEnvVarSet(envVars string) bool { + for _, envVar := range strings.Split(envVars, ",") { + envVar = strings.TrimSpace(envVar) + if _, ok := syscall.Getenv(envVar); ok { + // TODO: Can't use this for bools as + // set means that it was true or false based on + // Bool flag type, should work for other types + return true + } + } + + return false +} + +func float64ToString(f float64) string { + return fmt.Sprintf("%v", f) +} + +func eachName(longName string, fn func(string)) { + parts := strings.Split(longName, ",") + for _, name := range parts { + name = strings.Trim(name, " ") + fn(name) + } +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/flag_generated.go b/vendor/github.com/codegangsta/cli/altsrc/flag_generated.go new file mode 100644 index 0000000..0aeb0b0 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/flag_generated.go @@ -0,0 +1,347 @@ +package altsrc + +import ( + "flag" + + "gopkg.in/urfave/cli.v1" +) + +// WARNING: This file is generated! + +// BoolFlag is the flag type that wraps cli.BoolFlag to allow +// for other values to be specified +type BoolFlag struct { + cli.BoolFlag + set *flag.FlagSet +} + +// NewBoolFlag creates a new BoolFlag +func NewBoolFlag(fl cli.BoolFlag) *BoolFlag { + return &BoolFlag{BoolFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped BoolFlag.Apply +func (f *BoolFlag) Apply(set *flag.FlagSet) { + f.set = set + f.BoolFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped BoolFlag.ApplyWithError +func (f *BoolFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.BoolFlag.ApplyWithError(set) +} + +// BoolTFlag is the flag type that wraps cli.BoolTFlag to allow +// for other values to be specified +type BoolTFlag struct { + cli.BoolTFlag + set *flag.FlagSet +} + +// NewBoolTFlag creates a new BoolTFlag +func NewBoolTFlag(fl cli.BoolTFlag) *BoolTFlag { + return &BoolTFlag{BoolTFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped BoolTFlag.Apply +func (f *BoolTFlag) Apply(set *flag.FlagSet) { + f.set = set + f.BoolTFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped BoolTFlag.ApplyWithError +func (f *BoolTFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.BoolTFlag.ApplyWithError(set) +} + +// DurationFlag is the flag type that wraps cli.DurationFlag to allow +// for other values to be specified +type DurationFlag struct { + cli.DurationFlag + set *flag.FlagSet +} + +// NewDurationFlag creates a new DurationFlag +func NewDurationFlag(fl cli.DurationFlag) *DurationFlag { + return &DurationFlag{DurationFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped DurationFlag.Apply +func (f *DurationFlag) Apply(set *flag.FlagSet) { + f.set = set + f.DurationFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped DurationFlag.ApplyWithError +func (f *DurationFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.DurationFlag.ApplyWithError(set) +} + +// Float64Flag is the flag type that wraps cli.Float64Flag to allow +// for other values to be specified +type Float64Flag struct { + cli.Float64Flag + set *flag.FlagSet +} + +// NewFloat64Flag creates a new Float64Flag +func NewFloat64Flag(fl cli.Float64Flag) *Float64Flag { + return &Float64Flag{Float64Flag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped Float64Flag.Apply +func (f *Float64Flag) Apply(set *flag.FlagSet) { + f.set = set + f.Float64Flag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped Float64Flag.ApplyWithError +func (f *Float64Flag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.Float64Flag.ApplyWithError(set) +} + +// GenericFlag is the flag type that wraps cli.GenericFlag to allow +// for other values to be specified +type GenericFlag struct { + cli.GenericFlag + set *flag.FlagSet +} + +// NewGenericFlag creates a new GenericFlag +func NewGenericFlag(fl cli.GenericFlag) *GenericFlag { + return &GenericFlag{GenericFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped GenericFlag.Apply +func (f *GenericFlag) Apply(set *flag.FlagSet) { + f.set = set + f.GenericFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped GenericFlag.ApplyWithError +func (f *GenericFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.GenericFlag.ApplyWithError(set) +} + +// Int64Flag is the flag type that wraps cli.Int64Flag to allow +// for other values to be specified +type Int64Flag struct { + cli.Int64Flag + set *flag.FlagSet +} + +// NewInt64Flag creates a new Int64Flag +func NewInt64Flag(fl cli.Int64Flag) *Int64Flag { + return &Int64Flag{Int64Flag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped Int64Flag.Apply +func (f *Int64Flag) Apply(set *flag.FlagSet) { + f.set = set + f.Int64Flag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped Int64Flag.ApplyWithError +func (f *Int64Flag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.Int64Flag.ApplyWithError(set) +} + +// IntFlag is the flag type that wraps cli.IntFlag to allow +// for other values to be specified +type IntFlag struct { + cli.IntFlag + set *flag.FlagSet +} + +// NewIntFlag creates a new IntFlag +func NewIntFlag(fl cli.IntFlag) *IntFlag { + return &IntFlag{IntFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped IntFlag.Apply +func (f *IntFlag) Apply(set *flag.FlagSet) { + f.set = set + f.IntFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped IntFlag.ApplyWithError +func (f *IntFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.IntFlag.ApplyWithError(set) +} + +// IntSliceFlag is the flag type that wraps cli.IntSliceFlag to allow +// for other values to be specified +type IntSliceFlag struct { + cli.IntSliceFlag + set *flag.FlagSet +} + +// NewIntSliceFlag creates a new IntSliceFlag +func NewIntSliceFlag(fl cli.IntSliceFlag) *IntSliceFlag { + return &IntSliceFlag{IntSliceFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped IntSliceFlag.Apply +func (f *IntSliceFlag) Apply(set *flag.FlagSet) { + f.set = set + f.IntSliceFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped IntSliceFlag.ApplyWithError +func (f *IntSliceFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.IntSliceFlag.ApplyWithError(set) +} + +// Int64SliceFlag is the flag type that wraps cli.Int64SliceFlag to allow +// for other values to be specified +type Int64SliceFlag struct { + cli.Int64SliceFlag + set *flag.FlagSet +} + +// NewInt64SliceFlag creates a new Int64SliceFlag +func NewInt64SliceFlag(fl cli.Int64SliceFlag) *Int64SliceFlag { + return &Int64SliceFlag{Int64SliceFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped Int64SliceFlag.Apply +func (f *Int64SliceFlag) Apply(set *flag.FlagSet) { + f.set = set + f.Int64SliceFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped Int64SliceFlag.ApplyWithError +func (f *Int64SliceFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.Int64SliceFlag.ApplyWithError(set) +} + +// StringFlag is the flag type that wraps cli.StringFlag to allow +// for other values to be specified +type StringFlag struct { + cli.StringFlag + set *flag.FlagSet +} + +// NewStringFlag creates a new StringFlag +func NewStringFlag(fl cli.StringFlag) *StringFlag { + return &StringFlag{StringFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped StringFlag.Apply +func (f *StringFlag) Apply(set *flag.FlagSet) { + f.set = set + f.StringFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped StringFlag.ApplyWithError +func (f *StringFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.StringFlag.ApplyWithError(set) +} + +// StringSliceFlag is the flag type that wraps cli.StringSliceFlag to allow +// for other values to be specified +type StringSliceFlag struct { + cli.StringSliceFlag + set *flag.FlagSet +} + +// NewStringSliceFlag creates a new StringSliceFlag +func NewStringSliceFlag(fl cli.StringSliceFlag) *StringSliceFlag { + return &StringSliceFlag{StringSliceFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped StringSliceFlag.Apply +func (f *StringSliceFlag) Apply(set *flag.FlagSet) { + f.set = set + f.StringSliceFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped StringSliceFlag.ApplyWithError +func (f *StringSliceFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.StringSliceFlag.ApplyWithError(set) +} + +// Uint64Flag is the flag type that wraps cli.Uint64Flag to allow +// for other values to be specified +type Uint64Flag struct { + cli.Uint64Flag + set *flag.FlagSet +} + +// NewUint64Flag creates a new Uint64Flag +func NewUint64Flag(fl cli.Uint64Flag) *Uint64Flag { + return &Uint64Flag{Uint64Flag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped Uint64Flag.Apply +func (f *Uint64Flag) Apply(set *flag.FlagSet) { + f.set = set + f.Uint64Flag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped Uint64Flag.ApplyWithError +func (f *Uint64Flag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.Uint64Flag.ApplyWithError(set) +} + +// UintFlag is the flag type that wraps cli.UintFlag to allow +// for other values to be specified +type UintFlag struct { + cli.UintFlag + set *flag.FlagSet +} + +// NewUintFlag creates a new UintFlag +func NewUintFlag(fl cli.UintFlag) *UintFlag { + return &UintFlag{UintFlag: fl, set: nil} +} + +// Apply saves the flagSet for later usage calls, then calls the +// wrapped UintFlag.Apply +func (f *UintFlag) Apply(set *flag.FlagSet) { + f.set = set + f.UintFlag.Apply(set) +} + +// ApplyWithError saves the flagSet for later usage calls, then calls the +// wrapped UintFlag.ApplyWithError +func (f *UintFlag) ApplyWithError(set *flag.FlagSet) error { + f.set = set + return f.UintFlag.ApplyWithError(set) +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/flag_test.go b/vendor/github.com/codegangsta/cli/altsrc/flag_test.go new file mode 100644 index 0000000..cd18294 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/flag_test.go @@ -0,0 +1,336 @@ +package altsrc + +import ( + "flag" + "fmt" + "os" + "strings" + "testing" + "time" + + "gopkg.in/urfave/cli.v1" +) + +type testApplyInputSource struct { + Flag FlagInputSourceExtension + FlagName string + FlagSetName string + Expected string + ContextValueString string + ContextValue flag.Value + EnvVarValue string + EnvVarName string + MapValue interface{} +} + +func TestGenericApplyInputSourceValue(t *testing.T) { + v := &Parser{"abc", "def"} + c := runTest(t, testApplyInputSource{ + Flag: NewGenericFlag(cli.GenericFlag{Name: "test", Value: &Parser{}}), + FlagName: "test", + MapValue: v, + }) + expect(t, v, c.Generic("test")) +} + +func TestGenericApplyInputSourceMethodContextSet(t *testing.T) { + p := &Parser{"abc", "def"} + c := runTest(t, testApplyInputSource{ + Flag: NewGenericFlag(cli.GenericFlag{Name: "test", Value: &Parser{}}), + FlagName: "test", + MapValue: &Parser{"efg", "hig"}, + ContextValueString: p.String(), + }) + expect(t, p, c.Generic("test")) +} + +func TestGenericApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewGenericFlag(cli.GenericFlag{Name: "test", Value: &Parser{}, EnvVar: "TEST"}), + FlagName: "test", + MapValue: &Parser{"efg", "hij"}, + EnvVarName: "TEST", + EnvVarValue: "abc,def", + }) + expect(t, &Parser{"abc", "def"}, c.Generic("test")) +} + +func TestStringSliceApplyInputSourceValue(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewStringSliceFlag(cli.StringSliceFlag{Name: "test"}), + FlagName: "test", + MapValue: []interface{}{"hello", "world"}, + }) + expect(t, c.StringSlice("test"), []string{"hello", "world"}) +} + +func TestStringSliceApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewStringSliceFlag(cli.StringSliceFlag{Name: "test"}), + FlagName: "test", + MapValue: []interface{}{"hello", "world"}, + ContextValueString: "ohno", + }) + expect(t, c.StringSlice("test"), []string{"ohno"}) +} + +func TestStringSliceApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewStringSliceFlag(cli.StringSliceFlag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: []interface{}{"hello", "world"}, + EnvVarName: "TEST", + EnvVarValue: "oh,no", + }) + expect(t, c.StringSlice("test"), []string{"oh", "no"}) +} + +func TestIntSliceApplyInputSourceValue(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewIntSliceFlag(cli.IntSliceFlag{Name: "test"}), + FlagName: "test", + MapValue: []interface{}{1, 2}, + }) + expect(t, c.IntSlice("test"), []int{1, 2}) +} + +func TestIntSliceApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewIntSliceFlag(cli.IntSliceFlag{Name: "test"}), + FlagName: "test", + MapValue: []interface{}{1, 2}, + ContextValueString: "3", + }) + expect(t, c.IntSlice("test"), []int{3}) +} + +func TestIntSliceApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewIntSliceFlag(cli.IntSliceFlag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: []interface{}{1, 2}, + EnvVarName: "TEST", + EnvVarValue: "3,4", + }) + expect(t, c.IntSlice("test"), []int{3, 4}) +} + +func TestBoolApplyInputSourceMethodSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewBoolFlag(cli.BoolFlag{Name: "test"}), + FlagName: "test", + MapValue: true, + }) + expect(t, true, c.Bool("test")) +} + +func TestBoolApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewBoolFlag(cli.BoolFlag{Name: "test"}), + FlagName: "test", + MapValue: false, + ContextValueString: "true", + }) + expect(t, true, c.Bool("test")) +} + +func TestBoolApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewBoolFlag(cli.BoolFlag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: false, + EnvVarName: "TEST", + EnvVarValue: "true", + }) + expect(t, true, c.Bool("test")) +} + +func TestBoolTApplyInputSourceMethodSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewBoolTFlag(cli.BoolTFlag{Name: "test"}), + FlagName: "test", + MapValue: false, + }) + expect(t, false, c.BoolT("test")) +} + +func TestBoolTApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewBoolTFlag(cli.BoolTFlag{Name: "test"}), + FlagName: "test", + MapValue: true, + ContextValueString: "false", + }) + expect(t, false, c.BoolT("test")) +} + +func TestBoolTApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewBoolTFlag(cli.BoolTFlag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: true, + EnvVarName: "TEST", + EnvVarValue: "false", + }) + expect(t, false, c.BoolT("test")) +} + +func TestStringApplyInputSourceMethodSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewStringFlag(cli.StringFlag{Name: "test"}), + FlagName: "test", + MapValue: "hello", + }) + expect(t, "hello", c.String("test")) +} + +func TestStringApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewStringFlag(cli.StringFlag{Name: "test"}), + FlagName: "test", + MapValue: "hello", + ContextValueString: "goodbye", + }) + expect(t, "goodbye", c.String("test")) +} + +func TestStringApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewStringFlag(cli.StringFlag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: "hello", + EnvVarName: "TEST", + EnvVarValue: "goodbye", + }) + expect(t, "goodbye", c.String("test")) +} + +func TestIntApplyInputSourceMethodSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewIntFlag(cli.IntFlag{Name: "test"}), + FlagName: "test", + MapValue: 15, + }) + expect(t, 15, c.Int("test")) +} + +func TestIntApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewIntFlag(cli.IntFlag{Name: "test"}), + FlagName: "test", + MapValue: 15, + ContextValueString: "7", + }) + expect(t, 7, c.Int("test")) +} + +func TestIntApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewIntFlag(cli.IntFlag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: 15, + EnvVarName: "TEST", + EnvVarValue: "12", + }) + expect(t, 12, c.Int("test")) +} + +func TestDurationApplyInputSourceMethodSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewDurationFlag(cli.DurationFlag{Name: "test"}), + FlagName: "test", + MapValue: time.Duration(30 * time.Second), + }) + expect(t, time.Duration(30*time.Second), c.Duration("test")) +} + +func TestDurationApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewDurationFlag(cli.DurationFlag{Name: "test"}), + FlagName: "test", + MapValue: time.Duration(30 * time.Second), + ContextValueString: time.Duration(15 * time.Second).String(), + }) + expect(t, time.Duration(15*time.Second), c.Duration("test")) +} + +func TestDurationApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewDurationFlag(cli.DurationFlag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: time.Duration(30 * time.Second), + EnvVarName: "TEST", + EnvVarValue: time.Duration(15 * time.Second).String(), + }) + expect(t, time.Duration(15*time.Second), c.Duration("test")) +} + +func TestFloat64ApplyInputSourceMethodSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewFloat64Flag(cli.Float64Flag{Name: "test"}), + FlagName: "test", + MapValue: 1.3, + }) + expect(t, 1.3, c.Float64("test")) +} + +func TestFloat64ApplyInputSourceMethodContextSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewFloat64Flag(cli.Float64Flag{Name: "test"}), + FlagName: "test", + MapValue: 1.3, + ContextValueString: fmt.Sprintf("%v", 1.4), + }) + expect(t, 1.4, c.Float64("test")) +} + +func TestFloat64ApplyInputSourceMethodEnvVarSet(t *testing.T) { + c := runTest(t, testApplyInputSource{ + Flag: NewFloat64Flag(cli.Float64Flag{Name: "test", EnvVar: "TEST"}), + FlagName: "test", + MapValue: 1.3, + EnvVarName: "TEST", + EnvVarValue: fmt.Sprintf("%v", 1.4), + }) + expect(t, 1.4, c.Float64("test")) +} + +func runTest(t *testing.T, test testApplyInputSource) *cli.Context { + inputSource := &MapInputSource{valueMap: map[interface{}]interface{}{test.FlagName: test.MapValue}} + set := flag.NewFlagSet(test.FlagSetName, flag.ContinueOnError) + c := cli.NewContext(nil, set, nil) + if test.EnvVarName != "" && test.EnvVarValue != "" { + os.Setenv(test.EnvVarName, test.EnvVarValue) + defer os.Setenv(test.EnvVarName, "") + } + + test.Flag.Apply(set) + if test.ContextValue != nil { + flag := set.Lookup(test.FlagName) + flag.Value = test.ContextValue + } + if test.ContextValueString != "" { + set.Set(test.FlagName, test.ContextValueString) + } + test.Flag.ApplyInputSourceValue(c, inputSource) + + return c +} + +type Parser [2]string + +func (p *Parser) Set(value string) error { + parts := strings.Split(value, ",") + if len(parts) != 2 { + return fmt.Errorf("invalid format") + } + + (*p)[0] = parts[0] + (*p)[1] = parts[1] + + return nil +} + +func (p *Parser) String() string { + return fmt.Sprintf("%s,%s", p[0], p[1]) +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/helpers_test.go b/vendor/github.com/codegangsta/cli/altsrc/helpers_test.go new file mode 100644 index 0000000..3b7f7e9 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/helpers_test.go @@ -0,0 +1,18 @@ +package altsrc + +import ( + "reflect" + "testing" +) + +func expect(t *testing.T, a interface{}, b interface{}) { + if !reflect.DeepEqual(b, a) { + t.Errorf("Expected %#v (type %v) - Got %#v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a)) + } +} + +func refute(t *testing.T, a interface{}, b interface{}) { + if a == b { + t.Errorf("Did not expect %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a)) + } +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/input_source_context.go b/vendor/github.com/codegangsta/cli/altsrc/input_source_context.go new file mode 100644 index 0000000..276dcda --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/input_source_context.go @@ -0,0 +1,21 @@ +package altsrc + +import ( + "time" + + "gopkg.in/urfave/cli.v1" +) + +// InputSourceContext is an interface used to allow +// other input sources to be implemented as needed. +type InputSourceContext interface { + Int(name string) (int, error) + Duration(name string) (time.Duration, error) + Float64(name string) (float64, error) + String(name string) (string, error) + StringSlice(name string) ([]string, error) + IntSlice(name string) ([]int, error) + Generic(name string) (cli.Generic, error) + Bool(name string) (bool, error) + BoolT(name string) (bool, error) +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/map_input_source.go b/vendor/github.com/codegangsta/cli/altsrc/map_input_source.go new file mode 100644 index 0000000..b3169e0 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/map_input_source.go @@ -0,0 +1,262 @@ +package altsrc + +import ( + "fmt" + "reflect" + "strings" + "time" + + "gopkg.in/urfave/cli.v1" +) + +// MapInputSource implements InputSourceContext to return +// data from the map that is loaded. +type MapInputSource struct { + valueMap map[interface{}]interface{} +} + +// nestedVal checks if the name has '.' delimiters. +// If so, it tries to traverse the tree by the '.' delimited sections to find +// a nested value for the key. +func nestedVal(name string, tree map[interface{}]interface{}) (interface{}, bool) { + if sections := strings.Split(name, "."); len(sections) > 1 { + node := tree + for _, section := range sections[:len(sections)-1] { + if child, ok := node[section]; !ok { + return nil, false + } else { + if ctype, ok := child.(map[interface{}]interface{}); !ok { + return nil, false + } else { + node = ctype + } + } + } + if val, ok := node[sections[len(sections)-1]]; ok { + return val, true + } + } + return nil, false +} + +// Int returns an int from the map if it exists otherwise returns 0 +func (fsm *MapInputSource) Int(name string) (int, error) { + otherGenericValue, exists := fsm.valueMap[name] + if exists { + otherValue, isType := otherGenericValue.(int) + if !isType { + return 0, incorrectTypeForFlagError(name, "int", otherGenericValue) + } + return otherValue, nil + } + nestedGenericValue, exists := nestedVal(name, fsm.valueMap) + if exists { + otherValue, isType := nestedGenericValue.(int) + if !isType { + return 0, incorrectTypeForFlagError(name, "int", nestedGenericValue) + } + return otherValue, nil + } + + return 0, nil +} + +// Duration returns a duration from the map if it exists otherwise returns 0 +func (fsm *MapInputSource) Duration(name string) (time.Duration, error) { + otherGenericValue, exists := fsm.valueMap[name] + if exists { + otherValue, isType := otherGenericValue.(time.Duration) + if !isType { + return 0, incorrectTypeForFlagError(name, "duration", otherGenericValue) + } + return otherValue, nil + } + nestedGenericValue, exists := nestedVal(name, fsm.valueMap) + if exists { + otherValue, isType := nestedGenericValue.(time.Duration) + if !isType { + return 0, incorrectTypeForFlagError(name, "duration", nestedGenericValue) + } + return otherValue, nil + } + + return 0, nil +} + +// Float64 returns an float64 from the map if it exists otherwise returns 0 +func (fsm *MapInputSource) Float64(name string) (float64, error) { + otherGenericValue, exists := fsm.valueMap[name] + if exists { + otherValue, isType := otherGenericValue.(float64) + if !isType { + return 0, incorrectTypeForFlagError(name, "float64", otherGenericValue) + } + return otherValue, nil + } + nestedGenericValue, exists := nestedVal(name, fsm.valueMap) + if exists { + otherValue, isType := nestedGenericValue.(float64) + if !isType { + return 0, incorrectTypeForFlagError(name, "float64", nestedGenericValue) + } + return otherValue, nil + } + + return 0, nil +} + +// String returns a string from the map if it exists otherwise returns an empty string +func (fsm *MapInputSource) String(name string) (string, error) { + otherGenericValue, exists := fsm.valueMap[name] + if exists { + otherValue, isType := otherGenericValue.(string) + if !isType { + return "", incorrectTypeForFlagError(name, "string", otherGenericValue) + } + return otherValue, nil + } + nestedGenericValue, exists := nestedVal(name, fsm.valueMap) + if exists { + otherValue, isType := nestedGenericValue.(string) + if !isType { + return "", incorrectTypeForFlagError(name, "string", nestedGenericValue) + } + return otherValue, nil + } + + return "", nil +} + +// StringSlice returns an []string from the map if it exists otherwise returns nil +func (fsm *MapInputSource) StringSlice(name string) ([]string, error) { + otherGenericValue, exists := fsm.valueMap[name] + if !exists { + otherGenericValue, exists = nestedVal(name, fsm.valueMap) + if !exists { + return nil, nil + } + } + + otherValue, isType := otherGenericValue.([]interface{}) + if !isType { + return nil, incorrectTypeForFlagError(name, "[]interface{}", otherGenericValue) + } + + var stringSlice = make([]string, 0, len(otherValue)) + for i, v := range otherValue { + stringValue, isType := v.(string) + + if !isType { + return nil, incorrectTypeForFlagError(fmt.Sprintf("%s[%d]", name, i), "string", v) + } + + stringSlice = append(stringSlice, stringValue) + } + + return stringSlice, nil +} + +// IntSlice returns an []int from the map if it exists otherwise returns nil +func (fsm *MapInputSource) IntSlice(name string) ([]int, error) { + otherGenericValue, exists := fsm.valueMap[name] + if !exists { + otherGenericValue, exists = nestedVal(name, fsm.valueMap) + if !exists { + return nil, nil + } + } + + otherValue, isType := otherGenericValue.([]interface{}) + if !isType { + return nil, incorrectTypeForFlagError(name, "[]interface{}", otherGenericValue) + } + + var intSlice = make([]int, 0, len(otherValue)) + for i, v := range otherValue { + intValue, isType := v.(int) + + if !isType { + return nil, incorrectTypeForFlagError(fmt.Sprintf("%s[%d]", name, i), "int", v) + } + + intSlice = append(intSlice, intValue) + } + + return intSlice, nil +} + +// Generic returns an cli.Generic from the map if it exists otherwise returns nil +func (fsm *MapInputSource) Generic(name string) (cli.Generic, error) { + otherGenericValue, exists := fsm.valueMap[name] + if exists { + otherValue, isType := otherGenericValue.(cli.Generic) + if !isType { + return nil, incorrectTypeForFlagError(name, "cli.Generic", otherGenericValue) + } + return otherValue, nil + } + nestedGenericValue, exists := nestedVal(name, fsm.valueMap) + if exists { + otherValue, isType := nestedGenericValue.(cli.Generic) + if !isType { + return nil, incorrectTypeForFlagError(name, "cli.Generic", nestedGenericValue) + } + return otherValue, nil + } + + return nil, nil +} + +// Bool returns an bool from the map otherwise returns false +func (fsm *MapInputSource) Bool(name string) (bool, error) { + otherGenericValue, exists := fsm.valueMap[name] + if exists { + otherValue, isType := otherGenericValue.(bool) + if !isType { + return false, incorrectTypeForFlagError(name, "bool", otherGenericValue) + } + return otherValue, nil + } + nestedGenericValue, exists := nestedVal(name, fsm.valueMap) + if exists { + otherValue, isType := nestedGenericValue.(bool) + if !isType { + return false, incorrectTypeForFlagError(name, "bool", nestedGenericValue) + } + return otherValue, nil + } + + return false, nil +} + +// BoolT returns an bool from the map otherwise returns true +func (fsm *MapInputSource) BoolT(name string) (bool, error) { + otherGenericValue, exists := fsm.valueMap[name] + if exists { + otherValue, isType := otherGenericValue.(bool) + if !isType { + return true, incorrectTypeForFlagError(name, "bool", otherGenericValue) + } + return otherValue, nil + } + nestedGenericValue, exists := nestedVal(name, fsm.valueMap) + if exists { + otherValue, isType := nestedGenericValue.(bool) + if !isType { + return true, incorrectTypeForFlagError(name, "bool", nestedGenericValue) + } + return otherValue, nil + } + + return true, nil +} + +func incorrectTypeForFlagError(name, expectedTypeName string, value interface{}) error { + valueType := reflect.TypeOf(value) + valueTypeName := "" + if valueType != nil { + valueTypeName = valueType.Name() + } + + return fmt.Errorf("Mismatched type for flag '%s'. Expected '%s' but actual is '%s'", name, expectedTypeName, valueTypeName) +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/toml_command_test.go b/vendor/github.com/codegangsta/cli/altsrc/toml_command_test.go new file mode 100644 index 0000000..a5053d4 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/toml_command_test.go @@ -0,0 +1,310 @@ +// Disabling building of toml support in cases where golang is 1.0 or 1.1 +// as the encoding library is not implemented or supported. + +// +build go1.2 + +package altsrc + +import ( + "flag" + "io/ioutil" + "os" + "testing" + + "gopkg.in/urfave/cli.v1" +) + +func TestCommandTomFileTest(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("test = 15"), 0666) + defer os.Remove("current.toml") + test := []string{"test-cmd", "--load", "current.toml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 15) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileTestGlobalEnvVarWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("test = 15"), 0666) + defer os.Remove("current.toml") + + os.Setenv("THE_TEST", "10") + defer os.Setenv("THE_TEST", "") + test := []string{"test-cmd", "--load", "current.toml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 10) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test", EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileTestGlobalEnvVarWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("[top]\ntest = 15"), 0666) + defer os.Remove("current.toml") + + os.Setenv("THE_TEST", "10") + defer os.Setenv("THE_TEST", "") + test := []string{"test-cmd", "--load", "current.toml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 10) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test", EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileTestSpecifiedFlagWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("test = 15"), 0666) + defer os.Remove("current.toml") + + test := []string{"test-cmd", "--load", "current.toml", "--test", "7"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 7) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileTestSpecifiedFlagWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte(`[top] + test = 15`), 0666) + defer os.Remove("current.toml") + + test := []string{"test-cmd", "--load", "current.toml", "--top.test", "7"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 7) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileTestDefaultValueFileWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("test = 15"), 0666) + defer os.Remove("current.toml") + + test := []string{"test-cmd", "--load", "current.toml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 15) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test", Value: 7}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileTestDefaultValueFileWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("[top]\ntest = 15"), 0666) + defer os.Remove("current.toml") + + test := []string{"test-cmd", "--load", "current.toml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 15) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test", Value: 7}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileFlagHasDefaultGlobalEnvTomlSetGlobalEnvWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("test = 15"), 0666) + defer os.Remove("current.toml") + + os.Setenv("THE_TEST", "11") + defer os.Setenv("THE_TEST", "") + + test := []string{"test-cmd", "--load", "current.toml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 11) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test", Value: 7, EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandTomlFileFlagHasDefaultGlobalEnvTomlSetGlobalEnvWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.toml", []byte("[top]\ntest = 15"), 0666) + defer os.Remove("current.toml") + + os.Setenv("THE_TEST", "11") + defer os.Setenv("THE_TEST", "") + + test := []string{"test-cmd", "--load", "current.toml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 11) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test", Value: 7, EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewTomlSourceFromFlagFunc("load")) + err := command.Run(c) + + expect(t, err, nil) +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/toml_file_loader.go b/vendor/github.com/codegangsta/cli/altsrc/toml_file_loader.go new file mode 100644 index 0000000..37870fc --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/toml_file_loader.go @@ -0,0 +1,113 @@ +// Disabling building of toml support in cases where golang is 1.0 or 1.1 +// as the encoding library is not implemented or supported. + +// +build go1.2 + +package altsrc + +import ( + "fmt" + "reflect" + + "github.com/BurntSushi/toml" + "gopkg.in/urfave/cli.v1" +) + +type tomlMap struct { + Map map[interface{}]interface{} +} + +func unmarshalMap(i interface{}) (ret map[interface{}]interface{}, err error) { + ret = make(map[interface{}]interface{}) + m := i.(map[string]interface{}) + for key, val := range m { + v := reflect.ValueOf(val) + switch v.Kind() { + case reflect.Bool: + ret[key] = val.(bool) + case reflect.String: + ret[key] = val.(string) + case reflect.Int: + ret[key] = int(val.(int)) + case reflect.Int8: + ret[key] = int(val.(int8)) + case reflect.Int16: + ret[key] = int(val.(int16)) + case reflect.Int32: + ret[key] = int(val.(int32)) + case reflect.Int64: + ret[key] = int(val.(int64)) + case reflect.Uint: + ret[key] = int(val.(uint)) + case reflect.Uint8: + ret[key] = int(val.(uint8)) + case reflect.Uint16: + ret[key] = int(val.(uint16)) + case reflect.Uint32: + ret[key] = int(val.(uint32)) + case reflect.Uint64: + ret[key] = int(val.(uint64)) + case reflect.Float32: + ret[key] = float64(val.(float32)) + case reflect.Float64: + ret[key] = float64(val.(float64)) + case reflect.Map: + if tmp, err := unmarshalMap(val); err == nil { + ret[key] = tmp + } else { + return nil, err + } + case reflect.Array, reflect.Slice: + ret[key] = val.([]interface{}) + default: + return nil, fmt.Errorf("Unsupported: type = %#v", v.Kind()) + } + } + return ret, nil +} + +func (self *tomlMap) UnmarshalTOML(i interface{}) error { + if tmp, err := unmarshalMap(i); err == nil { + self.Map = tmp + } else { + return err + } + return nil +} + +type tomlSourceContext struct { + FilePath string +} + +// NewTomlSourceFromFile creates a new TOML InputSourceContext from a filepath. +func NewTomlSourceFromFile(file string) (InputSourceContext, error) { + tsc := &tomlSourceContext{FilePath: file} + var results tomlMap = tomlMap{} + if err := readCommandToml(tsc.FilePath, &results); err != nil { + return nil, fmt.Errorf("Unable to load TOML file '%s': inner error: \n'%v'", tsc.FilePath, err.Error()) + } + return &MapInputSource{valueMap: results.Map}, nil +} + +// NewTomlSourceFromFlagFunc creates a new TOML InputSourceContext from a provided flag name and source context. +func NewTomlSourceFromFlagFunc(flagFileName string) func(context *cli.Context) (InputSourceContext, error) { + return func(context *cli.Context) (InputSourceContext, error) { + filePath := context.String(flagFileName) + return NewTomlSourceFromFile(filePath) + } +} + +func readCommandToml(filePath string, container interface{}) (err error) { + b, err := loadDataFrom(filePath) + if err != nil { + return err + } + + err = toml.Unmarshal(b, container) + if err != nil { + return err + } + + err = nil + return +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/yaml_command_test.go b/vendor/github.com/codegangsta/cli/altsrc/yaml_command_test.go new file mode 100644 index 0000000..9d3f431 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/yaml_command_test.go @@ -0,0 +1,313 @@ +// Disabling building of yaml support in cases where golang is 1.0 or 1.1 +// as the encoding library is not implemented or supported. + +// +build go1.2 + +package altsrc + +import ( + "flag" + "io/ioutil" + "os" + "testing" + + "gopkg.in/urfave/cli.v1" +) + +func TestCommandYamlFileTest(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte("test: 15"), 0666) + defer os.Remove("current.yaml") + test := []string{"test-cmd", "--load", "current.yaml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 15) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileTestGlobalEnvVarWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte("test: 15"), 0666) + defer os.Remove("current.yaml") + + os.Setenv("THE_TEST", "10") + defer os.Setenv("THE_TEST", "") + test := []string{"test-cmd", "--load", "current.yaml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 10) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test", EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileTestGlobalEnvVarWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte(`top: + test: 15`), 0666) + defer os.Remove("current.yaml") + + os.Setenv("THE_TEST", "10") + defer os.Setenv("THE_TEST", "") + test := []string{"test-cmd", "--load", "current.yaml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 10) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test", EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileTestSpecifiedFlagWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte("test: 15"), 0666) + defer os.Remove("current.yaml") + + test := []string{"test-cmd", "--load", "current.yaml", "--test", "7"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 7) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileTestSpecifiedFlagWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte(`top: + test: 15`), 0666) + defer os.Remove("current.yaml") + + test := []string{"test-cmd", "--load", "current.yaml", "--top.test", "7"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 7) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileTestDefaultValueFileWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte("test: 15"), 0666) + defer os.Remove("current.yaml") + + test := []string{"test-cmd", "--load", "current.yaml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 15) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test", Value: 7}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileTestDefaultValueFileWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte(`top: + test: 15`), 0666) + defer os.Remove("current.yaml") + + test := []string{"test-cmd", "--load", "current.yaml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 15) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test", Value: 7}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileFlagHasDefaultGlobalEnvYamlSetGlobalEnvWins(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte("test: 15"), 0666) + defer os.Remove("current.yaml") + + os.Setenv("THE_TEST", "11") + defer os.Setenv("THE_TEST", "") + + test := []string{"test-cmd", "--load", "current.yaml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("test") + expect(t, val, 11) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "test", Value: 7, EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + err := command.Run(c) + + expect(t, err, nil) +} + +func TestCommandYamlFileFlagHasDefaultGlobalEnvYamlSetGlobalEnvWinsNested(t *testing.T) { + app := cli.NewApp() + set := flag.NewFlagSet("test", 0) + ioutil.WriteFile("current.yaml", []byte(`top: + test: 15`), 0666) + defer os.Remove("current.yaml") + + os.Setenv("THE_TEST", "11") + defer os.Setenv("THE_TEST", "") + + test := []string{"test-cmd", "--load", "current.yaml"} + set.Parse(test) + + c := cli.NewContext(app, set, nil) + + command := &cli.Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(c *cli.Context) error { + val := c.Int("top.test") + expect(t, val, 11) + return nil + }, + Flags: []cli.Flag{ + NewIntFlag(cli.IntFlag{Name: "top.test", Value: 7, EnvVar: "THE_TEST"}), + cli.StringFlag{Name: "load"}}, + } + command.Before = InitInputSourceWithContext(command.Flags, NewYamlSourceFromFlagFunc("load")) + err := command.Run(c) + + expect(t, err, nil) +} diff --git a/vendor/github.com/codegangsta/cli/altsrc/yaml_file_loader.go b/vendor/github.com/codegangsta/cli/altsrc/yaml_file_loader.go new file mode 100644 index 0000000..dd808d5 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/altsrc/yaml_file_loader.go @@ -0,0 +1,92 @@ +// Disabling building of yaml support in cases where golang is 1.0 or 1.1 +// as the encoding library is not implemented or supported. + +// +build go1.2 + +package altsrc + +import ( + "fmt" + "io/ioutil" + "net/http" + "net/url" + "os" + "runtime" + "strings" + + "gopkg.in/urfave/cli.v1" + + "gopkg.in/yaml.v2" +) + +type yamlSourceContext struct { + FilePath string +} + +// NewYamlSourceFromFile creates a new Yaml InputSourceContext from a filepath. +func NewYamlSourceFromFile(file string) (InputSourceContext, error) { + ysc := &yamlSourceContext{FilePath: file} + var results map[interface{}]interface{} + err := readCommandYaml(ysc.FilePath, &results) + if err != nil { + return nil, fmt.Errorf("Unable to load Yaml file '%s': inner error: \n'%v'", ysc.FilePath, err.Error()) + } + + return &MapInputSource{valueMap: results}, nil +} + +// NewYamlSourceFromFlagFunc creates a new Yaml InputSourceContext from a provided flag name and source context. +func NewYamlSourceFromFlagFunc(flagFileName string) func(context *cli.Context) (InputSourceContext, error) { + return func(context *cli.Context) (InputSourceContext, error) { + filePath := context.String(flagFileName) + return NewYamlSourceFromFile(filePath) + } +} + +func readCommandYaml(filePath string, container interface{}) (err error) { + b, err := loadDataFrom(filePath) + if err != nil { + return err + } + + err = yaml.Unmarshal(b, container) + if err != nil { + return err + } + + err = nil + return +} + +func loadDataFrom(filePath string) ([]byte, error) { + u, err := url.Parse(filePath) + if err != nil { + return nil, err + } + + if u.Host != "" { // i have a host, now do i support the scheme? + switch u.Scheme { + case "http", "https": + res, err := http.Get(filePath) + if err != nil { + return nil, err + } + return ioutil.ReadAll(res.Body) + default: + return nil, fmt.Errorf("scheme of %s is unsupported", filePath) + } + } else if u.Path != "" { // i dont have a host, but I have a path. I am a local file. + if _, notFoundFileErr := os.Stat(filePath); notFoundFileErr != nil { + return nil, fmt.Errorf("Cannot read from file: '%s' because it does not exist.", filePath) + } + return ioutil.ReadFile(filePath) + } else if runtime.GOOS == "windows" && strings.Contains(u.String(), "\\") { + // on Windows systems u.Path is always empty, so we need to check the string directly. + if _, notFoundFileErr := os.Stat(filePath); notFoundFileErr != nil { + return nil, fmt.Errorf("Cannot read from file: '%s' because it does not exist.", filePath) + } + return ioutil.ReadFile(filePath) + } else { + return nil, fmt.Errorf("unable to determine how to load from path %s", filePath) + } +} diff --git a/vendor/github.com/codegangsta/cli/app.go b/vendor/github.com/codegangsta/cli/app.go new file mode 100644 index 0000000..51fc45d --- /dev/null +++ b/vendor/github.com/codegangsta/cli/app.go @@ -0,0 +1,497 @@ +package cli + +import ( + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "sort" + "time" +) + +var ( + changeLogURL = "https://github.com/urfave/cli/blob/master/CHANGELOG.md" + appActionDeprecationURL = fmt.Sprintf("%s#deprecated-cli-app-action-signature", changeLogURL) + runAndExitOnErrorDeprecationURL = fmt.Sprintf("%s#deprecated-cli-app-runandexitonerror", changeLogURL) + + contactSysadmin = "This is an error in the application. Please contact the distributor of this application if this is not you." + + errInvalidActionType = NewExitError("ERROR invalid Action type. "+ + fmt.Sprintf("Must be `func(*Context`)` or `func(*Context) error). %s", contactSysadmin)+ + fmt.Sprintf("See %s", appActionDeprecationURL), 2) +) + +// App is the main structure of a cli application. It is recommended that +// an app be created with the cli.NewApp() function +type App struct { + // The name of the program. Defaults to path.Base(os.Args[0]) + Name string + // Full name of command for help, defaults to Name + HelpName string + // Description of the program. + Usage string + // Text to override the USAGE section of help + UsageText string + // Description of the program argument format. + ArgsUsage string + // Version of the program + Version string + // Description of the program + Description string + // List of commands to execute + Commands []Command + // List of flags to parse + Flags []Flag + // Boolean to enable bash completion commands + EnableBashCompletion bool + // Boolean to hide built-in help command + HideHelp bool + // Boolean to hide built-in version flag and the VERSION section of help + HideVersion bool + // Populate on app startup, only gettable through method Categories() + categories CommandCategories + // An action to execute when the bash-completion flag is set + BashComplete BashCompleteFunc + // An action to execute before any subcommands are run, but after the context is ready + // If a non-nil error is returned, no subcommands are run + Before BeforeFunc + // An action to execute after any subcommands are run, but after the subcommand has finished + // It is run even if Action() panics + After AfterFunc + + // The action to execute when no subcommands are specified + // Expects a `cli.ActionFunc` but will accept the *deprecated* signature of `func(*cli.Context) {}` + // *Note*: support for the deprecated `Action` signature will be removed in a future version + Action interface{} + + // Execute this function if the proper command cannot be found + CommandNotFound CommandNotFoundFunc + // Execute this function if an usage error occurs + OnUsageError OnUsageErrorFunc + // Compilation date + Compiled time.Time + // List of all authors who contributed + Authors []Author + // Copyright of the binary if any + Copyright string + // Name of Author (Note: Use App.Authors, this is deprecated) + Author string + // Email of Author (Note: Use App.Authors, this is deprecated) + Email string + // Writer writer to write output to + Writer io.Writer + // ErrWriter writes error output + ErrWriter io.Writer + // Other custom info + Metadata map[string]interface{} + // Carries a function which returns app specific info. + ExtraInfo func() map[string]string + // CustomAppHelpTemplate the text template for app help topic. + // cli.go uses text/template to render templates. You can + // render custom help text by setting this variable. + CustomAppHelpTemplate string + + didSetup bool +} + +// Tries to find out when this binary was compiled. +// Returns the current time if it fails to find it. +func compileTime() time.Time { + info, err := os.Stat(os.Args[0]) + if err != nil { + return time.Now() + } + return info.ModTime() +} + +// NewApp creates a new cli Application with some reasonable defaults for Name, +// Usage, Version and Action. +func NewApp() *App { + return &App{ + Name: filepath.Base(os.Args[0]), + HelpName: filepath.Base(os.Args[0]), + Usage: "A new cli application", + UsageText: "", + Version: "0.0.0", + BashComplete: DefaultAppComplete, + Action: helpCommand.Action, + Compiled: compileTime(), + Writer: os.Stdout, + } +} + +// Setup runs initialization code to ensure all data structures are ready for +// `Run` or inspection prior to `Run`. It is internally called by `Run`, but +// will return early if setup has already happened. +func (a *App) Setup() { + if a.didSetup { + return + } + + a.didSetup = true + + if a.Author != "" || a.Email != "" { + a.Authors = append(a.Authors, Author{Name: a.Author, Email: a.Email}) + } + + newCmds := []Command{} + for _, c := range a.Commands { + if c.HelpName == "" { + c.HelpName = fmt.Sprintf("%s %s", a.HelpName, c.Name) + } + newCmds = append(newCmds, c) + } + a.Commands = newCmds + + if a.Command(helpCommand.Name) == nil && !a.HideHelp { + a.Commands = append(a.Commands, helpCommand) + if (HelpFlag != BoolFlag{}) { + a.appendFlag(HelpFlag) + } + } + + if !a.HideVersion { + a.appendFlag(VersionFlag) + } + + a.categories = CommandCategories{} + for _, command := range a.Commands { + a.categories = a.categories.AddCommand(command.Category, command) + } + sort.Sort(a.categories) + + if a.Metadata == nil { + a.Metadata = make(map[string]interface{}) + } + + if a.Writer == nil { + a.Writer = os.Stdout + } +} + +// Run is the entry point to the cli app. Parses the arguments slice and routes +// to the proper flag/args combination +func (a *App) Run(arguments []string) (err error) { + a.Setup() + + // handle the completion flag separately from the flagset since + // completion could be attempted after a flag, but before its value was put + // on the command line. this causes the flagset to interpret the completion + // flag name as the value of the flag before it which is undesirable + // note that we can only do this because the shell autocomplete function + // always appends the completion flag at the end of the command + shellComplete, arguments := checkShellCompleteFlag(a, arguments) + + // parse flags + set, err := flagSet(a.Name, a.Flags) + if err != nil { + return err + } + + set.SetOutput(ioutil.Discard) + err = set.Parse(arguments[1:]) + nerr := normalizeFlags(a.Flags, set) + context := NewContext(a, set, nil) + if nerr != nil { + fmt.Fprintln(a.Writer, nerr) + ShowAppHelp(context) + return nerr + } + context.shellComplete = shellComplete + + if checkCompletions(context) { + return nil + } + + if err != nil { + if a.OnUsageError != nil { + err := a.OnUsageError(context, err, false) + HandleExitCoder(err) + return err + } + fmt.Fprintf(a.Writer, "%s %s\n\n", "Incorrect Usage.", err.Error()) + ShowAppHelp(context) + return err + } + + if !a.HideHelp && checkHelp(context) { + ShowAppHelp(context) + return nil + } + + if !a.HideVersion && checkVersion(context) { + ShowVersion(context) + return nil + } + + if a.After != nil { + defer func() { + if afterErr := a.After(context); afterErr != nil { + if err != nil { + err = NewMultiError(err, afterErr) + } else { + err = afterErr + } + } + }() + } + + if a.Before != nil { + beforeErr := a.Before(context) + if beforeErr != nil { + ShowAppHelp(context) + HandleExitCoder(beforeErr) + err = beforeErr + return err + } + } + + args := context.Args() + if args.Present() { + name := args.First() + c := a.Command(name) + if c != nil { + return c.Run(context) + } + } + + if a.Action == nil { + a.Action = helpCommand.Action + } + + // Run default Action + err = HandleAction(a.Action, context) + + HandleExitCoder(err) + return err +} + +// RunAndExitOnError calls .Run() and exits non-zero if an error was returned +// +// Deprecated: instead you should return an error that fulfills cli.ExitCoder +// to cli.App.Run. This will cause the application to exit with the given eror +// code in the cli.ExitCoder +func (a *App) RunAndExitOnError() { + if err := a.Run(os.Args); err != nil { + fmt.Fprintln(a.errWriter(), err) + OsExiter(1) + } +} + +// RunAsSubcommand invokes the subcommand given the context, parses ctx.Args() to +// generate command-specific flags +func (a *App) RunAsSubcommand(ctx *Context) (err error) { + // append help to commands + if len(a.Commands) > 0 { + if a.Command(helpCommand.Name) == nil && !a.HideHelp { + a.Commands = append(a.Commands, helpCommand) + if (HelpFlag != BoolFlag{}) { + a.appendFlag(HelpFlag) + } + } + } + + newCmds := []Command{} + for _, c := range a.Commands { + if c.HelpName == "" { + c.HelpName = fmt.Sprintf("%s %s", a.HelpName, c.Name) + } + newCmds = append(newCmds, c) + } + a.Commands = newCmds + + // parse flags + set, err := flagSet(a.Name, a.Flags) + if err != nil { + return err + } + + set.SetOutput(ioutil.Discard) + err = set.Parse(ctx.Args().Tail()) + nerr := normalizeFlags(a.Flags, set) + context := NewContext(a, set, ctx) + + if nerr != nil { + fmt.Fprintln(a.Writer, nerr) + fmt.Fprintln(a.Writer) + if len(a.Commands) > 0 { + ShowSubcommandHelp(context) + } else { + ShowCommandHelp(ctx, context.Args().First()) + } + return nerr + } + + if checkCompletions(context) { + return nil + } + + if err != nil { + if a.OnUsageError != nil { + err = a.OnUsageError(context, err, true) + HandleExitCoder(err) + return err + } + fmt.Fprintf(a.Writer, "%s %s\n\n", "Incorrect Usage.", err.Error()) + ShowSubcommandHelp(context) + return err + } + + if len(a.Commands) > 0 { + if checkSubcommandHelp(context) { + return nil + } + } else { + if checkCommandHelp(ctx, context.Args().First()) { + return nil + } + } + + if a.After != nil { + defer func() { + afterErr := a.After(context) + if afterErr != nil { + HandleExitCoder(err) + if err != nil { + err = NewMultiError(err, afterErr) + } else { + err = afterErr + } + } + }() + } + + if a.Before != nil { + beforeErr := a.Before(context) + if beforeErr != nil { + HandleExitCoder(beforeErr) + err = beforeErr + return err + } + } + + args := context.Args() + if args.Present() { + name := args.First() + c := a.Command(name) + if c != nil { + return c.Run(context) + } + } + + // Run default Action + err = HandleAction(a.Action, context) + + HandleExitCoder(err) + return err +} + +// Command returns the named command on App. Returns nil if the command does not exist +func (a *App) Command(name string) *Command { + for _, c := range a.Commands { + if c.HasName(name) { + return &c + } + } + + return nil +} + +// Categories returns a slice containing all the categories with the commands they contain +func (a *App) Categories() CommandCategories { + return a.categories +} + +// VisibleCategories returns a slice of categories and commands that are +// Hidden=false +func (a *App) VisibleCategories() []*CommandCategory { + ret := []*CommandCategory{} + for _, category := range a.categories { + if visible := func() *CommandCategory { + for _, command := range category.Commands { + if !command.Hidden { + return category + } + } + return nil + }(); visible != nil { + ret = append(ret, visible) + } + } + return ret +} + +// VisibleCommands returns a slice of the Commands with Hidden=false +func (a *App) VisibleCommands() []Command { + ret := []Command{} + for _, command := range a.Commands { + if !command.Hidden { + ret = append(ret, command) + } + } + return ret +} + +// VisibleFlags returns a slice of the Flags with Hidden=false +func (a *App) VisibleFlags() []Flag { + return visibleFlags(a.Flags) +} + +func (a *App) hasFlag(flag Flag) bool { + for _, f := range a.Flags { + if flag == f { + return true + } + } + + return false +} + +func (a *App) errWriter() io.Writer { + + // When the app ErrWriter is nil use the package level one. + if a.ErrWriter == nil { + return ErrWriter + } + + return a.ErrWriter +} + +func (a *App) appendFlag(flag Flag) { + if !a.hasFlag(flag) { + a.Flags = append(a.Flags, flag) + } +} + +// Author represents someone who has contributed to a cli project. +type Author struct { + Name string // The Authors name + Email string // The Authors email +} + +// String makes Author comply to the Stringer interface, to allow an easy print in the templating process +func (a Author) String() string { + e := "" + if a.Email != "" { + e = " <" + a.Email + ">" + } + + return fmt.Sprintf("%v%v", a.Name, e) +} + +// HandleAction attempts to figure out which Action signature was used. If +// it's an ActionFunc or a func with the legacy signature for Action, the func +// is run! +func HandleAction(action interface{}, context *Context) (err error) { + if a, ok := action.(ActionFunc); ok { + return a(context) + } else if a, ok := action.(func(*Context) error); ok { + return a(context) + } else if a, ok := action.(func(*Context)); ok { // deprecated function signature + a(context) + return nil + } else { + return errInvalidActionType + } +} diff --git a/vendor/github.com/codegangsta/cli/app_test.go b/vendor/github.com/codegangsta/cli/app_test.go new file mode 100644 index 0000000..e14ddaf --- /dev/null +++ b/vendor/github.com/codegangsta/cli/app_test.go @@ -0,0 +1,1742 @@ +package cli + +import ( + "bytes" + "errors" + "flag" + "fmt" + "io" + "io/ioutil" + "os" + "reflect" + "strings" + "testing" +) + +var ( + lastExitCode = 0 + fakeOsExiter = func(rc int) { + lastExitCode = rc + } + fakeErrWriter = &bytes.Buffer{} +) + +func init() { + OsExiter = fakeOsExiter + ErrWriter = fakeErrWriter +} + +type opCounts struct { + Total, BashComplete, OnUsageError, Before, CommandNotFound, Action, After, SubCommand int +} + +func ExampleApp_Run() { + // set args for examples sake + os.Args = []string{"greet", "--name", "Jeremy"} + + app := NewApp() + app.Name = "greet" + app.Flags = []Flag{ + StringFlag{Name: "name", Value: "bob", Usage: "a name to say"}, + } + app.Action = func(c *Context) error { + fmt.Printf("Hello %v\n", c.String("name")) + return nil + } + app.UsageText = "app [first_arg] [second_arg]" + app.Author = "Harrison" + app.Email = "harrison@lolwut.com" + app.Authors = []Author{{Name: "Oliver Allen", Email: "oliver@toyshop.com"}} + app.Run(os.Args) + // Output: + // Hello Jeremy +} + +func ExampleApp_Run_subcommand() { + // set args for examples sake + os.Args = []string{"say", "hi", "english", "--name", "Jeremy"} + app := NewApp() + app.Name = "say" + app.Commands = []Command{ + { + Name: "hello", + Aliases: []string{"hi"}, + Usage: "use it to see a description", + Description: "This is how we describe hello the function", + Subcommands: []Command{ + { + Name: "english", + Aliases: []string{"en"}, + Usage: "sends a greeting in english", + Description: "greets someone in english", + Flags: []Flag{ + StringFlag{ + Name: "name", + Value: "Bob", + Usage: "Name of the person to greet", + }, + }, + Action: func(c *Context) error { + fmt.Println("Hello,", c.String("name")) + return nil + }, + }, + }, + }, + } + + app.Run(os.Args) + // Output: + // Hello, Jeremy +} + +func ExampleApp_Run_appHelp() { + // set args for examples sake + os.Args = []string{"greet", "help"} + + app := NewApp() + app.Name = "greet" + app.Version = "0.1.0" + app.Description = "This is how we describe greet the app" + app.Authors = []Author{ + {Name: "Harrison", Email: "harrison@lolwut.com"}, + {Name: "Oliver Allen", Email: "oliver@toyshop.com"}, + } + app.Flags = []Flag{ + StringFlag{Name: "name", Value: "bob", Usage: "a name to say"}, + } + app.Commands = []Command{ + { + Name: "describeit", + Aliases: []string{"d"}, + Usage: "use it to see a description", + Description: "This is how we describe describeit the function", + Action: func(c *Context) error { + fmt.Printf("i like to describe things") + return nil + }, + }, + } + app.Run(os.Args) + // Output: + // NAME: + // greet - A new cli application + // + // USAGE: + // greet [global options] command [command options] [arguments...] + // + // VERSION: + // 0.1.0 + // + // DESCRIPTION: + // This is how we describe greet the app + // + // AUTHORS: + // Harrison + // Oliver Allen + // + // COMMANDS: + // describeit, d use it to see a description + // help, h Shows a list of commands or help for one command + // + // GLOBAL OPTIONS: + // --name value a name to say (default: "bob") + // --help, -h show help + // --version, -v print the version +} + +func ExampleApp_Run_commandHelp() { + // set args for examples sake + os.Args = []string{"greet", "h", "describeit"} + + app := NewApp() + app.Name = "greet" + app.Flags = []Flag{ + StringFlag{Name: "name", Value: "bob", Usage: "a name to say"}, + } + app.Commands = []Command{ + { + Name: "describeit", + Aliases: []string{"d"}, + Usage: "use it to see a description", + Description: "This is how we describe describeit the function", + Action: func(c *Context) error { + fmt.Printf("i like to describe things") + return nil + }, + }, + } + app.Run(os.Args) + // Output: + // NAME: + // greet describeit - use it to see a description + // + // USAGE: + // greet describeit [arguments...] + // + // DESCRIPTION: + // This is how we describe describeit the function +} + +func ExampleApp_Run_noAction() { + app := App{} + app.Name = "greet" + app.Run([]string{"greet"}) + // Output: + // NAME: + // greet + // + // USAGE: + // [global options] command [command options] [arguments...] + // + // COMMANDS: + // help, h Shows a list of commands or help for one command + // + // GLOBAL OPTIONS: + // --help, -h show help + // --version, -v print the version +} + +func ExampleApp_Run_subcommandNoAction() { + app := App{} + app.Name = "greet" + app.Commands = []Command{ + { + Name: "describeit", + Aliases: []string{"d"}, + Usage: "use it to see a description", + Description: "This is how we describe describeit the function", + }, + } + app.Run([]string{"greet", "describeit"}) + // Output: + // NAME: + // describeit - use it to see a description + // + // USAGE: + // describeit [arguments...] + // + // DESCRIPTION: + // This is how we describe describeit the function + +} + +func ExampleApp_Run_bashComplete() { + // set args for examples sake + os.Args = []string{"greet", "--generate-bash-completion"} + + app := NewApp() + app.Name = "greet" + app.EnableBashCompletion = true + app.Commands = []Command{ + { + Name: "describeit", + Aliases: []string{"d"}, + Usage: "use it to see a description", + Description: "This is how we describe describeit the function", + Action: func(c *Context) error { + fmt.Printf("i like to describe things") + return nil + }, + }, { + Name: "next", + Usage: "next example", + Description: "more stuff to see when generating bash completion", + Action: func(c *Context) error { + fmt.Printf("the next example") + return nil + }, + }, + } + + app.Run(os.Args) + // Output: + // describeit + // d + // next + // help + // h +} + +func TestApp_Run(t *testing.T) { + s := "" + + app := NewApp() + app.Action = func(c *Context) error { + s = s + c.Args().First() + return nil + } + + err := app.Run([]string{"command", "foo"}) + expect(t, err, nil) + err = app.Run([]string{"command", "bar"}) + expect(t, err, nil) + expect(t, s, "foobar") +} + +var commandAppTests = []struct { + name string + expected bool +}{ + {"foobar", true}, + {"batbaz", true}, + {"b", true}, + {"f", true}, + {"bat", false}, + {"nothing", false}, +} + +func TestApp_Command(t *testing.T) { + app := NewApp() + fooCommand := Command{Name: "foobar", Aliases: []string{"f"}} + batCommand := Command{Name: "batbaz", Aliases: []string{"b"}} + app.Commands = []Command{ + fooCommand, + batCommand, + } + + for _, test := range commandAppTests { + expect(t, app.Command(test.name) != nil, test.expected) + } +} + +func TestApp_Setup_defaultsWriter(t *testing.T) { + app := &App{} + app.Setup() + expect(t, app.Writer, os.Stdout) +} + +func TestApp_CommandWithArgBeforeFlags(t *testing.T) { + var parsedOption, firstArg string + + app := NewApp() + command := Command{ + Name: "cmd", + Flags: []Flag{ + StringFlag{Name: "option", Value: "", Usage: "some option"}, + }, + Action: func(c *Context) error { + parsedOption = c.String("option") + firstArg = c.Args().First() + return nil + }, + } + app.Commands = []Command{command} + + app.Run([]string{"", "cmd", "my-arg", "--option", "my-option"}) + + expect(t, parsedOption, "my-option") + expect(t, firstArg, "my-arg") +} + +func TestApp_RunAsSubcommandParseFlags(t *testing.T) { + var context *Context + + a := NewApp() + a.Commands = []Command{ + { + Name: "foo", + Action: func(c *Context) error { + context = c + return nil + }, + Flags: []Flag{ + StringFlag{ + Name: "lang", + Value: "english", + Usage: "language for the greeting", + }, + }, + Before: func(_ *Context) error { return nil }, + }, + } + a.Run([]string{"", "foo", "--lang", "spanish", "abcd"}) + + expect(t, context.Args().Get(0), "abcd") + expect(t, context.String("lang"), "spanish") +} + +func TestApp_RunAsSubCommandIncorrectUsage(t *testing.T) { + a := App{ + Flags: []Flag{ + StringFlag{Name: "--foo"}, + }, + Writer: bytes.NewBufferString(""), + } + + set := flag.NewFlagSet("", flag.ContinueOnError) + set.Parse([]string{"", "---foo"}) + c := &Context{flagSet: set} + + err := a.RunAsSubcommand(c) + + expect(t, err, errors.New("bad flag syntax: ---foo")) +} + +func TestApp_CommandWithFlagBeforeTerminator(t *testing.T) { + var parsedOption string + var args []string + + app := NewApp() + command := Command{ + Name: "cmd", + Flags: []Flag{ + StringFlag{Name: "option", Value: "", Usage: "some option"}, + }, + Action: func(c *Context) error { + parsedOption = c.String("option") + args = c.Args() + return nil + }, + } + app.Commands = []Command{command} + + app.Run([]string{"", "cmd", "my-arg", "--option", "my-option", "--", "--notARealFlag"}) + + expect(t, parsedOption, "my-option") + expect(t, args[0], "my-arg") + expect(t, args[1], "--") + expect(t, args[2], "--notARealFlag") +} + +func TestApp_CommandWithDash(t *testing.T) { + var args []string + + app := NewApp() + command := Command{ + Name: "cmd", + Action: func(c *Context) error { + args = c.Args() + return nil + }, + } + app.Commands = []Command{command} + + app.Run([]string{"", "cmd", "my-arg", "-"}) + + expect(t, args[0], "my-arg") + expect(t, args[1], "-") +} + +func TestApp_CommandWithNoFlagBeforeTerminator(t *testing.T) { + var args []string + + app := NewApp() + command := Command{ + Name: "cmd", + Action: func(c *Context) error { + args = c.Args() + return nil + }, + } + app.Commands = []Command{command} + + app.Run([]string{"", "cmd", "my-arg", "--", "notAFlagAtAll"}) + + expect(t, args[0], "my-arg") + expect(t, args[1], "--") + expect(t, args[2], "notAFlagAtAll") +} + +func TestApp_VisibleCommands(t *testing.T) { + app := NewApp() + app.Commands = []Command{ + { + Name: "frob", + HelpName: "foo frob", + Action: func(_ *Context) error { return nil }, + }, + { + Name: "frib", + HelpName: "foo frib", + Hidden: true, + Action: func(_ *Context) error { return nil }, + }, + } + + app.Setup() + expected := []Command{ + app.Commands[0], + app.Commands[2], // help + } + actual := app.VisibleCommands() + expect(t, len(expected), len(actual)) + for i, actualCommand := range actual { + expectedCommand := expected[i] + + if expectedCommand.Action != nil { + // comparing func addresses is OK! + expect(t, fmt.Sprintf("%p", expectedCommand.Action), fmt.Sprintf("%p", actualCommand.Action)) + } + + // nil out funcs, as they cannot be compared + // (https://github.com/golang/go/issues/8554) + expectedCommand.Action = nil + actualCommand.Action = nil + + if !reflect.DeepEqual(expectedCommand, actualCommand) { + t.Errorf("expected\n%#v\n!=\n%#v", expectedCommand, actualCommand) + } + } +} + +func TestApp_Float64Flag(t *testing.T) { + var meters float64 + + app := NewApp() + app.Flags = []Flag{ + Float64Flag{Name: "height", Value: 1.5, Usage: "Set the height, in meters"}, + } + app.Action = func(c *Context) error { + meters = c.Float64("height") + return nil + } + + app.Run([]string{"", "--height", "1.93"}) + expect(t, meters, 1.93) +} + +func TestApp_ParseSliceFlags(t *testing.T) { + var parsedOption, firstArg string + var parsedIntSlice []int + var parsedStringSlice []string + + app := NewApp() + command := Command{ + Name: "cmd", + Flags: []Flag{ + IntSliceFlag{Name: "p", Value: &IntSlice{}, Usage: "set one or more ip addr"}, + StringSliceFlag{Name: "ip", Value: &StringSlice{}, Usage: "set one or more ports to open"}, + }, + Action: func(c *Context) error { + parsedIntSlice = c.IntSlice("p") + parsedStringSlice = c.StringSlice("ip") + parsedOption = c.String("option") + firstArg = c.Args().First() + return nil + }, + } + app.Commands = []Command{command} + + app.Run([]string{"", "cmd", "my-arg", "-p", "22", "-p", "80", "-ip", "8.8.8.8", "-ip", "8.8.4.4"}) + + IntsEquals := func(a, b []int) bool { + if len(a) != len(b) { + return false + } + for i, v := range a { + if v != b[i] { + return false + } + } + return true + } + + StrsEquals := func(a, b []string) bool { + if len(a) != len(b) { + return false + } + for i, v := range a { + if v != b[i] { + return false + } + } + return true + } + var expectedIntSlice = []int{22, 80} + var expectedStringSlice = []string{"8.8.8.8", "8.8.4.4"} + + if !IntsEquals(parsedIntSlice, expectedIntSlice) { + t.Errorf("%v does not match %v", parsedIntSlice, expectedIntSlice) + } + + if !StrsEquals(parsedStringSlice, expectedStringSlice) { + t.Errorf("%v does not match %v", parsedStringSlice, expectedStringSlice) + } +} + +func TestApp_ParseSliceFlagsWithMissingValue(t *testing.T) { + var parsedIntSlice []int + var parsedStringSlice []string + + app := NewApp() + command := Command{ + Name: "cmd", + Flags: []Flag{ + IntSliceFlag{Name: "a", Usage: "set numbers"}, + StringSliceFlag{Name: "str", Usage: "set strings"}, + }, + Action: func(c *Context) error { + parsedIntSlice = c.IntSlice("a") + parsedStringSlice = c.StringSlice("str") + return nil + }, + } + app.Commands = []Command{command} + + app.Run([]string{"", "cmd", "my-arg", "-a", "2", "-str", "A"}) + + var expectedIntSlice = []int{2} + var expectedStringSlice = []string{"A"} + + if parsedIntSlice[0] != expectedIntSlice[0] { + t.Errorf("%v does not match %v", parsedIntSlice[0], expectedIntSlice[0]) + } + + if parsedStringSlice[0] != expectedStringSlice[0] { + t.Errorf("%v does not match %v", parsedIntSlice[0], expectedIntSlice[0]) + } +} + +func TestApp_DefaultStdout(t *testing.T) { + app := NewApp() + + if app.Writer != os.Stdout { + t.Error("Default output writer not set.") + } +} + +type mockWriter struct { + written []byte +} + +func (fw *mockWriter) Write(p []byte) (n int, err error) { + if fw.written == nil { + fw.written = p + } else { + fw.written = append(fw.written, p...) + } + + return len(p), nil +} + +func (fw *mockWriter) GetWritten() (b []byte) { + return fw.written +} + +func TestApp_SetStdout(t *testing.T) { + w := &mockWriter{} + + app := NewApp() + app.Name = "test" + app.Writer = w + + err := app.Run([]string{"help"}) + + if err != nil { + t.Fatalf("Run error: %s", err) + } + + if len(w.written) == 0 { + t.Error("App did not write output to desired writer.") + } +} + +func TestApp_BeforeFunc(t *testing.T) { + counts := &opCounts{} + beforeError := fmt.Errorf("fail") + var err error + + app := NewApp() + + app.Before = func(c *Context) error { + counts.Total++ + counts.Before = counts.Total + s := c.String("opt") + if s == "fail" { + return beforeError + } + + return nil + } + + app.Commands = []Command{ + { + Name: "sub", + Action: func(c *Context) error { + counts.Total++ + counts.SubCommand = counts.Total + return nil + }, + }, + } + + app.Flags = []Flag{ + StringFlag{Name: "opt"}, + } + + // run with the Before() func succeeding + err = app.Run([]string{"command", "--opt", "succeed", "sub"}) + + if err != nil { + t.Fatalf("Run error: %s", err) + } + + if counts.Before != 1 { + t.Errorf("Before() not executed when expected") + } + + if counts.SubCommand != 2 { + t.Errorf("Subcommand not executed when expected") + } + + // reset + counts = &opCounts{} + + // run with the Before() func failing + err = app.Run([]string{"command", "--opt", "fail", "sub"}) + + // should be the same error produced by the Before func + if err != beforeError { + t.Errorf("Run error expected, but not received") + } + + if counts.Before != 1 { + t.Errorf("Before() not executed when expected") + } + + if counts.SubCommand != 0 { + t.Errorf("Subcommand executed when NOT expected") + } + + // reset + counts = &opCounts{} + + afterError := errors.New("fail again") + app.After = func(_ *Context) error { + return afterError + } + + // run with the Before() func failing, wrapped by After() + err = app.Run([]string{"command", "--opt", "fail", "sub"}) + + // should be the same error produced by the Before func + if _, ok := err.(MultiError); !ok { + t.Errorf("MultiError expected, but not received") + } + + if counts.Before != 1 { + t.Errorf("Before() not executed when expected") + } + + if counts.SubCommand != 0 { + t.Errorf("Subcommand executed when NOT expected") + } +} + +func TestApp_AfterFunc(t *testing.T) { + counts := &opCounts{} + afterError := fmt.Errorf("fail") + var err error + + app := NewApp() + + app.After = func(c *Context) error { + counts.Total++ + counts.After = counts.Total + s := c.String("opt") + if s == "fail" { + return afterError + } + + return nil + } + + app.Commands = []Command{ + { + Name: "sub", + Action: func(c *Context) error { + counts.Total++ + counts.SubCommand = counts.Total + return nil + }, + }, + } + + app.Flags = []Flag{ + StringFlag{Name: "opt"}, + } + + // run with the After() func succeeding + err = app.Run([]string{"command", "--opt", "succeed", "sub"}) + + if err != nil { + t.Fatalf("Run error: %s", err) + } + + if counts.After != 2 { + t.Errorf("After() not executed when expected") + } + + if counts.SubCommand != 1 { + t.Errorf("Subcommand not executed when expected") + } + + // reset + counts = &opCounts{} + + // run with the Before() func failing + err = app.Run([]string{"command", "--opt", "fail", "sub"}) + + // should be the same error produced by the Before func + if err != afterError { + t.Errorf("Run error expected, but not received") + } + + if counts.After != 2 { + t.Errorf("After() not executed when expected") + } + + if counts.SubCommand != 1 { + t.Errorf("Subcommand not executed when expected") + } +} + +func TestAppNoHelpFlag(t *testing.T) { + oldFlag := HelpFlag + defer func() { + HelpFlag = oldFlag + }() + + HelpFlag = BoolFlag{} + + app := NewApp() + app.Writer = ioutil.Discard + err := app.Run([]string{"test", "-h"}) + + if err != flag.ErrHelp { + t.Errorf("expected error about missing help flag, but got: %s (%T)", err, err) + } +} + +func TestAppHelpPrinter(t *testing.T) { + oldPrinter := HelpPrinter + defer func() { + HelpPrinter = oldPrinter + }() + + var wasCalled = false + HelpPrinter = func(w io.Writer, template string, data interface{}) { + wasCalled = true + } + + app := NewApp() + app.Run([]string{"-h"}) + + if wasCalled == false { + t.Errorf("Help printer expected to be called, but was not") + } +} + +func TestApp_VersionPrinter(t *testing.T) { + oldPrinter := VersionPrinter + defer func() { + VersionPrinter = oldPrinter + }() + + var wasCalled = false + VersionPrinter = func(c *Context) { + wasCalled = true + } + + app := NewApp() + ctx := NewContext(app, nil, nil) + ShowVersion(ctx) + + if wasCalled == false { + t.Errorf("Version printer expected to be called, but was not") + } +} + +func TestApp_CommandNotFound(t *testing.T) { + counts := &opCounts{} + app := NewApp() + + app.CommandNotFound = func(c *Context, command string) { + counts.Total++ + counts.CommandNotFound = counts.Total + } + + app.Commands = []Command{ + { + Name: "bar", + Action: func(c *Context) error { + counts.Total++ + counts.SubCommand = counts.Total + return nil + }, + }, + } + + app.Run([]string{"command", "foo"}) + + expect(t, counts.CommandNotFound, 1) + expect(t, counts.SubCommand, 0) + expect(t, counts.Total, 1) +} + +func TestApp_OrderOfOperations(t *testing.T) { + counts := &opCounts{} + + resetCounts := func() { counts = &opCounts{} } + + app := NewApp() + app.EnableBashCompletion = true + app.BashComplete = func(c *Context) { + counts.Total++ + counts.BashComplete = counts.Total + } + + app.OnUsageError = func(c *Context, err error, isSubcommand bool) error { + counts.Total++ + counts.OnUsageError = counts.Total + return errors.New("hay OnUsageError") + } + + beforeNoError := func(c *Context) error { + counts.Total++ + counts.Before = counts.Total + return nil + } + + beforeError := func(c *Context) error { + counts.Total++ + counts.Before = counts.Total + return errors.New("hay Before") + } + + app.Before = beforeNoError + app.CommandNotFound = func(c *Context, command string) { + counts.Total++ + counts.CommandNotFound = counts.Total + } + + afterNoError := func(c *Context) error { + counts.Total++ + counts.After = counts.Total + return nil + } + + afterError := func(c *Context) error { + counts.Total++ + counts.After = counts.Total + return errors.New("hay After") + } + + app.After = afterNoError + app.Commands = []Command{ + { + Name: "bar", + Action: func(c *Context) error { + counts.Total++ + counts.SubCommand = counts.Total + return nil + }, + }, + } + + app.Action = func(c *Context) error { + counts.Total++ + counts.Action = counts.Total + return nil + } + + _ = app.Run([]string{"command", "--nope"}) + expect(t, counts.OnUsageError, 1) + expect(t, counts.Total, 1) + + resetCounts() + + _ = app.Run([]string{"command", "--generate-bash-completion"}) + expect(t, counts.BashComplete, 1) + expect(t, counts.Total, 1) + + resetCounts() + + oldOnUsageError := app.OnUsageError + app.OnUsageError = nil + _ = app.Run([]string{"command", "--nope"}) + expect(t, counts.Total, 0) + app.OnUsageError = oldOnUsageError + + resetCounts() + + _ = app.Run([]string{"command", "foo"}) + expect(t, counts.OnUsageError, 0) + expect(t, counts.Before, 1) + expect(t, counts.CommandNotFound, 0) + expect(t, counts.Action, 2) + expect(t, counts.After, 3) + expect(t, counts.Total, 3) + + resetCounts() + + app.Before = beforeError + _ = app.Run([]string{"command", "bar"}) + expect(t, counts.OnUsageError, 0) + expect(t, counts.Before, 1) + expect(t, counts.After, 2) + expect(t, counts.Total, 2) + app.Before = beforeNoError + + resetCounts() + + app.After = nil + _ = app.Run([]string{"command", "bar"}) + expect(t, counts.OnUsageError, 0) + expect(t, counts.Before, 1) + expect(t, counts.SubCommand, 2) + expect(t, counts.Total, 2) + app.After = afterNoError + + resetCounts() + + app.After = afterError + err := app.Run([]string{"command", "bar"}) + if err == nil { + t.Fatalf("expected a non-nil error") + } + expect(t, counts.OnUsageError, 0) + expect(t, counts.Before, 1) + expect(t, counts.SubCommand, 2) + expect(t, counts.After, 3) + expect(t, counts.Total, 3) + app.After = afterNoError + + resetCounts() + + oldCommands := app.Commands + app.Commands = nil + _ = app.Run([]string{"command"}) + expect(t, counts.OnUsageError, 0) + expect(t, counts.Before, 1) + expect(t, counts.Action, 2) + expect(t, counts.After, 3) + expect(t, counts.Total, 3) + app.Commands = oldCommands +} + +func TestApp_Run_CommandWithSubcommandHasHelpTopic(t *testing.T) { + var subcommandHelpTopics = [][]string{ + {"command", "foo", "--help"}, + {"command", "foo", "-h"}, + {"command", "foo", "help"}, + } + + for _, flagSet := range subcommandHelpTopics { + t.Logf("==> checking with flags %v", flagSet) + + app := NewApp() + buf := new(bytes.Buffer) + app.Writer = buf + + subCmdBar := Command{ + Name: "bar", + Usage: "does bar things", + } + subCmdBaz := Command{ + Name: "baz", + Usage: "does baz things", + } + cmd := Command{ + Name: "foo", + Description: "descriptive wall of text about how it does foo things", + Subcommands: []Command{subCmdBar, subCmdBaz}, + Action: func(c *Context) error { return nil }, + } + + app.Commands = []Command{cmd} + err := app.Run(flagSet) + + if err != nil { + t.Error(err) + } + + output := buf.String() + t.Logf("output: %q\n", buf.Bytes()) + + if strings.Contains(output, "No help topic for") { + t.Errorf("expect a help topic, got none: \n%q", output) + } + + for _, shouldContain := range []string{ + cmd.Name, cmd.Description, + subCmdBar.Name, subCmdBar.Usage, + subCmdBaz.Name, subCmdBaz.Usage, + } { + if !strings.Contains(output, shouldContain) { + t.Errorf("want help to contain %q, did not: \n%q", shouldContain, output) + } + } + } +} + +func TestApp_Run_SubcommandFullPath(t *testing.T) { + app := NewApp() + buf := new(bytes.Buffer) + app.Writer = buf + app.Name = "command" + subCmd := Command{ + Name: "bar", + Usage: "does bar things", + } + cmd := Command{ + Name: "foo", + Description: "foo commands", + Subcommands: []Command{subCmd}, + } + app.Commands = []Command{cmd} + + err := app.Run([]string{"command", "foo", "bar", "--help"}) + if err != nil { + t.Error(err) + } + + output := buf.String() + if !strings.Contains(output, "command foo bar - does bar things") { + t.Errorf("expected full path to subcommand: %s", output) + } + if !strings.Contains(output, "command foo bar [arguments...]") { + t.Errorf("expected full path to subcommand: %s", output) + } +} + +func TestApp_Run_SubcommandHelpName(t *testing.T) { + app := NewApp() + buf := new(bytes.Buffer) + app.Writer = buf + app.Name = "command" + subCmd := Command{ + Name: "bar", + HelpName: "custom", + Usage: "does bar things", + } + cmd := Command{ + Name: "foo", + Description: "foo commands", + Subcommands: []Command{subCmd}, + } + app.Commands = []Command{cmd} + + err := app.Run([]string{"command", "foo", "bar", "--help"}) + if err != nil { + t.Error(err) + } + + output := buf.String() + if !strings.Contains(output, "custom - does bar things") { + t.Errorf("expected HelpName for subcommand: %s", output) + } + if !strings.Contains(output, "custom [arguments...]") { + t.Errorf("expected HelpName to subcommand: %s", output) + } +} + +func TestApp_Run_CommandHelpName(t *testing.T) { + app := NewApp() + buf := new(bytes.Buffer) + app.Writer = buf + app.Name = "command" + subCmd := Command{ + Name: "bar", + Usage: "does bar things", + } + cmd := Command{ + Name: "foo", + HelpName: "custom", + Description: "foo commands", + Subcommands: []Command{subCmd}, + } + app.Commands = []Command{cmd} + + err := app.Run([]string{"command", "foo", "bar", "--help"}) + if err != nil { + t.Error(err) + } + + output := buf.String() + if !strings.Contains(output, "command foo bar - does bar things") { + t.Errorf("expected full path to subcommand: %s", output) + } + if !strings.Contains(output, "command foo bar [arguments...]") { + t.Errorf("expected full path to subcommand: %s", output) + } +} + +func TestApp_Run_CommandSubcommandHelpName(t *testing.T) { + app := NewApp() + buf := new(bytes.Buffer) + app.Writer = buf + app.Name = "base" + subCmd := Command{ + Name: "bar", + HelpName: "custom", + Usage: "does bar things", + } + cmd := Command{ + Name: "foo", + Description: "foo commands", + Subcommands: []Command{subCmd}, + } + app.Commands = []Command{cmd} + + err := app.Run([]string{"command", "foo", "--help"}) + if err != nil { + t.Error(err) + } + + output := buf.String() + if !strings.Contains(output, "base foo - foo commands") { + t.Errorf("expected full path to subcommand: %s", output) + } + if !strings.Contains(output, "base foo command [command options] [arguments...]") { + t.Errorf("expected full path to subcommand: %s", output) + } +} + +func TestApp_Run_Help(t *testing.T) { + var helpArguments = [][]string{{"boom", "--help"}, {"boom", "-h"}, {"boom", "help"}} + + for _, args := range helpArguments { + buf := new(bytes.Buffer) + + t.Logf("==> checking with arguments %v", args) + + app := NewApp() + app.Name = "boom" + app.Usage = "make an explosive entrance" + app.Writer = buf + app.Action = func(c *Context) error { + buf.WriteString("boom I say!") + return nil + } + + err := app.Run(args) + if err != nil { + t.Error(err) + } + + output := buf.String() + t.Logf("output: %q\n", buf.Bytes()) + + if !strings.Contains(output, "boom - make an explosive entrance") { + t.Errorf("want help to contain %q, did not: \n%q", "boom - make an explosive entrance", output) + } + } +} + +func TestApp_Run_Version(t *testing.T) { + var versionArguments = [][]string{{"boom", "--version"}, {"boom", "-v"}} + + for _, args := range versionArguments { + buf := new(bytes.Buffer) + + t.Logf("==> checking with arguments %v", args) + + app := NewApp() + app.Name = "boom" + app.Usage = "make an explosive entrance" + app.Version = "0.1.0" + app.Writer = buf + app.Action = func(c *Context) error { + buf.WriteString("boom I say!") + return nil + } + + err := app.Run(args) + if err != nil { + t.Error(err) + } + + output := buf.String() + t.Logf("output: %q\n", buf.Bytes()) + + if !strings.Contains(output, "0.1.0") { + t.Errorf("want version to contain %q, did not: \n%q", "0.1.0", output) + } + } +} + +func TestApp_Run_Categories(t *testing.T) { + app := NewApp() + app.Name = "categories" + app.HideHelp = true + app.Commands = []Command{ + { + Name: "command1", + Category: "1", + }, + { + Name: "command2", + Category: "1", + }, + { + Name: "command3", + Category: "2", + }, + } + buf := new(bytes.Buffer) + app.Writer = buf + + app.Run([]string{"categories"}) + + expect := CommandCategories{ + &CommandCategory{ + Name: "1", + Commands: []Command{ + app.Commands[0], + app.Commands[1], + }, + }, + &CommandCategory{ + Name: "2", + Commands: []Command{ + app.Commands[2], + }, + }, + } + if !reflect.DeepEqual(app.Categories(), expect) { + t.Fatalf("expected categories %#v, to equal %#v", app.Categories(), expect) + } + + output := buf.String() + t.Logf("output: %q\n", buf.Bytes()) + + if !strings.Contains(output, "1:\n command1") { + t.Errorf("want buffer to include category %q, did not: \n%q", "1:\n command1", output) + } +} + +func TestApp_VisibleCategories(t *testing.T) { + app := NewApp() + app.Name = "visible-categories" + app.HideHelp = true + app.Commands = []Command{ + { + Name: "command1", + Category: "1", + HelpName: "foo command1", + Hidden: true, + }, + { + Name: "command2", + Category: "2", + HelpName: "foo command2", + }, + { + Name: "command3", + Category: "3", + HelpName: "foo command3", + }, + } + + expected := []*CommandCategory{ + { + Name: "2", + Commands: []Command{ + app.Commands[1], + }, + }, + { + Name: "3", + Commands: []Command{ + app.Commands[2], + }, + }, + } + + app.Setup() + expect(t, expected, app.VisibleCategories()) + + app = NewApp() + app.Name = "visible-categories" + app.HideHelp = true + app.Commands = []Command{ + { + Name: "command1", + Category: "1", + HelpName: "foo command1", + Hidden: true, + }, + { + Name: "command2", + Category: "2", + HelpName: "foo command2", + Hidden: true, + }, + { + Name: "command3", + Category: "3", + HelpName: "foo command3", + }, + } + + expected = []*CommandCategory{ + { + Name: "3", + Commands: []Command{ + app.Commands[2], + }, + }, + } + + app.Setup() + expect(t, expected, app.VisibleCategories()) + + app = NewApp() + app.Name = "visible-categories" + app.HideHelp = true + app.Commands = []Command{ + { + Name: "command1", + Category: "1", + HelpName: "foo command1", + Hidden: true, + }, + { + Name: "command2", + Category: "2", + HelpName: "foo command2", + Hidden: true, + }, + { + Name: "command3", + Category: "3", + HelpName: "foo command3", + Hidden: true, + }, + } + + expected = []*CommandCategory{} + + app.Setup() + expect(t, expected, app.VisibleCategories()) +} + +func TestApp_Run_DoesNotOverwriteErrorFromBefore(t *testing.T) { + app := NewApp() + app.Action = func(c *Context) error { return nil } + app.Before = func(c *Context) error { return fmt.Errorf("before error") } + app.After = func(c *Context) error { return fmt.Errorf("after error") } + + err := app.Run([]string{"foo"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.Contains(err.Error(), "before error") { + t.Errorf("expected text of error from Before method, but got none in \"%v\"", err) + } + if !strings.Contains(err.Error(), "after error") { + t.Errorf("expected text of error from After method, but got none in \"%v\"", err) + } +} + +func TestApp_Run_SubcommandDoesNotOverwriteErrorFromBefore(t *testing.T) { + app := NewApp() + app.Commands = []Command{ + { + Subcommands: []Command{ + { + Name: "sub", + }, + }, + Name: "bar", + Before: func(c *Context) error { return fmt.Errorf("before error") }, + After: func(c *Context) error { return fmt.Errorf("after error") }, + }, + } + + err := app.Run([]string{"foo", "bar"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.Contains(err.Error(), "before error") { + t.Errorf("expected text of error from Before method, but got none in \"%v\"", err) + } + if !strings.Contains(err.Error(), "after error") { + t.Errorf("expected text of error from After method, but got none in \"%v\"", err) + } +} + +func TestApp_OnUsageError_WithWrongFlagValue(t *testing.T) { + app := NewApp() + app.Flags = []Flag{ + IntFlag{Name: "flag"}, + } + app.OnUsageError = func(c *Context, err error, isSubcommand bool) error { + if isSubcommand { + t.Errorf("Expect no subcommand") + } + if !strings.HasPrefix(err.Error(), "invalid value \"wrong\"") { + t.Errorf("Expect an invalid value error, but got \"%v\"", err) + } + return errors.New("intercepted: " + err.Error()) + } + app.Commands = []Command{ + { + Name: "bar", + }, + } + + err := app.Run([]string{"foo", "--flag=wrong"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.HasPrefix(err.Error(), "intercepted: invalid value") { + t.Errorf("Expect an intercepted error, but got \"%v\"", err) + } +} + +func TestApp_OnUsageError_WithWrongFlagValue_ForSubcommand(t *testing.T) { + app := NewApp() + app.Flags = []Flag{ + IntFlag{Name: "flag"}, + } + app.OnUsageError = func(c *Context, err error, isSubcommand bool) error { + if isSubcommand { + t.Errorf("Expect subcommand") + } + if !strings.HasPrefix(err.Error(), "invalid value \"wrong\"") { + t.Errorf("Expect an invalid value error, but got \"%v\"", err) + } + return errors.New("intercepted: " + err.Error()) + } + app.Commands = []Command{ + { + Name: "bar", + }, + } + + err := app.Run([]string{"foo", "--flag=wrong", "bar"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.HasPrefix(err.Error(), "intercepted: invalid value") { + t.Errorf("Expect an intercepted error, but got \"%v\"", err) + } +} + +// A custom flag that conforms to the relevant interfaces, but has none of the +// fields that the other flag types do. +type customBoolFlag struct { + Nombre string +} + +// Don't use the normal FlagStringer +func (c *customBoolFlag) String() string { + return "***" + c.Nombre + "***" +} + +func (c *customBoolFlag) GetName() string { + return c.Nombre +} + +func (c *customBoolFlag) Apply(set *flag.FlagSet) { + set.String(c.Nombre, c.Nombre, "") +} + +func TestCustomFlagsUnused(t *testing.T) { + app := NewApp() + app.Flags = []Flag{&customBoolFlag{"custom"}} + + err := app.Run([]string{"foo"}) + if err != nil { + t.Errorf("Run returned unexpected error: %v", err) + } +} + +func TestCustomFlagsUsed(t *testing.T) { + app := NewApp() + app.Flags = []Flag{&customBoolFlag{"custom"}} + + err := app.Run([]string{"foo", "--custom=bar"}) + if err != nil { + t.Errorf("Run returned unexpected error: %v", err) + } +} + +func TestCustomHelpVersionFlags(t *testing.T) { + app := NewApp() + + // Be sure to reset the global flags + defer func(helpFlag Flag, versionFlag Flag) { + HelpFlag = helpFlag + VersionFlag = versionFlag + }(HelpFlag, VersionFlag) + + HelpFlag = &customBoolFlag{"help-custom"} + VersionFlag = &customBoolFlag{"version-custom"} + + err := app.Run([]string{"foo", "--help-custom=bar"}) + if err != nil { + t.Errorf("Run returned unexpected error: %v", err) + } +} + +func TestHandleAction_WithNonFuncAction(t *testing.T) { + app := NewApp() + app.Action = 42 + fs, err := flagSet(app.Name, app.Flags) + if err != nil { + t.Errorf("error creating FlagSet: %s", err) + } + err = HandleAction(app.Action, NewContext(app, fs, nil)) + + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + exitErr, ok := err.(*ExitError) + + if !ok { + t.Fatalf("expected to receive a *ExitError") + } + + if !strings.HasPrefix(exitErr.Error(), "ERROR invalid Action type.") { + t.Fatalf("expected an unknown Action error, but got: %v", exitErr.Error()) + } + + if exitErr.ExitCode() != 2 { + t.Fatalf("expected error exit code to be 2, but got: %v", exitErr.ExitCode()) + } +} + +func TestHandleAction_WithInvalidFuncSignature(t *testing.T) { + app := NewApp() + app.Action = func() string { return "" } + fs, err := flagSet(app.Name, app.Flags) + if err != nil { + t.Errorf("error creating FlagSet: %s", err) + } + err = HandleAction(app.Action, NewContext(app, fs, nil)) + + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + exitErr, ok := err.(*ExitError) + + if !ok { + t.Fatalf("expected to receive a *ExitError") + } + + if !strings.HasPrefix(exitErr.Error(), "ERROR invalid Action type") { + t.Fatalf("expected an unknown Action error, but got: %v", exitErr.Error()) + } + + if exitErr.ExitCode() != 2 { + t.Fatalf("expected error exit code to be 2, but got: %v", exitErr.ExitCode()) + } +} + +func TestHandleAction_WithInvalidFuncReturnSignature(t *testing.T) { + app := NewApp() + app.Action = func(_ *Context) (int, error) { return 0, nil } + fs, err := flagSet(app.Name, app.Flags) + if err != nil { + t.Errorf("error creating FlagSet: %s", err) + } + err = HandleAction(app.Action, NewContext(app, fs, nil)) + + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + exitErr, ok := err.(*ExitError) + + if !ok { + t.Fatalf("expected to receive a *ExitError") + } + + if !strings.HasPrefix(exitErr.Error(), "ERROR invalid Action type") { + t.Fatalf("expected an invalid Action signature error, but got: %v", exitErr.Error()) + } + + if exitErr.ExitCode() != 2 { + t.Fatalf("expected error exit code to be 2, but got: %v", exitErr.ExitCode()) + } +} + +func TestHandleAction_WithUnknownPanic(t *testing.T) { + defer func() { refute(t, recover(), nil) }() + + var fn ActionFunc + + app := NewApp() + app.Action = func(ctx *Context) error { + fn(ctx) + return nil + } + fs, err := flagSet(app.Name, app.Flags) + if err != nil { + t.Errorf("error creating FlagSet: %s", err) + } + HandleAction(app.Action, NewContext(app, fs, nil)) +} + +func TestShellCompletionForIncompleteFlags(t *testing.T) { + app := NewApp() + app.Flags = []Flag{ + IntFlag{ + Name: "test-completion", + }, + } + app.EnableBashCompletion = true + app.BashComplete = func(ctx *Context) { + for _, command := range ctx.App.Commands { + if command.Hidden { + continue + } + + for _, name := range command.Names() { + fmt.Fprintln(ctx.App.Writer, name) + } + } + + for _, flag := range ctx.App.Flags { + for _, name := range strings.Split(flag.GetName(), ",") { + if name == BashCompletionFlag.GetName() { + continue + } + + switch name = strings.TrimSpace(name); len(name) { + case 0: + case 1: + fmt.Fprintln(ctx.App.Writer, "-"+name) + default: + fmt.Fprintln(ctx.App.Writer, "--"+name) + } + } + } + } + app.Action = func(ctx *Context) error { + return fmt.Errorf("should not get here") + } + err := app.Run([]string{"", "--test-completion", "--" + BashCompletionFlag.GetName()}) + if err != nil { + t.Errorf("app should not return an error: %s", err) + } +} + +func TestHandleActionActuallyWorksWithActions(t *testing.T) { + var f ActionFunc + called := false + f = func(c *Context) error { + called = true + return nil + } + + err := HandleAction(f, nil) + + if err != nil { + t.Errorf("Should not have errored: %v", err) + } + + if !called { + t.Errorf("Function was not called") + } +} diff --git a/vendor/github.com/codegangsta/cli/appveyor.yml b/vendor/github.com/codegangsta/cli/appveyor.yml new file mode 100644 index 0000000..1e1489c --- /dev/null +++ b/vendor/github.com/codegangsta/cli/appveyor.yml @@ -0,0 +1,26 @@ +version: "{build}" + +os: Windows Server 2016 + +image: Visual Studio 2017 + +clone_folder: c:\gopath\src\github.com\urfave\cli + +environment: + GOPATH: C:\gopath + GOVERSION: 1.8.x + PYTHON: C:\Python36-x64 + PYTHON_VERSION: 3.6.x + PYTHON_ARCH: 64 + +install: +- set PATH=%GOPATH%\bin;C:\go\bin;%PATH% +- go version +- go env +- go get github.com/urfave/gfmrun/... +- go get -v -t ./... + +build_script: +- python runtests vet +- python runtests test +- python runtests gfmrun diff --git a/vendor/github.com/codegangsta/cli/autocomplete/bash_autocomplete b/vendor/github.com/codegangsta/cli/autocomplete/bash_autocomplete new file mode 100755 index 0000000..37d9c14 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/autocomplete/bash_autocomplete @@ -0,0 +1,16 @@ +#! /bin/bash + +: ${PROG:=$(basename ${BASH_SOURCE})} + +_cli_bash_autocomplete() { + local cur opts base + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion ) + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 +} + +complete -F _cli_bash_autocomplete $PROG + +unset PROG diff --git a/vendor/github.com/codegangsta/cli/autocomplete/zsh_autocomplete b/vendor/github.com/codegangsta/cli/autocomplete/zsh_autocomplete new file mode 100644 index 0000000..5430a18 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/autocomplete/zsh_autocomplete @@ -0,0 +1,5 @@ +autoload -U compinit && compinit +autoload -U bashcompinit && bashcompinit + +script_dir=$(dirname $0) +source ${script_dir}/bash_autocomplete diff --git a/vendor/github.com/codegangsta/cli/category.go b/vendor/github.com/codegangsta/cli/category.go new file mode 100644 index 0000000..1a60550 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/category.go @@ -0,0 +1,44 @@ +package cli + +// CommandCategories is a slice of *CommandCategory. +type CommandCategories []*CommandCategory + +// CommandCategory is a category containing commands. +type CommandCategory struct { + Name string + Commands Commands +} + +func (c CommandCategories) Less(i, j int) bool { + return c[i].Name < c[j].Name +} + +func (c CommandCategories) Len() int { + return len(c) +} + +func (c CommandCategories) Swap(i, j int) { + c[i], c[j] = c[j], c[i] +} + +// AddCommand adds a command to a category. +func (c CommandCategories) AddCommand(category string, command Command) CommandCategories { + for _, commandCategory := range c { + if commandCategory.Name == category { + commandCategory.Commands = append(commandCategory.Commands, command) + return c + } + } + return append(c, &CommandCategory{Name: category, Commands: []Command{command}}) +} + +// VisibleCommands returns a slice of the Commands with Hidden=false +func (c *CommandCategory) VisibleCommands() []Command { + ret := []Command{} + for _, command := range c.Commands { + if !command.Hidden { + ret = append(ret, command) + } + } + return ret +} diff --git a/vendor/github.com/codegangsta/cli/cli.go b/vendor/github.com/codegangsta/cli/cli.go new file mode 100644 index 0000000..90c07eb --- /dev/null +++ b/vendor/github.com/codegangsta/cli/cli.go @@ -0,0 +1,22 @@ +// Package cli provides a minimal framework for creating and organizing command line +// Go applications. cli is designed to be easy to understand and write, the most simple +// cli application can be written as follows: +// func main() { +// cli.NewApp().Run(os.Args) +// } +// +// Of course this application does not do much, so let's make this an actual application: +// func main() { +// app := cli.NewApp() +// app.Name = "greet" +// app.Usage = "say a greeting" +// app.Action = func(c *cli.Context) error { +// println("Greetings") +// return nil +// } +// +// app.Run(os.Args) +// } +package cli + +//go:generate python ./generate-flag-types cli -i flag-types.json -o flag_generated.go diff --git a/vendor/github.com/codegangsta/cli/command.go b/vendor/github.com/codegangsta/cli/command.go new file mode 100644 index 0000000..23de294 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/command.go @@ -0,0 +1,304 @@ +package cli + +import ( + "fmt" + "io/ioutil" + "sort" + "strings" +) + +// Command is a subcommand for a cli.App. +type Command struct { + // The name of the command + Name string + // short name of the command. Typically one character (deprecated, use `Aliases`) + ShortName string + // A list of aliases for the command + Aliases []string + // A short description of the usage of this command + Usage string + // Custom text to show on USAGE section of help + UsageText string + // A longer explanation of how the command works + Description string + // A short description of the arguments of this command + ArgsUsage string + // The category the command is part of + Category string + // The function to call when checking for bash command completions + BashComplete BashCompleteFunc + // An action to execute before any sub-subcommands are run, but after the context is ready + // If a non-nil error is returned, no sub-subcommands are run + Before BeforeFunc + // An action to execute after any subcommands are run, but after the subcommand has finished + // It is run even if Action() panics + After AfterFunc + // The function to call when this command is invoked + Action interface{} + // TODO: replace `Action: interface{}` with `Action: ActionFunc` once some kind + // of deprecation period has passed, maybe? + + // Execute this function if a usage error occurs. + OnUsageError OnUsageErrorFunc + // List of child commands + Subcommands Commands + // List of flags to parse + Flags []Flag + // Treat all flags as normal arguments if true + SkipFlagParsing bool + // Skip argument reordering which attempts to move flags before arguments, + // but only works if all flags appear after all arguments. This behavior was + // removed n version 2 since it only works under specific conditions so we + // backport here by exposing it as an option for compatibility. + SkipArgReorder bool + // Boolean to hide built-in help command + HideHelp bool + // Boolean to hide this command from help or completion + Hidden bool + + // Full name of command for help, defaults to full command name, including parent commands. + HelpName string + commandNamePath []string + + // CustomHelpTemplate the text template for the command help topic. + // cli.go uses text/template to render templates. You can + // render custom help text by setting this variable. + CustomHelpTemplate string +} + +type CommandsByName []Command + +func (c CommandsByName) Len() int { + return len(c) +} + +func (c CommandsByName) Less(i, j int) bool { + return c[i].Name < c[j].Name +} + +func (c CommandsByName) Swap(i, j int) { + c[i], c[j] = c[j], c[i] +} + +// FullName returns the full name of the command. +// For subcommands this ensures that parent commands are part of the command path +func (c Command) FullName() string { + if c.commandNamePath == nil { + return c.Name + } + return strings.Join(c.commandNamePath, " ") +} + +// Commands is a slice of Command +type Commands []Command + +// Run invokes the command given the context, parses ctx.Args() to generate command-specific flags +func (c Command) Run(ctx *Context) (err error) { + if len(c.Subcommands) > 0 { + return c.startApp(ctx) + } + + if !c.HideHelp && (HelpFlag != BoolFlag{}) { + // append help to flags + c.Flags = append( + c.Flags, + HelpFlag, + ) + } + + set, err := flagSet(c.Name, c.Flags) + if err != nil { + return err + } + set.SetOutput(ioutil.Discard) + + if c.SkipFlagParsing { + err = set.Parse(append([]string{"--"}, ctx.Args().Tail()...)) + } else if !c.SkipArgReorder { + firstFlagIndex := -1 + terminatorIndex := -1 + for index, arg := range ctx.Args() { + if arg == "--" { + terminatorIndex = index + break + } else if arg == "-" { + // Do nothing. A dash alone is not really a flag. + continue + } else if strings.HasPrefix(arg, "-") && firstFlagIndex == -1 { + firstFlagIndex = index + } + } + + if firstFlagIndex > -1 { + args := ctx.Args() + regularArgs := make([]string, len(args[1:firstFlagIndex])) + copy(regularArgs, args[1:firstFlagIndex]) + + var flagArgs []string + if terminatorIndex > -1 { + flagArgs = args[firstFlagIndex:terminatorIndex] + regularArgs = append(regularArgs, args[terminatorIndex:]...) + } else { + flagArgs = args[firstFlagIndex:] + } + + err = set.Parse(append(flagArgs, regularArgs...)) + } else { + err = set.Parse(ctx.Args().Tail()) + } + } else { + err = set.Parse(ctx.Args().Tail()) + } + + nerr := normalizeFlags(c.Flags, set) + if nerr != nil { + fmt.Fprintln(ctx.App.Writer, nerr) + fmt.Fprintln(ctx.App.Writer) + ShowCommandHelp(ctx, c.Name) + return nerr + } + + context := NewContext(ctx.App, set, ctx) + context.Command = c + if checkCommandCompletions(context, c.Name) { + return nil + } + + if err != nil { + if c.OnUsageError != nil { + err := c.OnUsageError(context, err, false) + HandleExitCoder(err) + return err + } + fmt.Fprintln(context.App.Writer, "Incorrect Usage:", err.Error()) + fmt.Fprintln(context.App.Writer) + ShowCommandHelp(context, c.Name) + return err + } + + if checkCommandHelp(context, c.Name) { + return nil + } + + if c.After != nil { + defer func() { + afterErr := c.After(context) + if afterErr != nil { + HandleExitCoder(err) + if err != nil { + err = NewMultiError(err, afterErr) + } else { + err = afterErr + } + } + }() + } + + if c.Before != nil { + err = c.Before(context) + if err != nil { + ShowCommandHelp(context, c.Name) + HandleExitCoder(err) + return err + } + } + + if c.Action == nil { + c.Action = helpSubcommand.Action + } + + err = HandleAction(c.Action, context) + + if err != nil { + HandleExitCoder(err) + } + return err +} + +// Names returns the names including short names and aliases. +func (c Command) Names() []string { + names := []string{c.Name} + + if c.ShortName != "" { + names = append(names, c.ShortName) + } + + return append(names, c.Aliases...) +} + +// HasName returns true if Command.Name or Command.ShortName matches given name +func (c Command) HasName(name string) bool { + for _, n := range c.Names() { + if n == name { + return true + } + } + return false +} + +func (c Command) startApp(ctx *Context) error { + app := NewApp() + app.Metadata = ctx.App.Metadata + // set the name and usage + app.Name = fmt.Sprintf("%s %s", ctx.App.Name, c.Name) + if c.HelpName == "" { + app.HelpName = c.HelpName + } else { + app.HelpName = app.Name + } + + app.Usage = c.Usage + app.Description = c.Description + app.ArgsUsage = c.ArgsUsage + + // set CommandNotFound + app.CommandNotFound = ctx.App.CommandNotFound + app.CustomAppHelpTemplate = c.CustomHelpTemplate + + // set the flags and commands + app.Commands = c.Subcommands + app.Flags = c.Flags + app.HideHelp = c.HideHelp + + app.Version = ctx.App.Version + app.HideVersion = ctx.App.HideVersion + app.Compiled = ctx.App.Compiled + app.Author = ctx.App.Author + app.Email = ctx.App.Email + app.Writer = ctx.App.Writer + app.ErrWriter = ctx.App.ErrWriter + + app.categories = CommandCategories{} + for _, command := range c.Subcommands { + app.categories = app.categories.AddCommand(command.Category, command) + } + + sort.Sort(app.categories) + + // bash completion + app.EnableBashCompletion = ctx.App.EnableBashCompletion + if c.BashComplete != nil { + app.BashComplete = c.BashComplete + } + + // set the actions + app.Before = c.Before + app.After = c.After + if c.Action != nil { + app.Action = c.Action + } else { + app.Action = helpSubcommand.Action + } + app.OnUsageError = c.OnUsageError + + for index, cc := range app.Commands { + app.Commands[index].commandNamePath = []string{c.Name, cc.Name} + } + + return app.RunAsSubcommand(ctx) +} + +// VisibleFlags returns a slice of the Flags with Hidden=false +func (c Command) VisibleFlags() []Flag { + return visibleFlags(c.Flags) +} diff --git a/vendor/github.com/codegangsta/cli/command_test.go b/vendor/github.com/codegangsta/cli/command_test.go new file mode 100644 index 0000000..4ad994c --- /dev/null +++ b/vendor/github.com/codegangsta/cli/command_test.go @@ -0,0 +1,240 @@ +package cli + +import ( + "errors" + "flag" + "fmt" + "io/ioutil" + "strings" + "testing" +) + +func TestCommandFlagParsing(t *testing.T) { + cases := []struct { + testArgs []string + skipFlagParsing bool + skipArgReorder bool + expectedErr error + }{ + // Test normal "not ignoring flags" flow + {[]string{"test-cmd", "blah", "blah", "-break"}, false, false, errors.New("flag provided but not defined: -break")}, + + // Test no arg reorder + {[]string{"test-cmd", "blah", "blah", "-break"}, false, true, nil}, + + {[]string{"test-cmd", "blah", "blah"}, true, false, nil}, // Test SkipFlagParsing without any args that look like flags + {[]string{"test-cmd", "blah", "-break"}, true, false, nil}, // Test SkipFlagParsing with random flag arg + {[]string{"test-cmd", "blah", "-help"}, true, false, nil}, // Test SkipFlagParsing with "special" help flag arg + } + + for _, c := range cases { + app := NewApp() + app.Writer = ioutil.Discard + set := flag.NewFlagSet("test", 0) + set.Parse(c.testArgs) + + context := NewContext(app, set, nil) + + command := Command{ + Name: "test-cmd", + Aliases: []string{"tc"}, + Usage: "this is for testing", + Description: "testing", + Action: func(_ *Context) error { return nil }, + SkipFlagParsing: c.skipFlagParsing, + SkipArgReorder: c.skipArgReorder, + } + + err := command.Run(context) + + expect(t, err, c.expectedErr) + expect(t, []string(context.Args()), c.testArgs) + } +} + +func TestCommand_Run_DoesNotOverwriteErrorFromBefore(t *testing.T) { + app := NewApp() + app.Commands = []Command{ + { + Name: "bar", + Before: func(c *Context) error { + return fmt.Errorf("before error") + }, + After: func(c *Context) error { + return fmt.Errorf("after error") + }, + }, + } + + err := app.Run([]string{"foo", "bar"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.Contains(err.Error(), "before error") { + t.Errorf("expected text of error from Before method, but got none in \"%v\"", err) + } + if !strings.Contains(err.Error(), "after error") { + t.Errorf("expected text of error from After method, but got none in \"%v\"", err) + } +} + +func TestCommand_Run_BeforeSavesMetadata(t *testing.T) { + var receivedMsgFromAction string + var receivedMsgFromAfter string + + app := NewApp() + app.Commands = []Command{ + { + Name: "bar", + Before: func(c *Context) error { + c.App.Metadata["msg"] = "hello world" + return nil + }, + Action: func(c *Context) error { + msg, ok := c.App.Metadata["msg"] + if !ok { + return errors.New("msg not found") + } + receivedMsgFromAction = msg.(string) + return nil + }, + After: func(c *Context) error { + msg, ok := c.App.Metadata["msg"] + if !ok { + return errors.New("msg not found") + } + receivedMsgFromAfter = msg.(string) + return nil + }, + }, + } + + err := app.Run([]string{"foo", "bar"}) + if err != nil { + t.Fatalf("expected no error from Run, got %s", err) + } + + expectedMsg := "hello world" + + if receivedMsgFromAction != expectedMsg { + t.Fatalf("expected msg from Action to match. Given: %q\nExpected: %q", + receivedMsgFromAction, expectedMsg) + } + if receivedMsgFromAfter != expectedMsg { + t.Fatalf("expected msg from After to match. Given: %q\nExpected: %q", + receivedMsgFromAction, expectedMsg) + } +} + +func TestCommand_OnUsageError_hasCommandContext(t *testing.T) { + app := NewApp() + app.Commands = []Command{ + { + Name: "bar", + Flags: []Flag{ + IntFlag{Name: "flag"}, + }, + OnUsageError: func(c *Context, err error, _ bool) error { + return fmt.Errorf("intercepted in %s: %s", c.Command.Name, err.Error()) + }, + }, + } + + err := app.Run([]string{"foo", "bar", "--flag=wrong"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.HasPrefix(err.Error(), "intercepted in bar") { + t.Errorf("Expect an intercepted error, but got \"%v\"", err) + } +} + +func TestCommand_OnUsageError_WithWrongFlagValue(t *testing.T) { + app := NewApp() + app.Commands = []Command{ + { + Name: "bar", + Flags: []Flag{ + IntFlag{Name: "flag"}, + }, + OnUsageError: func(c *Context, err error, _ bool) error { + if !strings.HasPrefix(err.Error(), "invalid value \"wrong\"") { + t.Errorf("Expect an invalid value error, but got \"%v\"", err) + } + return errors.New("intercepted: " + err.Error()) + }, + }, + } + + err := app.Run([]string{"foo", "bar", "--flag=wrong"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.HasPrefix(err.Error(), "intercepted: invalid value") { + t.Errorf("Expect an intercepted error, but got \"%v\"", err) + } +} + +func TestCommand_OnUsageError_WithSubcommand(t *testing.T) { + app := NewApp() + app.Commands = []Command{ + { + Name: "bar", + Subcommands: []Command{ + { + Name: "baz", + }, + }, + Flags: []Flag{ + IntFlag{Name: "flag"}, + }, + OnUsageError: func(c *Context, err error, _ bool) error { + if !strings.HasPrefix(err.Error(), "invalid value \"wrong\"") { + t.Errorf("Expect an invalid value error, but got \"%v\"", err) + } + return errors.New("intercepted: " + err.Error()) + }, + }, + } + + err := app.Run([]string{"foo", "bar", "--flag=wrong"}) + if err == nil { + t.Fatalf("expected to receive error from Run, got none") + } + + if !strings.HasPrefix(err.Error(), "intercepted: invalid value") { + t.Errorf("Expect an intercepted error, but got \"%v\"", err) + } +} + +func TestCommand_Run_SubcommandsCanUseErrWriter(t *testing.T) { + app := NewApp() + app.ErrWriter = ioutil.Discard + app.Commands = []Command{ + { + Name: "bar", + Usage: "this is for testing", + Subcommands: []Command{ + { + Name: "baz", + Usage: "this is for testing", + Action: func(c *Context) error { + if c.App.ErrWriter != ioutil.Discard { + return fmt.Errorf("ErrWriter not passed") + } + + return nil + }, + }, + }, + }, + } + + err := app.Run([]string{"foo", "bar", "baz"}) + if err != nil { + t.Fatal(err) + } +} diff --git a/vendor/github.com/codegangsta/cli/context.go b/vendor/github.com/codegangsta/cli/context.go new file mode 100644 index 0000000..db94191 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/context.go @@ -0,0 +1,278 @@ +package cli + +import ( + "errors" + "flag" + "reflect" + "strings" + "syscall" +) + +// Context is a type that is passed through to +// each Handler action in a cli application. Context +// can be used to retrieve context-specific Args and +// parsed command-line options. +type Context struct { + App *App + Command Command + shellComplete bool + flagSet *flag.FlagSet + setFlags map[string]bool + parentContext *Context +} + +// NewContext creates a new context. For use in when invoking an App or Command action. +func NewContext(app *App, set *flag.FlagSet, parentCtx *Context) *Context { + c := &Context{App: app, flagSet: set, parentContext: parentCtx} + + if parentCtx != nil { + c.shellComplete = parentCtx.shellComplete + } + + return c +} + +// NumFlags returns the number of flags set +func (c *Context) NumFlags() int { + return c.flagSet.NFlag() +} + +// Set sets a context flag to a value. +func (c *Context) Set(name, value string) error { + c.setFlags = nil + return c.flagSet.Set(name, value) +} + +// GlobalSet sets a context flag to a value on the global flagset +func (c *Context) GlobalSet(name, value string) error { + globalContext(c).setFlags = nil + return globalContext(c).flagSet.Set(name, value) +} + +// IsSet determines if the flag was actually set +func (c *Context) IsSet(name string) bool { + if c.setFlags == nil { + c.setFlags = make(map[string]bool) + + c.flagSet.Visit(func(f *flag.Flag) { + c.setFlags[f.Name] = true + }) + + c.flagSet.VisitAll(func(f *flag.Flag) { + if _, ok := c.setFlags[f.Name]; ok { + return + } + c.setFlags[f.Name] = false + }) + + // XXX hack to support IsSet for flags with EnvVar + // + // There isn't an easy way to do this with the current implementation since + // whether a flag was set via an environment variable is very difficult to + // determine here. Instead, we intend to introduce a backwards incompatible + // change in version 2 to add `IsSet` to the Flag interface to push the + // responsibility closer to where the information required to determine + // whether a flag is set by non-standard means such as environment + // variables is avaliable. + // + // See https://github.com/urfave/cli/issues/294 for additional discussion + flags := c.Command.Flags + if c.Command.Name == "" { // cannot == Command{} since it contains slice types + if c.App != nil { + flags = c.App.Flags + } + } + for _, f := range flags { + eachName(f.GetName(), func(name string) { + if isSet, ok := c.setFlags[name]; isSet || !ok { + return + } + + val := reflect.ValueOf(f) + if val.Kind() == reflect.Ptr { + val = val.Elem() + } + + envVarValue := val.FieldByName("EnvVar") + if !envVarValue.IsValid() { + return + } + + eachName(envVarValue.String(), func(envVar string) { + envVar = strings.TrimSpace(envVar) + if _, ok := syscall.Getenv(envVar); ok { + c.setFlags[name] = true + return + } + }) + }) + } + } + + return c.setFlags[name] +} + +// GlobalIsSet determines if the global flag was actually set +func (c *Context) GlobalIsSet(name string) bool { + ctx := c + if ctx.parentContext != nil { + ctx = ctx.parentContext + } + + for ; ctx != nil; ctx = ctx.parentContext { + if ctx.IsSet(name) { + return true + } + } + return false +} + +// FlagNames returns a slice of flag names used in this context. +func (c *Context) FlagNames() (names []string) { + for _, flag := range c.Command.Flags { + name := strings.Split(flag.GetName(), ",")[0] + if name == "help" { + continue + } + names = append(names, name) + } + return +} + +// GlobalFlagNames returns a slice of global flag names used by the app. +func (c *Context) GlobalFlagNames() (names []string) { + for _, flag := range c.App.Flags { + name := strings.Split(flag.GetName(), ",")[0] + if name == "help" || name == "version" { + continue + } + names = append(names, name) + } + return +} + +// Parent returns the parent context, if any +func (c *Context) Parent() *Context { + return c.parentContext +} + +// value returns the value of the flag coressponding to `name` +func (c *Context) value(name string) interface{} { + return c.flagSet.Lookup(name).Value.(flag.Getter).Get() +} + +// Args contains apps console arguments +type Args []string + +// Args returns the command line arguments associated with the context. +func (c *Context) Args() Args { + args := Args(c.flagSet.Args()) + return args +} + +// NArg returns the number of the command line arguments. +func (c *Context) NArg() int { + return len(c.Args()) +} + +// Get returns the nth argument, or else a blank string +func (a Args) Get(n int) string { + if len(a) > n { + return a[n] + } + return "" +} + +// First returns the first argument, or else a blank string +func (a Args) First() string { + return a.Get(0) +} + +// Tail returns the rest of the arguments (not the first one) +// or else an empty string slice +func (a Args) Tail() []string { + if len(a) >= 2 { + return []string(a)[1:] + } + return []string{} +} + +// Present checks if there are any arguments present +func (a Args) Present() bool { + return len(a) != 0 +} + +// Swap swaps arguments at the given indexes +func (a Args) Swap(from, to int) error { + if from >= len(a) || to >= len(a) { + return errors.New("index out of range") + } + a[from], a[to] = a[to], a[from] + return nil +} + +func globalContext(ctx *Context) *Context { + if ctx == nil { + return nil + } + + for { + if ctx.parentContext == nil { + return ctx + } + ctx = ctx.parentContext + } +} + +func lookupGlobalFlagSet(name string, ctx *Context) *flag.FlagSet { + if ctx.parentContext != nil { + ctx = ctx.parentContext + } + for ; ctx != nil; ctx = ctx.parentContext { + if f := ctx.flagSet.Lookup(name); f != nil { + return ctx.flagSet + } + } + return nil +} + +func copyFlag(name string, ff *flag.Flag, set *flag.FlagSet) { + switch ff.Value.(type) { + case *StringSlice: + default: + set.Set(name, ff.Value.String()) + } +} + +func normalizeFlags(flags []Flag, set *flag.FlagSet) error { + visited := make(map[string]bool) + set.Visit(func(f *flag.Flag) { + visited[f.Name] = true + }) + for _, f := range flags { + parts := strings.Split(f.GetName(), ",") + if len(parts) == 1 { + continue + } + var ff *flag.Flag + for _, name := range parts { + name = strings.Trim(name, " ") + if visited[name] { + if ff != nil { + return errors.New("Cannot use two forms of the same flag: " + name + " " + ff.Name) + } + ff = set.Lookup(name) + } + } + if ff == nil { + continue + } + for _, name := range parts { + name = strings.Trim(name, " ") + if !visited[name] { + copyFlag(name, ff, set) + } + } + } + return nil +} diff --git a/vendor/github.com/codegangsta/cli/context_test.go b/vendor/github.com/codegangsta/cli/context_test.go new file mode 100644 index 0000000..7acca10 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/context_test.go @@ -0,0 +1,403 @@ +package cli + +import ( + "flag" + "os" + "testing" + "time" +) + +func TestNewContext(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Int("myflag", 12, "doc") + set.Int64("myflagInt64", int64(12), "doc") + set.Uint("myflagUint", uint(93), "doc") + set.Uint64("myflagUint64", uint64(93), "doc") + set.Float64("myflag64", float64(17), "doc") + globalSet := flag.NewFlagSet("test", 0) + globalSet.Int("myflag", 42, "doc") + globalSet.Int64("myflagInt64", int64(42), "doc") + globalSet.Uint("myflagUint", uint(33), "doc") + globalSet.Uint64("myflagUint64", uint64(33), "doc") + globalSet.Float64("myflag64", float64(47), "doc") + globalCtx := NewContext(nil, globalSet, nil) + command := Command{Name: "mycommand"} + c := NewContext(nil, set, globalCtx) + c.Command = command + expect(t, c.Int("myflag"), 12) + expect(t, c.Int64("myflagInt64"), int64(12)) + expect(t, c.Uint("myflagUint"), uint(93)) + expect(t, c.Uint64("myflagUint64"), uint64(93)) + expect(t, c.Float64("myflag64"), float64(17)) + expect(t, c.GlobalInt("myflag"), 42) + expect(t, c.GlobalInt64("myflagInt64"), int64(42)) + expect(t, c.GlobalUint("myflagUint"), uint(33)) + expect(t, c.GlobalUint64("myflagUint64"), uint64(33)) + expect(t, c.GlobalFloat64("myflag64"), float64(47)) + expect(t, c.Command.Name, "mycommand") +} + +func TestContext_Int(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Int("myflag", 12, "doc") + c := NewContext(nil, set, nil) + expect(t, c.Int("myflag"), 12) +} + +func TestContext_Int64(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Int64("myflagInt64", 12, "doc") + c := NewContext(nil, set, nil) + expect(t, c.Int64("myflagInt64"), int64(12)) +} + +func TestContext_Uint(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Uint("myflagUint", uint(13), "doc") + c := NewContext(nil, set, nil) + expect(t, c.Uint("myflagUint"), uint(13)) +} + +func TestContext_Uint64(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Uint64("myflagUint64", uint64(9), "doc") + c := NewContext(nil, set, nil) + expect(t, c.Uint64("myflagUint64"), uint64(9)) +} + +func TestContext_GlobalInt(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Int("myflag", 12, "doc") + c := NewContext(nil, set, nil) + expect(t, c.GlobalInt("myflag"), 12) + expect(t, c.GlobalInt("nope"), 0) +} + +func TestContext_GlobalInt64(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Int64("myflagInt64", 12, "doc") + c := NewContext(nil, set, nil) + expect(t, c.GlobalInt64("myflagInt64"), int64(12)) + expect(t, c.GlobalInt64("nope"), int64(0)) +} + +func TestContext_Float64(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Float64("myflag", float64(17), "doc") + c := NewContext(nil, set, nil) + expect(t, c.Float64("myflag"), float64(17)) +} + +func TestContext_GlobalFloat64(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Float64("myflag", float64(17), "doc") + c := NewContext(nil, set, nil) + expect(t, c.GlobalFloat64("myflag"), float64(17)) + expect(t, c.GlobalFloat64("nope"), float64(0)) +} + +func TestContext_Duration(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Duration("myflag", time.Duration(12*time.Second), "doc") + c := NewContext(nil, set, nil) + expect(t, c.Duration("myflag"), time.Duration(12*time.Second)) +} + +func TestContext_String(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.String("myflag", "hello world", "doc") + c := NewContext(nil, set, nil) + expect(t, c.String("myflag"), "hello world") +} + +func TestContext_Bool(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", false, "doc") + c := NewContext(nil, set, nil) + expect(t, c.Bool("myflag"), false) +} + +func TestContext_BoolT(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", true, "doc") + c := NewContext(nil, set, nil) + expect(t, c.BoolT("myflag"), true) +} + +func TestContext_GlobalBool(t *testing.T) { + set := flag.NewFlagSet("test", 0) + + globalSet := flag.NewFlagSet("test-global", 0) + globalSet.Bool("myflag", false, "doc") + globalCtx := NewContext(nil, globalSet, nil) + + c := NewContext(nil, set, globalCtx) + expect(t, c.GlobalBool("myflag"), false) + expect(t, c.GlobalBool("nope"), false) +} + +func TestContext_GlobalBoolT(t *testing.T) { + set := flag.NewFlagSet("test", 0) + + globalSet := flag.NewFlagSet("test-global", 0) + globalSet.Bool("myflag", true, "doc") + globalCtx := NewContext(nil, globalSet, nil) + + c := NewContext(nil, set, globalCtx) + expect(t, c.GlobalBoolT("myflag"), true) + expect(t, c.GlobalBoolT("nope"), false) +} + +func TestContext_Args(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", false, "doc") + c := NewContext(nil, set, nil) + set.Parse([]string{"--myflag", "bat", "baz"}) + expect(t, len(c.Args()), 2) + expect(t, c.Bool("myflag"), true) +} + +func TestContext_NArg(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", false, "doc") + c := NewContext(nil, set, nil) + set.Parse([]string{"--myflag", "bat", "baz"}) + expect(t, c.NArg(), 2) +} + +func TestContext_IsSet(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", false, "doc") + set.String("otherflag", "hello world", "doc") + globalSet := flag.NewFlagSet("test", 0) + globalSet.Bool("myflagGlobal", true, "doc") + globalCtx := NewContext(nil, globalSet, nil) + c := NewContext(nil, set, globalCtx) + set.Parse([]string{"--myflag", "bat", "baz"}) + globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"}) + expect(t, c.IsSet("myflag"), true) + expect(t, c.IsSet("otherflag"), false) + expect(t, c.IsSet("bogusflag"), false) + expect(t, c.IsSet("myflagGlobal"), false) +} + +// XXX Corresponds to hack in context.IsSet for flags with EnvVar field +// Should be moved to `flag_test` in v2 +func TestContext_IsSet_fromEnv(t *testing.T) { + var ( + timeoutIsSet, tIsSet bool + noEnvVarIsSet, nIsSet bool + passwordIsSet, pIsSet bool + unparsableIsSet, uIsSet bool + ) + + clearenv() + os.Setenv("APP_TIMEOUT_SECONDS", "15.5") + os.Setenv("APP_PASSWORD", "") + a := App{ + Flags: []Flag{ + Float64Flag{Name: "timeout, t", EnvVar: "APP_TIMEOUT_SECONDS"}, + StringFlag{Name: "password, p", EnvVar: "APP_PASSWORD"}, + Float64Flag{Name: "unparsable, u", EnvVar: "APP_UNPARSABLE"}, + Float64Flag{Name: "no-env-var, n"}, + }, + Action: func(ctx *Context) error { + timeoutIsSet = ctx.IsSet("timeout") + tIsSet = ctx.IsSet("t") + passwordIsSet = ctx.IsSet("password") + pIsSet = ctx.IsSet("p") + unparsableIsSet = ctx.IsSet("unparsable") + uIsSet = ctx.IsSet("u") + noEnvVarIsSet = ctx.IsSet("no-env-var") + nIsSet = ctx.IsSet("n") + return nil + }, + } + a.Run([]string{"run"}) + expect(t, timeoutIsSet, true) + expect(t, tIsSet, true) + expect(t, passwordIsSet, true) + expect(t, pIsSet, true) + expect(t, noEnvVarIsSet, false) + expect(t, nIsSet, false) + + os.Setenv("APP_UNPARSABLE", "foobar") + a.Run([]string{"run"}) + expect(t, unparsableIsSet, false) + expect(t, uIsSet, false) +} + +func TestContext_GlobalIsSet(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", false, "doc") + set.String("otherflag", "hello world", "doc") + globalSet := flag.NewFlagSet("test", 0) + globalSet.Bool("myflagGlobal", true, "doc") + globalSet.Bool("myflagGlobalUnset", true, "doc") + globalCtx := NewContext(nil, globalSet, nil) + c := NewContext(nil, set, globalCtx) + set.Parse([]string{"--myflag", "bat", "baz"}) + globalSet.Parse([]string{"--myflagGlobal", "bat", "baz"}) + expect(t, c.GlobalIsSet("myflag"), false) + expect(t, c.GlobalIsSet("otherflag"), false) + expect(t, c.GlobalIsSet("bogusflag"), false) + expect(t, c.GlobalIsSet("myflagGlobal"), true) + expect(t, c.GlobalIsSet("myflagGlobalUnset"), false) + expect(t, c.GlobalIsSet("bogusGlobal"), false) +} + +// XXX Corresponds to hack in context.IsSet for flags with EnvVar field +// Should be moved to `flag_test` in v2 +func TestContext_GlobalIsSet_fromEnv(t *testing.T) { + var ( + timeoutIsSet, tIsSet bool + noEnvVarIsSet, nIsSet bool + passwordIsSet, pIsSet bool + unparsableIsSet, uIsSet bool + ) + + clearenv() + os.Setenv("APP_TIMEOUT_SECONDS", "15.5") + os.Setenv("APP_PASSWORD", "") + a := App{ + Flags: []Flag{ + Float64Flag{Name: "timeout, t", EnvVar: "APP_TIMEOUT_SECONDS"}, + StringFlag{Name: "password, p", EnvVar: "APP_PASSWORD"}, + Float64Flag{Name: "no-env-var, n"}, + Float64Flag{Name: "unparsable, u", EnvVar: "APP_UNPARSABLE"}, + }, + Commands: []Command{ + { + Name: "hello", + Action: func(ctx *Context) error { + timeoutIsSet = ctx.GlobalIsSet("timeout") + tIsSet = ctx.GlobalIsSet("t") + passwordIsSet = ctx.GlobalIsSet("password") + pIsSet = ctx.GlobalIsSet("p") + unparsableIsSet = ctx.GlobalIsSet("unparsable") + uIsSet = ctx.GlobalIsSet("u") + noEnvVarIsSet = ctx.GlobalIsSet("no-env-var") + nIsSet = ctx.GlobalIsSet("n") + return nil + }, + }, + }, + } + if err := a.Run([]string{"run", "hello"}); err != nil { + t.Logf("error running Run(): %+v", err) + } + expect(t, timeoutIsSet, true) + expect(t, tIsSet, true) + expect(t, passwordIsSet, true) + expect(t, pIsSet, true) + expect(t, noEnvVarIsSet, false) + expect(t, nIsSet, false) + + os.Setenv("APP_UNPARSABLE", "foobar") + if err := a.Run([]string{"run"}); err != nil { + t.Logf("error running Run(): %+v", err) + } + expect(t, unparsableIsSet, false) + expect(t, uIsSet, false) +} + +func TestContext_NumFlags(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Bool("myflag", false, "doc") + set.String("otherflag", "hello world", "doc") + globalSet := flag.NewFlagSet("test", 0) + globalSet.Bool("myflagGlobal", true, "doc") + globalCtx := NewContext(nil, globalSet, nil) + c := NewContext(nil, set, globalCtx) + set.Parse([]string{"--myflag", "--otherflag=foo"}) + globalSet.Parse([]string{"--myflagGlobal"}) + expect(t, c.NumFlags(), 2) +} + +func TestContext_GlobalFlag(t *testing.T) { + var globalFlag string + var globalFlagSet bool + app := NewApp() + app.Flags = []Flag{ + StringFlag{Name: "global, g", Usage: "global"}, + } + app.Action = func(c *Context) error { + globalFlag = c.GlobalString("global") + globalFlagSet = c.GlobalIsSet("global") + return nil + } + app.Run([]string{"command", "-g", "foo"}) + expect(t, globalFlag, "foo") + expect(t, globalFlagSet, true) + +} + +func TestContext_GlobalFlagsInSubcommands(t *testing.T) { + subcommandRun := false + parentFlag := false + app := NewApp() + + app.Flags = []Flag{ + BoolFlag{Name: "debug, d", Usage: "Enable debugging"}, + } + + app.Commands = []Command{ + { + Name: "foo", + Flags: []Flag{ + BoolFlag{Name: "parent, p", Usage: "Parent flag"}, + }, + Subcommands: []Command{ + { + Name: "bar", + Action: func(c *Context) error { + if c.GlobalBool("debug") { + subcommandRun = true + } + if c.GlobalBool("parent") { + parentFlag = true + } + return nil + }, + }, + }, + }, + } + + app.Run([]string{"command", "-d", "foo", "-p", "bar"}) + + expect(t, subcommandRun, true) + expect(t, parentFlag, true) +} + +func TestContext_Set(t *testing.T) { + set := flag.NewFlagSet("test", 0) + set.Int("int", 5, "an int") + c := NewContext(nil, set, nil) + + expect(t, c.IsSet("int"), false) + c.Set("int", "1") + expect(t, c.Int("int"), 1) + expect(t, c.IsSet("int"), true) +} + +func TestContext_GlobalSet(t *testing.T) { + gSet := flag.NewFlagSet("test", 0) + gSet.Int("int", 5, "an int") + + set := flag.NewFlagSet("sub", 0) + set.Int("int", 3, "an int") + + pc := NewContext(nil, gSet, nil) + c := NewContext(nil, set, pc) + + c.Set("int", "1") + expect(t, c.Int("int"), 1) + expect(t, c.GlobalInt("int"), 5) + + expect(t, c.GlobalIsSet("int"), false) + c.GlobalSet("int", "1") + expect(t, c.Int("int"), 1) + expect(t, c.GlobalInt("int"), 1) + expect(t, c.GlobalIsSet("int"), true) +} diff --git a/vendor/github.com/codegangsta/cli/errors.go b/vendor/github.com/codegangsta/cli/errors.go new file mode 100644 index 0000000..562b295 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/errors.go @@ -0,0 +1,115 @@ +package cli + +import ( + "fmt" + "io" + "os" + "strings" +) + +// OsExiter is the function used when the app exits. If not set defaults to os.Exit. +var OsExiter = os.Exit + +// ErrWriter is used to write errors to the user. This can be anything +// implementing the io.Writer interface and defaults to os.Stderr. +var ErrWriter io.Writer = os.Stderr + +// MultiError is an error that wraps multiple errors. +type MultiError struct { + Errors []error +} + +// NewMultiError creates a new MultiError. Pass in one or more errors. +func NewMultiError(err ...error) MultiError { + return MultiError{Errors: err} +} + +// Error implements the error interface. +func (m MultiError) Error() string { + errs := make([]string, len(m.Errors)) + for i, err := range m.Errors { + errs[i] = err.Error() + } + + return strings.Join(errs, "\n") +} + +type ErrorFormatter interface { + Format(s fmt.State, verb rune) +} + +// ExitCoder is the interface checked by `App` and `Command` for a custom exit +// code +type ExitCoder interface { + error + ExitCode() int +} + +// ExitError fulfills both the builtin `error` interface and `ExitCoder` +type ExitError struct { + exitCode int + message interface{} +} + +// NewExitError makes a new *ExitError +func NewExitError(message interface{}, exitCode int) *ExitError { + return &ExitError{ + exitCode: exitCode, + message: message, + } +} + +// Error returns the string message, fulfilling the interface required by +// `error` +func (ee *ExitError) Error() string { + return fmt.Sprintf("%v", ee.message) +} + +// ExitCode returns the exit code, fulfilling the interface required by +// `ExitCoder` +func (ee *ExitError) ExitCode() int { + return ee.exitCode +} + +// HandleExitCoder checks if the error fulfills the ExitCoder interface, and if +// so prints the error to stderr (if it is non-empty) and calls OsExiter with the +// given exit code. If the given error is a MultiError, then this func is +// called on all members of the Errors slice and calls OsExiter with the last exit code. +func HandleExitCoder(err error) { + if err == nil { + return + } + + if exitErr, ok := err.(ExitCoder); ok { + if err.Error() != "" { + if _, ok := exitErr.(ErrorFormatter); ok { + fmt.Fprintf(ErrWriter, "%+v\n", err) + } else { + fmt.Fprintln(ErrWriter, err) + } + } + OsExiter(exitErr.ExitCode()) + return + } + + if multiErr, ok := err.(MultiError); ok { + code := handleMultiError(multiErr) + OsExiter(code) + return + } +} + +func handleMultiError(multiErr MultiError) int { + code := 1 + for _, merr := range multiErr.Errors { + if multiErr2, ok := merr.(MultiError); ok { + code = handleMultiError(multiErr2) + } else { + fmt.Fprintln(ErrWriter, merr) + if exitErr, ok := merr.(ExitCoder); ok { + code = exitErr.ExitCode() + } + } + } + return code +} diff --git a/vendor/github.com/codegangsta/cli/errors_test.go b/vendor/github.com/codegangsta/cli/errors_test.go new file mode 100644 index 0000000..9b609c5 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/errors_test.go @@ -0,0 +1,122 @@ +package cli + +import ( + "bytes" + "errors" + "fmt" + "testing" +) + +func TestHandleExitCoder_nil(t *testing.T) { + exitCode := 0 + called := false + + OsExiter = func(rc int) { + if !called { + exitCode = rc + called = true + } + } + + defer func() { OsExiter = fakeOsExiter }() + + HandleExitCoder(nil) + + expect(t, exitCode, 0) + expect(t, called, false) +} + +func TestHandleExitCoder_ExitCoder(t *testing.T) { + exitCode := 0 + called := false + + OsExiter = func(rc int) { + if !called { + exitCode = rc + called = true + } + } + + defer func() { OsExiter = fakeOsExiter }() + + HandleExitCoder(NewExitError("galactic perimeter breach", 9)) + + expect(t, exitCode, 9) + expect(t, called, true) +} + +func TestHandleExitCoder_MultiErrorWithExitCoder(t *testing.T) { + exitCode := 0 + called := false + + OsExiter = func(rc int) { + if !called { + exitCode = rc + called = true + } + } + + defer func() { OsExiter = fakeOsExiter }() + + exitErr := NewExitError("galactic perimeter breach", 9) + exitErr2 := NewExitError("last ExitCoder", 11) + err := NewMultiError(errors.New("wowsa"), errors.New("egad"), exitErr, exitErr2) + HandleExitCoder(err) + + expect(t, exitCode, 11) + expect(t, called, true) +} + +// make a stub to not import pkg/errors +type ErrorWithFormat struct { + error +} + +func NewErrorWithFormat(m string) *ErrorWithFormat { + return &ErrorWithFormat{error: errors.New(m)} +} + +func (f *ErrorWithFormat) Format(s fmt.State, verb rune) { + fmt.Fprintf(s, "This the format: %v", f.error) +} + +func TestHandleExitCoder_ErrorWithFormat(t *testing.T) { + called := false + + OsExiter = func(rc int) { + if !called { + called = true + } + } + ErrWriter = &bytes.Buffer{} + + defer func() { + OsExiter = fakeOsExiter + ErrWriter = fakeErrWriter + }() + + err := NewExitError(NewErrorWithFormat("I am formatted"), 1) + HandleExitCoder(err) + + expect(t, called, true) + expect(t, ErrWriter.(*bytes.Buffer).String(), "This the format: I am formatted\n") +} + +func TestHandleExitCoder_MultiErrorWithFormat(t *testing.T) { + called := false + + OsExiter = func(rc int) { + if !called { + called = true + } + } + ErrWriter = &bytes.Buffer{} + + defer func() { OsExiter = fakeOsExiter }() + + err := NewMultiError(NewErrorWithFormat("err1"), NewErrorWithFormat("err2")) + HandleExitCoder(err) + + expect(t, called, true) + expect(t, ErrWriter.(*bytes.Buffer).String(), "This the format: err1\nThis the format: err2\n") +} diff --git a/vendor/github.com/codegangsta/cli/flag-types.json b/vendor/github.com/codegangsta/cli/flag-types.json new file mode 100644 index 0000000..1223107 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/flag-types.json @@ -0,0 +1,93 @@ +[ + { + "name": "Bool", + "type": "bool", + "value": false, + "context_default": "false", + "parser": "strconv.ParseBool(f.Value.String())" + }, + { + "name": "BoolT", + "type": "bool", + "value": false, + "doctail": " that is true by default", + "context_default": "false", + "parser": "strconv.ParseBool(f.Value.String())" + }, + { + "name": "Duration", + "type": "time.Duration", + "doctail": " (see https://golang.org/pkg/time/#ParseDuration)", + "context_default": "0", + "parser": "time.ParseDuration(f.Value.String())" + }, + { + "name": "Float64", + "type": "float64", + "context_default": "0", + "parser": "strconv.ParseFloat(f.Value.String(), 64)" + }, + { + "name": "Generic", + "type": "Generic", + "dest": false, + "context_default": "nil", + "context_type": "interface{}" + }, + { + "name": "Int64", + "type": "int64", + "context_default": "0", + "parser": "strconv.ParseInt(f.Value.String(), 0, 64)" + }, + { + "name": "Int", + "type": "int", + "context_default": "0", + "parser": "strconv.ParseInt(f.Value.String(), 0, 64)", + "parser_cast": "int(parsed)" + }, + { + "name": "IntSlice", + "type": "*IntSlice", + "dest": false, + "context_default": "nil", + "context_type": "[]int", + "parser": "(f.Value.(*IntSlice)).Value(), error(nil)" + }, + { + "name": "Int64Slice", + "type": "*Int64Slice", + "dest": false, + "context_default": "nil", + "context_type": "[]int64", + "parser": "(f.Value.(*Int64Slice)).Value(), error(nil)" + }, + { + "name": "String", + "type": "string", + "context_default": "\"\"", + "parser": "f.Value.String(), error(nil)" + }, + { + "name": "StringSlice", + "type": "*StringSlice", + "dest": false, + "context_default": "nil", + "context_type": "[]string", + "parser": "(f.Value.(*StringSlice)).Value(), error(nil)" + }, + { + "name": "Uint64", + "type": "uint64", + "context_default": "0", + "parser": "strconv.ParseUint(f.Value.String(), 0, 64)" + }, + { + "name": "Uint", + "type": "uint", + "context_default": "0", + "parser": "strconv.ParseUint(f.Value.String(), 0, 64)", + "parser_cast": "uint(parsed)" + } +] diff --git a/vendor/github.com/codegangsta/cli/flag.go b/vendor/github.com/codegangsta/cli/flag.go new file mode 100644 index 0000000..877ff35 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/flag.go @@ -0,0 +1,799 @@ +package cli + +import ( + "flag" + "fmt" + "reflect" + "runtime" + "strconv" + "strings" + "syscall" + "time" +) + +const defaultPlaceholder = "value" + +// BashCompletionFlag enables bash-completion for all commands and subcommands +var BashCompletionFlag Flag = BoolFlag{ + Name: "generate-bash-completion", + Hidden: true, +} + +// VersionFlag prints the version for the application +var VersionFlag Flag = BoolFlag{ + Name: "version, v", + Usage: "print the version", +} + +// HelpFlag prints the help for all commands and subcommands +// Set to the zero value (BoolFlag{}) to disable flag -- keeps subcommand +// unless HideHelp is set to true) +var HelpFlag Flag = BoolFlag{ + Name: "help, h", + Usage: "show help", +} + +// FlagStringer converts a flag definition to a string. This is used by help +// to display a flag. +var FlagStringer FlagStringFunc = stringifyFlag + +// FlagsByName is a slice of Flag. +type FlagsByName []Flag + +func (f FlagsByName) Len() int { + return len(f) +} + +func (f FlagsByName) Less(i, j int) bool { + return f[i].GetName() < f[j].GetName() +} + +func (f FlagsByName) Swap(i, j int) { + f[i], f[j] = f[j], f[i] +} + +// Flag is a common interface related to parsing flags in cli. +// For more advanced flag parsing techniques, it is recommended that +// this interface be implemented. +type Flag interface { + fmt.Stringer + // Apply Flag settings to the given flag set + Apply(*flag.FlagSet) + GetName() string +} + +// errorableFlag is an interface that allows us to return errors during apply +// it allows flags defined in this library to return errors in a fashion backwards compatible +// TODO remove in v2 and modify the existing Flag interface to return errors +type errorableFlag interface { + Flag + + ApplyWithError(*flag.FlagSet) error +} + +func flagSet(name string, flags []Flag) (*flag.FlagSet, error) { + set := flag.NewFlagSet(name, flag.ContinueOnError) + + for _, f := range flags { + //TODO remove in v2 when errorableFlag is removed + if ef, ok := f.(errorableFlag); ok { + if err := ef.ApplyWithError(set); err != nil { + return nil, err + } + } else { + f.Apply(set) + } + } + return set, nil +} + +func eachName(longName string, fn func(string)) { + parts := strings.Split(longName, ",") + for _, name := range parts { + name = strings.Trim(name, " ") + fn(name) + } +} + +// Generic is a generic parseable type identified by a specific flag +type Generic interface { + Set(value string) error + String() string +} + +// Apply takes the flagset and calls Set on the generic flag with the value +// provided by the user for parsing by the flag +// Ignores parsing errors +func (f GenericFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError takes the flagset and calls Set on the generic flag with the value +// provided by the user for parsing by the flag +func (f GenericFlag) ApplyWithError(set *flag.FlagSet) error { + val := f.Value + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + if err := val.Set(envVal); err != nil { + return fmt.Errorf("could not parse %s as value for flag %s: %s", envVal, f.Name, err) + } + break + } + } + } + + eachName(f.Name, func(name string) { + set.Var(f.Value, name, f.Usage) + }) + + return nil +} + +// StringSlice is an opaque type for []string to satisfy flag.Value and flag.Getter +type StringSlice []string + +// Set appends the string value to the list of values +func (f *StringSlice) Set(value string) error { + *f = append(*f, value) + return nil +} + +// String returns a readable representation of this value (for usage defaults) +func (f *StringSlice) String() string { + return fmt.Sprintf("%s", *f) +} + +// Value returns the slice of strings set by this flag +func (f *StringSlice) Value() []string { + return *f +} + +// Get returns the slice of strings set by this flag +func (f *StringSlice) Get() interface{} { + return *f +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f StringSliceFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f StringSliceFlag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + newVal := &StringSlice{} + for _, s := range strings.Split(envVal, ",") { + s = strings.TrimSpace(s) + if err := newVal.Set(s); err != nil { + return fmt.Errorf("could not parse %s as string value for flag %s: %s", envVal, f.Name, err) + } + } + f.Value = newVal + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Value == nil { + f.Value = &StringSlice{} + } + set.Var(f.Value, name, f.Usage) + }) + + return nil +} + +// IntSlice is an opaque type for []int to satisfy flag.Value and flag.Getter +type IntSlice []int + +// Set parses the value into an integer and appends it to the list of values +func (f *IntSlice) Set(value string) error { + tmp, err := strconv.Atoi(value) + if err != nil { + return err + } + *f = append(*f, tmp) + return nil +} + +// String returns a readable representation of this value (for usage defaults) +func (f *IntSlice) String() string { + return fmt.Sprintf("%#v", *f) +} + +// Value returns the slice of ints set by this flag +func (f *IntSlice) Value() []int { + return *f +} + +// Get returns the slice of ints set by this flag +func (f *IntSlice) Get() interface{} { + return *f +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f IntSliceFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f IntSliceFlag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + newVal := &IntSlice{} + for _, s := range strings.Split(envVal, ",") { + s = strings.TrimSpace(s) + if err := newVal.Set(s); err != nil { + return fmt.Errorf("could not parse %s as int slice value for flag %s: %s", envVal, f.Name, err) + } + } + f.Value = newVal + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Value == nil { + f.Value = &IntSlice{} + } + set.Var(f.Value, name, f.Usage) + }) + + return nil +} + +// Int64Slice is an opaque type for []int to satisfy flag.Value and flag.Getter +type Int64Slice []int64 + +// Set parses the value into an integer and appends it to the list of values +func (f *Int64Slice) Set(value string) error { + tmp, err := strconv.ParseInt(value, 10, 64) + if err != nil { + return err + } + *f = append(*f, tmp) + return nil +} + +// String returns a readable representation of this value (for usage defaults) +func (f *Int64Slice) String() string { + return fmt.Sprintf("%#v", *f) +} + +// Value returns the slice of ints set by this flag +func (f *Int64Slice) Value() []int64 { + return *f +} + +// Get returns the slice of ints set by this flag +func (f *Int64Slice) Get() interface{} { + return *f +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f Int64SliceFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f Int64SliceFlag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + newVal := &Int64Slice{} + for _, s := range strings.Split(envVal, ",") { + s = strings.TrimSpace(s) + if err := newVal.Set(s); err != nil { + return fmt.Errorf("could not parse %s as int64 slice value for flag %s: %s", envVal, f.Name, err) + } + } + f.Value = newVal + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Value == nil { + f.Value = &Int64Slice{} + } + set.Var(f.Value, name, f.Usage) + }) + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f BoolFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f BoolFlag) ApplyWithError(set *flag.FlagSet) error { + val := false + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + if envVal == "" { + val = false + break + } + + envValBool, err := strconv.ParseBool(envVal) + if err != nil { + return fmt.Errorf("could not parse %s as bool value for flag %s: %s", envVal, f.Name, err) + } + + val = envValBool + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.BoolVar(f.Destination, name, val, f.Usage) + return + } + set.Bool(name, val, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f BoolTFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f BoolTFlag) ApplyWithError(set *flag.FlagSet) error { + val := true + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + if envVal == "" { + val = false + break + } + + envValBool, err := strconv.ParseBool(envVal) + if err != nil { + return fmt.Errorf("could not parse %s as bool value for flag %s: %s", envVal, f.Name, err) + } + + val = envValBool + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.BoolVar(f.Destination, name, val, f.Usage) + return + } + set.Bool(name, val, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f StringFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f StringFlag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + f.Value = envVal + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.StringVar(f.Destination, name, f.Value, f.Usage) + return + } + set.String(name, f.Value, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f IntFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f IntFlag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + envValInt, err := strconv.ParseInt(envVal, 0, 64) + if err != nil { + return fmt.Errorf("could not parse %s as int value for flag %s: %s", envVal, f.Name, err) + } + f.Value = int(envValInt) + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.IntVar(f.Destination, name, f.Value, f.Usage) + return + } + set.Int(name, f.Value, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f Int64Flag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f Int64Flag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + envValInt, err := strconv.ParseInt(envVal, 0, 64) + if err != nil { + return fmt.Errorf("could not parse %s as int value for flag %s: %s", envVal, f.Name, err) + } + + f.Value = envValInt + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.Int64Var(f.Destination, name, f.Value, f.Usage) + return + } + set.Int64(name, f.Value, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f UintFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f UintFlag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + envValInt, err := strconv.ParseUint(envVal, 0, 64) + if err != nil { + return fmt.Errorf("could not parse %s as uint value for flag %s: %s", envVal, f.Name, err) + } + + f.Value = uint(envValInt) + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.UintVar(f.Destination, name, f.Value, f.Usage) + return + } + set.Uint(name, f.Value, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f Uint64Flag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f Uint64Flag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + envValInt, err := strconv.ParseUint(envVal, 0, 64) + if err != nil { + return fmt.Errorf("could not parse %s as uint64 value for flag %s: %s", envVal, f.Name, err) + } + + f.Value = uint64(envValInt) + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.Uint64Var(f.Destination, name, f.Value, f.Usage) + return + } + set.Uint64(name, f.Value, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f DurationFlag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f DurationFlag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + envValDuration, err := time.ParseDuration(envVal) + if err != nil { + return fmt.Errorf("could not parse %s as duration for flag %s: %s", envVal, f.Name, err) + } + + f.Value = envValDuration + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.DurationVar(f.Destination, name, f.Value, f.Usage) + return + } + set.Duration(name, f.Value, f.Usage) + }) + + return nil +} + +// Apply populates the flag given the flag set and environment +// Ignores errors +func (f Float64Flag) Apply(set *flag.FlagSet) { + f.ApplyWithError(set) +} + +// ApplyWithError populates the flag given the flag set and environment +func (f Float64Flag) ApplyWithError(set *flag.FlagSet) error { + if f.EnvVar != "" { + for _, envVar := range strings.Split(f.EnvVar, ",") { + envVar = strings.TrimSpace(envVar) + if envVal, ok := syscall.Getenv(envVar); ok { + envValFloat, err := strconv.ParseFloat(envVal, 10) + if err != nil { + return fmt.Errorf("could not parse %s as float64 value for flag %s: %s", envVal, f.Name, err) + } + + f.Value = float64(envValFloat) + break + } + } + } + + eachName(f.Name, func(name string) { + if f.Destination != nil { + set.Float64Var(f.Destination, name, f.Value, f.Usage) + return + } + set.Float64(name, f.Value, f.Usage) + }) + + return nil +} + +func visibleFlags(fl []Flag) []Flag { + visible := []Flag{} + for _, flag := range fl { + field := flagValue(flag).FieldByName("Hidden") + if !field.IsValid() || !field.Bool() { + visible = append(visible, flag) + } + } + return visible +} + +func prefixFor(name string) (prefix string) { + if len(name) == 1 { + prefix = "-" + } else { + prefix = "--" + } + + return +} + +// Returns the placeholder, if any, and the unquoted usage string. +func unquoteUsage(usage string) (string, string) { + for i := 0; i < len(usage); i++ { + if usage[i] == '`' { + for j := i + 1; j < len(usage); j++ { + if usage[j] == '`' { + name := usage[i+1 : j] + usage = usage[:i] + name + usage[j+1:] + return name, usage + } + } + break + } + } + return "", usage +} + +func prefixedNames(fullName, placeholder string) string { + var prefixed string + parts := strings.Split(fullName, ",") + for i, name := range parts { + name = strings.Trim(name, " ") + prefixed += prefixFor(name) + name + if placeholder != "" { + prefixed += " " + placeholder + } + if i < len(parts)-1 { + prefixed += ", " + } + } + return prefixed +} + +func withEnvHint(envVar, str string) string { + envText := "" + if envVar != "" { + prefix := "$" + suffix := "" + sep := ", $" + if runtime.GOOS == "windows" { + prefix = "%" + suffix = "%" + sep = "%, %" + } + envText = fmt.Sprintf(" [%s%s%s]", prefix, strings.Join(strings.Split(envVar, ","), sep), suffix) + } + return str + envText +} + +func flagValue(f Flag) reflect.Value { + fv := reflect.ValueOf(f) + for fv.Kind() == reflect.Ptr { + fv = reflect.Indirect(fv) + } + return fv +} + +func stringifyFlag(f Flag) string { + fv := flagValue(f) + + switch f.(type) { + case IntSliceFlag: + return withEnvHint(fv.FieldByName("EnvVar").String(), + stringifyIntSliceFlag(f.(IntSliceFlag))) + case Int64SliceFlag: + return withEnvHint(fv.FieldByName("EnvVar").String(), + stringifyInt64SliceFlag(f.(Int64SliceFlag))) + case StringSliceFlag: + return withEnvHint(fv.FieldByName("EnvVar").String(), + stringifyStringSliceFlag(f.(StringSliceFlag))) + } + + placeholder, usage := unquoteUsage(fv.FieldByName("Usage").String()) + + needsPlaceholder := false + defaultValueString := "" + + if val := fv.FieldByName("Value"); val.IsValid() { + needsPlaceholder = true + defaultValueString = fmt.Sprintf(" (default: %v)", val.Interface()) + + if val.Kind() == reflect.String && val.String() != "" { + defaultValueString = fmt.Sprintf(" (default: %q)", val.String()) + } + } + + if defaultValueString == " (default: )" { + defaultValueString = "" + } + + if needsPlaceholder && placeholder == "" { + placeholder = defaultPlaceholder + } + + usageWithDefault := strings.TrimSpace(fmt.Sprintf("%s%s", usage, defaultValueString)) + + return withEnvHint(fv.FieldByName("EnvVar").String(), + fmt.Sprintf("%s\t%s", prefixedNames(fv.FieldByName("Name").String(), placeholder), usageWithDefault)) +} + +func stringifyIntSliceFlag(f IntSliceFlag) string { + defaultVals := []string{} + if f.Value != nil && len(f.Value.Value()) > 0 { + for _, i := range f.Value.Value() { + defaultVals = append(defaultVals, fmt.Sprintf("%d", i)) + } + } + + return stringifySliceFlag(f.Usage, f.Name, defaultVals) +} + +func stringifyInt64SliceFlag(f Int64SliceFlag) string { + defaultVals := []string{} + if f.Value != nil && len(f.Value.Value()) > 0 { + for _, i := range f.Value.Value() { + defaultVals = append(defaultVals, fmt.Sprintf("%d", i)) + } + } + + return stringifySliceFlag(f.Usage, f.Name, defaultVals) +} + +func stringifyStringSliceFlag(f StringSliceFlag) string { + defaultVals := []string{} + if f.Value != nil && len(f.Value.Value()) > 0 { + for _, s := range f.Value.Value() { + if len(s) > 0 { + defaultVals = append(defaultVals, fmt.Sprintf("%q", s)) + } + } + } + + return stringifySliceFlag(f.Usage, f.Name, defaultVals) +} + +func stringifySliceFlag(usage, name string, defaultVals []string) string { + placeholder, usage := unquoteUsage(usage) + if placeholder == "" { + placeholder = defaultPlaceholder + } + + defaultVal := "" + if len(defaultVals) > 0 { + defaultVal = fmt.Sprintf(" (default: %s)", strings.Join(defaultVals, ", ")) + } + + usageWithDefault := strings.TrimSpace(fmt.Sprintf("%s%s", usage, defaultVal)) + return fmt.Sprintf("%s\t%s", prefixedNames(name, placeholder), usageWithDefault) +} diff --git a/vendor/github.com/codegangsta/cli/flag_generated.go b/vendor/github.com/codegangsta/cli/flag_generated.go new file mode 100644 index 0000000..491b619 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/flag_generated.go @@ -0,0 +1,627 @@ +package cli + +import ( + "flag" + "strconv" + "time" +) + +// WARNING: This file is generated! + +// BoolFlag is a flag with type bool +type BoolFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Destination *bool +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f BoolFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f BoolFlag) GetName() string { + return f.Name +} + +// Bool looks up the value of a local BoolFlag, returns +// false if not found +func (c *Context) Bool(name string) bool { + return lookupBool(name, c.flagSet) +} + +// GlobalBool looks up the value of a global BoolFlag, returns +// false if not found +func (c *Context) GlobalBool(name string) bool { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupBool(name, fs) + } + return false +} + +func lookupBool(name string, set *flag.FlagSet) bool { + f := set.Lookup(name) + if f != nil { + parsed, err := strconv.ParseBool(f.Value.String()) + if err != nil { + return false + } + return parsed + } + return false +} + +// BoolTFlag is a flag with type bool that is true by default +type BoolTFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Destination *bool +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f BoolTFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f BoolTFlag) GetName() string { + return f.Name +} + +// BoolT looks up the value of a local BoolTFlag, returns +// false if not found +func (c *Context) BoolT(name string) bool { + return lookupBoolT(name, c.flagSet) +} + +// GlobalBoolT looks up the value of a global BoolTFlag, returns +// false if not found +func (c *Context) GlobalBoolT(name string) bool { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupBoolT(name, fs) + } + return false +} + +func lookupBoolT(name string, set *flag.FlagSet) bool { + f := set.Lookup(name) + if f != nil { + parsed, err := strconv.ParseBool(f.Value.String()) + if err != nil { + return false + } + return parsed + } + return false +} + +// DurationFlag is a flag with type time.Duration (see https://golang.org/pkg/time/#ParseDuration) +type DurationFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value time.Duration + Destination *time.Duration +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f DurationFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f DurationFlag) GetName() string { + return f.Name +} + +// Duration looks up the value of a local DurationFlag, returns +// 0 if not found +func (c *Context) Duration(name string) time.Duration { + return lookupDuration(name, c.flagSet) +} + +// GlobalDuration looks up the value of a global DurationFlag, returns +// 0 if not found +func (c *Context) GlobalDuration(name string) time.Duration { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupDuration(name, fs) + } + return 0 +} + +func lookupDuration(name string, set *flag.FlagSet) time.Duration { + f := set.Lookup(name) + if f != nil { + parsed, err := time.ParseDuration(f.Value.String()) + if err != nil { + return 0 + } + return parsed + } + return 0 +} + +// Float64Flag is a flag with type float64 +type Float64Flag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value float64 + Destination *float64 +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f Float64Flag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f Float64Flag) GetName() string { + return f.Name +} + +// Float64 looks up the value of a local Float64Flag, returns +// 0 if not found +func (c *Context) Float64(name string) float64 { + return lookupFloat64(name, c.flagSet) +} + +// GlobalFloat64 looks up the value of a global Float64Flag, returns +// 0 if not found +func (c *Context) GlobalFloat64(name string) float64 { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupFloat64(name, fs) + } + return 0 +} + +func lookupFloat64(name string, set *flag.FlagSet) float64 { + f := set.Lookup(name) + if f != nil { + parsed, err := strconv.ParseFloat(f.Value.String(), 64) + if err != nil { + return 0 + } + return parsed + } + return 0 +} + +// GenericFlag is a flag with type Generic +type GenericFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value Generic +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f GenericFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f GenericFlag) GetName() string { + return f.Name +} + +// Generic looks up the value of a local GenericFlag, returns +// nil if not found +func (c *Context) Generic(name string) interface{} { + return lookupGeneric(name, c.flagSet) +} + +// GlobalGeneric looks up the value of a global GenericFlag, returns +// nil if not found +func (c *Context) GlobalGeneric(name string) interface{} { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupGeneric(name, fs) + } + return nil +} + +func lookupGeneric(name string, set *flag.FlagSet) interface{} { + f := set.Lookup(name) + if f != nil { + parsed, err := f.Value, error(nil) + if err != nil { + return nil + } + return parsed + } + return nil +} + +// Int64Flag is a flag with type int64 +type Int64Flag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value int64 + Destination *int64 +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f Int64Flag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f Int64Flag) GetName() string { + return f.Name +} + +// Int64 looks up the value of a local Int64Flag, returns +// 0 if not found +func (c *Context) Int64(name string) int64 { + return lookupInt64(name, c.flagSet) +} + +// GlobalInt64 looks up the value of a global Int64Flag, returns +// 0 if not found +func (c *Context) GlobalInt64(name string) int64 { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupInt64(name, fs) + } + return 0 +} + +func lookupInt64(name string, set *flag.FlagSet) int64 { + f := set.Lookup(name) + if f != nil { + parsed, err := strconv.ParseInt(f.Value.String(), 0, 64) + if err != nil { + return 0 + } + return parsed + } + return 0 +} + +// IntFlag is a flag with type int +type IntFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value int + Destination *int +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f IntFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f IntFlag) GetName() string { + return f.Name +} + +// Int looks up the value of a local IntFlag, returns +// 0 if not found +func (c *Context) Int(name string) int { + return lookupInt(name, c.flagSet) +} + +// GlobalInt looks up the value of a global IntFlag, returns +// 0 if not found +func (c *Context) GlobalInt(name string) int { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupInt(name, fs) + } + return 0 +} + +func lookupInt(name string, set *flag.FlagSet) int { + f := set.Lookup(name) + if f != nil { + parsed, err := strconv.ParseInt(f.Value.String(), 0, 64) + if err != nil { + return 0 + } + return int(parsed) + } + return 0 +} + +// IntSliceFlag is a flag with type *IntSlice +type IntSliceFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value *IntSlice +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f IntSliceFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f IntSliceFlag) GetName() string { + return f.Name +} + +// IntSlice looks up the value of a local IntSliceFlag, returns +// nil if not found +func (c *Context) IntSlice(name string) []int { + return lookupIntSlice(name, c.flagSet) +} + +// GlobalIntSlice looks up the value of a global IntSliceFlag, returns +// nil if not found +func (c *Context) GlobalIntSlice(name string) []int { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupIntSlice(name, fs) + } + return nil +} + +func lookupIntSlice(name string, set *flag.FlagSet) []int { + f := set.Lookup(name) + if f != nil { + parsed, err := (f.Value.(*IntSlice)).Value(), error(nil) + if err != nil { + return nil + } + return parsed + } + return nil +} + +// Int64SliceFlag is a flag with type *Int64Slice +type Int64SliceFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value *Int64Slice +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f Int64SliceFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f Int64SliceFlag) GetName() string { + return f.Name +} + +// Int64Slice looks up the value of a local Int64SliceFlag, returns +// nil if not found +func (c *Context) Int64Slice(name string) []int64 { + return lookupInt64Slice(name, c.flagSet) +} + +// GlobalInt64Slice looks up the value of a global Int64SliceFlag, returns +// nil if not found +func (c *Context) GlobalInt64Slice(name string) []int64 { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupInt64Slice(name, fs) + } + return nil +} + +func lookupInt64Slice(name string, set *flag.FlagSet) []int64 { + f := set.Lookup(name) + if f != nil { + parsed, err := (f.Value.(*Int64Slice)).Value(), error(nil) + if err != nil { + return nil + } + return parsed + } + return nil +} + +// StringFlag is a flag with type string +type StringFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value string + Destination *string +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f StringFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f StringFlag) GetName() string { + return f.Name +} + +// String looks up the value of a local StringFlag, returns +// "" if not found +func (c *Context) String(name string) string { + return lookupString(name, c.flagSet) +} + +// GlobalString looks up the value of a global StringFlag, returns +// "" if not found +func (c *Context) GlobalString(name string) string { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupString(name, fs) + } + return "" +} + +func lookupString(name string, set *flag.FlagSet) string { + f := set.Lookup(name) + if f != nil { + parsed, err := f.Value.String(), error(nil) + if err != nil { + return "" + } + return parsed + } + return "" +} + +// StringSliceFlag is a flag with type *StringSlice +type StringSliceFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value *StringSlice +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f StringSliceFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f StringSliceFlag) GetName() string { + return f.Name +} + +// StringSlice looks up the value of a local StringSliceFlag, returns +// nil if not found +func (c *Context) StringSlice(name string) []string { + return lookupStringSlice(name, c.flagSet) +} + +// GlobalStringSlice looks up the value of a global StringSliceFlag, returns +// nil if not found +func (c *Context) GlobalStringSlice(name string) []string { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupStringSlice(name, fs) + } + return nil +} + +func lookupStringSlice(name string, set *flag.FlagSet) []string { + f := set.Lookup(name) + if f != nil { + parsed, err := (f.Value.(*StringSlice)).Value(), error(nil) + if err != nil { + return nil + } + return parsed + } + return nil +} + +// Uint64Flag is a flag with type uint64 +type Uint64Flag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value uint64 + Destination *uint64 +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f Uint64Flag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f Uint64Flag) GetName() string { + return f.Name +} + +// Uint64 looks up the value of a local Uint64Flag, returns +// 0 if not found +func (c *Context) Uint64(name string) uint64 { + return lookupUint64(name, c.flagSet) +} + +// GlobalUint64 looks up the value of a global Uint64Flag, returns +// 0 if not found +func (c *Context) GlobalUint64(name string) uint64 { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupUint64(name, fs) + } + return 0 +} + +func lookupUint64(name string, set *flag.FlagSet) uint64 { + f := set.Lookup(name) + if f != nil { + parsed, err := strconv.ParseUint(f.Value.String(), 0, 64) + if err != nil { + return 0 + } + return parsed + } + return 0 +} + +// UintFlag is a flag with type uint +type UintFlag struct { + Name string + Usage string + EnvVar string + Hidden bool + Value uint + Destination *uint +} + +// String returns a readable representation of this value +// (for usage defaults) +func (f UintFlag) String() string { + return FlagStringer(f) +} + +// GetName returns the name of the flag +func (f UintFlag) GetName() string { + return f.Name +} + +// Uint looks up the value of a local UintFlag, returns +// 0 if not found +func (c *Context) Uint(name string) uint { + return lookupUint(name, c.flagSet) +} + +// GlobalUint looks up the value of a global UintFlag, returns +// 0 if not found +func (c *Context) GlobalUint(name string) uint { + if fs := lookupGlobalFlagSet(name, c); fs != nil { + return lookupUint(name, fs) + } + return 0 +} + +func lookupUint(name string, set *flag.FlagSet) uint { + f := set.Lookup(name) + if f != nil { + parsed, err := strconv.ParseUint(f.Value.String(), 0, 64) + if err != nil { + return 0 + } + return uint(parsed) + } + return 0 +} diff --git a/vendor/github.com/codegangsta/cli/flag_test.go b/vendor/github.com/codegangsta/cli/flag_test.go new file mode 100644 index 0000000..1ccb639 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/flag_test.go @@ -0,0 +1,1215 @@ +package cli + +import ( + "fmt" + "os" + "reflect" + "regexp" + "runtime" + "strings" + "testing" + "time" +) + +var boolFlagTests = []struct { + name string + expected string +}{ + {"help", "--help\t"}, + {"h", "-h\t"}, +} + +func TestBoolFlagHelpOutput(t *testing.T) { + for _, test := range boolFlagTests { + flag := BoolFlag{Name: test.name} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestFlagsFromEnv(t *testing.T) { + var flagTests = []struct { + input string + output interface{} + flag Flag + errRegexp string + }{ + {"", false, BoolFlag{Name: "debug", EnvVar: "DEBUG"}, ""}, + {"1", true, BoolFlag{Name: "debug", EnvVar: "DEBUG"}, ""}, + {"false", false, BoolFlag{Name: "debug", EnvVar: "DEBUG"}, ""}, + {"foobar", true, BoolFlag{Name: "debug", EnvVar: "DEBUG"}, fmt.Sprintf(`could not parse foobar as bool value for flag debug: .*`)}, + + {"", false, BoolTFlag{Name: "debug", EnvVar: "DEBUG"}, ""}, + {"1", true, BoolTFlag{Name: "debug", EnvVar: "DEBUG"}, ""}, + {"false", false, BoolTFlag{Name: "debug", EnvVar: "DEBUG"}, ""}, + {"foobar", true, BoolTFlag{Name: "debug", EnvVar: "DEBUG"}, fmt.Sprintf(`could not parse foobar as bool value for flag debug: .*`)}, + + {"1s", 1 * time.Second, DurationFlag{Name: "time", EnvVar: "TIME"}, ""}, + {"foobar", false, DurationFlag{Name: "time", EnvVar: "TIME"}, fmt.Sprintf(`could not parse foobar as duration for flag time: .*`)}, + + {"1.2", 1.2, Float64Flag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"1", 1.0, Float64Flag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"foobar", 0, Float64Flag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse foobar as float64 value for flag seconds: .*`)}, + + {"1", int64(1), Int64Flag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"1.2", 0, Int64Flag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse 1.2 as int value for flag seconds: .*`)}, + {"foobar", 0, Int64Flag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse foobar as int value for flag seconds: .*`)}, + + {"1", 1, IntFlag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"1.2", 0, IntFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse 1.2 as int value for flag seconds: .*`)}, + {"foobar", 0, IntFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse foobar as int value for flag seconds: .*`)}, + + {"1,2", IntSlice{1, 2}, IntSliceFlag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"1.2,2", IntSlice{}, IntSliceFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse 1.2,2 as int slice value for flag seconds: .*`)}, + {"foobar", IntSlice{}, IntSliceFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse foobar as int slice value for flag seconds: .*`)}, + + {"1,2", Int64Slice{1, 2}, Int64SliceFlag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"1.2,2", Int64Slice{}, Int64SliceFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse 1.2,2 as int64 slice value for flag seconds: .*`)}, + {"foobar", Int64Slice{}, Int64SliceFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse foobar as int64 slice value for flag seconds: .*`)}, + + {"foo", "foo", StringFlag{Name: "name", EnvVar: "NAME"}, ""}, + + {"foo,bar", StringSlice{"foo", "bar"}, StringSliceFlag{Name: "names", EnvVar: "NAMES"}, ""}, + + {"1", uint(1), UintFlag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"1.2", 0, UintFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse 1.2 as uint value for flag seconds: .*`)}, + {"foobar", 0, UintFlag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse foobar as uint value for flag seconds: .*`)}, + + {"1", uint64(1), Uint64Flag{Name: "seconds", EnvVar: "SECONDS"}, ""}, + {"1.2", 0, Uint64Flag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse 1.2 as uint64 value for flag seconds: .*`)}, + {"foobar", 0, Uint64Flag{Name: "seconds", EnvVar: "SECONDS"}, fmt.Sprintf(`could not parse foobar as uint64 value for flag seconds: .*`)}, + + {"foo,bar", &Parser{"foo", "bar"}, GenericFlag{Name: "names", Value: &Parser{}, EnvVar: "NAMES"}, ""}, + } + + for _, test := range flagTests { + os.Clearenv() + os.Setenv(reflect.ValueOf(test.flag).FieldByName("EnvVar").String(), test.input) + a := App{ + Flags: []Flag{test.flag}, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.value(test.flag.GetName()), test.output) { + t.Errorf("expected %+v to be parsed as %+v, instead was %+v", test.input, test.output, ctx.value(test.flag.GetName())) + } + return nil + }, + } + + err := a.Run([]string{"run"}) + + if test.errRegexp != "" { + if err == nil { + t.Errorf("expected error to match %s, got none", test.errRegexp) + } else { + if matched, _ := regexp.MatchString(test.errRegexp, err.Error()); !matched { + t.Errorf("expected error to match %s, got error %s", test.errRegexp, err) + } + } + } else { + if err != nil && test.errRegexp == "" { + t.Errorf("expected no error got %s", err) + } + } + } +} + +var stringFlagTests = []struct { + name string + usage string + value string + expected string +}{ + {"foo", "", "", "--foo value\t"}, + {"f", "", "", "-f value\t"}, + {"f", "The total `foo` desired", "all", "-f foo\tThe total foo desired (default: \"all\")"}, + {"test", "", "Something", "--test value\t(default: \"Something\")"}, + {"config,c", "Load configuration from `FILE`", "", "--config FILE, -c FILE\tLoad configuration from FILE"}, + {"config,c", "Load configuration from `CONFIG`", "config.json", "--config CONFIG, -c CONFIG\tLoad configuration from CONFIG (default: \"config.json\")"}, +} + +func TestStringFlagHelpOutput(t *testing.T) { + for _, test := range stringFlagTests { + flag := StringFlag{Name: test.name, Usage: test.usage, Value: test.value} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestStringFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_FOO", "derp") + for _, test := range stringFlagTests { + flag := StringFlag{Name: test.name, Value: test.value, EnvVar: "APP_FOO"} + output := flag.String() + + expectedSuffix := " [$APP_FOO]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_FOO%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +var stringSliceFlagTests = []struct { + name string + value *StringSlice + expected string +}{ + {"foo", func() *StringSlice { + s := &StringSlice{} + s.Set("") + return s + }(), "--foo value\t"}, + {"f", func() *StringSlice { + s := &StringSlice{} + s.Set("") + return s + }(), "-f value\t"}, + {"f", func() *StringSlice { + s := &StringSlice{} + s.Set("Lipstick") + return s + }(), "-f value\t(default: \"Lipstick\")"}, + {"test", func() *StringSlice { + s := &StringSlice{} + s.Set("Something") + return s + }(), "--test value\t(default: \"Something\")"}, +} + +func TestStringSliceFlagHelpOutput(t *testing.T) { + for _, test := range stringSliceFlagTests { + flag := StringSliceFlag{Name: test.name, Value: test.value} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestStringSliceFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_QWWX", "11,4") + for _, test := range stringSliceFlagTests { + flag := StringSliceFlag{Name: test.name, Value: test.value, EnvVar: "APP_QWWX"} + output := flag.String() + + expectedSuffix := " [$APP_QWWX]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_QWWX%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%q does not end with"+expectedSuffix, output) + } + } +} + +var intFlagTests = []struct { + name string + expected string +}{ + {"hats", "--hats value\t(default: 9)"}, + {"H", "-H value\t(default: 9)"}, +} + +func TestIntFlagHelpOutput(t *testing.T) { + for _, test := range intFlagTests { + flag := IntFlag{Name: test.name, Value: 9} + output := flag.String() + + if output != test.expected { + t.Errorf("%s does not match %s", output, test.expected) + } + } +} + +func TestIntFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_BAR", "2") + for _, test := range intFlagTests { + flag := IntFlag{Name: test.name, EnvVar: "APP_BAR"} + output := flag.String() + + expectedSuffix := " [$APP_BAR]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_BAR%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +var int64FlagTests = []struct { + name string + expected string +}{ + {"hats", "--hats value\t(default: 8589934592)"}, + {"H", "-H value\t(default: 8589934592)"}, +} + +func TestInt64FlagHelpOutput(t *testing.T) { + for _, test := range int64FlagTests { + flag := Int64Flag{Name: test.name, Value: 8589934592} + output := flag.String() + + if output != test.expected { + t.Errorf("%s does not match %s", output, test.expected) + } + } +} + +func TestInt64FlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_BAR", "2") + for _, test := range int64FlagTests { + flag := IntFlag{Name: test.name, EnvVar: "APP_BAR"} + output := flag.String() + + expectedSuffix := " [$APP_BAR]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_BAR%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +var uintFlagTests = []struct { + name string + expected string +}{ + {"nerfs", "--nerfs value\t(default: 41)"}, + {"N", "-N value\t(default: 41)"}, +} + +func TestUintFlagHelpOutput(t *testing.T) { + for _, test := range uintFlagTests { + flag := UintFlag{Name: test.name, Value: 41} + output := flag.String() + + if output != test.expected { + t.Errorf("%s does not match %s", output, test.expected) + } + } +} + +func TestUintFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_BAR", "2") + for _, test := range uintFlagTests { + flag := UintFlag{Name: test.name, EnvVar: "APP_BAR"} + output := flag.String() + + expectedSuffix := " [$APP_BAR]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_BAR%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +var uint64FlagTests = []struct { + name string + expected string +}{ + {"gerfs", "--gerfs value\t(default: 8589934582)"}, + {"G", "-G value\t(default: 8589934582)"}, +} + +func TestUint64FlagHelpOutput(t *testing.T) { + for _, test := range uint64FlagTests { + flag := Uint64Flag{Name: test.name, Value: 8589934582} + output := flag.String() + + if output != test.expected { + t.Errorf("%s does not match %s", output, test.expected) + } + } +} + +func TestUint64FlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_BAR", "2") + for _, test := range uint64FlagTests { + flag := UintFlag{Name: test.name, EnvVar: "APP_BAR"} + output := flag.String() + + expectedSuffix := " [$APP_BAR]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_BAR%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +var durationFlagTests = []struct { + name string + expected string +}{ + {"hooting", "--hooting value\t(default: 1s)"}, + {"H", "-H value\t(default: 1s)"}, +} + +func TestDurationFlagHelpOutput(t *testing.T) { + for _, test := range durationFlagTests { + flag := DurationFlag{Name: test.name, Value: 1 * time.Second} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestDurationFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_BAR", "2h3m6s") + for _, test := range durationFlagTests { + flag := DurationFlag{Name: test.name, EnvVar: "APP_BAR"} + output := flag.String() + + expectedSuffix := " [$APP_BAR]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_BAR%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +var intSliceFlagTests = []struct { + name string + value *IntSlice + expected string +}{ + {"heads", &IntSlice{}, "--heads value\t"}, + {"H", &IntSlice{}, "-H value\t"}, + {"H, heads", func() *IntSlice { + i := &IntSlice{} + i.Set("9") + i.Set("3") + return i + }(), "-H value, --heads value\t(default: 9, 3)"}, +} + +func TestIntSliceFlagHelpOutput(t *testing.T) { + for _, test := range intSliceFlagTests { + flag := IntSliceFlag{Name: test.name, Value: test.value} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestIntSliceFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_SMURF", "42,3") + for _, test := range intSliceFlagTests { + flag := IntSliceFlag{Name: test.name, Value: test.value, EnvVar: "APP_SMURF"} + output := flag.String() + + expectedSuffix := " [$APP_SMURF]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_SMURF%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%q does not end with"+expectedSuffix, output) + } + } +} + +var int64SliceFlagTests = []struct { + name string + value *Int64Slice + expected string +}{ + {"heads", &Int64Slice{}, "--heads value\t"}, + {"H", &Int64Slice{}, "-H value\t"}, + {"H, heads", func() *Int64Slice { + i := &Int64Slice{} + i.Set("2") + i.Set("17179869184") + return i + }(), "-H value, --heads value\t(default: 2, 17179869184)"}, +} + +func TestInt64SliceFlagHelpOutput(t *testing.T) { + for _, test := range int64SliceFlagTests { + flag := Int64SliceFlag{Name: test.name, Value: test.value} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestInt64SliceFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_SMURF", "42,17179869184") + for _, test := range int64SliceFlagTests { + flag := Int64SliceFlag{Name: test.name, Value: test.value, EnvVar: "APP_SMURF"} + output := flag.String() + + expectedSuffix := " [$APP_SMURF]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_SMURF%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%q does not end with"+expectedSuffix, output) + } + } +} + +var float64FlagTests = []struct { + name string + expected string +}{ + {"hooting", "--hooting value\t(default: 0.1)"}, + {"H", "-H value\t(default: 0.1)"}, +} + +func TestFloat64FlagHelpOutput(t *testing.T) { + for _, test := range float64FlagTests { + flag := Float64Flag{Name: test.name, Value: float64(0.1)} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestFloat64FlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_BAZ", "99.4") + for _, test := range float64FlagTests { + flag := Float64Flag{Name: test.name, EnvVar: "APP_BAZ"} + output := flag.String() + + expectedSuffix := " [$APP_BAZ]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_BAZ%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +var genericFlagTests = []struct { + name string + value Generic + expected string +}{ + {"toads", &Parser{"abc", "def"}, "--toads value\ttest flag (default: abc,def)"}, + {"t", &Parser{"abc", "def"}, "-t value\ttest flag (default: abc,def)"}, +} + +func TestGenericFlagHelpOutput(t *testing.T) { + for _, test := range genericFlagTests { + flag := GenericFlag{Name: test.name, Value: test.value, Usage: "test flag"} + output := flag.String() + + if output != test.expected { + t.Errorf("%q does not match %q", output, test.expected) + } + } +} + +func TestGenericFlagWithEnvVarHelpOutput(t *testing.T) { + os.Clearenv() + os.Setenv("APP_ZAP", "3") + for _, test := range genericFlagTests { + flag := GenericFlag{Name: test.name, EnvVar: "APP_ZAP"} + output := flag.String() + + expectedSuffix := " [$APP_ZAP]" + if runtime.GOOS == "windows" { + expectedSuffix = " [%APP_ZAP%]" + } + if !strings.HasSuffix(output, expectedSuffix) { + t.Errorf("%s does not end with"+expectedSuffix, output) + } + } +} + +func TestParseMultiString(t *testing.T) { + (&App{ + Flags: []Flag{ + StringFlag{Name: "serve, s"}, + }, + Action: func(ctx *Context) error { + if ctx.String("serve") != "10" { + t.Errorf("main name not set") + } + if ctx.String("s") != "10" { + t.Errorf("short name not set") + } + return nil + }, + }).Run([]string{"run", "-s", "10"}) +} + +func TestParseDestinationString(t *testing.T) { + var dest string + a := App{ + Flags: []Flag{ + StringFlag{ + Name: "dest", + Destination: &dest, + }, + }, + Action: func(ctx *Context) error { + if dest != "10" { + t.Errorf("expected destination String 10") + } + return nil + }, + } + a.Run([]string{"run", "--dest", "10"}) +} + +func TestParseMultiStringFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_COUNT", "20") + (&App{ + Flags: []Flag{ + StringFlag{Name: "count, c", EnvVar: "APP_COUNT"}, + }, + Action: func(ctx *Context) error { + if ctx.String("count") != "20" { + t.Errorf("main name not set") + } + if ctx.String("c") != "20" { + t.Errorf("short name not set") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiStringFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_COUNT", "20") + (&App{ + Flags: []Flag{ + StringFlag{Name: "count, c", EnvVar: "COMPAT_COUNT,APP_COUNT"}, + }, + Action: func(ctx *Context) error { + if ctx.String("count") != "20" { + t.Errorf("main name not set") + } + if ctx.String("c") != "20" { + t.Errorf("short name not set") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiStringSlice(t *testing.T) { + (&App{ + Flags: []Flag{ + StringSliceFlag{Name: "serve, s", Value: &StringSlice{}}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.StringSlice("serve"), []string{"10", "20"}) { + t.Errorf("main name not set") + } + if !reflect.DeepEqual(ctx.StringSlice("s"), []string{"10", "20"}) { + t.Errorf("short name not set") + } + return nil + }, + }).Run([]string{"run", "-s", "10", "-s", "20"}) +} + +func TestParseMultiStringSliceFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_INTERVALS", "20,30,40") + + (&App{ + Flags: []Flag{ + StringSliceFlag{Name: "intervals, i", Value: &StringSlice{}, EnvVar: "APP_INTERVALS"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) { + t.Errorf("main name not set from env") + } + if !reflect.DeepEqual(ctx.StringSlice("i"), []string{"20", "30", "40"}) { + t.Errorf("short name not set from env") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiStringSliceFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_INTERVALS", "20,30,40") + + (&App{ + Flags: []Flag{ + StringSliceFlag{Name: "intervals, i", Value: &StringSlice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.StringSlice("intervals"), []string{"20", "30", "40"}) { + t.Errorf("main name not set from env") + } + if !reflect.DeepEqual(ctx.StringSlice("i"), []string{"20", "30", "40"}) { + t.Errorf("short name not set from env") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiInt(t *testing.T) { + a := App{ + Flags: []Flag{ + IntFlag{Name: "serve, s"}, + }, + Action: func(ctx *Context) error { + if ctx.Int("serve") != 10 { + t.Errorf("main name not set") + } + if ctx.Int("s") != 10 { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run", "-s", "10"}) +} + +func TestParseDestinationInt(t *testing.T) { + var dest int + a := App{ + Flags: []Flag{ + IntFlag{ + Name: "dest", + Destination: &dest, + }, + }, + Action: func(ctx *Context) error { + if dest != 10 { + t.Errorf("expected destination Int 10") + } + return nil + }, + } + a.Run([]string{"run", "--dest", "10"}) +} + +func TestParseMultiIntFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_TIMEOUT_SECONDS", "10") + a := App{ + Flags: []Flag{ + IntFlag{Name: "timeout, t", EnvVar: "APP_TIMEOUT_SECONDS"}, + }, + Action: func(ctx *Context) error { + if ctx.Int("timeout") != 10 { + t.Errorf("main name not set") + } + if ctx.Int("t") != 10 { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseMultiIntFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_TIMEOUT_SECONDS", "10") + a := App{ + Flags: []Flag{ + IntFlag{Name: "timeout, t", EnvVar: "COMPAT_TIMEOUT_SECONDS,APP_TIMEOUT_SECONDS"}, + }, + Action: func(ctx *Context) error { + if ctx.Int("timeout") != 10 { + t.Errorf("main name not set") + } + if ctx.Int("t") != 10 { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseMultiIntSlice(t *testing.T) { + (&App{ + Flags: []Flag{ + IntSliceFlag{Name: "serve, s", Value: &IntSlice{}}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.IntSlice("serve"), []int{10, 20}) { + t.Errorf("main name not set") + } + if !reflect.DeepEqual(ctx.IntSlice("s"), []int{10, 20}) { + t.Errorf("short name not set") + } + return nil + }, + }).Run([]string{"run", "-s", "10", "-s", "20"}) +} + +func TestParseMultiIntSliceFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_INTERVALS", "20,30,40") + + (&App{ + Flags: []Flag{ + IntSliceFlag{Name: "intervals, i", Value: &IntSlice{}, EnvVar: "APP_INTERVALS"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) { + t.Errorf("main name not set from env") + } + if !reflect.DeepEqual(ctx.IntSlice("i"), []int{20, 30, 40}) { + t.Errorf("short name not set from env") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiIntSliceFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_INTERVALS", "20,30,40") + + (&App{ + Flags: []Flag{ + IntSliceFlag{Name: "intervals, i", Value: &IntSlice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.IntSlice("intervals"), []int{20, 30, 40}) { + t.Errorf("main name not set from env") + } + if !reflect.DeepEqual(ctx.IntSlice("i"), []int{20, 30, 40}) { + t.Errorf("short name not set from env") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiInt64Slice(t *testing.T) { + (&App{ + Flags: []Flag{ + Int64SliceFlag{Name: "serve, s", Value: &Int64Slice{}}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.Int64Slice("serve"), []int64{10, 17179869184}) { + t.Errorf("main name not set") + } + if !reflect.DeepEqual(ctx.Int64Slice("s"), []int64{10, 17179869184}) { + t.Errorf("short name not set") + } + return nil + }, + }).Run([]string{"run", "-s", "10", "-s", "17179869184"}) +} + +func TestParseMultiInt64SliceFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_INTERVALS", "20,30,17179869184") + + (&App{ + Flags: []Flag{ + Int64SliceFlag{Name: "intervals, i", Value: &Int64Slice{}, EnvVar: "APP_INTERVALS"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.Int64Slice("intervals"), []int64{20, 30, 17179869184}) { + t.Errorf("main name not set from env") + } + if !reflect.DeepEqual(ctx.Int64Slice("i"), []int64{20, 30, 17179869184}) { + t.Errorf("short name not set from env") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiInt64SliceFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_INTERVALS", "20,30,17179869184") + + (&App{ + Flags: []Flag{ + Int64SliceFlag{Name: "intervals, i", Value: &Int64Slice{}, EnvVar: "COMPAT_INTERVALS,APP_INTERVALS"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.Int64Slice("intervals"), []int64{20, 30, 17179869184}) { + t.Errorf("main name not set from env") + } + if !reflect.DeepEqual(ctx.Int64Slice("i"), []int64{20, 30, 17179869184}) { + t.Errorf("short name not set from env") + } + return nil + }, + }).Run([]string{"run"}) +} + +func TestParseMultiFloat64(t *testing.T) { + a := App{ + Flags: []Flag{ + Float64Flag{Name: "serve, s"}, + }, + Action: func(ctx *Context) error { + if ctx.Float64("serve") != 10.2 { + t.Errorf("main name not set") + } + if ctx.Float64("s") != 10.2 { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run", "-s", "10.2"}) +} + +func TestParseDestinationFloat64(t *testing.T) { + var dest float64 + a := App{ + Flags: []Flag{ + Float64Flag{ + Name: "dest", + Destination: &dest, + }, + }, + Action: func(ctx *Context) error { + if dest != 10.2 { + t.Errorf("expected destination Float64 10.2") + } + return nil + }, + } + a.Run([]string{"run", "--dest", "10.2"}) +} + +func TestParseMultiFloat64FromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_TIMEOUT_SECONDS", "15.5") + a := App{ + Flags: []Flag{ + Float64Flag{Name: "timeout, t", EnvVar: "APP_TIMEOUT_SECONDS"}, + }, + Action: func(ctx *Context) error { + if ctx.Float64("timeout") != 15.5 { + t.Errorf("main name not set") + } + if ctx.Float64("t") != 15.5 { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseMultiFloat64FromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_TIMEOUT_SECONDS", "15.5") + a := App{ + Flags: []Flag{ + Float64Flag{Name: "timeout, t", EnvVar: "COMPAT_TIMEOUT_SECONDS,APP_TIMEOUT_SECONDS"}, + }, + Action: func(ctx *Context) error { + if ctx.Float64("timeout") != 15.5 { + t.Errorf("main name not set") + } + if ctx.Float64("t") != 15.5 { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseMultiBool(t *testing.T) { + a := App{ + Flags: []Flag{ + BoolFlag{Name: "serve, s"}, + }, + Action: func(ctx *Context) error { + if ctx.Bool("serve") != true { + t.Errorf("main name not set") + } + if ctx.Bool("s") != true { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run", "--serve"}) +} + +func TestParseDestinationBool(t *testing.T) { + var dest bool + a := App{ + Flags: []Flag{ + BoolFlag{ + Name: "dest", + Destination: &dest, + }, + }, + Action: func(ctx *Context) error { + if dest != true { + t.Errorf("expected destination Bool true") + } + return nil + }, + } + a.Run([]string{"run", "--dest"}) +} + +func TestParseMultiBoolFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_DEBUG", "1") + a := App{ + Flags: []Flag{ + BoolFlag{Name: "debug, d", EnvVar: "APP_DEBUG"}, + }, + Action: func(ctx *Context) error { + if ctx.Bool("debug") != true { + t.Errorf("main name not set from env") + } + if ctx.Bool("d") != true { + t.Errorf("short name not set from env") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseMultiBoolFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_DEBUG", "1") + a := App{ + Flags: []Flag{ + BoolFlag{Name: "debug, d", EnvVar: "COMPAT_DEBUG,APP_DEBUG"}, + }, + Action: func(ctx *Context) error { + if ctx.Bool("debug") != true { + t.Errorf("main name not set from env") + } + if ctx.Bool("d") != true { + t.Errorf("short name not set from env") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseBoolTFromEnv(t *testing.T) { + var boolTFlagTests = []struct { + input string + output bool + }{ + {"", false}, + {"1", true}, + {"false", false}, + {"true", true}, + } + + for _, test := range boolTFlagTests { + os.Clearenv() + os.Setenv("DEBUG", test.input) + a := App{ + Flags: []Flag{ + BoolTFlag{Name: "debug, d", EnvVar: "DEBUG"}, + }, + Action: func(ctx *Context) error { + if ctx.Bool("debug") != test.output { + t.Errorf("expected %+v to be parsed as %+v, instead was %+v", test.input, test.output, ctx.Bool("debug")) + } + if ctx.Bool("d") != test.output { + t.Errorf("expected %+v to be parsed as %+v, instead was %+v", test.input, test.output, ctx.Bool("d")) + } + return nil + }, + } + a.Run([]string{"run"}) + } +} + +func TestParseMultiBoolT(t *testing.T) { + a := App{ + Flags: []Flag{ + BoolTFlag{Name: "serve, s"}, + }, + Action: func(ctx *Context) error { + if ctx.BoolT("serve") != true { + t.Errorf("main name not set") + } + if ctx.BoolT("s") != true { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run", "--serve"}) +} + +func TestParseDestinationBoolT(t *testing.T) { + var dest bool + a := App{ + Flags: []Flag{ + BoolTFlag{ + Name: "dest", + Destination: &dest, + }, + }, + Action: func(ctx *Context) error { + if dest != true { + t.Errorf("expected destination BoolT true") + } + return nil + }, + } + a.Run([]string{"run", "--dest"}) +} + +func TestParseMultiBoolTFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_DEBUG", "0") + a := App{ + Flags: []Flag{ + BoolTFlag{Name: "debug, d", EnvVar: "APP_DEBUG"}, + }, + Action: func(ctx *Context) error { + if ctx.BoolT("debug") != false { + t.Errorf("main name not set from env") + } + if ctx.BoolT("d") != false { + t.Errorf("short name not set from env") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseMultiBoolTFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_DEBUG", "0") + a := App{ + Flags: []Flag{ + BoolTFlag{Name: "debug, d", EnvVar: "COMPAT_DEBUG,APP_DEBUG"}, + }, + Action: func(ctx *Context) error { + if ctx.BoolT("debug") != false { + t.Errorf("main name not set from env") + } + if ctx.BoolT("d") != false { + t.Errorf("short name not set from env") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +type Parser [2]string + +func (p *Parser) Set(value string) error { + parts := strings.Split(value, ",") + if len(parts) != 2 { + return fmt.Errorf("invalid format") + } + + (*p)[0] = parts[0] + (*p)[1] = parts[1] + + return nil +} + +func (p *Parser) String() string { + return fmt.Sprintf("%s,%s", p[0], p[1]) +} + +func (p *Parser) Get() interface{} { + return p +} + +func TestParseGeneric(t *testing.T) { + a := App{ + Flags: []Flag{ + GenericFlag{Name: "serve, s", Value: &Parser{}}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.Generic("serve"), &Parser{"10", "20"}) { + t.Errorf("main name not set") + } + if !reflect.DeepEqual(ctx.Generic("s"), &Parser{"10", "20"}) { + t.Errorf("short name not set") + } + return nil + }, + } + a.Run([]string{"run", "-s", "10,20"}) +} + +func TestParseGenericFromEnv(t *testing.T) { + os.Clearenv() + os.Setenv("APP_SERVE", "20,30") + a := App{ + Flags: []Flag{ + GenericFlag{Name: "serve, s", Value: &Parser{}, EnvVar: "APP_SERVE"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.Generic("serve"), &Parser{"20", "30"}) { + t.Errorf("main name not set from env") + } + if !reflect.DeepEqual(ctx.Generic("s"), &Parser{"20", "30"}) { + t.Errorf("short name not set from env") + } + return nil + }, + } + a.Run([]string{"run"}) +} + +func TestParseGenericFromEnvCascade(t *testing.T) { + os.Clearenv() + os.Setenv("APP_FOO", "99,2000") + a := App{ + Flags: []Flag{ + GenericFlag{Name: "foos", Value: &Parser{}, EnvVar: "COMPAT_FOO,APP_FOO"}, + }, + Action: func(ctx *Context) error { + if !reflect.DeepEqual(ctx.Generic("foos"), &Parser{"99", "2000"}) { + t.Errorf("value not set from env") + } + return nil + }, + } + a.Run([]string{"run"}) +} diff --git a/vendor/github.com/codegangsta/cli/funcs.go b/vendor/github.com/codegangsta/cli/funcs.go new file mode 100644 index 0000000..cba5e6c --- /dev/null +++ b/vendor/github.com/codegangsta/cli/funcs.go @@ -0,0 +1,28 @@ +package cli + +// BashCompleteFunc is an action to execute when the bash-completion flag is set +type BashCompleteFunc func(*Context) + +// BeforeFunc is an action to execute before any subcommands are run, but after +// the context is ready if a non-nil error is returned, no subcommands are run +type BeforeFunc func(*Context) error + +// AfterFunc is an action to execute after any subcommands are run, but after the +// subcommand has finished it is run even if Action() panics +type AfterFunc func(*Context) error + +// ActionFunc is the action to execute when no subcommands are specified +type ActionFunc func(*Context) error + +// CommandNotFoundFunc is executed if the proper command cannot be found +type CommandNotFoundFunc func(*Context, string) + +// OnUsageErrorFunc is executed if an usage error occurs. This is useful for displaying +// customized usage error messages. This function is able to replace the +// original error messages. If this function is not set, the "Incorrect usage" +// is displayed and the execution is interrupted. +type OnUsageErrorFunc func(context *Context, err error, isSubcommand bool) error + +// FlagStringFunc is used by the help generation to display a flag, which is +// expected to be a single line. +type FlagStringFunc func(Flag) string diff --git a/vendor/github.com/codegangsta/cli/generate-flag-types b/vendor/github.com/codegangsta/cli/generate-flag-types new file mode 100755 index 0000000..7147381 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/generate-flag-types @@ -0,0 +1,255 @@ +#!/usr/bin/env python +""" +The flag types that ship with the cli library have many things in common, and +so we can take advantage of the `go generate` command to create much of the +source code from a list of definitions. These definitions attempt to cover +the parts that vary between flag types, and should evolve as needed. + +An example of the minimum definition needed is: + + { + "name": "SomeType", + "type": "sometype", + "context_default": "nil" + } + +In this example, the code generated for the `cli` package will include a type +named `SomeTypeFlag` that is expected to wrap a value of type `sometype`. +Fetching values by name via `*cli.Context` will default to a value of `nil`. + +A more complete, albeit somewhat redundant, example showing all available +definition keys is: + + { + "name": "VeryMuchType", + "type": "*VeryMuchType", + "value": true, + "dest": false, + "doctail": " which really only wraps a []float64, oh well!", + "context_type": "[]float64", + "context_default": "nil", + "parser": "parseVeryMuchType(f.Value.String())", + "parser_cast": "[]float64(parsed)" + } + +The meaning of each field is as follows: + + name (string) - The type "name", which will be suffixed with + `Flag` when generating the type definition + for `cli` and the wrapper type for `altsrc` + type (string) - The type that the generated `Flag` type for `cli` + is expected to "contain" as its `.Value` member + value (bool) - Should the generated `cli` type have a `Value` + member? + dest (bool) - Should the generated `cli` type support a + destination pointer? + doctail (string) - Additional docs for the `cli` flag type comment + context_type (string) - The literal type used in the `*cli.Context` + reader func signature + context_default (string) - The literal value used as the default by the + `*cli.Context` reader funcs when no value is + present + parser (string) - Literal code used to parse the flag `f`, + expected to have a return signature of + (value, error) + parser_cast (string) - Literal code used to cast the `parsed` value + returned from the `parser` code +""" + +from __future__ import print_function, unicode_literals + +import argparse +import json +import os +import subprocess +import sys +import tempfile +import textwrap + + +class _FancyFormatter(argparse.ArgumentDefaultsHelpFormatter, + argparse.RawDescriptionHelpFormatter): + pass + + +def main(sysargs=sys.argv[:]): + parser = argparse.ArgumentParser( + description='Generate flag type code!', + formatter_class=_FancyFormatter) + parser.add_argument( + 'package', + type=str, default='cli', choices=_WRITEFUNCS.keys(), + help='Package for which flag types will be generated' + ) + parser.add_argument( + '-i', '--in-json', + type=argparse.FileType('r'), + default=sys.stdin, + help='Input JSON file which defines each type to be generated' + ) + parser.add_argument( + '-o', '--out-go', + type=argparse.FileType('w'), + default=sys.stdout, + help='Output file/stream to which generated source will be written' + ) + parser.epilog = __doc__ + + args = parser.parse_args(sysargs[1:]) + _generate_flag_types(_WRITEFUNCS[args.package], args.out_go, args.in_json) + return 0 + + +def _generate_flag_types(writefunc, output_go, input_json): + types = json.load(input_json) + + tmp = tempfile.NamedTemporaryFile(suffix='.go', delete=False) + writefunc(tmp, types) + tmp.close() + + new_content = subprocess.check_output( + ['goimports', tmp.name] + ).decode('utf-8') + + print(new_content, file=output_go, end='') + output_go.flush() + os.remove(tmp.name) + + +def _set_typedef_defaults(typedef): + typedef.setdefault('doctail', '') + typedef.setdefault('context_type', typedef['type']) + typedef.setdefault('dest', True) + typedef.setdefault('value', True) + typedef.setdefault('parser', 'f.Value, error(nil)') + typedef.setdefault('parser_cast', 'parsed') + + +def _write_cli_flag_types(outfile, types): + _fwrite(outfile, """\ + package cli + + // WARNING: This file is generated! + + """) + + for typedef in types: + _set_typedef_defaults(typedef) + + _fwrite(outfile, """\ + // {name}Flag is a flag with type {type}{doctail} + type {name}Flag struct {{ + Name string + Usage string + EnvVar string + Hidden bool + """.format(**typedef)) + + if typedef['value']: + _fwrite(outfile, """\ + Value {type} + """.format(**typedef)) + + if typedef['dest']: + _fwrite(outfile, """\ + Destination *{type} + """.format(**typedef)) + + _fwrite(outfile, "\n}\n\n") + + _fwrite(outfile, """\ + // String returns a readable representation of this value + // (for usage defaults) + func (f {name}Flag) String() string {{ + return FlagStringer(f) + }} + + // GetName returns the name of the flag + func (f {name}Flag) GetName() string {{ + return f.Name + }} + + // {name} looks up the value of a local {name}Flag, returns + // {context_default} if not found + func (c *Context) {name}(name string) {context_type} {{ + return lookup{name}(name, c.flagSet) + }} + + // Global{name} looks up the value of a global {name}Flag, returns + // {context_default} if not found + func (c *Context) Global{name}(name string) {context_type} {{ + if fs := lookupGlobalFlagSet(name, c); fs != nil {{ + return lookup{name}(name, fs) + }} + return {context_default} + }} + + func lookup{name}(name string, set *flag.FlagSet) {context_type} {{ + f := set.Lookup(name) + if f != nil {{ + parsed, err := {parser} + if err != nil {{ + return {context_default} + }} + return {parser_cast} + }} + return {context_default} + }} + """.format(**typedef)) + + +def _write_altsrc_flag_types(outfile, types): + _fwrite(outfile, """\ + package altsrc + + import ( + "gopkg.in/urfave/cli.v1" + ) + + // WARNING: This file is generated! + + """) + + for typedef in types: + _set_typedef_defaults(typedef) + + _fwrite(outfile, """\ + // {name}Flag is the flag type that wraps cli.{name}Flag to allow + // for other values to be specified + type {name}Flag struct {{ + cli.{name}Flag + set *flag.FlagSet + }} + + // New{name}Flag creates a new {name}Flag + func New{name}Flag(fl cli.{name}Flag) *{name}Flag {{ + return &{name}Flag{{{name}Flag: fl, set: nil}} + }} + + // Apply saves the flagSet for later usage calls, then calls the + // wrapped {name}Flag.Apply + func (f *{name}Flag) Apply(set *flag.FlagSet) {{ + f.set = set + f.{name}Flag.Apply(set) + }} + + // ApplyWithError saves the flagSet for later usage calls, then calls the + // wrapped {name}Flag.ApplyWithError + func (f *{name}Flag) ApplyWithError(set *flag.FlagSet) error {{ + f.set = set + return f.{name}Flag.ApplyWithError(set) + }} + """.format(**typedef)) + + +def _fwrite(outfile, text): + print(textwrap.dedent(text), end='', file=outfile) + + +_WRITEFUNCS = { + 'cli': _write_cli_flag_types, + 'altsrc': _write_altsrc_flag_types +} + +if __name__ == '__main__': + sys.exit(main()) diff --git a/vendor/github.com/codegangsta/cli/help.go b/vendor/github.com/codegangsta/cli/help.go new file mode 100644 index 0000000..57ec98d --- /dev/null +++ b/vendor/github.com/codegangsta/cli/help.go @@ -0,0 +1,338 @@ +package cli + +import ( + "fmt" + "io" + "os" + "strings" + "text/tabwriter" + "text/template" +) + +// AppHelpTemplate is the text template for the Default help topic. +// cli.go uses text/template to render templates. You can +// render custom help text by setting this variable. +var AppHelpTemplate = `NAME: + {{.Name}}{{if .Usage}} - {{.Usage}}{{end}} + +USAGE: + {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}{{if .Version}}{{if not .HideVersion}} + +VERSION: + {{.Version}}{{end}}{{end}}{{if .Description}} + +DESCRIPTION: + {{.Description}}{{end}}{{if len .Authors}} + +AUTHOR{{with $length := len .Authors}}{{if ne 1 $length}}S{{end}}{{end}}: + {{range $index, $author := .Authors}}{{if $index}} + {{end}}{{$author}}{{end}}{{end}}{{if .VisibleCommands}} + +COMMANDS:{{range .VisibleCategories}}{{if .Name}} + {{.Name}}:{{end}}{{range .VisibleCommands}} + {{join .Names ", "}}{{"\t"}}{{.Usage}}{{end}}{{end}}{{end}}{{if .VisibleFlags}} + +GLOBAL OPTIONS: + {{range $index, $option := .VisibleFlags}}{{if $index}} + {{end}}{{$option}}{{end}}{{end}}{{if .Copyright}} + +COPYRIGHT: + {{.Copyright}}{{end}} +` + +// CommandHelpTemplate is the text template for the command help topic. +// cli.go uses text/template to render templates. You can +// render custom help text by setting this variable. +var CommandHelpTemplate = `NAME: + {{.HelpName}} - {{.Usage}} + +USAGE: + {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}}{{if .VisibleFlags}} [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}}{{if .Category}} + +CATEGORY: + {{.Category}}{{end}}{{if .Description}} + +DESCRIPTION: + {{.Description}}{{end}}{{if .VisibleFlags}} + +OPTIONS: + {{range .VisibleFlags}}{{.}} + {{end}}{{end}} +` + +// SubcommandHelpTemplate is the text template for the subcommand help topic. +// cli.go uses text/template to render templates. You can +// render custom help text by setting this variable. +var SubcommandHelpTemplate = `NAME: + {{.HelpName}} - {{if .Description}}{{.Description}}{{else}}{{.Usage}}{{end}} + +USAGE: + {{if .UsageText}}{{.UsageText}}{{else}}{{.HelpName}} command{{if .VisibleFlags}} [command options]{{end}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}[arguments...]{{end}}{{end}} + +COMMANDS:{{range .VisibleCategories}}{{if .Name}} + {{.Name}}:{{end}}{{range .VisibleCommands}} + {{join .Names ", "}}{{"\t"}}{{.Usage}}{{end}} +{{end}}{{if .VisibleFlags}} +OPTIONS: + {{range .VisibleFlags}}{{.}} + {{end}}{{end}} +` + +var helpCommand = Command{ + Name: "help", + Aliases: []string{"h"}, + Usage: "Shows a list of commands or help for one command", + ArgsUsage: "[command]", + Action: func(c *Context) error { + args := c.Args() + if args.Present() { + return ShowCommandHelp(c, args.First()) + } + + ShowAppHelp(c) + return nil + }, +} + +var helpSubcommand = Command{ + Name: "help", + Aliases: []string{"h"}, + Usage: "Shows a list of commands or help for one command", + ArgsUsage: "[command]", + Action: func(c *Context) error { + args := c.Args() + if args.Present() { + return ShowCommandHelp(c, args.First()) + } + + return ShowSubcommandHelp(c) + }, +} + +// Prints help for the App or Command +type helpPrinter func(w io.Writer, templ string, data interface{}) + +// Prints help for the App or Command with custom template function. +type helpPrinterCustom func(w io.Writer, templ string, data interface{}, customFunc map[string]interface{}) + +// HelpPrinter is a function that writes the help output. If not set a default +// is used. The function signature is: +// func(w io.Writer, templ string, data interface{}) +var HelpPrinter helpPrinter = printHelp + +// HelpPrinterCustom is same as HelpPrinter but +// takes a custom function for template function map. +var HelpPrinterCustom helpPrinterCustom = printHelpCustom + +// VersionPrinter prints the version for the App +var VersionPrinter = printVersion + +// ShowAppHelpAndExit - Prints the list of subcommands for the app and exits with exit code. +func ShowAppHelpAndExit(c *Context, exitCode int) { + ShowAppHelp(c) + os.Exit(exitCode) +} + +// ShowAppHelp is an action that displays the help. +func ShowAppHelp(c *Context) (err error) { + if c.App.CustomAppHelpTemplate == "" { + HelpPrinter(c.App.Writer, AppHelpTemplate, c.App) + return + } + customAppData := func() map[string]interface{} { + if c.App.ExtraInfo == nil { + return nil + } + return map[string]interface{}{ + "ExtraInfo": c.App.ExtraInfo, + } + } + HelpPrinterCustom(c.App.Writer, c.App.CustomAppHelpTemplate, c.App, customAppData()) + return nil +} + +// DefaultAppComplete prints the list of subcommands as the default app completion method +func DefaultAppComplete(c *Context) { + for _, command := range c.App.Commands { + if command.Hidden { + continue + } + for _, name := range command.Names() { + fmt.Fprintln(c.App.Writer, name) + } + } +} + +// ShowCommandHelpAndExit - exits with code after showing help +func ShowCommandHelpAndExit(c *Context, command string, code int) { + ShowCommandHelp(c, command) + os.Exit(code) +} + +// ShowCommandHelp prints help for the given command +func ShowCommandHelp(ctx *Context, command string) error { + // show the subcommand help for a command with subcommands + if command == "" { + HelpPrinter(ctx.App.Writer, SubcommandHelpTemplate, ctx.App) + return nil + } + + for _, c := range ctx.App.Commands { + if c.HasName(command) { + if c.CustomHelpTemplate != "" { + HelpPrinterCustom(ctx.App.Writer, c.CustomHelpTemplate, c, nil) + } else { + HelpPrinter(ctx.App.Writer, CommandHelpTemplate, c) + } + return nil + } + } + + if ctx.App.CommandNotFound == nil { + return NewExitError(fmt.Sprintf("No help topic for '%v'", command), 3) + } + + ctx.App.CommandNotFound(ctx, command) + return nil +} + +// ShowSubcommandHelp prints help for the given subcommand +func ShowSubcommandHelp(c *Context) error { + return ShowCommandHelp(c, c.Command.Name) +} + +// ShowVersion prints the version number of the App +func ShowVersion(c *Context) { + VersionPrinter(c) +} + +func printVersion(c *Context) { + fmt.Fprintf(c.App.Writer, "%v version %v\n", c.App.Name, c.App.Version) +} + +// ShowCompletions prints the lists of commands within a given context +func ShowCompletions(c *Context) { + a := c.App + if a != nil && a.BashComplete != nil { + a.BashComplete(c) + } +} + +// ShowCommandCompletions prints the custom completions for a given command +func ShowCommandCompletions(ctx *Context, command string) { + c := ctx.App.Command(command) + if c != nil && c.BashComplete != nil { + c.BashComplete(ctx) + } +} + +func printHelpCustom(out io.Writer, templ string, data interface{}, customFunc map[string]interface{}) { + funcMap := template.FuncMap{ + "join": strings.Join, + } + if customFunc != nil { + for key, value := range customFunc { + funcMap[key] = value + } + } + + w := tabwriter.NewWriter(out, 1, 8, 2, ' ', 0) + t := template.Must(template.New("help").Funcs(funcMap).Parse(templ)) + err := t.Execute(w, data) + if err != nil { + // If the writer is closed, t.Execute will fail, and there's nothing + // we can do to recover. + if os.Getenv("CLI_TEMPLATE_ERROR_DEBUG") != "" { + fmt.Fprintf(ErrWriter, "CLI TEMPLATE ERROR: %#v\n", err) + } + return + } + w.Flush() +} + +func printHelp(out io.Writer, templ string, data interface{}) { + printHelpCustom(out, templ, data, nil) +} + +func checkVersion(c *Context) bool { + found := false + if VersionFlag.GetName() != "" { + eachName(VersionFlag.GetName(), func(name string) { + if c.GlobalBool(name) || c.Bool(name) { + found = true + } + }) + } + return found +} + +func checkHelp(c *Context) bool { + found := false + if HelpFlag.GetName() != "" { + eachName(HelpFlag.GetName(), func(name string) { + if c.GlobalBool(name) || c.Bool(name) { + found = true + } + }) + } + return found +} + +func checkCommandHelp(c *Context, name string) bool { + if c.Bool("h") || c.Bool("help") { + ShowCommandHelp(c, name) + return true + } + + return false +} + +func checkSubcommandHelp(c *Context) bool { + if c.Bool("h") || c.Bool("help") { + ShowSubcommandHelp(c) + return true + } + + return false +} + +func checkShellCompleteFlag(a *App, arguments []string) (bool, []string) { + if !a.EnableBashCompletion { + return false, arguments + } + + pos := len(arguments) - 1 + lastArg := arguments[pos] + + if lastArg != "--"+BashCompletionFlag.GetName() { + return false, arguments + } + + return true, arguments[:pos] +} + +func checkCompletions(c *Context) bool { + if !c.shellComplete { + return false + } + + if args := c.Args(); args.Present() { + name := args.First() + if cmd := c.App.Command(name); cmd != nil { + // let the command handle the completion + return false + } + } + + ShowCompletions(c) + return true +} + +func checkCommandCompletions(c *Context, name string) bool { + if !c.shellComplete { + return false + } + + ShowCommandCompletions(c, name) + return true +} diff --git a/vendor/github.com/codegangsta/cli/help_test.go b/vendor/github.com/codegangsta/cli/help_test.go new file mode 100644 index 0000000..70b6300 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/help_test.go @@ -0,0 +1,452 @@ +package cli + +import ( + "bytes" + "flag" + "fmt" + "runtime" + "strings" + "testing" +) + +func Test_ShowAppHelp_NoAuthor(t *testing.T) { + output := new(bytes.Buffer) + app := NewApp() + app.Writer = output + + c := NewContext(app, nil, nil) + + ShowAppHelp(c) + + if bytes.Index(output.Bytes(), []byte("AUTHOR(S):")) != -1 { + t.Errorf("expected\n%snot to include %s", output.String(), "AUTHOR(S):") + } +} + +func Test_ShowAppHelp_NoVersion(t *testing.T) { + output := new(bytes.Buffer) + app := NewApp() + app.Writer = output + + app.Version = "" + + c := NewContext(app, nil, nil) + + ShowAppHelp(c) + + if bytes.Index(output.Bytes(), []byte("VERSION:")) != -1 { + t.Errorf("expected\n%snot to include %s", output.String(), "VERSION:") + } +} + +func Test_ShowAppHelp_HideVersion(t *testing.T) { + output := new(bytes.Buffer) + app := NewApp() + app.Writer = output + + app.HideVersion = true + + c := NewContext(app, nil, nil) + + ShowAppHelp(c) + + if bytes.Index(output.Bytes(), []byte("VERSION:")) != -1 { + t.Errorf("expected\n%snot to include %s", output.String(), "VERSION:") + } +} + +func Test_Help_Custom_Flags(t *testing.T) { + oldFlag := HelpFlag + defer func() { + HelpFlag = oldFlag + }() + + HelpFlag = BoolFlag{ + Name: "help, x", + Usage: "show help", + } + + app := App{ + Flags: []Flag{ + BoolFlag{Name: "foo, h"}, + }, + Action: func(ctx *Context) error { + if ctx.Bool("h") != true { + t.Errorf("custom help flag not set") + } + return nil + }, + } + output := new(bytes.Buffer) + app.Writer = output + app.Run([]string{"test", "-h"}) + if output.Len() > 0 { + t.Errorf("unexpected output: %s", output.String()) + } +} + +func Test_Version_Custom_Flags(t *testing.T) { + oldFlag := VersionFlag + defer func() { + VersionFlag = oldFlag + }() + + VersionFlag = BoolFlag{ + Name: "version, V", + Usage: "show version", + } + + app := App{ + Flags: []Flag{ + BoolFlag{Name: "foo, v"}, + }, + Action: func(ctx *Context) error { + if ctx.Bool("v") != true { + t.Errorf("custom version flag not set") + } + return nil + }, + } + output := new(bytes.Buffer) + app.Writer = output + app.Run([]string{"test", "-v"}) + if output.Len() > 0 { + t.Errorf("unexpected output: %s", output.String()) + } +} + +func Test_helpCommand_Action_ErrorIfNoTopic(t *testing.T) { + app := NewApp() + + set := flag.NewFlagSet("test", 0) + set.Parse([]string{"foo"}) + + c := NewContext(app, set, nil) + + err := helpCommand.Action.(func(*Context) error)(c) + + if err == nil { + t.Fatalf("expected error from helpCommand.Action(), but got nil") + } + + exitErr, ok := err.(*ExitError) + if !ok { + t.Fatalf("expected ExitError from helpCommand.Action(), but instead got: %v", err.Error()) + } + + if !strings.HasPrefix(exitErr.Error(), "No help topic for") { + t.Fatalf("expected an unknown help topic error, but got: %v", exitErr.Error()) + } + + if exitErr.exitCode != 3 { + t.Fatalf("expected exit value = 3, got %d instead", exitErr.exitCode) + } +} + +func Test_helpCommand_InHelpOutput(t *testing.T) { + app := NewApp() + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"test", "--help"}) + + s := output.String() + + if strings.Contains(s, "\nCOMMANDS:\nGLOBAL OPTIONS:\n") { + t.Fatalf("empty COMMANDS section detected: %q", s) + } + + if !strings.Contains(s, "help, h") { + t.Fatalf("missing \"help, h\": %q", s) + } +} + +func Test_helpSubcommand_Action_ErrorIfNoTopic(t *testing.T) { + app := NewApp() + + set := flag.NewFlagSet("test", 0) + set.Parse([]string{"foo"}) + + c := NewContext(app, set, nil) + + err := helpSubcommand.Action.(func(*Context) error)(c) + + if err == nil { + t.Fatalf("expected error from helpCommand.Action(), but got nil") + } + + exitErr, ok := err.(*ExitError) + if !ok { + t.Fatalf("expected ExitError from helpCommand.Action(), but instead got: %v", err.Error()) + } + + if !strings.HasPrefix(exitErr.Error(), "No help topic for") { + t.Fatalf("expected an unknown help topic error, but got: %v", exitErr.Error()) + } + + if exitErr.exitCode != 3 { + t.Fatalf("expected exit value = 3, got %d instead", exitErr.exitCode) + } +} + +func TestShowAppHelp_CommandAliases(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + Aliases: []string{"fr", "frob"}, + Action: func(ctx *Context) error { + return nil + }, + }, + }, + } + + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"foo", "--help"}) + + if !strings.Contains(output.String(), "frobbly, fr, frob") { + t.Errorf("expected output to include all command aliases; got: %q", output.String()) + } +} + +func TestShowCommandHelp_CommandAliases(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + Aliases: []string{"fr", "frob", "bork"}, + Action: func(ctx *Context) error { + return nil + }, + }, + }, + } + + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"foo", "help", "fr"}) + + if !strings.Contains(output.String(), "frobbly") { + t.Errorf("expected output to include command name; got: %q", output.String()) + } + + if strings.Contains(output.String(), "bork") { + t.Errorf("expected output to exclude command aliases; got: %q", output.String()) + } +} + +func TestShowSubcommandHelp_CommandAliases(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + Aliases: []string{"fr", "frob", "bork"}, + Action: func(ctx *Context) error { + return nil + }, + }, + }, + } + + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"foo", "help"}) + + if !strings.Contains(output.String(), "frobbly, fr, frob, bork") { + t.Errorf("expected output to include all command aliases; got: %q", output.String()) + } +} + +func TestShowCommandHelp_Customtemplate(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + Action: func(ctx *Context) error { + return nil + }, + HelpName: "foo frobbly", + CustomHelpTemplate: `NAME: + {{.HelpName}} - {{.Usage}} + +USAGE: + {{.HelpName}} [FLAGS] TARGET [TARGET ...] + +FLAGS: + {{range .VisibleFlags}}{{.}} + {{end}} +EXAMPLES: + 1. Frobbly runs with this param locally. + $ {{.HelpName}} wobbly +`, + }, + }, + } + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"foo", "help", "frobbly"}) + + if strings.Contains(output.String(), "2. Frobbly runs without this param locally.") { + t.Errorf("expected output to exclude \"2. Frobbly runs without this param locally.\"; got: %q", output.String()) + } + + if !strings.Contains(output.String(), "1. Frobbly runs with this param locally.") { + t.Errorf("expected output to include \"1. Frobbly runs with this param locally.\"; got: %q", output.String()) + } + + if !strings.Contains(output.String(), "$ foo frobbly wobbly") { + t.Errorf("expected output to include \"$ foo frobbly wobbly\"; got: %q", output.String()) + } +} + +func TestShowSubcommandHelp_CommandUsageText(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + UsageText: "this is usage text", + }, + }, + } + + output := &bytes.Buffer{} + app.Writer = output + + app.Run([]string{"foo", "frobbly", "--help"}) + + if !strings.Contains(output.String(), "this is usage text") { + t.Errorf("expected output to include usage text; got: %q", output.String()) + } +} + +func TestShowSubcommandHelp_SubcommandUsageText(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + Subcommands: []Command{ + { + Name: "bobbly", + UsageText: "this is usage text", + }, + }, + }, + }, + } + + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"foo", "frobbly", "bobbly", "--help"}) + + if !strings.Contains(output.String(), "this is usage text") { + t.Errorf("expected output to include usage text; got: %q", output.String()) + } +} + +func TestShowAppHelp_HiddenCommand(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + Action: func(ctx *Context) error { + return nil + }, + }, + { + Name: "secretfrob", + Hidden: true, + Action: func(ctx *Context) error { + return nil + }, + }, + }, + } + + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"app", "--help"}) + + if strings.Contains(output.String(), "secretfrob") { + t.Errorf("expected output to exclude \"secretfrob\"; got: %q", output.String()) + } + + if !strings.Contains(output.String(), "frobbly") { + t.Errorf("expected output to include \"frobbly\"; got: %q", output.String()) + } +} + +func TestShowAppHelp_CustomAppTemplate(t *testing.T) { + app := &App{ + Commands: []Command{ + { + Name: "frobbly", + Action: func(ctx *Context) error { + return nil + }, + }, + { + Name: "secretfrob", + Hidden: true, + Action: func(ctx *Context) error { + return nil + }, + }, + }, + ExtraInfo: func() map[string]string { + platform := fmt.Sprintf("OS: %s | Arch: %s", runtime.GOOS, runtime.GOARCH) + goruntime := fmt.Sprintf("Version: %s | CPUs: %d", runtime.Version(), runtime.NumCPU()) + return map[string]string{ + "PLATFORM": platform, + "RUNTIME": goruntime, + } + }, + CustomAppHelpTemplate: `NAME: + {{.Name}} - {{.Usage}} + +USAGE: + {{.Name}} {{if .VisibleFlags}}[FLAGS] {{end}}COMMAND{{if .VisibleFlags}} [COMMAND FLAGS | -h]{{end}} [ARGUMENTS...] + +COMMANDS: + {{range .VisibleCommands}}{{join .Names ", "}}{{ "\t" }}{{.Usage}} + {{end}}{{if .VisibleFlags}} +GLOBAL FLAGS: + {{range .VisibleFlags}}{{.}} + {{end}}{{end}} +VERSION: + 2.0.0 +{{"\n"}}{{range $key, $value := ExtraInfo}} +{{$key}}: + {{$value}} +{{end}}`, + } + + output := &bytes.Buffer{} + app.Writer = output + app.Run([]string{"app", "--help"}) + + if strings.Contains(output.String(), "secretfrob") { + t.Errorf("expected output to exclude \"secretfrob\"; got: %q", output.String()) + } + + if !strings.Contains(output.String(), "frobbly") { + t.Errorf("expected output to include \"frobbly\"; got: %q", output.String()) + } + + if !strings.Contains(output.String(), "PLATFORM:") || + !strings.Contains(output.String(), "OS:") || + !strings.Contains(output.String(), "Arch:") { + t.Errorf("expected output to include \"PLATFORM:, OS: and Arch:\"; got: %q", output.String()) + } + + if !strings.Contains(output.String(), "RUNTIME:") || + !strings.Contains(output.String(), "Version:") || + !strings.Contains(output.String(), "CPUs:") { + t.Errorf("expected output to include \"RUNTIME:, Version: and CPUs:\"; got: %q", output.String()) + } + + if !strings.Contains(output.String(), "VERSION:") || + !strings.Contains(output.String(), "2.0.0") { + t.Errorf("expected output to include \"VERSION:, 2.0.0\"; got: %q", output.String()) + } +} diff --git a/vendor/github.com/codegangsta/cli/helpers_test.go b/vendor/github.com/codegangsta/cli/helpers_test.go new file mode 100644 index 0000000..109ea7a --- /dev/null +++ b/vendor/github.com/codegangsta/cli/helpers_test.go @@ -0,0 +1,28 @@ +package cli + +import ( + "os" + "reflect" + "runtime" + "strings" + "testing" +) + +var ( + wd, _ = os.Getwd() +) + +func expect(t *testing.T, a interface{}, b interface{}) { + _, fn, line, _ := runtime.Caller(1) + fn = strings.Replace(fn, wd+"/", "", -1) + + if !reflect.DeepEqual(a, b) { + t.Errorf("(%s:%d) Expected %v (type %v) - Got %v (type %v)", fn, line, b, reflect.TypeOf(b), a, reflect.TypeOf(a)) + } +} + +func refute(t *testing.T, a interface{}, b interface{}) { + if reflect.DeepEqual(a, b) { + t.Errorf("Did not expect %v (type %v) - Got %v (type %v)", b, reflect.TypeOf(b), a, reflect.TypeOf(a)) + } +} diff --git a/vendor/github.com/codegangsta/cli/helpers_unix_test.go b/vendor/github.com/codegangsta/cli/helpers_unix_test.go new file mode 100644 index 0000000..ae27fc5 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/helpers_unix_test.go @@ -0,0 +1,9 @@ +// +build darwin dragonfly freebsd linux netbsd openbsd solaris + +package cli + +import "os" + +func clearenv() { + os.Clearenv() +} diff --git a/vendor/github.com/codegangsta/cli/helpers_windows_test.go b/vendor/github.com/codegangsta/cli/helpers_windows_test.go new file mode 100644 index 0000000..4eb84f9 --- /dev/null +++ b/vendor/github.com/codegangsta/cli/helpers_windows_test.go @@ -0,0 +1,20 @@ +package cli + +import ( + "os" + "syscall" +) + +// os.Clearenv() doesn't actually unset variables on Windows +// See: https://github.com/golang/go/issues/17902 +func clearenv() { + for _, s := range os.Environ() { + for j := 1; j < len(s); j++ { + if s[j] == '=' { + keyp, _ := syscall.UTF16PtrFromString(s[0:j]) + syscall.SetEnvironmentVariable(keyp, nil) + break + } + } + } +} diff --git a/vendor/github.com/codegangsta/cli/runtests b/vendor/github.com/codegangsta/cli/runtests new file mode 100755 index 0000000..ee22bde --- /dev/null +++ b/vendor/github.com/codegangsta/cli/runtests @@ -0,0 +1,122 @@ +#!/usr/bin/env python +from __future__ import print_function + +import argparse +import os +import sys +import tempfile + +from subprocess import check_call, check_output + + +PACKAGE_NAME = os.environ.get( + 'CLI_PACKAGE_NAME', 'github.com/urfave/cli' +) + + +def main(sysargs=sys.argv[:]): + targets = { + 'vet': _vet, + 'test': _test, + 'gfmrun': _gfmrun, + 'toc': _toc, + 'gen': _gen, + } + + parser = argparse.ArgumentParser() + parser.add_argument( + 'target', nargs='?', choices=tuple(targets.keys()), default='test' + ) + args = parser.parse_args(sysargs[1:]) + + targets[args.target]() + return 0 + + +def _test(): + if check_output('go version'.split()).split()[2] < 'go1.2': + _run('go test -v .') + return + + coverprofiles = [] + for subpackage in ['', 'altsrc']: + coverprofile = 'cli.coverprofile' + if subpackage != '': + coverprofile = '{}.coverprofile'.format(subpackage) + + coverprofiles.append(coverprofile) + + _run('go test -v'.split() + [ + '-coverprofile={}'.format(coverprofile), + ('{}/{}'.format(PACKAGE_NAME, subpackage)).rstrip('/') + ]) + + combined_name = _combine_coverprofiles(coverprofiles) + _run('go tool cover -func={}'.format(combined_name)) + os.remove(combined_name) + + +def _gfmrun(): + go_version = check_output('go version'.split()).split()[2] + if go_version < 'go1.3': + print('runtests: skip on {}'.format(go_version), file=sys.stderr) + return + _run(['gfmrun', '-c', str(_gfmrun_count()), '-s', 'README.md']) + + +def _vet(): + _run('go vet ./...') + + +def _toc(): + _run('node_modules/.bin/markdown-toc -i README.md') + _run('git diff --exit-code') + + +def _gen(): + go_version = check_output('go version'.split()).split()[2] + if go_version < 'go1.5': + print('runtests: skip on {}'.format(go_version), file=sys.stderr) + return + + _run('go generate ./...') + _run('git diff --exit-code') + + +def _run(command): + if hasattr(command, 'split'): + command = command.split() + print('runtests: {}'.format(' '.join(command)), file=sys.stderr) + check_call(command) + + +def _gfmrun_count(): + with open('README.md') as infile: + lines = infile.read().splitlines() + return len(filter(_is_go_runnable, lines)) + + +def _is_go_runnable(line): + return line.startswith('package main') + + +def _combine_coverprofiles(coverprofiles): + combined = tempfile.NamedTemporaryFile( + suffix='.coverprofile', delete=False + ) + combined.write('mode: set\n') + + for coverprofile in coverprofiles: + with open(coverprofile, 'r') as infile: + for line in infile.readlines(): + if not line.startswith('mode: '): + combined.write(line) + + combined.flush() + name = combined.name + combined.close() + return name + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/vendor/github.com/fatih/structs/.gitignore b/vendor/github.com/fatih/structs/.gitignore new file mode 100644 index 0000000..8365624 --- /dev/null +++ b/vendor/github.com/fatih/structs/.gitignore @@ -0,0 +1,23 @@ +# 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 diff --git a/vendor/github.com/fatih/structs/.travis.yml b/vendor/github.com/fatih/structs/.travis.yml new file mode 100644 index 0000000..cbf2ccc --- /dev/null +++ b/vendor/github.com/fatih/structs/.travis.yml @@ -0,0 +1,11 @@ +language: go +go: + - 1.7.x + - tip +sudo: false +before_install: +- go get github.com/axw/gocov/gocov +- go get github.com/mattn/goveralls +- if ! go get github.com/golang/tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi +script: +- $HOME/gopath/bin/goveralls -service=travis-ci diff --git a/vendor/github.com/fatih/structs/LICENSE b/vendor/github.com/fatih/structs/LICENSE new file mode 100644 index 0000000..34504e4 --- /dev/null +++ b/vendor/github.com/fatih/structs/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Fatih Arslan + +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. \ No newline at end of file diff --git a/vendor/github.com/fatih/structs/README.md b/vendor/github.com/fatih/structs/README.md new file mode 100644 index 0000000..44e0100 --- /dev/null +++ b/vendor/github.com/fatih/structs/README.md @@ -0,0 +1,163 @@ +# Structs [![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/fatih/structs) [![Build Status](http://img.shields.io/travis/fatih/structs.svg?style=flat-square)](https://travis-ci.org/fatih/structs) [![Coverage Status](http://img.shields.io/coveralls/fatih/structs.svg?style=flat-square)](https://coveralls.io/r/fatih/structs) + +Structs contains various utilities to work with Go (Golang) structs. It was +initially used by me to convert a struct into a `map[string]interface{}`. With +time I've added other utilities for structs. It's basically a high level +package based on primitives from the reflect package. Feel free to add new +functions or improve the existing code. + +## Install + +```bash +go get github.com/fatih/structs +``` + +## Usage and Examples + +Just like the standard lib `strings`, `bytes` and co packages, `structs` has +many global functions to manipulate or organize your struct data. Lets define +and declare a struct: + +```go +type Server struct { + Name string `json:"name,omitempty"` + ID int + Enabled bool + users []string // not exported + http.Server // embedded +} + +server := &Server{ + Name: "gopher", + ID: 123456, + Enabled: true, +} +``` + +```go +// Convert a struct to a map[string]interface{} +// => {"Name":"gopher", "ID":123456, "Enabled":true} +m := structs.Map(server) + +// Convert the values of a struct to a []interface{} +// => ["gopher", 123456, true] +v := structs.Values(server) + +// Convert the names of a struct to a []string +// (see "Names methods" for more info about fields) +n := structs.Names(server) + +// Convert the values of a struct to a []*Field +// (see "Field methods" for more info about fields) +f := structs.Fields(server) + +// Return the struct name => "Server" +n := structs.Name(server) + +// Check if any field of a struct is initialized or not. +h := structs.HasZero(server) + +// Check if all fields of a struct is initialized or not. +z := structs.IsZero(server) + +// Check if server is a struct or a pointer to struct +i := structs.IsStruct(server) +``` + +### Struct methods + +The structs functions can be also used as independent methods by creating a new +`*structs.Struct`. This is handy if you want to have more control over the +structs (such as retrieving a single Field). + +```go +// Create a new struct type: +s := structs.New(server) + +m := s.Map() // Get a map[string]interface{} +v := s.Values() // Get a []interface{} +f := s.Fields() // Get a []*Field +n := s.Names() // Get a []string +f := s.Field(name) // Get a *Field based on the given field name +f, ok := s.FieldOk(name) // Get a *Field based on the given field name +n := s.Name() // Get the struct name +h := s.HasZero() // Check if any field is initialized +z := s.IsZero() // Check if all fields are initialized +``` + +### Field methods + +We can easily examine a single Field for more detail. Below you can see how we +get and interact with various field methods: + + +```go +s := structs.New(server) + +// Get the Field struct for the "Name" field +name := s.Field("Name") + +// Get the underlying value, value => "gopher" +value := name.Value().(string) + +// Set the field's value +name.Set("another gopher") + +// Get the field's kind, kind => "string" +name.Kind() + +// Check if the field is exported or not +if name.IsExported() { + fmt.Println("Name field is exported") +} + +// Check if the value is a zero value, such as "" for string, 0 for int +if !name.IsZero() { + fmt.Println("Name is initialized") +} + +// Check if the field is an anonymous (embedded) field +if !name.IsEmbedded() { + fmt.Println("Name is not an embedded field") +} + +// Get the Field's tag value for tag name "json", tag value => "name,omitempty" +tagValue := name.Tag("json") +``` + +Nested structs are supported too: + +```go +addrField := s.Field("Server").Field("Addr") + +// Get the value for addr +a := addrField.Value().(string) + +// Or get all fields +httpServer := s.Field("Server").Fields() +``` + +We can also get a slice of Fields from the Struct type to iterate over all +fields. This is handy if you wish to examine all fields: + +```go +s := structs.New(server) + +for _, f := range s.Fields() { + fmt.Printf("field name: %+v\n", f.Name()) + + if f.IsExported() { + fmt.Printf("value : %+v\n", f.Value()) + fmt.Printf("is zero : %+v\n", f.IsZero()) + } +} +``` + +## Credits + + * [Fatih Arslan](https://github.com/fatih) + * [Cihangir Savas](https://github.com/cihangir) + +## License + +The MIT License (MIT) - see LICENSE.md for more details diff --git a/vendor/github.com/fatih/structs/field.go b/vendor/github.com/fatih/structs/field.go new file mode 100644 index 0000000..e697832 --- /dev/null +++ b/vendor/github.com/fatih/structs/field.go @@ -0,0 +1,141 @@ +package structs + +import ( + "errors" + "fmt" + "reflect" +) + +var ( + errNotExported = errors.New("field is not exported") + errNotSettable = errors.New("field is not settable") +) + +// Field represents a single struct field that encapsulates high level +// functions around the field. +type Field struct { + value reflect.Value + field reflect.StructField + defaultTag string +} + +// Tag returns the value associated with key in the tag string. If there is no +// such key in the tag, Tag returns the empty string. +func (f *Field) Tag(key string) string { + return f.field.Tag.Get(key) +} + +// Value returns the underlying value of the field. It panics if the field +// is not exported. +func (f *Field) Value() interface{} { + return f.value.Interface() +} + +// IsEmbedded returns true if the given field is an anonymous field (embedded) +func (f *Field) IsEmbedded() bool { + return f.field.Anonymous +} + +// IsExported returns true if the given field is exported. +func (f *Field) IsExported() bool { + return f.field.PkgPath == "" +} + +// IsZero returns true if the given field is not initialized (has a zero value). +// It panics if the field is not exported. +func (f *Field) IsZero() bool { + zero := reflect.Zero(f.value.Type()).Interface() + current := f.Value() + + return reflect.DeepEqual(current, zero) +} + +// Name returns the name of the given field +func (f *Field) Name() string { + return f.field.Name +} + +// Kind returns the fields kind, such as "string", "map", "bool", etc .. +func (f *Field) Kind() reflect.Kind { + return f.value.Kind() +} + +// Set sets the field to given value v. It returns an error if the field is not +// settable (not addressable or not exported) or if the given value's type +// doesn't match the fields type. +func (f *Field) Set(val interface{}) error { + // we can't set unexported fields, so be sure this field is exported + if !f.IsExported() { + return errNotExported + } + + // do we get here? not sure... + if !f.value.CanSet() { + return errNotSettable + } + + given := reflect.ValueOf(val) + + if f.value.Kind() != given.Kind() { + return fmt.Errorf("wrong kind. got: %s want: %s", given.Kind(), f.value.Kind()) + } + + f.value.Set(given) + return nil +} + +// Zero sets the field to its zero value. It returns an error if the field is not +// settable (not addressable or not exported). +func (f *Field) Zero() error { + zero := reflect.Zero(f.value.Type()).Interface() + return f.Set(zero) +} + +// Fields returns a slice of Fields. This is particular handy to get the fields +// of a nested struct . A struct tag with the content of "-" ignores the +// checking of that particular field. Example: +// +// // Field is ignored by this package. +// Field *http.Request `structs:"-"` +// +// It panics if field is not exported or if field's kind is not struct +func (f *Field) Fields() []*Field { + return getFields(f.value, f.defaultTag) +} + +// Field returns the field from a nested struct. It panics if the nested struct +// is not exported or if the field was not found. +func (f *Field) Field(name string) *Field { + field, ok := f.FieldOk(name) + if !ok { + panic("field not found") + } + + return field +} + +// FieldOk returns the field from a nested struct. The boolean returns whether +// the field was found (true) or not (false). +func (f *Field) FieldOk(name string) (*Field, bool) { + value := &f.value + // value must be settable so we need to make sure it holds the address of the + // variable and not a copy, so we can pass the pointer to strctVal instead of a + // copy (which is not assigned to any variable, hence not settable). + // see "https://blog.golang.org/laws-of-reflection#TOC_8." + if f.value.Kind() != reflect.Ptr { + a := f.value.Addr() + value = &a + } + v := strctVal(value.Interface()) + t := v.Type() + + field, ok := t.FieldByName(name) + if !ok { + return nil, false + } + + return &Field{ + field: field, + value: v.FieldByName(name), + }, true +} diff --git a/vendor/github.com/fatih/structs/field_test.go b/vendor/github.com/fatih/structs/field_test.go new file mode 100644 index 0000000..de9dc3b --- /dev/null +++ b/vendor/github.com/fatih/structs/field_test.go @@ -0,0 +1,397 @@ +package structs + +import ( + "reflect" + "testing" +) + +// A test struct that defines all cases +type Foo struct { + A string + B int `structs:"y"` + C bool `json:"c"` + d string // not exported + E *Baz + x string `xml:"x"` // not exported, with tag + Y []string + Z map[string]interface{} + *Bar // embedded +} + +type Baz struct { + A string + B int +} + +type Bar struct { + E string + F int + g []string +} + +func newStruct() *Struct { + b := &Bar{ + E: "example", + F: 2, + g: []string{"zeynep", "fatih"}, + } + + // B and x is not initialized for testing + f := &Foo{ + A: "gopher", + C: true, + d: "small", + E: nil, + Y: []string{"example"}, + Z: nil, + } + f.Bar = b + + return New(f) +} + +func TestField_Set(t *testing.T) { + s := newStruct() + + f := s.Field("A") + err := f.Set("fatih") + if err != nil { + t.Error(err) + } + + if f.Value().(string) != "fatih" { + t.Errorf("Setted value is wrong: %s want: %s", f.Value().(string), "fatih") + } + + f = s.Field("Y") + err = f.Set([]string{"override", "with", "this"}) + if err != nil { + t.Error(err) + } + + sliceLen := len(f.Value().([]string)) + if sliceLen != 3 { + t.Errorf("Setted values slice length is wrong: %d, want: %d", sliceLen, 3) + } + + f = s.Field("C") + err = f.Set(false) + if err != nil { + t.Error(err) + } + + if f.Value().(bool) { + t.Errorf("Setted value is wrong: %t want: %t", f.Value().(bool), false) + } + + // let's pass a different type + f = s.Field("A") + err = f.Set(123) // Field A is of type string, but we are going to pass an integer + if err == nil { + t.Error("Setting a field's value with a different type than the field's type should return an error") + } + + // old value should be still there :) + if f.Value().(string) != "fatih" { + t.Errorf("Setted value is wrong: %s want: %s", f.Value().(string), "fatih") + } + + // let's access an unexported field, which should give an error + f = s.Field("d") + err = f.Set("large") + if err != errNotExported { + t.Error(err) + } + + // let's set a pointer to struct + b := &Bar{ + E: "gopher", + F: 2, + } + + f = s.Field("Bar") + err = f.Set(b) + if err != nil { + t.Error(err) + } + + baz := &Baz{ + A: "helloWorld", + B: 42, + } + + f = s.Field("E") + err = f.Set(baz) + if err != nil { + t.Error(err) + } + + ba := s.Field("E").Value().(*Baz) + + if ba.A != "helloWorld" { + t.Errorf("could not set baz. Got: %s Want: helloWorld", ba.A) + } +} + +func TestField_NotSettable(t *testing.T) { + a := map[int]Baz{ + 4: Baz{ + A: "value", + }, + } + + s := New(a[4]) + + if err := s.Field("A").Set("newValue"); err != errNotSettable { + t.Errorf("Trying to set non-settable field should error with %q. Got %q instead.", errNotSettable, err) + } +} + +func TestField_Zero(t *testing.T) { + s := newStruct() + + f := s.Field("A") + err := f.Zero() + if err != nil { + t.Error(err) + } + + if f.Value().(string) != "" { + t.Errorf("Zeroed value is wrong: %s want: %s", f.Value().(string), "") + } + + f = s.Field("Y") + err = f.Zero() + if err != nil { + t.Error(err) + } + + sliceLen := len(f.Value().([]string)) + if sliceLen != 0 { + t.Errorf("Zeroed values slice length is wrong: %d, want: %d", sliceLen, 0) + } + + f = s.Field("C") + err = f.Zero() + if err != nil { + t.Error(err) + } + + if f.Value().(bool) { + t.Errorf("Zeroed value is wrong: %t want: %t", f.Value().(bool), false) + } + + // let's access an unexported field, which should give an error + f = s.Field("d") + err = f.Zero() + if err != errNotExported { + t.Error(err) + } + + f = s.Field("Bar") + err = f.Zero() + if err != nil { + t.Error(err) + } + + f = s.Field("E") + err = f.Zero() + if err != nil { + t.Error(err) + } + + v := s.Field("E").value + if !v.IsNil() { + t.Errorf("could not set baz. Got: %s Want: ", v.Interface()) + } +} + +func TestField(t *testing.T) { + s := newStruct() + + defer func() { + err := recover() + if err == nil { + t.Error("Retrieveing a non existing field from the struct should panic") + } + }() + + _ = s.Field("no-field") +} + +func TestField_Kind(t *testing.T) { + s := newStruct() + + f := s.Field("A") + if f.Kind() != reflect.String { + t.Errorf("Field A has wrong kind: %s want: %s", f.Kind(), reflect.String) + } + + f = s.Field("B") + if f.Kind() != reflect.Int { + t.Errorf("Field B has wrong kind: %s want: %s", f.Kind(), reflect.Int) + } + + // unexported + f = s.Field("d") + if f.Kind() != reflect.String { + t.Errorf("Field d has wrong kind: %s want: %s", f.Kind(), reflect.String) + } +} + +func TestField_Tag(t *testing.T) { + s := newStruct() + + v := s.Field("B").Tag("json") + if v != "" { + t.Errorf("Field's tag value of a non existing tag should return empty, got: %s", v) + } + + v = s.Field("C").Tag("json") + if v != "c" { + t.Errorf("Field's tag value of the existing field C should return 'c', got: %s", v) + } + + v = s.Field("d").Tag("json") + if v != "" { + t.Errorf("Field's tag value of a non exported field should return empty, got: %s", v) + } + + v = s.Field("x").Tag("xml") + if v != "x" { + t.Errorf("Field's tag value of a non exported field with a tag should return 'x', got: %s", v) + } + + v = s.Field("A").Tag("json") + if v != "" { + t.Errorf("Field's tag value of a existing field without a tag should return empty, got: %s", v) + } +} + +func TestField_Value(t *testing.T) { + s := newStruct() + + v := s.Field("A").Value() + val, ok := v.(string) + if !ok { + t.Errorf("Field's value of a A should be string") + } + + if val != "gopher" { + t.Errorf("Field's value of a existing tag should return 'gopher', got: %s", val) + } + + defer func() { + err := recover() + if err == nil { + t.Error("Value of a non exported field from the field should panic") + } + }() + + // should panic + _ = s.Field("d").Value() +} + +func TestField_IsEmbedded(t *testing.T) { + s := newStruct() + + if !s.Field("Bar").IsEmbedded() { + t.Errorf("Fields 'Bar' field is an embedded field") + } + + if s.Field("d").IsEmbedded() { + t.Errorf("Fields 'd' field is not an embedded field") + } +} + +func TestField_IsExported(t *testing.T) { + s := newStruct() + + if !s.Field("Bar").IsExported() { + t.Errorf("Fields 'Bar' field is an exported field") + } + + if !s.Field("A").IsExported() { + t.Errorf("Fields 'A' field is an exported field") + } + + if s.Field("d").IsExported() { + t.Errorf("Fields 'd' field is not an exported field") + } +} + +func TestField_IsZero(t *testing.T) { + s := newStruct() + + if s.Field("A").IsZero() { + t.Errorf("Fields 'A' field is an initialized field") + } + + if !s.Field("B").IsZero() { + t.Errorf("Fields 'B' field is not an initialized field") + } +} + +func TestField_Name(t *testing.T) { + s := newStruct() + + if s.Field("A").Name() != "A" { + t.Errorf("Fields 'A' field should have the name 'A'") + } +} + +func TestField_Field(t *testing.T) { + s := newStruct() + + e := s.Field("Bar").Field("E") + + val, ok := e.Value().(string) + if !ok { + t.Error("The value of the field 'e' inside 'Bar' struct should be string") + } + + if val != "example" { + t.Errorf("The value of 'e' should be 'example, got: %s", val) + } + + defer func() { + err := recover() + if err == nil { + t.Error("Field of a non existing nested struct should panic") + } + }() + + _ = s.Field("Bar").Field("e") +} + +func TestField_Fields(t *testing.T) { + s := newStruct() + fields := s.Field("Bar").Fields() + + if len(fields) != 3 { + t.Errorf("We expect 3 fields in embedded struct, was: %d", len(fields)) + } +} + +func TestField_FieldOk(t *testing.T) { + s := newStruct() + + b, ok := s.FieldOk("Bar") + if !ok { + t.Error("The field 'Bar' should exists.") + } + + e, ok := b.FieldOk("E") + if !ok { + t.Error("The field 'E' should exists.") + } + + val, ok := e.Value().(string) + if !ok { + t.Error("The value of the field 'e' inside 'Bar' struct should be string") + } + + if val != "example" { + t.Errorf("The value of 'e' should be 'example, got: %s", val) + } +} diff --git a/vendor/github.com/fatih/structs/structs.go b/vendor/github.com/fatih/structs/structs.go new file mode 100644 index 0000000..be3816a --- /dev/null +++ b/vendor/github.com/fatih/structs/structs.go @@ -0,0 +1,586 @@ +// Package structs contains various utilities functions to work with structs. +package structs + +import ( + "fmt" + + "reflect" +) + +var ( + // DefaultTagName is the default tag name for struct fields which provides + // a more granular to tweak certain structs. Lookup the necessary functions + // for more info. + DefaultTagName = "structs" // struct's field default tag name +) + +// Struct encapsulates a struct type to provide several high level functions +// around the struct. +type Struct struct { + raw interface{} + value reflect.Value + TagName string +} + +// New returns a new *Struct with the struct s. It panics if the s's kind is +// not struct. +func New(s interface{}) *Struct { + return &Struct{ + raw: s, + value: strctVal(s), + TagName: DefaultTagName, + } +} + +// Map converts the given struct to a map[string]interface{}, where the keys +// of the map are the field names and the values of the map the associated +// values of the fields. The default key string is the struct field name but +// can be changed in the struct field's tag value. The "structs" key in the +// struct's field tag value is the key name. Example: +// +// // Field appears in map as key "myName". +// Name string `structs:"myName"` +// +// A tag value with the content of "-" ignores that particular field. Example: +// +// // Field is ignored by this package. +// Field bool `structs:"-"` +// +// A tag value with the content of "string" uses the stringer to get the value. Example: +// +// // The value will be output of Animal's String() func. +// // Map will panic if Animal does not implement String(). +// Field *Animal `structs:"field,string"` +// +// A tag value with the option of "flatten" used in a struct field is to flatten its fields +// in the output map. Example: +// +// // The FieldStruct's fields will be flattened into the output map. +// FieldStruct time.Time `structs:",flatten"` +// +// A tag value with the option of "omitnested" stops iterating further if the type +// is a struct. Example: +// +// // Field is not processed further by this package. +// Field time.Time `structs:"myName,omitnested"` +// Field *http.Request `structs:",omitnested"` +// +// A tag value with the option of "omitempty" ignores that particular field if +// the field value is empty. Example: +// +// // Field appears in map as key "myName", but the field is +// // skipped if empty. +// Field string `structs:"myName,omitempty"` +// +// // Field appears in map as key "Field" (the default), but +// // the field is skipped if empty. +// Field string `structs:",omitempty"` +// +// Note that only exported fields of a struct can be accessed, non exported +// fields will be neglected. +func (s *Struct) Map() map[string]interface{} { + out := make(map[string]interface{}) + s.FillMap(out) + return out +} + +// FillMap is the same as Map. Instead of returning the output, it fills the +// given map. +func (s *Struct) FillMap(out map[string]interface{}) { + if out == nil { + return + } + + fields := s.structFields() + + for _, field := range fields { + name := field.Name + val := s.value.FieldByName(name) + isSubStruct := false + var finalVal interface{} + + tagName, tagOpts := parseTag(field.Tag.Get(s.TagName)) + if tagName != "" { + name = tagName + } + + // if the value is a zero value and the field is marked as omitempty do + // not include + if tagOpts.Has("omitempty") { + zero := reflect.Zero(val.Type()).Interface() + current := val.Interface() + + if reflect.DeepEqual(current, zero) { + continue + } + } + + if !tagOpts.Has("omitnested") { + finalVal = s.nested(val) + + v := reflect.ValueOf(val.Interface()) + if v.Kind() == reflect.Ptr { + v = v.Elem() + } + + switch v.Kind() { + case reflect.Map, reflect.Struct: + isSubStruct = true + } + } else { + finalVal = val.Interface() + } + + if tagOpts.Has("string") { + s, ok := val.Interface().(fmt.Stringer) + if ok { + out[name] = s.String() + } + continue + } + + if isSubStruct && (tagOpts.Has("flatten")) { + for k := range finalVal.(map[string]interface{}) { + out[k] = finalVal.(map[string]interface{})[k] + } + } else { + out[name] = finalVal + } + } +} + +// Values converts the given s struct's field values to a []interface{}. A +// struct tag with the content of "-" ignores the that particular field. +// Example: +// +// // Field is ignored by this package. +// Field int `structs:"-"` +// +// A value with the option of "omitnested" stops iterating further if the type +// is a struct. Example: +// +// // Fields is not processed further by this package. +// Field time.Time `structs:",omitnested"` +// Field *http.Request `structs:",omitnested"` +// +// A tag value with the option of "omitempty" ignores that particular field and +// is not added to the values if the field value is empty. Example: +// +// // Field is skipped if empty +// Field string `structs:",omitempty"` +// +// Note that only exported fields of a struct can be accessed, non exported +// fields will be neglected. +func (s *Struct) Values() []interface{} { + fields := s.structFields() + + var t []interface{} + + for _, field := range fields { + val := s.value.FieldByName(field.Name) + + _, tagOpts := parseTag(field.Tag.Get(s.TagName)) + + // if the value is a zero value and the field is marked as omitempty do + // not include + if tagOpts.Has("omitempty") { + zero := reflect.Zero(val.Type()).Interface() + current := val.Interface() + + if reflect.DeepEqual(current, zero) { + continue + } + } + + if tagOpts.Has("string") { + s, ok := val.Interface().(fmt.Stringer) + if ok { + t = append(t, s.String()) + } + continue + } + + if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") { + // look out for embedded structs, and convert them to a + // []interface{} to be added to the final values slice + for _, embeddedVal := range Values(val.Interface()) { + t = append(t, embeddedVal) + } + } else { + t = append(t, val.Interface()) + } + } + + return t +} + +// Fields returns a slice of Fields. A struct tag with the content of "-" +// ignores the checking of that particular field. Example: +// +// // Field is ignored by this package. +// Field bool `structs:"-"` +// +// It panics if s's kind is not struct. +func (s *Struct) Fields() []*Field { + return getFields(s.value, s.TagName) +} + +// Names returns a slice of field names. A struct tag with the content of "-" +// ignores the checking of that particular field. Example: +// +// // Field is ignored by this package. +// Field bool `structs:"-"` +// +// It panics if s's kind is not struct. +func (s *Struct) Names() []string { + fields := getFields(s.value, s.TagName) + + names := make([]string, len(fields)) + + for i, field := range fields { + names[i] = field.Name() + } + + return names +} + +func getFields(v reflect.Value, tagName string) []*Field { + if v.Kind() == reflect.Ptr { + v = v.Elem() + } + + t := v.Type() + + var fields []*Field + + for i := 0; i < t.NumField(); i++ { + field := t.Field(i) + + if tag := field.Tag.Get(tagName); tag == "-" { + continue + } + + f := &Field{ + field: field, + value: v.FieldByName(field.Name), + } + + fields = append(fields, f) + + } + + return fields +} + +// Field returns a new Field struct that provides several high level functions +// around a single struct field entity. It panics if the field is not found. +func (s *Struct) Field(name string) *Field { + f, ok := s.FieldOk(name) + if !ok { + panic("field not found") + } + + return f +} + +// FieldOk returns a new Field struct that provides several high level functions +// around a single struct field entity. The boolean returns true if the field +// was found. +func (s *Struct) FieldOk(name string) (*Field, bool) { + t := s.value.Type() + + field, ok := t.FieldByName(name) + if !ok { + return nil, false + } + + return &Field{ + field: field, + value: s.value.FieldByName(name), + defaultTag: s.TagName, + }, true +} + +// IsZero returns true if all fields in a struct is a zero value (not +// initialized) A struct tag with the content of "-" ignores the checking of +// that particular field. Example: +// +// // Field is ignored by this package. +// Field bool `structs:"-"` +// +// A value with the option of "omitnested" stops iterating further if the type +// is a struct. Example: +// +// // Field is not processed further by this package. +// Field time.Time `structs:"myName,omitnested"` +// Field *http.Request `structs:",omitnested"` +// +// Note that only exported fields of a struct can be accessed, non exported +// fields will be neglected. It panics if s's kind is not struct. +func (s *Struct) IsZero() bool { + fields := s.structFields() + + for _, field := range fields { + val := s.value.FieldByName(field.Name) + + _, tagOpts := parseTag(field.Tag.Get(s.TagName)) + + if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") { + ok := IsZero(val.Interface()) + if !ok { + return false + } + + continue + } + + // zero value of the given field, such as "" for string, 0 for int + zero := reflect.Zero(val.Type()).Interface() + + // current value of the given field + current := val.Interface() + + if !reflect.DeepEqual(current, zero) { + return false + } + } + + return true +} + +// HasZero returns true if a field in a struct is not initialized (zero value). +// A struct tag with the content of "-" ignores the checking of that particular +// field. Example: +// +// // Field is ignored by this package. +// Field bool `structs:"-"` +// +// A value with the option of "omitnested" stops iterating further if the type +// is a struct. Example: +// +// // Field is not processed further by this package. +// Field time.Time `structs:"myName,omitnested"` +// Field *http.Request `structs:",omitnested"` +// +// Note that only exported fields of a struct can be accessed, non exported +// fields will be neglected. It panics if s's kind is not struct. +func (s *Struct) HasZero() bool { + fields := s.structFields() + + for _, field := range fields { + val := s.value.FieldByName(field.Name) + + _, tagOpts := parseTag(field.Tag.Get(s.TagName)) + + if IsStruct(val.Interface()) && !tagOpts.Has("omitnested") { + ok := HasZero(val.Interface()) + if ok { + return true + } + + continue + } + + // zero value of the given field, such as "" for string, 0 for int + zero := reflect.Zero(val.Type()).Interface() + + // current value of the given field + current := val.Interface() + + if reflect.DeepEqual(current, zero) { + return true + } + } + + return false +} + +// Name returns the structs's type name within its package. For more info refer +// to Name() function. +func (s *Struct) Name() string { + return s.value.Type().Name() +} + +// structFields returns the exported struct fields for a given s struct. This +// is a convenient helper method to avoid duplicate code in some of the +// functions. +func (s *Struct) structFields() []reflect.StructField { + t := s.value.Type() + + var f []reflect.StructField + + for i := 0; i < t.NumField(); i++ { + field := t.Field(i) + // we can't access the value of unexported fields + if field.PkgPath != "" { + continue + } + + // don't check if it's omitted + if tag := field.Tag.Get(s.TagName); tag == "-" { + continue + } + + f = append(f, field) + } + + return f +} + +func strctVal(s interface{}) reflect.Value { + v := reflect.ValueOf(s) + + // if pointer get the underlying element≤ + for v.Kind() == reflect.Ptr { + v = v.Elem() + } + + if v.Kind() != reflect.Struct { + panic("not struct") + } + + return v +} + +// Map converts the given struct to a map[string]interface{}. For more info +// refer to Struct types Map() method. It panics if s's kind is not struct. +func Map(s interface{}) map[string]interface{} { + return New(s).Map() +} + +// FillMap is the same as Map. Instead of returning the output, it fills the +// given map. +func FillMap(s interface{}, out map[string]interface{}) { + New(s).FillMap(out) +} + +// Values converts the given struct to a []interface{}. For more info refer to +// Struct types Values() method. It panics if s's kind is not struct. +func Values(s interface{}) []interface{} { + return New(s).Values() +} + +// Fields returns a slice of *Field. For more info refer to Struct types +// Fields() method. It panics if s's kind is not struct. +func Fields(s interface{}) []*Field { + return New(s).Fields() +} + +// Names returns a slice of field names. For more info refer to Struct types +// Names() method. It panics if s's kind is not struct. +func Names(s interface{}) []string { + return New(s).Names() +} + +// IsZero returns true if all fields is equal to a zero value. For more info +// refer to Struct types IsZero() method. It panics if s's kind is not struct. +func IsZero(s interface{}) bool { + return New(s).IsZero() +} + +// HasZero returns true if any field is equal to a zero value. For more info +// refer to Struct types HasZero() method. It panics if s's kind is not struct. +func HasZero(s interface{}) bool { + return New(s).HasZero() +} + +// IsStruct returns true if the given variable is a struct or a pointer to +// struct. +func IsStruct(s interface{}) bool { + v := reflect.ValueOf(s) + if v.Kind() == reflect.Ptr { + v = v.Elem() + } + + // uninitialized zero value of a struct + if v.Kind() == reflect.Invalid { + return false + } + + return v.Kind() == reflect.Struct +} + +// Name returns the structs's type name within its package. It returns an +// empty string for unnamed types. It panics if s's kind is not struct. +func Name(s interface{}) string { + return New(s).Name() +} + +// nested retrieves recursively all types for the given value and returns the +// nested value. +func (s *Struct) nested(val reflect.Value) interface{} { + var finalVal interface{} + + v := reflect.ValueOf(val.Interface()) + if v.Kind() == reflect.Ptr { + v = v.Elem() + } + + switch v.Kind() { + case reflect.Struct: + n := New(val.Interface()) + n.TagName = s.TagName + m := n.Map() + + // do not add the converted value if there are no exported fields, ie: + // time.Time + if len(m) == 0 { + finalVal = val.Interface() + } else { + finalVal = m + } + case reflect.Map: + // get the element type of the map + mapElem := val.Type() + switch val.Type().Kind() { + case reflect.Ptr, reflect.Array, reflect.Map, + reflect.Slice, reflect.Chan: + mapElem = val.Type().Elem() + if mapElem.Kind() == reflect.Ptr { + mapElem = mapElem.Elem() + } + } + + // only iterate over struct types, ie: map[string]StructType, + // map[string][]StructType, + if mapElem.Kind() == reflect.Struct || + (mapElem.Kind() == reflect.Slice && + mapElem.Elem().Kind() == reflect.Struct) { + m := make(map[string]interface{}, val.Len()) + for _, k := range val.MapKeys() { + m[k.String()] = s.nested(val.MapIndex(k)) + } + finalVal = m + break + } + + // TODO(arslan): should this be optional? + finalVal = val.Interface() + case reflect.Slice, reflect.Array: + if val.Type().Kind() == reflect.Interface { + finalVal = val.Interface() + break + } + + // TODO(arslan): should this be optional? + // do not iterate of non struct types, just pass the value. Ie: []int, + // []string, co... We only iterate further if it's a struct. + // i.e []foo or []*foo + if val.Type().Elem().Kind() != reflect.Struct && + !(val.Type().Elem().Kind() == reflect.Ptr && + val.Type().Elem().Elem().Kind() == reflect.Struct) { + finalVal = val.Interface() + break + } + + slices := make([]interface{}, val.Len(), val.Len()) + for x := 0; x < val.Len(); x++ { + slices[x] = s.nested(val.Index(x)) + } + finalVal = slices + default: + finalVal = val.Interface() + } + + return finalVal +} diff --git a/vendor/github.com/fatih/structs/structs_example_test.go b/vendor/github.com/fatih/structs/structs_example_test.go new file mode 100644 index 0000000..329c130 --- /dev/null +++ b/vendor/github.com/fatih/structs/structs_example_test.go @@ -0,0 +1,351 @@ +package structs + +import ( + "fmt" + "time" +) + +func ExampleNew() { + type Server struct { + Name string + ID int32 + Enabled bool + } + + server := &Server{ + Name: "Arslan", + ID: 123456, + Enabled: true, + } + + s := New(server) + + fmt.Printf("Name : %v\n", s.Name()) + fmt.Printf("Values : %v\n", s.Values()) + fmt.Printf("Value of ID : %v\n", s.Field("ID").Value()) + // Output: + // Name : Server + // Values : [Arslan 123456 true] + // Value of ID : 123456 + +} + +func ExampleMap() { + type Server struct { + Name string + ID int32 + Enabled bool + } + + s := &Server{ + Name: "Arslan", + ID: 123456, + Enabled: true, + } + + m := Map(s) + + fmt.Printf("%#v\n", m["Name"]) + fmt.Printf("%#v\n", m["ID"]) + fmt.Printf("%#v\n", m["Enabled"]) + // Output: + // "Arslan" + // 123456 + // true + +} + +func ExampleMap_tags() { + // Custom tags can change the map keys instead of using the fields name + type Server struct { + Name string `structs:"server_name"` + ID int32 `structs:"server_id"` + Enabled bool `structs:"enabled"` + } + + s := &Server{ + Name: "Zeynep", + ID: 789012, + } + + m := Map(s) + + // access them by the custom tags defined above + fmt.Printf("%#v\n", m["server_name"]) + fmt.Printf("%#v\n", m["server_id"]) + fmt.Printf("%#v\n", m["enabled"]) + // Output: + // "Zeynep" + // 789012 + // false + +} + +func ExampleMap_omitNested() { + // By default field with struct types are processed too. We can stop + // processing them via "omitnested" tag option. + type Server struct { + Name string `structs:"server_name"` + ID int32 `structs:"server_id"` + Time time.Time `structs:"time,omitnested"` // do not convert to map[string]interface{} + } + + const shortForm = "2006-Jan-02" + t, _ := time.Parse("2006-Jan-02", "2013-Feb-03") + + s := &Server{ + Name: "Zeynep", + ID: 789012, + Time: t, + } + + m := Map(s) + + // access them by the custom tags defined above + fmt.Printf("%v\n", m["server_name"]) + fmt.Printf("%v\n", m["server_id"]) + fmt.Printf("%v\n", m["time"].(time.Time)) + // Output: + // Zeynep + // 789012 + // 2013-02-03 00:00:00 +0000 UTC +} + +func ExampleMap_omitEmpty() { + // By default field with struct types of zero values are processed too. We + // can stop processing them via "omitempty" tag option. + type Server struct { + Name string `structs:",omitempty"` + ID int32 `structs:"server_id,omitempty"` + Location string + } + + // Only add location + s := &Server{ + Location: "Tokyo", + } + + m := Map(s) + + // map contains only the Location field + fmt.Printf("%v\n", m) + // Output: + // map[Location:Tokyo] +} + +func ExampleValues() { + type Server struct { + Name string + ID int32 + Enabled bool + } + + s := &Server{ + Name: "Fatih", + ID: 135790, + Enabled: false, + } + + m := Values(s) + + fmt.Printf("Values: %+v\n", m) + // Output: + // Values: [Fatih 135790 false] +} + +func ExampleValues_omitEmpty() { + // By default field with struct types of zero values are processed too. We + // can stop processing them via "omitempty" tag option. + type Server struct { + Name string `structs:",omitempty"` + ID int32 `structs:"server_id,omitempty"` + Location string + } + + // Only add location + s := &Server{ + Location: "Ankara", + } + + m := Values(s) + + // values contains only the Location field + fmt.Printf("Values: %+v\n", m) + // Output: + // Values: [Ankara] +} + +func ExampleValues_tags() { + type Location struct { + City string + Country string + } + + type Server struct { + Name string + ID int32 + Enabled bool + Location Location `structs:"-"` // values from location are not included anymore + } + + s := &Server{ + Name: "Fatih", + ID: 135790, + Enabled: false, + Location: Location{City: "Ankara", Country: "Turkey"}, + } + + // Let get all values from the struct s. Note that we don't include values + // from the Location field + m := Values(s) + + fmt.Printf("Values: %+v\n", m) + // Output: + // Values: [Fatih 135790 false] +} + +func ExampleFields() { + type Access struct { + Name string + LastAccessed time.Time + Number int + } + + s := &Access{ + Name: "Fatih", + LastAccessed: time.Now(), + Number: 1234567, + } + + fields := Fields(s) + + for i, field := range fields { + fmt.Printf("[%d] %+v\n", i, field.Name()) + } + + // Output: + // [0] Name + // [1] LastAccessed + // [2] Number +} + +func ExampleFields_nested() { + type Person struct { + Name string + Number int + } + + type Access struct { + Person Person + HasPermission bool + LastAccessed time.Time + } + + s := &Access{ + Person: Person{Name: "fatih", Number: 1234567}, + LastAccessed: time.Now(), + HasPermission: true, + } + + // Let's get all fields from the struct s. + fields := Fields(s) + + for _, field := range fields { + if field.Name() == "Person" { + fmt.Printf("Access.Person.Name: %+v\n", field.Field("Name").Value()) + } + } + + // Output: + // Access.Person.Name: fatih +} + +func ExampleField() { + type Person struct { + Name string + Number int + } + + type Access struct { + Person Person + HasPermission bool + LastAccessed time.Time + } + + access := &Access{ + Person: Person{Name: "fatih", Number: 1234567}, + LastAccessed: time.Now(), + HasPermission: true, + } + + // Create a new Struct type + s := New(access) + + // Get the Field type for "Person" field + p := s.Field("Person") + + // Get the underlying "Name field" and print the value of it + name := p.Field("Name") + + fmt.Printf("Value of Person.Access.Name: %+v\n", name.Value()) + + // Output: + // Value of Person.Access.Name: fatih + +} + +func ExampleIsZero() { + type Server struct { + Name string + ID int32 + Enabled bool + } + + // Nothing is initalized + a := &Server{} + isZeroA := IsZero(a) + + // Name and Enabled is initialized, but not ID + b := &Server{ + Name: "Golang", + Enabled: true, + } + isZeroB := IsZero(b) + + fmt.Printf("%#v\n", isZeroA) + fmt.Printf("%#v\n", isZeroB) + // Output: + // true + // false +} + +func ExampleHasZero() { + // Let's define an Access struct. Note that the "Enabled" field is not + // going to be checked because we added the "structs" tag to the field. + type Access struct { + Name string + LastAccessed time.Time + Number int + Enabled bool `structs:"-"` + } + + // Name and Number is not initialized. + a := &Access{ + LastAccessed: time.Now(), + } + hasZeroA := HasZero(a) + + // Name and Number is initialized. + b := &Access{ + Name: "Fatih", + LastAccessed: time.Now(), + Number: 12345, + } + hasZeroB := HasZero(b) + + fmt.Printf("%#v\n", hasZeroA) + fmt.Printf("%#v\n", hasZeroB) + // Output: + // true + // false +} diff --git a/vendor/github.com/fatih/structs/structs_test.go b/vendor/github.com/fatih/structs/structs_test.go new file mode 100644 index 0000000..8a18a07 --- /dev/null +++ b/vendor/github.com/fatih/structs/structs_test.go @@ -0,0 +1,1453 @@ +package structs + +import ( + "fmt" + "reflect" + "testing" + "time" +) + +func TestMapNonStruct(t *testing.T) { + foo := []string{"foo"} + + defer func() { + err := recover() + if err == nil { + t.Error("Passing a non struct into Map should panic") + } + }() + + // this should panic. We are going to recover and and test it + _ = Map(foo) +} + +func TestStructIndexes(t *testing.T) { + type C struct { + something int + Props map[string]interface{} + } + + defer func() { + err := recover() + if err != nil { + fmt.Printf("err %+v\n", err) + t.Error("Using mixed indexes should not panic") + } + }() + + // They should not panic + _ = Map(&C{}) + _ = Fields(&C{}) + _ = Values(&C{}) + _ = IsZero(&C{}) + _ = HasZero(&C{}) +} + +func TestMap(t *testing.T) { + var T = struct { + A string + B int + C bool + }{ + A: "a-value", + B: 2, + C: true, + } + + a := Map(T) + + if typ := reflect.TypeOf(a).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + // we have three fields + if len(a) != 3 { + t.Errorf("Map should return a map of len 3, got: %d", len(a)) + } + + inMap := func(val interface{}) bool { + for _, v := range a { + if reflect.DeepEqual(v, val) { + return true + } + } + + return false + } + + for _, val := range []interface{}{"a-value", 2, true} { + if !inMap(val) { + t.Errorf("Map should have the value %v", val) + } + } + +} + +func TestMap_Tag(t *testing.T) { + var T = struct { + A string `structs:"x"` + B int `structs:"y"` + C bool `structs:"z"` + }{ + A: "a-value", + B: 2, + C: true, + } + + a := Map(T) + + inMap := func(key interface{}) bool { + for k := range a { + if reflect.DeepEqual(k, key) { + return true + } + } + return false + } + + for _, key := range []string{"x", "y", "z"} { + if !inMap(key) { + t.Errorf("Map should have the key %v", key) + } + } + +} + +func TestMap_CustomTag(t *testing.T) { + var T = struct { + A string `json:"x"` + B int `json:"y"` + C bool `json:"z"` + D struct { + E string `json:"jkl"` + } `json:"nested"` + }{ + A: "a-value", + B: 2, + C: true, + } + T.D.E = "e-value" + + s := New(T) + s.TagName = "json" + + a := s.Map() + + inMap := func(key interface{}) bool { + for k := range a { + if reflect.DeepEqual(k, key) { + return true + } + } + return false + } + + for _, key := range []string{"x", "y", "z"} { + if !inMap(key) { + t.Errorf("Map should have the key %v", key) + } + } + + nested, ok := a["nested"].(map[string]interface{}) + if !ok { + t.Fatalf("Map should contain the D field that is tagged as 'nested'") + } + + e, ok := nested["jkl"].(string) + if !ok { + t.Fatalf("Map should contain the D.E field that is tagged as 'jkl'") + } + + if e != "e-value" { + t.Errorf("D.E field should be equal to 'e-value', got: '%v'", e) + } + +} + +func TestMap_MultipleCustomTag(t *testing.T) { + var A = struct { + X string `aa:"ax"` + }{"a_value"} + + aStruct := New(A) + aStruct.TagName = "aa" + + var B = struct { + X string `bb:"bx"` + }{"b_value"} + + bStruct := New(B) + bStruct.TagName = "bb" + + a, b := aStruct.Map(), bStruct.Map() + if !reflect.DeepEqual(a, map[string]interface{}{"ax": "a_value"}) { + t.Error("Map should have field ax with value a_value") + } + + if !reflect.DeepEqual(b, map[string]interface{}{"bx": "b_value"}) { + t.Error("Map should have field bx with value b_value") + } +} + +func TestMap_OmitEmpty(t *testing.T) { + type A struct { + Name string + Value string `structs:",omitempty"` + Time time.Time `structs:",omitempty"` + } + a := A{} + + m := Map(a) + + _, ok := m["Value"].(map[string]interface{}) + if ok { + t.Error("Map should not contain the Value field that is tagged as omitempty") + } + + _, ok = m["Time"].(map[string]interface{}) + if ok { + t.Error("Map should not contain the Time field that is tagged as omitempty") + } +} + +func TestMap_OmitNested(t *testing.T) { + type A struct { + Name string + Value string + Time time.Time `structs:",omitnested"` + } + a := A{Time: time.Now()} + + type B struct { + Desc string + A A + } + b := &B{A: a} + + m := Map(b) + + in, ok := m["A"].(map[string]interface{}) + if !ok { + t.Error("Map nested structs is not available in the map") + } + + // should not happen + if _, ok := in["Time"].(map[string]interface{}); ok { + t.Error("Map nested struct should omit recursiving parsing of Time") + } + + if _, ok := in["Time"].(time.Time); !ok { + t.Error("Map nested struct should stop parsing of Time at is current value") + } +} + +func TestMap_Nested(t *testing.T) { + type A struct { + Name string + } + a := &A{Name: "example"} + + type B struct { + A *A + } + b := &B{A: a} + + m := Map(b) + + if typ := reflect.TypeOf(m).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + in, ok := m["A"].(map[string]interface{}) + if !ok { + t.Error("Map nested structs is not available in the map") + } + + if name := in["Name"].(string); name != "example" { + t.Errorf("Map nested struct's name field should give example, got: %s", name) + } +} + +func TestMap_NestedMapWithStructValues(t *testing.T) { + type A struct { + Name string + } + + type B struct { + A map[string]*A + } + + a := &A{Name: "example"} + + b := &B{ + A: map[string]*A{ + "example_key": a, + }, + } + + m := Map(b) + + if typ := reflect.TypeOf(m).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + in, ok := m["A"].(map[string]interface{}) + if !ok { + t.Errorf("Nested type of map should be of type map[string]interface{}, have %T", m["A"]) + } + + example := in["example_key"].(map[string]interface{}) + if name := example["Name"].(string); name != "example" { + t.Errorf("Map nested struct's name field should give example, got: %s", name) + } +} + +func TestMap_NestedMapWithStringValues(t *testing.T) { + type B struct { + Foo map[string]string + } + + type A struct { + B *B + } + + b := &B{ + Foo: map[string]string{ + "example_key": "example", + }, + } + + a := &A{B: b} + + m := Map(a) + + if typ := reflect.TypeOf(m).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + in, ok := m["B"].(map[string]interface{}) + if !ok { + t.Errorf("Nested type of map should be of type map[string]interface{}, have %T", m["B"]) + } + + foo := in["Foo"].(map[string]string) + if name := foo["example_key"]; name != "example" { + t.Errorf("Map nested struct's name field should give example, got: %s", name) + } +} +func TestMap_NestedMapWithInterfaceValues(t *testing.T) { + type B struct { + Foo map[string]interface{} + } + + type A struct { + B *B + } + + b := &B{ + Foo: map[string]interface{}{ + "example_key": "example", + }, + } + + a := &A{B: b} + + m := Map(a) + + if typ := reflect.TypeOf(m).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + in, ok := m["B"].(map[string]interface{}) + if !ok { + t.Errorf("Nested type of map should be of type map[string]interface{}, have %T", m["B"]) + } + + foo := in["Foo"].(map[string]interface{}) + if name := foo["example_key"]; name != "example" { + t.Errorf("Map nested struct's name field should give example, got: %s", name) + } +} + +func TestMap_NestedMapWithSliceIntValues(t *testing.T) { + type B struct { + Foo map[string][]int + } + + type A struct { + B *B + } + + b := &B{ + Foo: map[string][]int{ + "example_key": []int{80}, + }, + } + + a := &A{B: b} + + m := Map(a) + + if typ := reflect.TypeOf(m).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + in, ok := m["B"].(map[string]interface{}) + if !ok { + t.Errorf("Nested type of map should be of type map[string]interface{}, have %T", m["B"]) + } + + foo := in["Foo"].(map[string][]int) + if name := foo["example_key"]; name[0] != 80 { + t.Errorf("Map nested struct's name field should give example, got: %s", name) + } +} + +func TestMap_NestedMapWithSliceStructValues(t *testing.T) { + type address struct { + Country string `structs:"country"` + } + + type B struct { + Foo map[string][]address + } + + type A struct { + B *B + } + + b := &B{ + Foo: map[string][]address{ + "example_key": []address{ + {Country: "Turkey"}, + }, + }, + } + + a := &A{B: b} + m := Map(a) + + if typ := reflect.TypeOf(m).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + in, ok := m["B"].(map[string]interface{}) + if !ok { + t.Errorf("Nested type of map should be of type map[string]interface{}, have %T", m["B"]) + } + + foo := in["Foo"].(map[string]interface{}) + + addresses := foo["example_key"].([]interface{}) + + addr, ok := addresses[0].(map[string]interface{}) + if !ok { + t.Errorf("Nested type of map should be of type map[string]interface{}, have %T", m["B"]) + } + + if _, exists := addr["country"]; !exists { + t.Errorf("Expecting country, but found Country") + } +} + +func TestMap_NestedSliceWithStructValues(t *testing.T) { + type address struct { + Country string `structs:"customCountryName"` + } + + type person struct { + Name string `structs:"name"` + Addresses []address `structs:"addresses"` + } + + p := person{ + Name: "test", + Addresses: []address{ + address{Country: "England"}, + address{Country: "Italy"}, + }, + } + mp := Map(p) + + mpAddresses := mp["addresses"].([]interface{}) + if _, exists := mpAddresses[0].(map[string]interface{})["Country"]; exists { + t.Errorf("Expecting customCountryName, but found Country") + } + + if _, exists := mpAddresses[0].(map[string]interface{})["customCountryName"]; !exists { + t.Errorf("customCountryName key not found") + } +} + +func TestMap_NestedSliceWithPointerOfStructValues(t *testing.T) { + type address struct { + Country string `structs:"customCountryName"` + } + + type person struct { + Name string `structs:"name"` + Addresses []*address `structs:"addresses"` + } + + p := person{ + Name: "test", + Addresses: []*address{ + &address{Country: "England"}, + &address{Country: "Italy"}, + }, + } + mp := Map(p) + + mpAddresses := mp["addresses"].([]interface{}) + if _, exists := mpAddresses[0].(map[string]interface{})["Country"]; exists { + t.Errorf("Expecting customCountryName, but found Country") + } + + if _, exists := mpAddresses[0].(map[string]interface{})["customCountryName"]; !exists { + t.Errorf("customCountryName key not found") + } +} + +func TestMap_NestedSliceWithIntValues(t *testing.T) { + type person struct { + Name string `structs:"name"` + Ports []int `structs:"ports"` + } + + p := person{ + Name: "test", + Ports: []int{80}, + } + m := Map(p) + + ports, ok := m["ports"].([]int) + if !ok { + t.Errorf("Nested type of map should be of type []int, have %T", m["ports"]) + } + + if ports[0] != 80 { + t.Errorf("Map nested struct's ports field should give 80, got: %v", ports) + } +} + +func TestMap_Anonymous(t *testing.T) { + type A struct { + Name string + } + a := &A{Name: "example"} + + type B struct { + *A + } + b := &B{} + b.A = a + + m := Map(b) + + if typ := reflect.TypeOf(m).Kind(); typ != reflect.Map { + t.Errorf("Map should return a map type, got: %v", typ) + } + + in, ok := m["A"].(map[string]interface{}) + if !ok { + t.Error("Embedded structs is not available in the map") + } + + if name := in["Name"].(string); name != "example" { + t.Errorf("Embedded A struct's Name field should give example, got: %s", name) + } +} + +func TestMap_Flatnested(t *testing.T) { + type A struct { + Name string + } + a := A{Name: "example"} + + type B struct { + A `structs:",flatten"` + C int + } + b := &B{C: 123} + b.A = a + + m := Map(b) + + _, ok := m["A"].(map[string]interface{}) + if ok { + t.Error("Embedded A struct with tag flatten has to be flat in the map") + } + + expectedMap := map[string]interface{}{"Name": "example", "C": 123} + if !reflect.DeepEqual(m, expectedMap) { + t.Errorf("The exprected map %+v does't correspond to %+v", expectedMap, m) + } + +} + +func TestMap_FlatnestedOverwrite(t *testing.T) { + type A struct { + Name string + } + a := A{Name: "example"} + + type B struct { + A `structs:",flatten"` + Name string + C int + } + b := &B{C: 123, Name: "bName"} + b.A = a + + m := Map(b) + + _, ok := m["A"].(map[string]interface{}) + if ok { + t.Error("Embedded A struct with tag flatten has to be flat in the map") + } + + expectedMap := map[string]interface{}{"Name": "bName", "C": 123} + if !reflect.DeepEqual(m, expectedMap) { + t.Errorf("The exprected map %+v does't correspond to %+v", expectedMap, m) + } +} + +func TestMap_TimeField(t *testing.T) { + type A struct { + CreatedAt time.Time + } + + a := &A{CreatedAt: time.Now().UTC()} + m := Map(a) + + _, ok := m["CreatedAt"].(time.Time) + if !ok { + t.Error("Time field must be final") + } +} + +func TestFillMap(t *testing.T) { + var T = struct { + A string + B int + C bool + }{ + A: "a-value", + B: 2, + C: true, + } + + a := make(map[string]interface{}, 0) + FillMap(T, a) + + // we have three fields + if len(a) != 3 { + t.Errorf("FillMap should fill a map of len 3, got: %d", len(a)) + } + + inMap := func(val interface{}) bool { + for _, v := range a { + if reflect.DeepEqual(v, val) { + return true + } + } + + return false + } + + for _, val := range []interface{}{"a-value", 2, true} { + if !inMap(val) { + t.Errorf("FillMap should have the value %v", val) + } + } +} + +func TestFillMap_Nil(t *testing.T) { + var T = struct { + A string + B int + C bool + }{ + A: "a-value", + B: 2, + C: true, + } + + defer func() { + err := recover() + if err != nil { + t.Error("FillMap should not panic if a nil map is passed") + } + }() + + // nil should no + FillMap(T, nil) +} +func TestStruct(t *testing.T) { + var T = struct{}{} + + if !IsStruct(T) { + t.Errorf("T should be a struct, got: %T", T) + } + + if !IsStruct(&T) { + t.Errorf("T should be a struct, got: %T", T) + } + +} + +func TestValues(t *testing.T) { + var T = struct { + A string + B int + C bool + }{ + A: "a-value", + B: 2, + C: true, + } + + s := Values(T) + + if typ := reflect.TypeOf(s).Kind(); typ != reflect.Slice { + t.Errorf("Values should return a slice type, got: %v", typ) + } + + inSlice := func(val interface{}) bool { + for _, v := range s { + if reflect.DeepEqual(v, val) { + return true + } + } + return false + } + + for _, val := range []interface{}{"a-value", 2, true} { + if !inSlice(val) { + t.Errorf("Values should have the value %v", val) + } + } +} + +func TestValues_OmitEmpty(t *testing.T) { + type A struct { + Name string + Value int `structs:",omitempty"` + } + + a := A{Name: "example"} + s := Values(a) + + if len(s) != 1 { + t.Errorf("Values of omitted empty fields should be not counted") + } + + if s[0].(string) != "example" { + t.Errorf("Values of omitted empty fields should left the value example") + } +} + +func TestValues_OmitNested(t *testing.T) { + type A struct { + Name string + Value int + } + + a := A{ + Name: "example", + Value: 123, + } + + type B struct { + A A `structs:",omitnested"` + C int + } + b := &B{A: a, C: 123} + + s := Values(b) + + if len(s) != 2 { + t.Errorf("Values of omitted nested struct should be not counted") + } + + inSlice := func(val interface{}) bool { + for _, v := range s { + if reflect.DeepEqual(v, val) { + return true + } + } + return false + } + + for _, val := range []interface{}{123, a} { + if !inSlice(val) { + t.Errorf("Values should have the value %v", val) + } + } +} + +func TestValues_Nested(t *testing.T) { + type A struct { + Name string + } + a := A{Name: "example"} + + type B struct { + A A + C int + } + b := &B{A: a, C: 123} + + s := Values(b) + + inSlice := func(val interface{}) bool { + for _, v := range s { + if reflect.DeepEqual(v, val) { + return true + } + } + return false + } + + for _, val := range []interface{}{"example", 123} { + if !inSlice(val) { + t.Errorf("Values should have the value %v", val) + } + } +} + +func TestValues_Anonymous(t *testing.T) { + type A struct { + Name string + } + a := A{Name: "example"} + + type B struct { + A + C int + } + b := &B{C: 123} + b.A = a + + s := Values(b) + + inSlice := func(val interface{}) bool { + for _, v := range s { + if reflect.DeepEqual(v, val) { + return true + } + } + return false + } + + for _, val := range []interface{}{"example", 123} { + if !inSlice(val) { + t.Errorf("Values should have the value %v", val) + } + } +} + +func TestNames(t *testing.T) { + var T = struct { + A string + B int + C bool + }{ + A: "a-value", + B: 2, + C: true, + } + + s := Names(T) + + if len(s) != 3 { + t.Errorf("Names should return a slice of len 3, got: %d", len(s)) + } + + inSlice := func(val string) bool { + for _, v := range s { + if reflect.DeepEqual(v, val) { + return true + } + } + return false + } + + for _, val := range []string{"A", "B", "C"} { + if !inSlice(val) { + t.Errorf("Names should have the value %v", val) + } + } +} + +func TestFields(t *testing.T) { + var T = struct { + A string + B int + C bool + }{ + A: "a-value", + B: 2, + C: true, + } + + s := Fields(T) + + if len(s) != 3 { + t.Errorf("Fields should return a slice of len 3, got: %d", len(s)) + } + + inSlice := func(val string) bool { + for _, v := range s { + if reflect.DeepEqual(v.Name(), val) { + return true + } + } + return false + } + + for _, val := range []string{"A", "B", "C"} { + if !inSlice(val) { + t.Errorf("Fields should have the value %v", val) + } + } +} + +func TestFields_OmitNested(t *testing.T) { + type A struct { + Name string + Enabled bool + } + a := A{Name: "example"} + + type B struct { + A A + C int + Value string `structs:"-"` + Number int + } + b := &B{A: a, C: 123} + + s := Fields(b) + + if len(s) != 3 { + t.Errorf("Fields should omit nested struct. Expecting 2 got: %d", len(s)) + } + + inSlice := func(val interface{}) bool { + for _, v := range s { + if reflect.DeepEqual(v.Name(), val) { + return true + } + } + return false + } + + for _, val := range []interface{}{"A", "C"} { + if !inSlice(val) { + t.Errorf("Fields should have the value %v", val) + } + } +} + +func TestFields_Anonymous(t *testing.T) { + type A struct { + Name string + } + a := A{Name: "example"} + + type B struct { + A + C int + } + b := &B{C: 123} + b.A = a + + s := Fields(b) + + inSlice := func(val interface{}) bool { + for _, v := range s { + if reflect.DeepEqual(v.Name(), val) { + return true + } + } + return false + } + + for _, val := range []interface{}{"A", "C"} { + if !inSlice(val) { + t.Errorf("Fields should have the value %v", val) + } + } +} + +func TestIsZero(t *testing.T) { + var T = struct { + A string + B int + C bool `structs:"-"` + D []string + }{} + + ok := IsZero(T) + if !ok { + t.Error("IsZero should return true because none of the fields are initialized.") + } + + var X = struct { + A string + F *bool + }{ + A: "a-value", + } + + ok = IsZero(X) + if ok { + t.Error("IsZero should return false because A is initialized") + } + + var Y = struct { + A string + B int + }{ + A: "a-value", + B: 123, + } + + ok = IsZero(Y) + if ok { + t.Error("IsZero should return false because A and B is initialized") + } +} + +func TestIsZero_OmitNested(t *testing.T) { + type A struct { + Name string + D string + } + a := A{Name: "example"} + + type B struct { + A A `structs:",omitnested"` + C int + } + b := &B{A: a, C: 123} + + ok := IsZero(b) + if ok { + t.Error("IsZero should return false because A, B and C are initialized") + } + + aZero := A{} + bZero := &B{A: aZero} + + ok = IsZero(bZero) + if !ok { + t.Error("IsZero should return true because neither A nor B is initialized") + } + +} + +func TestIsZero_Nested(t *testing.T) { + type A struct { + Name string + D string + } + a := A{Name: "example"} + + type B struct { + A A + C int + } + b := &B{A: a, C: 123} + + ok := IsZero(b) + if ok { + t.Error("IsZero should return false because A, B and C are initialized") + } + + aZero := A{} + bZero := &B{A: aZero} + + ok = IsZero(bZero) + if !ok { + t.Error("IsZero should return true because neither A nor B is initialized") + } + +} + +func TestIsZero_Anonymous(t *testing.T) { + type A struct { + Name string + D string + } + a := A{Name: "example"} + + type B struct { + A + C int + } + b := &B{C: 123} + b.A = a + + ok := IsZero(b) + if ok { + t.Error("IsZero should return false because A, B and C are initialized") + } + + aZero := A{} + bZero := &B{} + bZero.A = aZero + + ok = IsZero(bZero) + if !ok { + t.Error("IsZero should return true because neither A nor B is initialized") + } +} + +func TestHasZero(t *testing.T) { + var T = struct { + A string + B int + C bool `structs:"-"` + D []string + }{ + A: "a-value", + B: 2, + } + + ok := HasZero(T) + if !ok { + t.Error("HasZero should return true because A and B are initialized.") + } + + var X = struct { + A string + F *bool + }{ + A: "a-value", + } + + ok = HasZero(X) + if !ok { + t.Error("HasZero should return true because A is initialized") + } + + var Y = struct { + A string + B int + }{ + A: "a-value", + B: 123, + } + + ok = HasZero(Y) + if ok { + t.Error("HasZero should return false because A and B is initialized") + } +} + +func TestHasZero_OmitNested(t *testing.T) { + type A struct { + Name string + D string + } + a := A{Name: "example"} + + type B struct { + A A `structs:",omitnested"` + C int + } + b := &B{A: a, C: 123} + + // Because the Field A inside B is omitted HasZero should return false + // because it will stop iterating deeper andnot going to lookup for D + ok := HasZero(b) + if ok { + t.Error("HasZero should return false because A and C are initialized") + } +} + +func TestHasZero_Nested(t *testing.T) { + type A struct { + Name string + D string + } + a := A{Name: "example"} + + type B struct { + A A + C int + } + b := &B{A: a, C: 123} + + ok := HasZero(b) + if !ok { + t.Error("HasZero should return true because D is not initialized") + } +} + +func TestHasZero_Anonymous(t *testing.T) { + type A struct { + Name string + D string + } + a := A{Name: "example"} + + type B struct { + A + C int + } + b := &B{C: 123} + b.A = a + + ok := HasZero(b) + if !ok { + t.Error("HasZero should return false because D is not initialized") + } +} + +func TestName(t *testing.T) { + type Foo struct { + A string + B bool + } + f := &Foo{} + + n := Name(f) + if n != "Foo" { + t.Errorf("Name should return Foo, got: %s", n) + } + + unnamed := struct{ Name string }{Name: "Cihangir"} + m := Name(unnamed) + if m != "" { + t.Errorf("Name should return empty string for unnamed struct, got: %s", n) + } + + defer func() { + err := recover() + if err == nil { + t.Error("Name should panic if a non struct is passed") + } + }() + + Name([]string{}) +} + +func TestNestedNilPointer(t *testing.T) { + type Collar struct { + Engraving string + } + + type Dog struct { + Name string + Collar *Collar + } + + type Person struct { + Name string + Dog *Dog + } + + person := &Person{ + Name: "John", + } + + personWithDog := &Person{ + Name: "Ron", + Dog: &Dog{ + Name: "Rover", + }, + } + + personWithDogWithCollar := &Person{ + Name: "Kon", + Dog: &Dog{ + Name: "Ruffles", + Collar: &Collar{ + Engraving: "If lost, call Kon", + }, + }, + } + + defer func() { + err := recover() + if err != nil { + fmt.Printf("err %+v\n", err) + t.Error("Internal nil pointer should not panic") + } + }() + + _ = Map(person) // Panics + _ = Map(personWithDog) // Panics + _ = Map(personWithDogWithCollar) // Doesn't panic +} + +func TestSetValueOnNestedField(t *testing.T) { + type Base struct { + ID int + } + + type User struct { + Base + Name string + } + + u := User{} + s := New(&u) + f := s.Field("Base").Field("ID") + err := f.Set(10) + if err != nil { + t.Errorf("Error %v", err) + } + if f.Value().(int) != 10 { + t.Errorf("Value should be equal to 10, got %v", f.Value()) + } +} + +type Person struct { + Name string + Age int +} + +func (p *Person) String() string { + return fmt.Sprintf("%s(%d)", p.Name, p.Age) +} + +func TestTagWithStringOption(t *testing.T) { + + type Address struct { + Country string `json:"country"` + Person *Person `json:"person,string"` + } + + person := &Person{ + Name: "John", + Age: 23, + } + + address := &Address{ + Country: "EU", + Person: person, + } + + defer func() { + err := recover() + if err != nil { + fmt.Printf("err %+v\n", err) + t.Error("Internal nil pointer should not panic") + } + }() + + s := New(address) + + s.TagName = "json" + m := s.Map() + + if m["person"] != person.String() { + t.Errorf("Value for field person should be %s, got: %s", person.String(), m["person"]) + } + + vs := s.Values() + if vs[1] != person.String() { + t.Errorf("Value for 2nd field (person) should be %T, got: %T", person.String(), vs[1]) + } +} + +type Animal struct { + Name string + Age int +} + +type Dog struct { + Animal *Animal `json:"animal,string"` +} + +func TestNonStringerTagWithStringOption(t *testing.T) { + a := &Animal{ + Name: "Fluff", + Age: 4, + } + + d := &Dog{ + Animal: a, + } + + defer func() { + err := recover() + if err != nil { + fmt.Printf("err %+v\n", err) + t.Error("Internal nil pointer should not panic") + } + }() + + s := New(d) + + s.TagName = "json" + m := s.Map() + + if _, exists := m["animal"]; exists { + t.Errorf("Value for field Animal should not exist") + } +} + +func TestMap_InterfaceValue(t *testing.T) { + type TestStruct struct { + A interface{} + } + + expected := []byte("test value") + + a := TestStruct{A: expected} + s := Map(a) + if !reflect.DeepEqual(s["A"], expected) { + t.Errorf("Value does not match expected: %q != %q", s["A"], expected) + } +} + +func TestPointer2Pointer(t *testing.T) { + defer func() { + err := recover() + if err != nil { + fmt.Printf("err %+v\n", err) + t.Error("Internal nil pointer should not panic") + } + }() + a := &Animal{ + Name: "Fluff", + Age: 4, + } + _ = Map(&a) + + b := &a + _ = Map(&b) + + c := &b + _ = Map(&c) +} + +func TestMap_InterfaceTypeWithMapValue(t *testing.T) { + type A struct { + Name string `structs:"name"` + Ip string `structs:"ip"` + Query string `structs:"query"` + Payload interface{} `structs:"payload"` + } + + a := A{ + Name: "test", + Ip: "127.0.0.1", + Query: "", + Payload: map[string]string{"test_param": "test_param"}, + } + + defer func() { + err := recover() + if err != nil { + t.Error("Converting Map with an interface{} type with map value should not panic") + } + }() + + _ = Map(a) +} diff --git a/vendor/github.com/fatih/structs/tags.go b/vendor/github.com/fatih/structs/tags.go new file mode 100644 index 0000000..8859341 --- /dev/null +++ b/vendor/github.com/fatih/structs/tags.go @@ -0,0 +1,32 @@ +package structs + +import "strings" + +// tagOptions contains a slice of tag options +type tagOptions []string + +// Has returns true if the given optiton is available in tagOptions +func (t tagOptions) Has(opt string) bool { + for _, tagOpt := range t { + if tagOpt == opt { + return true + } + } + + return false +} + +// parseTag splits a struct field's tag into its name and a list of options +// which comes after a name. A tag is in the form of: "name,option1,option2". +// The name can be neglectected. +func parseTag(tag string) (string, tagOptions) { + // tag is one of followings: + // "" + // "name" + // "name,opt" + // "name,opt,opt2" + // ",opt" + + res := strings.Split(tag, ",") + return res[0], res[1:] +} diff --git a/vendor/github.com/fatih/structs/tags_test.go b/vendor/github.com/fatih/structs/tags_test.go new file mode 100644 index 0000000..5d12724 --- /dev/null +++ b/vendor/github.com/fatih/structs/tags_test.go @@ -0,0 +1,46 @@ +package structs + +import "testing" + +func TestParseTag_Name(t *testing.T) { + tags := []struct { + tag string + has bool + }{ + {"", false}, + {"name", true}, + {"name,opt", true}, + {"name , opt, opt2", false}, // has a single whitespace + {", opt, opt2", false}, + } + + for _, tag := range tags { + name, _ := parseTag(tag.tag) + + if (name != "name") && tag.has { + t.Errorf("Parse tag should return name: %#v", tag) + } + } +} + +func TestParseTag_Opts(t *testing.T) { + tags := []struct { + opts string + has bool + }{ + {"name", false}, + {"name,opt", true}, + {"name , opt, opt2", false}, // has a single whitespace + {",opt, opt2", true}, + {", opt3, opt4", false}, + } + + // search for "opt" + for _, tag := range tags { + _, opts := parseTag(tag.opts) + + if opts.Has("opt") != tag.has { + t.Errorf("Tag opts should have opt: %#v", tag) + } + } +} diff --git a/vendor/github.com/hashicorp/errwrap/LICENSE b/vendor/github.com/hashicorp/errwrap/LICENSE new file mode 100644 index 0000000..c33dcc7 --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/LICENSE @@ -0,0 +1,354 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. “Contributor” + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. “Contributor Version” + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor’s Contribution. + +1.3. “Contribution” + + means Covered Software of a particular Contributor. + +1.4. “Covered Software” + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. “Incompatible With Secondary Licenses” + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of version + 1.1 or earlier of the License, but not also under the terms of a + Secondary License. + +1.6. “Executable Form” + + means any form of the work other than Source Code Form. + +1.7. “Larger Work” + + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + +1.8. “License” + + means this document. + +1.9. “Licensable” + + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed by + this License. + +1.10. “Modifications” + + means any of the following: + + a. any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. “Patent Claims” of a Contributor + + means any patent claim(s), including without limitation, method, process, + and apparatus claims, in any patent Licensable by such Contributor that + would be infringed, but for the grant of the License, by the making, + using, selling, offering for sale, having made, import, or transfer of + either its Contributions or its Contributor Version. + +1.12. “Secondary License” + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. “Source Code Form” + + means the form of the work preferred for making modifications. + +1.14. “You” (or “Your”) + + means an individual or a legal entity exercising rights under this + License. For legal entities, “You” includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, “control” means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or as + part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its Contributions + or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding Section + 2.1(b) above, no patent license is granted by a Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party’s + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of its + Contributions. + + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the + notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this License + (see Section 10.2) or under the terms of a Secondary License (if permitted + under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions + are its original creation(s) or it has sufficient rights to grant the + rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form + of the Covered Software is governed by the terms of this License, and how + they can obtain a copy of this License. You may not attempt to alter or + restrict the recipients’ rights in the Source Code Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this License, + or sublicense it under different terms, provided that the license for + the Executable Form does not attempt to limit or alter the recipients’ + rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software + with a work governed by one or more Secondary Licenses, and the Covered + Software is not Incompatible With Secondary Licenses, this License permits + You to additionally distribute such Covered Software under the terms of + such Secondary License(s), so that the recipient of the Larger Work may, at + their option, further distribute the Covered Software under the terms of + either this License or such Secondary License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations + of liability) contained within the Source Code Form of the Covered + Software, except that You may alter any license notices to the extent + required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on behalf + of any Contributor. You must make it absolutely clear that any such + warranty, support, indemnity, or liability obligation is offered by You + alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, judicial + order, or regulation then You must: (a) comply with the terms of this License + to the maximum extent possible; and (b) describe the limitations and the code + they affect. Such description must be placed in a text file included with all + distributions of the Covered Software under this License. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing basis, + if such Contributor fails to notify You of the non-compliance by some + reasonable means prior to 60 days after You have come back into compliance. + Moreover, Your grants from a particular Contributor are reinstated on an + ongoing basis if such Contributor notifies You of the non-compliance by + some reasonable means, this is the first time You have received notice of + non-compliance with this License from such Contributor, and You become + compliant prior to 30 days after Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, + and cross-claims) alleging that a Contributor Version directly or + indirectly infringes any patent, then the rights granted to You by any and + all Contributors for the Covered Software under Section 2.1 of this License + shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an “as is” basis, without + warranty of any kind, either expressed, implied, or statutory, including, + without limitation, warranties that the Covered Software is free of defects, + merchantable, fit for a particular purpose or non-infringing. The entire + risk as to the quality and performance of the Covered Software is with You. + Should any Covered Software prove defective in any respect, You (not any + Contributor) assume the cost of any necessary servicing, repair, or + correction. This disclaimer of warranty constitutes an essential part of this + License. No use of any Covered Software is authorized under this License + except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from such + party’s negligence to the extent applicable law prohibits such limitation. + Some jurisdictions do not allow the exclusion or limitation of incidental or + consequential damages, so this exclusion and limitation may not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of + a jurisdiction where the defendant maintains its principal place of business + and such litigation shall be governed by laws of that jurisdiction, without + reference to its conflict-of-law provisions. Nothing in this Section shall + prevent a party’s ability to bring cross-claims or counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. Any law or regulation which provides that the language of a + contract shall be construed against the drafter shall not be used to construe + this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of + the License under which You originally received the Covered Software, or + under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a modified + version of this License if you rename the license and remove any + references to the name of the license steward (except to note that such + modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the + notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - “Incompatible With Secondary Licenses” Notice + + This Source Code Form is “Incompatible + With Secondary Licenses”, as defined by + the Mozilla Public License, v. 2.0. + diff --git a/vendor/github.com/hashicorp/errwrap/README.md b/vendor/github.com/hashicorp/errwrap/README.md new file mode 100644 index 0000000..1c95f59 --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/README.md @@ -0,0 +1,89 @@ +# errwrap + +`errwrap` is a package for Go that formalizes the pattern of wrapping errors +and checking if an error contains another error. + +There is a common pattern in Go of taking a returned `error` value and +then wrapping it (such as with `fmt.Errorf`) before returning it. The problem +with this pattern is that you completely lose the original `error` structure. + +Arguably the _correct_ approach is that you should make a custom structure +implementing the `error` interface, and have the original error as a field +on that structure, such [as this example](http://golang.org/pkg/os/#PathError). +This is a good approach, but you have to know the entire chain of possible +rewrapping that happens, when you might just care about one. + +`errwrap` formalizes this pattern (it doesn't matter what approach you use +above) by giving a single interface for wrapping errors, checking if a specific +error is wrapped, and extracting that error. + +## Installation and Docs + +Install using `go get github.com/hashicorp/errwrap`. + +Full documentation is available at +http://godoc.org/github.com/hashicorp/errwrap + +## Usage + +#### Basic Usage + +Below is a very basic example of its usage: + +```go +// A function that always returns an error, but wraps it, like a real +// function might. +func tryOpen() error { + _, err := os.Open("/i/dont/exist") + if err != nil { + return errwrap.Wrapf("Doesn't exist: {{err}}", err) + } + + return nil +} + +func main() { + err := tryOpen() + + // We can use the Contains helpers to check if an error contains + // another error. It is safe to do this with a nil error, or with + // an error that doesn't even use the errwrap package. + if errwrap.Contains(err, ErrNotExist) { + // Do something + } + if errwrap.ContainsType(err, new(os.PathError)) { + // Do something + } + + // Or we can use the associated `Get` functions to just extract + // a specific error. This would return nil if that specific error doesn't + // exist. + perr := errwrap.GetType(err, new(os.PathError)) +} +``` + +#### Custom Types + +If you're already making custom types that properly wrap errors, then +you can get all the functionality of `errwraps.Contains` and such by +implementing the `Wrapper` interface with just one function. Example: + +```go +type AppError { + Code ErrorCode + Err error +} + +func (e *AppError) WrappedErrors() []error { + return []error{e.Err} +} +``` + +Now this works: + +```go +err := &AppError{Err: fmt.Errorf("an error")} +if errwrap.ContainsType(err, fmt.Errorf("")) { + // This will work! +} +``` diff --git a/vendor/github.com/hashicorp/errwrap/errwrap.go b/vendor/github.com/hashicorp/errwrap/errwrap.go new file mode 100644 index 0000000..a733bef --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/errwrap.go @@ -0,0 +1,169 @@ +// Package errwrap implements methods to formalize error wrapping in Go. +// +// All of the top-level functions that take an `error` are built to be able +// to take any error, not just wrapped errors. This allows you to use errwrap +// without having to type-check and type-cast everywhere. +package errwrap + +import ( + "errors" + "reflect" + "strings" +) + +// WalkFunc is the callback called for Walk. +type WalkFunc func(error) + +// Wrapper is an interface that can be implemented by custom types to +// have all the Contains, Get, etc. functions in errwrap work. +// +// When Walk reaches a Wrapper, it will call the callback for every +// wrapped error in addition to the wrapper itself. Since all the top-level +// functions in errwrap use Walk, this means that all those functions work +// with your custom type. +type Wrapper interface { + WrappedErrors() []error +} + +// Wrap defines that outer wraps inner, returning an error type that +// can be cleanly used with the other methods in this package, such as +// Contains, GetAll, etc. +// +// This function won't modify the error message at all (the outer message +// will be used). +func Wrap(outer, inner error) error { + return &wrappedError{ + Outer: outer, + Inner: inner, + } +} + +// Wrapf wraps an error with a formatting message. This is similar to using +// `fmt.Errorf` to wrap an error. If you're using `fmt.Errorf` to wrap +// errors, you should replace it with this. +// +// format is the format of the error message. The string '{{err}}' will +// be replaced with the original error message. +func Wrapf(format string, err error) error { + outerMsg := "" + if err != nil { + outerMsg = err.Error() + } + + outer := errors.New(strings.Replace( + format, "{{err}}", outerMsg, -1)) + + return Wrap(outer, err) +} + +// Contains checks if the given error contains an error with the +// message msg. If err is not a wrapped error, this will always return +// false unless the error itself happens to match this msg. +func Contains(err error, msg string) bool { + return len(GetAll(err, msg)) > 0 +} + +// ContainsType checks if the given error contains an error with +// the same concrete type as v. If err is not a wrapped error, this will +// check the err itself. +func ContainsType(err error, v interface{}) bool { + return len(GetAllType(err, v)) > 0 +} + +// Get is the same as GetAll but returns the deepest matching error. +func Get(err error, msg string) error { + es := GetAll(err, msg) + if len(es) > 0 { + return es[len(es)-1] + } + + return nil +} + +// GetType is the same as GetAllType but returns the deepest matching error. +func GetType(err error, v interface{}) error { + es := GetAllType(err, v) + if len(es) > 0 { + return es[len(es)-1] + } + + return nil +} + +// GetAll gets all the errors that might be wrapped in err with the +// given message. The order of the errors is such that the outermost +// matching error (the most recent wrap) is index zero, and so on. +func GetAll(err error, msg string) []error { + var result []error + + Walk(err, func(err error) { + if err.Error() == msg { + result = append(result, err) + } + }) + + return result +} + +// GetAllType gets all the errors that are the same type as v. +// +// The order of the return value is the same as described in GetAll. +func GetAllType(err error, v interface{}) []error { + var result []error + + var search string + if v != nil { + search = reflect.TypeOf(v).String() + } + Walk(err, func(err error) { + var needle string + if err != nil { + needle = reflect.TypeOf(err).String() + } + + if needle == search { + result = append(result, err) + } + }) + + return result +} + +// Walk walks all the wrapped errors in err and calls the callback. If +// err isn't a wrapped error, this will be called once for err. If err +// is a wrapped error, the callback will be called for both the wrapper +// that implements error as well as the wrapped error itself. +func Walk(err error, cb WalkFunc) { + if err == nil { + return + } + + switch e := err.(type) { + case *wrappedError: + cb(e.Outer) + Walk(e.Inner, cb) + case Wrapper: + cb(err) + + for _, err := range e.WrappedErrors() { + Walk(err, cb) + } + default: + cb(err) + } +} + +// wrappedError is an implementation of error that has both the +// outer and inner errors. +type wrappedError struct { + Outer error + Inner error +} + +func (w *wrappedError) Error() string { + return w.Outer.Error() +} + +func (w *wrappedError) WrappedErrors() []error { + return []error{w.Outer, w.Inner} +} diff --git a/vendor/github.com/hashicorp/errwrap/errwrap_test.go b/vendor/github.com/hashicorp/errwrap/errwrap_test.go new file mode 100644 index 0000000..5ae5f8e --- /dev/null +++ b/vendor/github.com/hashicorp/errwrap/errwrap_test.go @@ -0,0 +1,94 @@ +package errwrap + +import ( + "fmt" + "testing" +) + +func TestWrappedError_impl(t *testing.T) { + var _ error = new(wrappedError) +} + +func TestGetAll(t *testing.T) { + cases := []struct { + Err error + Msg string + Len int + }{ + {}, + { + fmt.Errorf("foo"), + "foo", + 1, + }, + { + fmt.Errorf("bar"), + "foo", + 0, + }, + { + Wrapf("bar", fmt.Errorf("foo")), + "foo", + 1, + }, + { + Wrapf("{{err}}", fmt.Errorf("foo")), + "foo", + 2, + }, + { + Wrapf("bar", Wrapf("baz", fmt.Errorf("foo"))), + "foo", + 1, + }, + } + + for i, tc := range cases { + actual := GetAll(tc.Err, tc.Msg) + if len(actual) != tc.Len { + t.Fatalf("%d: bad: %#v", i, actual) + } + for _, v := range actual { + if v.Error() != tc.Msg { + t.Fatalf("%d: bad: %#v", i, actual) + } + } + } +} + +func TestGetAllType(t *testing.T) { + cases := []struct { + Err error + Type interface{} + Len int + }{ + {}, + { + fmt.Errorf("foo"), + "foo", + 0, + }, + { + fmt.Errorf("bar"), + fmt.Errorf("foo"), + 1, + }, + { + Wrapf("bar", fmt.Errorf("foo")), + fmt.Errorf("baz"), + 2, + }, + { + Wrapf("bar", Wrapf("baz", fmt.Errorf("foo"))), + Wrapf("", nil), + 0, + }, + } + + for i, tc := range cases { + actual := GetAllType(tc.Err, tc.Type) + if len(actual) != tc.Len { + t.Fatalf("%d: bad: %#v", i, actual) + } + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/.travis.yml b/vendor/github.com/hashicorp/go-multierror/.travis.yml new file mode 100644 index 0000000..304a835 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/.travis.yml @@ -0,0 +1,12 @@ +sudo: false + +language: go + +go: + - 1.x + +branches: + only: + - master + +script: make test testrace diff --git a/vendor/github.com/hashicorp/go-multierror/LICENSE b/vendor/github.com/hashicorp/go-multierror/LICENSE new file mode 100644 index 0000000..82b4de9 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/LICENSE @@ -0,0 +1,353 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. “Contributor” + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. “Contributor Version” + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor’s Contribution. + +1.3. “Contribution” + + means Covered Software of a particular Contributor. + +1.4. “Covered Software” + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. “Incompatible With Secondary Licenses” + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of version + 1.1 or earlier of the License, but not also under the terms of a + Secondary License. + +1.6. “Executable Form” + + means any form of the work other than Source Code Form. + +1.7. “Larger Work” + + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + +1.8. “License” + + means this document. + +1.9. “Licensable” + + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed by + this License. + +1.10. “Modifications” + + means any of the following: + + a. any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. “Patent Claims” of a Contributor + + means any patent claim(s), including without limitation, method, process, + and apparatus claims, in any patent Licensable by such Contributor that + would be infringed, but for the grant of the License, by the making, + using, selling, offering for sale, having made, import, or transfer of + either its Contributions or its Contributor Version. + +1.12. “Secondary License” + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. “Source Code Form” + + means the form of the work preferred for making modifications. + +1.14. “You” (or “Your”) + + means an individual or a legal entity exercising rights under this + License. For legal entities, “You” includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, “control” means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or as + part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its Contributions + or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding Section + 2.1(b) above, no patent license is granted by a Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party’s + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of its + Contributions. + + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the + notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this License + (see Section 10.2) or under the terms of a Secondary License (if permitted + under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions + are its original creation(s) or it has sufficient rights to grant the + rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form + of the Covered Software is governed by the terms of this License, and how + they can obtain a copy of this License. You may not attempt to alter or + restrict the recipients’ rights in the Source Code Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this License, + or sublicense it under different terms, provided that the license for + the Executable Form does not attempt to limit or alter the recipients’ + rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software + with a work governed by one or more Secondary Licenses, and the Covered + Software is not Incompatible With Secondary Licenses, this License permits + You to additionally distribute such Covered Software under the terms of + such Secondary License(s), so that the recipient of the Larger Work may, at + their option, further distribute the Covered Software under the terms of + either this License or such Secondary License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations + of liability) contained within the Source Code Form of the Covered + Software, except that You may alter any license notices to the extent + required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on behalf + of any Contributor. You must make it absolutely clear that any such + warranty, support, indemnity, or liability obligation is offered by You + alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, judicial + order, or regulation then You must: (a) comply with the terms of this License + to the maximum extent possible; and (b) describe the limitations and the code + they affect. Such description must be placed in a text file included with all + distributions of the Covered Software under this License. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing basis, + if such Contributor fails to notify You of the non-compliance by some + reasonable means prior to 60 days after You have come back into compliance. + Moreover, Your grants from a particular Contributor are reinstated on an + ongoing basis if such Contributor notifies You of the non-compliance by + some reasonable means, this is the first time You have received notice of + non-compliance with this License from such Contributor, and You become + compliant prior to 30 days after Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, + and cross-claims) alleging that a Contributor Version directly or + indirectly infringes any patent, then the rights granted to You by any and + all Contributors for the Covered Software under Section 2.1 of this License + shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an “as is” basis, without + warranty of any kind, either expressed, implied, or statutory, including, + without limitation, warranties that the Covered Software is free of defects, + merchantable, fit for a particular purpose or non-infringing. The entire + risk as to the quality and performance of the Covered Software is with You. + Should any Covered Software prove defective in any respect, You (not any + Contributor) assume the cost of any necessary servicing, repair, or + correction. This disclaimer of warranty constitutes an essential part of this + License. No use of any Covered Software is authorized under this License + except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from such + party’s negligence to the extent applicable law prohibits such limitation. + Some jurisdictions do not allow the exclusion or limitation of incidental or + consequential damages, so this exclusion and limitation may not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of + a jurisdiction where the defendant maintains its principal place of business + and such litigation shall be governed by laws of that jurisdiction, without + reference to its conflict-of-law provisions. Nothing in this Section shall + prevent a party’s ability to bring cross-claims or counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. Any law or regulation which provides that the language of a + contract shall be construed against the drafter shall not be used to construe + this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of + the License under which You originally received the Covered Software, or + under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a modified + version of this License if you rename the license and remove any + references to the name of the license steward (except to note that such + modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the + notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - “Incompatible With Secondary Licenses” Notice + + This Source Code Form is “Incompatible + With Secondary Licenses”, as defined by + the Mozilla Public License, v. 2.0. diff --git a/vendor/github.com/hashicorp/go-multierror/Makefile b/vendor/github.com/hashicorp/go-multierror/Makefile new file mode 100644 index 0000000..b97cd6e --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/Makefile @@ -0,0 +1,31 @@ +TEST?=./... + +default: test + +# test runs the test suite and vets the code. +test: generate + @echo "==> Running tests..." + @go list $(TEST) \ + | grep -v "/vendor/" \ + | xargs -n1 go test -timeout=60s -parallel=10 ${TESTARGS} + +# testrace runs the race checker +testrace: generate + @echo "==> Running tests (race)..." + @go list $(TEST) \ + | grep -v "/vendor/" \ + | xargs -n1 go test -timeout=60s -race ${TESTARGS} + +# updatedeps installs all the dependencies needed to run and build. +updatedeps: + @sh -c "'${CURDIR}/scripts/deps.sh' '${NAME}'" + +# generate runs `go generate` to build the dynamically generated source files. +generate: + @echo "==> Generating..." + @find . -type f -name '.DS_Store' -delete + @go list ./... \ + | grep -v "/vendor/" \ + | xargs -n1 go generate + +.PHONY: default test testrace updatedeps generate diff --git a/vendor/github.com/hashicorp/go-multierror/README.md b/vendor/github.com/hashicorp/go-multierror/README.md new file mode 100644 index 0000000..ead5830 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/README.md @@ -0,0 +1,97 @@ +# go-multierror + +[![Build Status](http://img.shields.io/travis/hashicorp/go-multierror.svg?style=flat-square)][travis] +[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs] + +[travis]: https://travis-ci.org/hashicorp/go-multierror +[godocs]: https://godoc.org/github.com/hashicorp/go-multierror + +`go-multierror` is a package for Go that provides a mechanism for +representing a list of `error` values as a single `error`. + +This allows a function in Go to return an `error` that might actually +be a list of errors. If the caller knows this, they can unwrap the +list and access the errors. If the caller doesn't know, the error +formats to a nice human-readable format. + +`go-multierror` implements the +[errwrap](https://github.com/hashicorp/errwrap) interface so that it can +be used with that library, as well. + +## Installation and Docs + +Install using `go get github.com/hashicorp/go-multierror`. + +Full documentation is available at +http://godoc.org/github.com/hashicorp/go-multierror + +## Usage + +go-multierror is easy to use and purposely built to be unobtrusive in +existing Go applications/libraries that may not be aware of it. + +**Building a list of errors** + +The `Append` function is used to create a list of errors. This function +behaves a lot like the Go built-in `append` function: it doesn't matter +if the first argument is nil, a `multierror.Error`, or any other `error`, +the function behaves as you would expect. + +```go +var result error + +if err := step1(); err != nil { + result = multierror.Append(result, err) +} +if err := step2(); err != nil { + result = multierror.Append(result, err) +} + +return result +``` + +**Customizing the formatting of the errors** + +By specifying a custom `ErrorFormat`, you can customize the format +of the `Error() string` function: + +```go +var result *multierror.Error + +// ... accumulate errors here, maybe using Append + +if result != nil { + result.ErrorFormat = func([]error) string { + return "errors!" + } +} +``` + +**Accessing the list of errors** + +`multierror.Error` implements `error` so if the caller doesn't know about +multierror, it will work just fine. But if you're aware a multierror might +be returned, you can use type switches to access the list of errors: + +```go +if err := something(); err != nil { + if merr, ok := err.(*multierror.Error); ok { + // Use merr.Errors + } +} +``` + +**Returning a multierror only if there are errors** + +If you build a `multierror.Error`, you can use the `ErrorOrNil` function +to return an `error` implementation only if there are errors to return: + +```go +var result *multierror.Error + +// ... accumulate errors here + +// Return the `error` only if errors were added to the multierror, otherwise +// return nil since there are no errors. +return result.ErrorOrNil() +``` diff --git a/vendor/github.com/hashicorp/go-multierror/append.go b/vendor/github.com/hashicorp/go-multierror/append.go new file mode 100644 index 0000000..775b6e7 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/append.go @@ -0,0 +1,41 @@ +package multierror + +// Append is a helper function that will append more errors +// onto an Error in order to create a larger multi-error. +// +// If err is not a multierror.Error, then it will be turned into +// one. If any of the errs are multierr.Error, they will be flattened +// one level into err. +func Append(err error, errs ...error) *Error { + switch err := err.(type) { + case *Error: + // Typed nils can reach here, so initialize if we are nil + if err == nil { + err = new(Error) + } + + // Go through each error and flatten + for _, e := range errs { + switch e := e.(type) { + case *Error: + if e != nil { + err.Errors = append(err.Errors, e.Errors...) + } + default: + if e != nil { + err.Errors = append(err.Errors, e) + } + } + } + + return err + default: + newErrs := make([]error, 0, len(errs)+1) + if err != nil { + newErrs = append(newErrs, err) + } + newErrs = append(newErrs, errs...) + + return Append(&Error{}, newErrs...) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/append_test.go b/vendor/github.com/hashicorp/go-multierror/append_test.go new file mode 100644 index 0000000..58ddafa --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/append_test.go @@ -0,0 +1,82 @@ +package multierror + +import ( + "errors" + "testing" +) + +func TestAppend_Error(t *testing.T) { + original := &Error{ + Errors: []error{errors.New("foo")}, + } + + result := Append(original, errors.New("bar")) + if len(result.Errors) != 2 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } + + original = &Error{} + result = Append(original, errors.New("bar")) + if len(result.Errors) != 1 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } + + // Test when a typed nil is passed + var e *Error + result = Append(e, errors.New("baz")) + if len(result.Errors) != 1 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } + + // Test flattening + original = &Error{ + Errors: []error{errors.New("foo")}, + } + + result = Append(original, Append(nil, errors.New("foo"), errors.New("bar"))) + if len(result.Errors) != 3 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } +} + +func TestAppend_NilError(t *testing.T) { + var err error + result := Append(err, errors.New("bar")) + if len(result.Errors) != 1 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } +} + +func TestAppend_NilErrorArg(t *testing.T) { + var err error + var nilErr *Error + result := Append(err, nilErr) + if len(result.Errors) != 0 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } +} + +func TestAppend_NilErrorIfaceArg(t *testing.T) { + var err error + var nilErr error + result := Append(err, nilErr) + if len(result.Errors) != 0 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } +} + +func TestAppend_NonError(t *testing.T) { + original := errors.New("foo") + result := Append(original, errors.New("bar")) + if len(result.Errors) != 2 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } +} + +func TestAppend_NonError_Error(t *testing.T) { + original := errors.New("foo") + result := Append(original, Append(nil, errors.New("bar"))) + if len(result.Errors) != 2 { + t.Fatalf("wrong len: %d", len(result.Errors)) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/flatten.go b/vendor/github.com/hashicorp/go-multierror/flatten.go new file mode 100644 index 0000000..aab8e9a --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/flatten.go @@ -0,0 +1,26 @@ +package multierror + +// Flatten flattens the given error, merging any *Errors together into +// a single *Error. +func Flatten(err error) error { + // If it isn't an *Error, just return the error as-is + if _, ok := err.(*Error); !ok { + return err + } + + // Otherwise, make the result and flatten away! + flatErr := new(Error) + flatten(err, flatErr) + return flatErr +} + +func flatten(err error, flatErr *Error) { + switch err := err.(type) { + case *Error: + for _, e := range err.Errors { + flatten(e, flatErr) + } + default: + flatErr.Errors = append(flatErr.Errors, err) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/flatten_test.go b/vendor/github.com/hashicorp/go-multierror/flatten_test.go new file mode 100644 index 0000000..9fbacad --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/flatten_test.go @@ -0,0 +1,48 @@ +package multierror + +import ( + "errors" + "fmt" + "reflect" + "strings" + "testing" +) + +func TestFlatten(t *testing.T) { + original := &Error{ + Errors: []error{ + errors.New("one"), + &Error{ + Errors: []error{ + errors.New("two"), + &Error{ + Errors: []error{ + errors.New("three"), + }, + }, + }, + }, + }, + } + + expected := strings.TrimSpace(` +3 errors occurred: + +* one +* two +* three + `) + actual := fmt.Sprintf("%s", Flatten(original)) + + if expected != actual { + t.Fatalf("expected: %s, got: %s", expected, actual) + } +} + +func TestFlatten_nonError(t *testing.T) { + err := errors.New("foo") + actual := Flatten(err) + if !reflect.DeepEqual(actual, err) { + t.Fatalf("bad: %#v", actual) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/format.go b/vendor/github.com/hashicorp/go-multierror/format.go new file mode 100644 index 0000000..6c7a3cc --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/format.go @@ -0,0 +1,27 @@ +package multierror + +import ( + "fmt" + "strings" +) + +// ErrorFormatFunc is a function callback that is called by Error to +// turn the list of errors into a string. +type ErrorFormatFunc func([]error) string + +// ListFormatFunc is a basic formatter that outputs the number of errors +// that occurred along with a bullet point list of the errors. +func ListFormatFunc(es []error) string { + if len(es) == 1 { + return fmt.Sprintf("1 error occurred:\n\n* %s", es[0]) + } + + points := make([]string, len(es)) + for i, err := range es { + points[i] = fmt.Sprintf("* %s", err) + } + + return fmt.Sprintf( + "%d errors occurred:\n\n%s", + len(es), strings.Join(points, "\n")) +} diff --git a/vendor/github.com/hashicorp/go-multierror/format_test.go b/vendor/github.com/hashicorp/go-multierror/format_test.go new file mode 100644 index 0000000..3359e02 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/format_test.go @@ -0,0 +1,38 @@ +package multierror + +import ( + "errors" + "testing" +) + +func TestListFormatFuncSingle(t *testing.T) { + expected := `1 error occurred: + +* foo` + + errors := []error{ + errors.New("foo"), + } + + actual := ListFormatFunc(errors) + if actual != expected { + t.Fatalf("bad: %#v", actual) + } +} + +func TestListFormatFuncMultiple(t *testing.T) { + expected := `2 errors occurred: + +* foo +* bar` + + errors := []error{ + errors.New("foo"), + errors.New("bar"), + } + + actual := ListFormatFunc(errors) + if actual != expected { + t.Fatalf("bad: %#v", actual) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/multierror.go b/vendor/github.com/hashicorp/go-multierror/multierror.go new file mode 100644 index 0000000..89b1422 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/multierror.go @@ -0,0 +1,51 @@ +package multierror + +import ( + "fmt" +) + +// Error is an error type to track multiple errors. This is used to +// accumulate errors in cases and return them as a single "error". +type Error struct { + Errors []error + ErrorFormat ErrorFormatFunc +} + +func (e *Error) Error() string { + fn := e.ErrorFormat + if fn == nil { + fn = ListFormatFunc + } + + return fn(e.Errors) +} + +// ErrorOrNil returns an error interface if this Error represents +// a list of errors, or returns nil if the list of errors is empty. This +// function is useful at the end of accumulation to make sure that the value +// returned represents the existence of errors. +func (e *Error) ErrorOrNil() error { + if e == nil { + return nil + } + if len(e.Errors) == 0 { + return nil + } + + return e +} + +func (e *Error) GoString() string { + return fmt.Sprintf("*%#v", *e) +} + +// WrappedErrors returns the list of errors that this Error is wrapping. +// It is an implementation of the errwrap.Wrapper interface so that +// multierror.Error can be used with that library. +// +// This method is not safe to be called concurrently and is no different +// than accessing the Errors field directly. It is implemented only to +// satisfy the errwrap.Wrapper interface. +func (e *Error) WrappedErrors() []error { + return e.Errors +} diff --git a/vendor/github.com/hashicorp/go-multierror/multierror_test.go b/vendor/github.com/hashicorp/go-multierror/multierror_test.go new file mode 100644 index 0000000..5567d1c --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/multierror_test.go @@ -0,0 +1,70 @@ +package multierror + +import ( + "errors" + "reflect" + "testing" +) + +func TestError_Impl(t *testing.T) { + var _ error = new(Error) +} + +func TestErrorError_custom(t *testing.T) { + errors := []error{ + errors.New("foo"), + errors.New("bar"), + } + + fn := func(es []error) string { + return "foo" + } + + multi := &Error{Errors: errors, ErrorFormat: fn} + if multi.Error() != "foo" { + t.Fatalf("bad: %s", multi.Error()) + } +} + +func TestErrorError_default(t *testing.T) { + expected := `2 errors occurred: + +* foo +* bar` + + errors := []error{ + errors.New("foo"), + errors.New("bar"), + } + + multi := &Error{Errors: errors} + if multi.Error() != expected { + t.Fatalf("bad: %s", multi.Error()) + } +} + +func TestErrorErrorOrNil(t *testing.T) { + err := new(Error) + if err.ErrorOrNil() != nil { + t.Fatalf("bad: %#v", err.ErrorOrNil()) + } + + err.Errors = []error{errors.New("foo")} + if v := err.ErrorOrNil(); v == nil { + t.Fatal("should not be nil") + } else if !reflect.DeepEqual(v, err) { + t.Fatalf("bad: %#v", v) + } +} + +func TestErrorWrappedErrors(t *testing.T) { + errors := []error{ + errors.New("foo"), + errors.New("bar"), + } + + multi := &Error{Errors: errors} + if !reflect.DeepEqual(multi.Errors, multi.WrappedErrors()) { + t.Fatalf("bad: %s", multi.WrappedErrors()) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/prefix.go b/vendor/github.com/hashicorp/go-multierror/prefix.go new file mode 100644 index 0000000..5c477ab --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/prefix.go @@ -0,0 +1,37 @@ +package multierror + +import ( + "fmt" + + "github.com/hashicorp/errwrap" +) + +// Prefix is a helper function that will prefix some text +// to the given error. If the error is a multierror.Error, then +// it will be prefixed to each wrapped error. +// +// This is useful to use when appending multiple multierrors +// together in order to give better scoping. +func Prefix(err error, prefix string) error { + if err == nil { + return nil + } + + format := fmt.Sprintf("%s {{err}}", prefix) + switch err := err.(type) { + case *Error: + // Typed nils can reach here, so initialize if we are nil + if err == nil { + err = new(Error) + } + + // Wrap each of the errors + for i, e := range err.Errors { + err.Errors[i] = errwrap.Wrapf(format, e) + } + + return err + default: + return errwrap.Wrapf(format, err) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/prefix_test.go b/vendor/github.com/hashicorp/go-multierror/prefix_test.go new file mode 100644 index 0000000..1d4a6f6 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/prefix_test.go @@ -0,0 +1,33 @@ +package multierror + +import ( + "errors" + "testing" +) + +func TestPrefix_Error(t *testing.T) { + original := &Error{ + Errors: []error{errors.New("foo")}, + } + + result := Prefix(original, "bar") + if result.(*Error).Errors[0].Error() != "bar foo" { + t.Fatalf("bad: %s", result) + } +} + +func TestPrefix_NilError(t *testing.T) { + var err error + result := Prefix(err, "bar") + if result != nil { + t.Fatalf("bad: %#v", result) + } +} + +func TestPrefix_NonError(t *testing.T) { + original := errors.New("foo") + result := Prefix(original, "bar") + if result.Error() != "bar foo" { + t.Fatalf("bad: %s", result) + } +} diff --git a/vendor/github.com/hashicorp/go-multierror/scripts/deps.sh b/vendor/github.com/hashicorp/go-multierror/scripts/deps.sh new file mode 100755 index 0000000..1d2fcf9 --- /dev/null +++ b/vendor/github.com/hashicorp/go-multierror/scripts/deps.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +# +# This script updates dependencies using a temporary directory. This is required +# to avoid any auxillary dependencies that sneak into GOPATH. +set -e + +# Get the parent directory of where this script is. +SOURCE="${BASH_SOURCE[0]}" +while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done +DIR="$(cd -P "$(dirname "$SOURCE")/.." && pwd)" + +# Change into that directory +cd "$DIR" + +# Get the name from the directory +NAME=${NAME:-"$(basename $(pwd))"} + +# Announce +echo "==> Updating dependencies..." + +echo "--> Making tmpdir..." +tmpdir=$(mktemp -d) +function cleanup { + rm -rf "${tmpdir}" +} +trap cleanup EXIT + +export GOPATH="${tmpdir}" +export PATH="${tmpdir}/bin:$PATH" + +mkdir -p "${tmpdir}/src/github.com/hashicorp" +pushd "${tmpdir}/src/github.com/hashicorp" &>/dev/null + +echo "--> Copying ${NAME}..." +cp -R "$DIR" "${tmpdir}/src/github.com/hashicorp/${NAME}" +pushd "${tmpdir}/src/github.com/hashicorp/${NAME}" &>/dev/null +rm -rf vendor/ + +echo "--> Installing dependency manager..." +go get -u github.com/kardianos/govendor +govendor init + +echo "--> Installing all dependencies (may take some time)..." +govendor fetch -v +outside + +echo "--> Vendoring..." +govendor add +external + +echo "--> Moving into place..." +vpath="${tmpdir}/src/github.com/hashicorp/${NAME}/vendor" +popd &>/dev/null +popd &>/dev/null +rm -rf vendor/ +cp -R "${vpath}" . diff --git a/vendor/github.com/yudai/gotty/.github/ISSUE_TEMPLATE.md b/vendor/github.com/yudai/gotty/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..0e3abab --- /dev/null +++ b/vendor/github.com/yudai/gotty/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,27 @@ +# When file a bug report (see below for feature requests) + +Please answer these quesions for a bug report. Thanks! + +### What version of GoTTY are you using (`gotty --version`)? + + +### What operating system and browser are you using? + + +### What did you do? + +If possible, please provide the command you ran. + + +### What did you expect to see? + + +### What did you see instead? + +If possible, please provide the output of the command and your browser's console output. + + + +# When file a new feature proposal + +Please provide an actual usecase that requires your new feature. diff --git a/vendor/github.com/yudai/gotty/.gitignore b/vendor/github.com/yudai/gotty/.gitignore new file mode 100644 index 0000000..6ff0bb9 --- /dev/null +++ b/vendor/github.com/yudai/gotty/.gitignore @@ -0,0 +1,4 @@ +gotty +bindata +builds +js/node_modules/* diff --git a/vendor/github.com/yudai/gotty/.gotty b/vendor/github.com/yudai/gotty/.gotty new file mode 100644 index 0000000..c97448f --- /dev/null +++ b/vendor/github.com/yudai/gotty/.gotty @@ -0,0 +1,302 @@ +// [string] Address to listen, all addresses will be used when empty +// address = "" + +// [string] Port to listen +// port = "8080" + +// [bool] Permit clients to write to the TTY +// permit_write = false + +// [bool] Enable basic authentication +// enable_basic_auth = false + +// [string] Default username and password of basic authentication (user:pass) +// To enable basic authentication, set `true` to `enable_basic_auth` +// credential = "user:pass" + +// [bool] Enable random URL generation +// enable_random_url = false + +// [int] Default length of random strings appended to URL +// To enable random URL generation, set `true` to `enable_random_url` +// random_url_length = 8 + +// [bool] Enable TLS/SSL +// enable_tls = false + +// [string] Default TLS certificate file path +// tls_crt_file = "~/.gotty.crt" + +// [string] Default TLS key file path +// tls_key_file = "~/.gotty.key" + +// [bool] Enable client certificate authentication +// enable_tls_client_auth = false + +// [string] Certificate file of CA for client certificates +// tls_ca_crt_file = "~/.gotty.ca.crt" + +// [string] Custom index.html file +// index_file = "" + +// [string] Title format of browser window +// Available variables are: +// Command Command string +// Pid PID of the process for the client +// Hostname Server hostname +// RemoteAddr Client IP address +// title_format = "GoTTY - {{ .Command }} ({{ .Hostname }})" + +// [bool] Enable client side reconnection when connection closed +// enable_reconnect = false + +// [int] Interval time to try reconnection (seconds) +// To enable reconnection, set `true` to `enable_reconnect` +// reconnect_time = 10 + +// [int] Timeout seconds for waiting a client (0 to disable) +// timeout = 60 + +// [int] Maximum connection to gotty, 0(default) means no limit. +// max_connection = 0 + +// [bool] Accept only one client and exit gotty once the client exits +// once = false + +// [bool] Permit clients to send command line arguments in URL (e.g. http://example.com:8080/?arg=AAA&arg=BBB) +// permit_arguments = false + +// [object] Client terminal (hterm) preferences +// preferences { + + // [enum(null, "none", "ctrl-alt", "left-alt", "right-alt")] + // Select an AltGr detection hack^Wheuristic. + // null: Autodetect based on navigator.language: "en-us" => "none", else => "right-alt" + // "none": Disable any AltGr related munging. + // "ctrl-alt": Assume Ctrl+Alt means AltGr. + // "left-alt": Assume left Alt means AltGr. + // "right-alt": Assume right Alt means AltGr. + // alt_gr_mode = null + + // [bool] If set, alt-backspace indeed is alt-backspace. + // alt_backspace_is_meta_backspace = false + + // [bool] Set whether the alt key acts as a meta key or as a distinct alt key. + // alt_is_meta = false + + // [enum("escape", "8-bit", "browser-key")] + // Controls how the alt key is handled. + // "escape"....... Send an ESC prefix. + // "8-bit"........ Add 128 to the unshifted character as in xterm. + // "browser-key".. Wait for the keypress event and see what the browser says. + // (This won't work well on platforms where the browser performs a default action for some alt sequences.) + // alt_sends_what = "escape" + + // [string] URL of the terminal bell sound. Empty string for no audible bell. + // audible_bell_sound = "lib-resource:hterm/audio/bell" + + // [bool] If true, terminal bells in the background will create a Web Notification. http://www.w3.org/TR/notifications/ + // Displaying notifications requires permission from the user. + // When this option is set to true, hterm will attempt to ask the user for permission if necessary. + // Note browsers may not show this permission request + // if it did not originate from a user action. + // desktop_notification_bell = false + + // [string] The background color for text with no other color attributes. + // background_color = "rgb(16, 16, 16)" + + // [string] CSS value of the background image. Empty string for no image. + // For example: + // "url(https://goo.gl/anedTK) linear-gradient(top bottom, blue, red)" + // background_image = "" + + // [string] CSS value of the background image size. Defaults to none. + // background_size = "" + + // [string] CSS value of the background image position. + // For example: + // "10% 10% center" + // background_position = "" + + // [bool] If true, the backspace should send BS ('\x08', aka ^H). Otherwise the backspace key should send '\x7f'. + // backspace_sends_backspace = false + + // [map[string]map[string]string] + // A nested map where each property is the character set code and the value is a map that is a sparse array itself. + // In that sparse array, each property is the received character and the value is the displayed character. + // For example: + // {"0" = {"+" = "\u2192" + // "," = "\u2190" + // "-" = "\u2191" + // "." = "\u2193" + // "0" = "\u2588"}} + // character_map_overrides = null + + // [bool] Whether or not to close the window when the command exits. + // close_on_exit = true + + // [bool] Whether or not to blink the cursor by default. + // cursor_blink = false + + // [2[int]] The cursor blink rate in milliseconds. + // A two element array, the first of which is how long the cursor should be on, second is how long it should be off. + // cursor_blink_cycle = [1000, 500] + + // [string] The color of the visible cursor. + // cursor_color = "rgba(255, 0, 0, 0.5)" + + // [[]string] + // Override colors in the default palette. + // This can be specified as an array or an object. + // Values can be specified as almost any css color value. + // This includes #RGB, #RRGGBB, rgb(...), rgba(...), and any color names that are also part of the stock X11 rgb.txt file. + // You can use 'null' to specify that the default value should be not be changed. + // This is useful for skipping a small number of indicies when the value is specified as an array. + // color_palette_overrides = null + + // [bool] Automatically copy mouse selection to the clipboard. + // copy_on_select = true + + // [bool] Whether to use the default window copy behaviour + // use_default_window_copy = false + + // [bool] Whether to clear the selection after copying. + // clear_selection_after_copy = true + + // [bool] If true, Ctrl-Plus/Minus/Zero controls zoom. + // If false, Ctrl-Shift-Plus/Minus/Zero controls zoom, Ctrl-Minus sends ^_, Ctrl-Plus/Zero do nothing. + // ctrl_plus_minus_zero_zoom = true + + // [bool] Ctrl+C copies if true, send ^C to host if false. + // Ctrl+Shift+C sends ^C to host if true, copies if false. + // ctrl_c_copy = false + + // [bool] Ctrl+V pastes if true, send ^V to host if false. + // Ctrl+Shift+V sends ^V to host if true, pastes if false. + // ctrl_v_paste = false + + // [bool] Set whether East Asian Ambiguous characters have two column width. + // east_asian_ambiguous_as_two_column = false + + // [bool] True to enable 8-bit control characters, false to ignore them. + // We'll respect the two-byte versions of these control characters regardless of this setting. + // enable_8_bit_control = false + + // [enum(null, true, false)] + // True if we should use bold weight font for text with the bold/bright attribute. + // False to use the normal weight font. + // Null to autodetect. + // enable_bold = null + + // [bool] True if we should use bright colors (8-15 on a 16 color palette) for any text with the bold attribute. + // False otherwise. + // enable_bold_as_bright = true + + // [bool] Show a message in the terminal when the host writes to the clipboard. + // enable_clipboard_notice = true + + // [bool] Allow the host to write directly to the system clipboard. + // enable_clipboard_write = true + + // [bool] Respect the host's attempt to change the cursor blink status using DEC Private Mode 12. + // enable_dec12 = false + + // [map[string]string] The default environment variables, as an object. + // environment = {"TERM" = "xterm-256color"} + + // [string] Default font family for the terminal text. + // font_family = "'DejaVu Sans Mono', 'Everson Mono', FreeMono, 'Menlo', 'Terminal', monospace" + + // [int] The default font size in pixels. + // font_size = 15 + + // [string] CSS font-smoothing property. + // font_smoothing = "antialiased" + + // [string] The foreground color for text with no other color attributes. + // foreground_color = "rgb(240, 240, 240)" + + // [bool] If true, home/end will control the terminal scrollbar and shift home/end will send the VT keycodes. + // If false then home/end sends VT codes and shift home/end scrolls. + // home_keys_scroll = false + + // [map[string]string] + // A map of key sequence to key actions. + // Key sequences include zero or more modifier keys followed by a key code. + // Key codes can be decimal or hexadecimal numbers, or a key identifier. + // Key actions can be specified a string to send to the host, or an action identifier. + // For a full list of key code and action identifiers, see https://goo.gl/8AoD09. + // Sample keybindings: + // {"Ctrl-Alt-K" = "clearScrollback" + // "Ctrl-Shift-L"= "PASS" + // "Ctrl-H" = "'HELLO\n'"} + // keybindings = null + + // [int] Max length of a DCS, OSC, PM, or APS sequence before we give up and ignore the code. + // max_string_sequence = 100000 + + // [bool] If true, convert media keys to their Fkey equivalent. + // If false, let the browser handle the keys. + // media_keys_are_fkeys = false + + // [bool] Set whether the meta key sends a leading escape or not. + // meta_sends_escape = true + + // [enum(null, 0, 1, 2, 3, 4, 5, 6] + // Mouse paste button, or null to autodetect. + // For autodetect, we'll try to enable middle button paste for non-X11 platforms. + // On X11 we move it to button 3. + // mouse_paste_button = null + + // [bool] If true, page up/down will control the terminal scrollbar and shift page up/down will send the VT keycodes. + // If false then page up/down sends VT codes and shift page up/down scrolls. + // page_keys_scroll = false + + // [enum(null, true, false)] + // Set whether we should pass Alt-1..9 to the browser. + // This is handy when running hterm in a browser tab, so that you don't lose Chrome's "switch to tab" keyboard accelerators. + // When not running in a tab it's better to send these keys to the host so they can be used in vim or emacs. + // If true, Alt-1..9 will be handled by the browser. + // If false, Alt-1..9 will be sent to the host. + // If null, autodetect based on browser platform and window type. + // pass_alt_number = null + + // [enum(null, true, false)] + // Set whether we should pass Ctrl-1..9 to the browser. + // This is handy when running hterm in a browser tab, so that you don't lose Chrome's "switch to tab" keyboard accelerators. + // When not running in a tab it's better to send these keys to the host so they can be used in vim or emacs. + // If true, Ctrl-1..9 will be handled by the browser. + // If false, Ctrl-1..9 will be sent to the host. + // If null, autodetect based on browser platform and window type. + // pass_ctrl_number = null + + // [enum(null, true, false)] + // Set whether we should pass Meta-1..9 to the browser. + // This is handy when running hterm in a browser tab, so that you don't lose Chrome's "switch to tab" keyboard accelerators. + // When not running in a tab it's better to send these keys to the host so they can be used in vim or emacs. + // If true, Meta-1..9 will be handled by the browser. + // If false, Meta-1..9 will be sent to the host. If null, autodetect based on browser platform and window type. + // pass_meta_number = null + + // [bool] Set whether meta-V gets passed to host. + // pass_meta_v = true + + // [bool] If true, scroll to the bottom on any keystroke. + // scroll_on_keystroke = true + + // [bool] If true, scroll to the bottom on terminal output. + // scroll_on_output = false + + // [bool] The vertical scrollbar mode. + // scrollbar_visible = true + + // [int] The multiplier for the pixel delta in mousewheel event caused by the scroll wheel. Alters how fast the page scrolls. + // scroll_wheel_move_multiplier = 1 + + // [bool] Shift + Insert pastes if true, sent to host if false. + // shift_insert_paste = true + + // [string] URL of user stylesheet to include in the terminal document. + // user_css = "" + +// } diff --git a/vendor/github.com/yudai/gotty/CONTRIBUTING.md b/vendor/github.com/yudai/gotty/CONTRIBUTING.md new file mode 100644 index 0000000..191bbf9 --- /dev/null +++ b/vendor/github.com/yudai/gotty/CONTRIBUTING.md @@ -0,0 +1,44 @@ +# How to contribute + +GoTTY is MIT licensed and accepts contributions via GitHub pull requests. We also accepts feature requests on GitHub issues. + +## Reporting a bug + +Reporting a bug is always welcome and one of the best ways to contribute. A good bug report helps the developers to improve the product much easier. We therefore would like to ask you to fill out the quesions on the issue template as much as possible. That helps us to figure out what's happening and discover the root cause. + + +## Requesting a new feature + +When you find that GoTTY cannot fullfill your requirements because of lack of ability, you may want to open a new feature request. In that case, please file a new issue with your usecase and requirements. + + +## Opening a pull request + +### Code Style + +Please run `go fmt` on your Go code and make sure that your commits are organized for each logical change and your commit messages are in proper format (see below). + +[Go's official code style guide](https://github.com/golang/go/wiki/CodeReviewComments) is also helpful. + +### Format of the commit message + +When you write a commit message, we recommend include following information to make review easier and keep the history cleaerer. + +* What is the change +* The reason for the change + +The following is an example: + +``` +Add something new to existing package + +Since the existing function lacks that mechanism for some purpose, +this commit adds a new structure to provide it. +``` + +When your pull request is to add a new feature, we recommend add an actual usecase so that we can discuss the best way to achive your requirement. Opening a proposal issue in advance is another good way to start discussion of new features. + + +## Contact + +If you have a trivial question about GoTTY for a bug or new feature, you can contact @i_yudai on Twitter (unfortunately, I cannot provide support on GoTTY though). diff --git a/vendor/github.com/yudai/gotty/Godeps/Godeps.json b/vendor/github.com/yudai/gotty/Godeps/Godeps.json new file mode 100644 index 0000000..b17aa5c --- /dev/null +++ b/vendor/github.com/yudai/gotty/Godeps/Godeps.json @@ -0,0 +1,54 @@ +{ + "ImportPath": "github.com/yudai/gotty", + "GoVersion": "go1.9", + "GodepVersion": "v79", + "Deps": [ + { + "ImportPath": "github.com/NYTimes/gziphandler", + "Rev": "967539e5e271a2bc9b3dcb1285078a1b1df105ae" + }, + { + "ImportPath": "github.com/codegangsta/cli", + "Comment": "v1.19.1", + "Rev": "0bdeddeeb0f650497d603c4ad7b20cfe685682f6" + }, + { + "ImportPath": "github.com/elazarl/go-bindata-assetfs", + "Rev": "d5cac425555ca5cf00694df246e04f05e6a55150" + }, + { + "ImportPath": "github.com/fatih/structs", + "Rev": "a9f7daa9c2729e97450c2da2feda19130a367d8f" + }, + { + "ImportPath": "github.com/gorilla/websocket", + "Rev": "b6ab76f1fe9803ee1d59e7e5b2a797c1fe897ce5" + }, + { + "ImportPath": "github.com/hashicorp/go-multierror", + "Rev": "56912fb08d85084aa318edcf2bba735b97cf35c5" + }, + { + "ImportPath": "github.com/kr/pty", + "Comment": "release.r56-28-g5cf931e", + "Rev": "5cf931ef8f76dccd0910001d74a58a7fca84a83d" + }, + { + "ImportPath": "github.com/pkg/errors", + "Comment": "v0.8.0-2-g248dadf", + "Rev": "248dadf4e9068a0b3e79f02ed0a610d935de5302" + }, + { + "ImportPath": "github.com/yudai/hcl", + "Rev": "5fa2393b3552119bf33a69adb1402a1160cba23d" + }, + { + "ImportPath": "github.com/yudai/hcl/hcl", + "Rev": "5fa2393b3552119bf33a69adb1402a1160cba23d" + }, + { + "ImportPath": "github.com/yudai/hcl/json", + "Rev": "5fa2393b3552119bf33a69adb1402a1160cba23d" + } + ] +} diff --git a/vendor/github.com/yudai/gotty/Godeps/Readme b/vendor/github.com/yudai/gotty/Godeps/Readme new file mode 100644 index 0000000..4cdaa53 --- /dev/null +++ b/vendor/github.com/yudai/gotty/Godeps/Readme @@ -0,0 +1,5 @@ +This directory tree is generated automatically by godep. + +Please do not edit. + +See https://github.com/tools/godep for more information. diff --git a/vendor/github.com/yudai/gotty/LICENSE b/vendor/github.com/yudai/gotty/LICENSE new file mode 100644 index 0000000..e93081f --- /dev/null +++ b/vendor/github.com/yudai/gotty/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-2017 Iwasaki Yudai + +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. diff --git a/vendor/github.com/yudai/gotty/Makefile b/vendor/github.com/yudai/gotty/Makefile new file mode 100644 index 0000000..0326580 --- /dev/null +++ b/vendor/github.com/yudai/gotty/Makefile @@ -0,0 +1,80 @@ +OUTPUT_DIR = ./builds +GIT_COMMIT = `git rev-parse HEAD | cut -c1-7` +VERSION = 2.0.0-alpha.3 +BUILD_OPTIONS = -ldflags "-X main.Version=$(VERSION) -X main.CommitID=$(GIT_COMMIT)" + +gotty: main.go server/*.go webtty/*.go backend/*.go Makefile + godep go build ${BUILD_OPTIONS} + +.PHONY: asset +asset: bindata/static/js/gotty-bundle.js bindata/static/index.html bindata/static/favicon.png bindata/static/css/index.css bindata/static/css/xterm.css bindata/static/css/xterm_customize.css + go-bindata -prefix bindata -pkg server -ignore=\\.gitkeep -o server/asset.go bindata/... + gofmt -w server/asset.go + +.PHONY: all +all: asset gotty + +bindata: + mkdir bindata + +bindata/static: bindata + mkdir bindata/static + +bindata/static/index.html: bindata/static resources/index.html + cp resources/index.html bindata/static/index.html + +bindata/static/favicon.png: bindata/static resources/favicon.png + cp resources/favicon.png bindata/static/favicon.png + +bindata/static/js: bindata/static + mkdir -p bindata/static/js + + +bindata/static/js/gotty-bundle.js: bindata/static/js js/dist/gotty-bundle.js + cp js/dist/gotty-bundle.js bindata/static/js/gotty-bundle.js + +bindata/static/css: bindata/static + mkdir -p bindata/static/css + +bindata/static/css/index.css: bindata/static/css resources/index.css + cp resources/index.css bindata/static/css/index.css + +bindata/static/css/xterm_customize.css: bindata/static/css resources/xterm_customize.css + cp resources/xterm_customize.css bindata/static/css/xterm_customize.css + +bindata/static/css/xterm.css: bindata/static/css js/node_modules/xterm/dist/xterm.css + cp js/node_modules/xterm/dist/xterm.css bindata/static/css/xterm.css + +js/node_modules/xterm/dist/xterm.css: + cd js && \ + npm install + +js/dist/gotty-bundle.js: js/src/* js/node_modules/webpack + cd js && \ + `npm bin`/webpack + +js/node_modules/webpack: + cd js && \ + npm install + +tools: + go get github.com/tools/godep + go get github.com/mitchellh/gox + go get github.com/tcnksm/ghr + go get github.com/jteeuwen/go-bindata/... + +test: + if [ `go fmt $(go list ./... | grep -v /vendor/) | wc -l` -gt 0 ]; then echo "go fmt error"; exit 1; fi + +cross_compile: + GOARM=5 gox -os="darwin linux freebsd netbsd openbsd" -arch="386 amd64 arm" -osarch="!darwin/arm" -output "${OUTPUT_DIR}/pkg/{{.OS}}_{{.Arch}}/{{.Dir}}" + +targz: + mkdir -p ${OUTPUT_DIR}/dist + cd ${OUTPUT_DIR}/pkg/; for osarch in *; do (cd $$osarch; tar zcvf ../../dist/gotty_${VERSION}_$$osarch.tar.gz ./*); done; + +shasums: + cd ${OUTPUT_DIR}/dist; sha256sum * > ./SHA256SUMS + +release: + ghr -c ${GIT_COMMIT} --delete --prerelease -u yudai -r gotty pre-release ${OUTPUT_DIR}/dist diff --git a/vendor/github.com/yudai/gotty/README.md b/vendor/github.com/yudai/gotty/README.md new file mode 100644 index 0000000..6a89233 --- /dev/null +++ b/vendor/github.com/yudai/gotty/README.md @@ -0,0 +1,191 @@ +# ![](https://raw.githubusercontent.com/yudai/gotty/master/resources/favicon.png) GoTTY - Share your terminal as a web application + +[![GitHub release](http://img.shields.io/github/release/yudai/gotty.svg?style=flat-square)][release] +[![Wercker](http://img.shields.io/wercker/ci/55d0eeff7331453f0801982c.svg?style=flat-square)][wercker] +[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)][license] + +[release]: https://github.com/yudai/gotty/releases +[wercker]: https://app.wercker.com/project/bykey/03b91f441bebeda34f80e09a9f14126f +[license]: https://github.com/yudai/gotty/blob/master/LICENSE + +GoTTY is a simple command line tool that turns your CLI tools into web applications. + +![Screenshot](https://raw.githubusercontent.com/yudai/gotty/master/screenshot.gif) + +# Installation + +Download the latest stable binary file from the [Releases](https://github.com/yudai/gotty/releases) page. Note that the release marked `Pre-release` is built for testing purpose, which can include unstable or breaking changes. Download a release marked [Latest release](https://github.com/yudai/gotty/releases/latest) for a stabale build. + +(Files named with `darwin_amd64` are for Mac OS X users) + +## Homebrew Installation + +You can install GoTTY with [Homebrew](http://brew.sh/) as well. + +```sh +$ brew install yudai/gotty/gotty +``` + +## `go get` Installation (Development) + +If you have a Go language environment, you can install GoTTY with the `go get` command. However, this command builds a binary file from the latest master branch, which can include unstable or breaking changes. GoTTY requires go1.9 or later. + +```sh +$ go get github.com/yudai/gotty +``` + +# Usage + +``` +Usage: gotty [options] [] +``` + +Run `gotty` with your preferred command as its arguments (e.g. `gotty top`). + +By default, GoTTY starts a web server at port 8080. Open the URL on your web browser and you can see the running command as if it were running on your terminal. + +## Options + +``` +--address value, -a value IP address to listen (default: "0.0.0.0") [$GOTTY_ADDRESS] +--port value, -p value Port number to liten (default: "8080") [$GOTTY_PORT] +--permit-write, -w Permit clients to write to the TTY (BE CAREFUL) [$GOTTY_PERMIT_WRITE] +--credential value, -c value Credential for Basic Authentication (ex: user:pass, default disabled) [$GOTTY_CREDENTIAL] +--random-url, -r Add a random string to the URL [$GOTTY_RANDOM_URL] +--random-url-length value Random URL length (default: 8) [$GOTTY_RANDOM_URL_LENGTH] +--tls, -t Enable TLS/SSL [$GOTTY_TLS] +--tls-crt value TLS/SSL certificate file path (default: "~/.gotty.crt") [$GOTTY_TLS_CRT] +--tls-key value TLS/SSL key file path (default: "~/.gotty.key") [$GOTTY_TLS_KEY] +--tls-ca-crt value TLS/SSL CA certificate file for client certifications (default: "~/.gotty.ca.crt") [$GOTTY_TLS_CA_CRT] +--index value Custom index.html file [$GOTTY_INDEX] +--title-format value Title format of browser window (default: "{{ .command }}@{{ .hostname }}") [$GOTTY_TITLE_FORMAT] +--reconnect Enable reconnection [$GOTTY_RECONNECT] +--reconnect-time value Time to reconnect (default: 10) [$GOTTY_RECONNECT_TIME] +--max-connection value Maximum connection to gotty (default: 0) [$GOTTY_MAX_CONNECTION] +--once Accept only one client and exit on disconnection [$GOTTY_ONCE] +--timeout value Timeout seconds for waiting a client(0 to disable) (default: 0) [$GOTTY_TIMEOUT] +--permit-arguments Permit clients to send command line arguments in URL (e.g. http://example.com:8080/?arg=AAA&arg=BBB) [$GOTTY_PERMIT_ARGUMENTS] +--width value Static width of the screen, 0(default) means dynamically resize (default: 0) [$GOTTY_WIDTH] +--height value Static height of the screen, 0(default) means dynamically resize (default: 0) [$GOTTY_HEIGHT] +--ws-origin value A regular expression that matches origin URLs to be accepted by WebSocket. No cross origin requests are acceptable by default [$GOTTY_WS_ORIGIN] +--term value Terminal name to use on the browser, one of xterm or hterm. (default: "xterm") [$GOTTY_TERM] +--close-signal value Signal sent to the command process when gotty close it (default: SIGHUP) (default: 1) [$GOTTY_CLOSE_SIGNAL] +--close-timeout value Time in seconds to force kill process after client is disconnected (default: -1) (default: -1) [$GOTTY_CLOSE_TIMEOUT] +--config value Config file path (default: "~/.gotty") [$GOTTY_CONFIG] +--version, -v print the version +``` + +### Config File + +You can customize default options and your terminal (hterm) by providing a config file to the `gotty` command. GoTTY loads a profile file at `~/.gotty` by default when it exists. + +``` +// Listen at port 9000 by default +port = "9000" + +// Enable TSL/SSL by default +enable_tls = true + +// hterm preferences +// Smaller font and a little bit bluer background color +preferences { + font_size = 5 + background_color = "rgb(16, 16, 32)" +} +``` + +See the [`.gotty`](https://github.com/yudai/gotty/blob/master/.gotty) file in this repository for the list of configuration options. + +### Security Options + +By default, GoTTY doesn't allow clients to send any keystrokes or commands except terminal window resizing. When you want to permit clients to write input to the TTY, add the `-w` option. However, accepting input from remote clients is dangerous for most commands. When you need interaction with the TTY for some reasons, consider starting GoTTY with tmux or GNU Screen and run your command on it (see "Sharing with Multiple Clients" section for detail). + +To restrict client access, you can use the `-c` option to enable the basic authentication. With this option, clients need to input the specified username and password to connect to the GoTTY server. Note that the credentical will be transmitted between the server and clients in plain text. For more strict authentication, consider the SSL/TLS client certificate authentication described below. + +The `-r` option is a little bit casualer way to restrict access. With this option, GoTTY generates a random URL so that only people who know the URL can get access to the server. + +All traffic between the server and clients are NOT encrypted by default. When you send secret information through GoTTY, we strongly recommend you use the `-t` option which enables TLS/SSL on the session. By default, GoTTY loads the crt and key files placed at `~/.gotty.crt` and `~/.gotty.key`. You can overwrite these file paths with the `--tls-crt` and `--tls-key` options. When you need to generate a self-signed certification file, you can use the `openssl` command. + +```sh +openssl req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt +``` + +(NOTE: For Safari uses, see [how to enable self-signed certificates for WebSockets](http://blog.marcon.me/post/24874118286/secure-websockets-safari) when use self-signed certificates) + +For additional security, you can use the SSL/TLS client certificate authentication by providing a CA certificate file to the `--tls-ca-crt` option (this option requires the `-t` or `--tls` to be set). This option requires all clients to send valid client certificates that are signed by the specified certification authority. + +## Sharing with Multiple Clients + +GoTTY starts a new process with the given command when a new client connects to the server. This means users cannot share a single terminal with others by default. However, you can use terminal multiplexers for sharing a single process with multiple clients. + +For example, you can start a new tmux session named `gotty` with `top` command by the command below. + +```sh +$ gotty tmux new -A -s gotty top +``` + +This command doesn't allow clients to send keystrokes, however, you can attach the session from your local terminal and run operations like switching the mode of the `top` command. To connect to the tmux session from your terminal, you can use following command. + +```sh +$ tmux new -A -s gotty +``` + +By using terminal multiplexers, you can have the control of your terminal and allow clients to just see your screen. + +### Quick Sharing on tmux + +To share your current session with others by a shortcut key, you can add a line like below to your `.tmux.conf`. + +``` +# Start GoTTY in a new window with C-t +bind-key C-t new-window "gotty tmux attach -t `tmux display -p '#S'`" +``` + +## Playing with Docker + +When you want to create a jailed environment for each client, you can use Docker containers like following: + +```sh +$ gotty -w docker run -it --rm busybox +``` + +## Development + +You can build a binary using the following commands. Windows is not supported now. go1.9 is required. + +```sh +# Install tools +go get github.com/jteeuwen/go-bindata/... +go get github.com/tools/godep + +# Build +make +``` + +To build the frontend part (JS files and other static files), you need `npm`. + +## Architecture + +GoTTY uses [xterm.js](https://xtermjs.org/) and [hterm](https://groups.google.com/a/chromium.org/forum/#!forum/chromium-hterm) to run a JavaScript based terminal on web browsers. GoTTY itself provides a websocket server that simply relays output from the TTY to clients and receives input from clients and forwards it to the TTY. This hterm + websocket idea is inspired by [Wetty](https://github.com/krishnasrinivas/wetty). + +## Alternatives + +### Command line client + +* [gotty-client](https://github.com/moul/gotty-client): If you want to connect to GoTTY server from your terminal + +### Terminal/SSH on Web Browsers + +* [Secure Shell (Chrome App)](https://chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo): If you are a chrome user and need a "real" SSH client on your web browser, perhaps the Secure Shell app is what you want +* [Wetty](https://github.com/krishnasrinivas/wetty): Node based web terminal (SSH/login) +* [ttyd](https://tsl0922.github.io/ttyd): C port of GoTTY with CJK and IME support + +### Terminal Sharing + +* [tmate](http://tmate.io/): Forked-Tmux based Terminal-Terminal sharing +* [termshare](https://termsha.re): Terminal-Terminal sharing through a HTTP server +* [tmux](https://tmux.github.io/): Tmux itself also supports TTY sharing through SSH) + +# License + +The MIT License diff --git a/vendor/github.com/yudai/gotty/backend/doc.go b/vendor/github.com/yudai/gotty/backend/doc.go new file mode 100644 index 0000000..2480943 --- /dev/null +++ b/vendor/github.com/yudai/gotty/backend/doc.go @@ -0,0 +1 @@ +package backend diff --git a/vendor/github.com/yudai/gotty/backend/localcommand/doc.go b/vendor/github.com/yudai/gotty/backend/localcommand/doc.go new file mode 100644 index 0000000..47cc2b7 --- /dev/null +++ b/vendor/github.com/yudai/gotty/backend/localcommand/doc.go @@ -0,0 +1,3 @@ +// Package localcommand provides an implementation of webtty.Slave +// that launches a local command with a PTY. +package localcommand diff --git a/vendor/github.com/yudai/gotty/backend/localcommand/factory.go b/vendor/github.com/yudai/gotty/backend/localcommand/factory.go new file mode 100644 index 0000000..11810ed --- /dev/null +++ b/vendor/github.com/yudai/gotty/backend/localcommand/factory.go @@ -0,0 +1,48 @@ +package localcommand + +import ( + "syscall" + "time" + + "github.com/yudai/gotty/server" +) + +type Options struct { + CloseSignal int `hcl:"close_signal" flagName:"close-signal" flagSName:"" flagDescribe:"Signal sent to the command process when gotty close it (default: SIGHUP)" default:"1"` + CloseTimeout int `hcl:"close_timeout" flagName:"close-timeout" flagSName:"" flagDescribe:"Time in seconds to force kill process after client is disconnected (default: -1)" default:"-1"` +} + +type Factory struct { + command string + argv []string + options *Options + opts []Option +} + +func NewFactory(command string, argv []string, options *Options) (*Factory, error) { + opts := []Option{WithCloseSignal(syscall.Signal(options.CloseSignal))} + if options.CloseTimeout >= 0 { + opts = append(opts, WithCloseTimeout(time.Duration(options.CloseTimeout)*time.Second)) + } + + return &Factory{ + command: command, + argv: argv, + options: options, + opts: opts, + }, nil +} + +func (factory *Factory) Name() string { + return "local command" +} + +func (factory *Factory) New(params map[string][]string) (server.Slave, error) { + argv := make([]string, len(factory.argv)) + copy(argv, factory.argv) + if params["arg"] != nil && len(params["arg"]) > 0 { + argv = append(argv, params["arg"]...) + } + + return New(factory.command, argv, factory.opts...) +} diff --git a/vendor/github.com/yudai/gotty/backend/localcommand/local_command.go b/vendor/github.com/yudai/gotty/backend/localcommand/local_command.go new file mode 100644 index 0000000..4beca86 --- /dev/null +++ b/vendor/github.com/yudai/gotty/backend/localcommand/local_command.go @@ -0,0 +1,132 @@ +package localcommand + +import ( + "os" + "os/exec" + "syscall" + "time" + "unsafe" + + "github.com/kr/pty" + "github.com/pkg/errors" +) + +const ( + DefaultCloseSignal = syscall.SIGINT + DefaultCloseTimeout = 10 * time.Second +) + +type LocalCommand struct { + command string + argv []string + + closeSignal syscall.Signal + closeTimeout time.Duration + + cmd *exec.Cmd + pty *os.File + ptyClosed chan struct{} +} + +func New(command string, argv []string, options ...Option) (*LocalCommand, error) { + cmd := exec.Command(command, argv...) + + pty, err := pty.Start(cmd) + if err != nil { + // todo close cmd? + return nil, errors.Wrapf(err, "failed to start command `%s`", command) + } + ptyClosed := make(chan struct{}) + + lcmd := &LocalCommand{ + command: command, + argv: argv, + + closeSignal: DefaultCloseSignal, + closeTimeout: DefaultCloseTimeout, + + cmd: cmd, + pty: pty, + ptyClosed: ptyClosed, + } + + for _, option := range options { + option(lcmd) + } + + // When the process is closed by the user, + // close pty so that Read() on the pty breaks with an EOF. + go func() { + defer func() { + lcmd.pty.Close() + close(lcmd.ptyClosed) + }() + + lcmd.cmd.Wait() + }() + + return lcmd, nil +} + +func (lcmd *LocalCommand) Read(p []byte) (n int, err error) { + return lcmd.pty.Read(p) +} + +func (lcmd *LocalCommand) Write(p []byte) (n int, err error) { + return lcmd.pty.Write(p) +} + +func (lcmd *LocalCommand) Close() error { + if lcmd.cmd != nil && lcmd.cmd.Process != nil { + lcmd.cmd.Process.Signal(lcmd.closeSignal) + } + for { + select { + case <-lcmd.ptyClosed: + return nil + case <-lcmd.closeTimeoutC(): + lcmd.cmd.Process.Signal(syscall.SIGKILL) + } + } +} + +func (lcmd *LocalCommand) WindowTitleVariables() map[string]interface{} { + return map[string]interface{}{ + "command": lcmd.command, + "argv": lcmd.argv, + "pid": lcmd.cmd.Process.Pid, + } +} + +func (lcmd *LocalCommand) ResizeTerminal(width int, height int) error { + window := struct { + row uint16 + col uint16 + x uint16 + y uint16 + }{ + uint16(height), + uint16(width), + 0, + 0, + } + _, _, errno := syscall.Syscall( + syscall.SYS_IOCTL, + lcmd.pty.Fd(), + syscall.TIOCSWINSZ, + uintptr(unsafe.Pointer(&window)), + ) + if errno != 0 { + return errno + } else { + return nil + } +} + +func (lcmd *LocalCommand) closeTimeoutC() <-chan time.Time { + if lcmd.closeTimeout >= 0 { + return time.After(lcmd.closeTimeout) + } + + return make(chan time.Time) +} diff --git a/vendor/github.com/yudai/gotty/backend/localcommand/options.go b/vendor/github.com/yudai/gotty/backend/localcommand/options.go new file mode 100644 index 0000000..72af01f --- /dev/null +++ b/vendor/github.com/yudai/gotty/backend/localcommand/options.go @@ -0,0 +1,20 @@ +package localcommand + +import ( + "syscall" + "time" +) + +type Option func(*LocalCommand) + +func WithCloseSignal(signal syscall.Signal) Option { + return func(lcmd *LocalCommand) { + lcmd.closeSignal = signal + } +} + +func WithCloseTimeout(timeout time.Duration) Option { + return func(lcmd *LocalCommand) { + lcmd.closeTimeout = timeout + } +} diff --git a/vendor/github.com/yudai/gotty/favicon.psd b/vendor/github.com/yudai/gotty/favicon.psd new file mode 100755 index 0000000000000000000000000000000000000000..e6f89259023890edc6e815e4776a66b8425fbb8e GIT binary patch literal 506267 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 [] + +VERSION: + {{.Version}}{{if or .Author .Email}} + +AUTHOR:{{if .Author}} + {{.Author}}{{if .Email}} - <{{.Email}}>{{end}}{{else}} + {{.Email}}{{end}}{{end}} + +OPTIONS: + {{range .Flags}}{{.}} + {{end}} +` diff --git a/vendor/github.com/yudai/gotty/js/dist/gotty-bundle.js b/vendor/github.com/yudai/gotty/js/dist/gotty-bundle.js new file mode 100644 index 0000000..b95cbae --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/dist/gotty-bundle.js @@ -0,0 +1,88 @@ +!function(e){function t(i){if(r[i])return r[i].exports;var o=r[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,i){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=28)}([function(e,t,r){"use strict";function i(e){var t=this;if(!(this instanceof i))return new i(arguments[0],arguments[1],arguments[2]);t.browser=S,t.cancel=i.cancel,u.EventEmitter.call(this),"number"==typeof e&&(e={cols:arguments[0],rows:arguments[1],handler:arguments[2]}),e=e||{},Object.keys(i.defaults).forEach(function(r){null==e[r]&&(e[r]=i.options[r],i[r]!==i.defaults[r]&&(e[r]=i[r])),t[r]=e[r]}),8===e.colors.length?e.colors=e.colors.concat(i._colors.slice(8)):16===e.colors.length?e.colors=e.colors.concat(i._colors.slice(16)):10===e.colors.length?e.colors=e.colors.slice(0,-2).concat(i._colors.slice(8,-2),e.colors.slice(-2)):18===e.colors.length&&(e.colors=e.colors.concat(i._colors.slice(16,-2),e.colors.slice(-2))),this.colors=e.colors,this.options=e,this.parent=e.body||e.parent||(A?A.getElementsByTagName("body")[0]:null),this.cols=e.cols||e.geometry[0],this.rows=e.rows||e.geometry[1],this.geometry=[this.cols,this.rows],e.handler&&this.on("data",e.handler),this.ybase=0,this.ydisp=0,this.x=0,this.y=0,this.cursorState=0,this.cursorHidden=!1,this.convertEol,this.queue="",this.scrollTop=0,this.scrollBottom=this.rows-1,this.customKeyEventHandler=null,this.cursorBlinkInterval=null,this.applicationKeypad=!1,this.applicationCursor=!1,this.originMode=!1,this.insertMode=!1,this.wraparoundMode=!0,this.normal=null,this.charset=null,this.gcharset=null,this.glevel=0,this.charsets=[null],this.decLocator,this.x10Mouse,this.vt200Mouse,this.vt300Mouse,this.normalMouse,this.mouseEvents,this.sendFocus,this.utfMouse,this.sgrMouse,this.urxvtMouse,this.element,this.children,this.refreshStart,this.refreshEnd,this.savedX,this.savedY,this.savedCols,this.readable=!0,this.writable=!0,this.defAttr=131840,this.curAttr=this.defAttr,this.params=[],this.currentParam=0,this.prefix="",this.postfix="",this.inputHandler=new m.InputHandler(this),this.parser=new y.Parser(this.inputHandler,this),this.renderer=this.renderer||null,this.selectionManager=this.selectionManager||null,this.linkifier=this.linkifier||new _.Linkifier,this.writeBuffer=[],this.writeInProgress=!1,this.xoffSentToCatchUp=!1,this.writeStopped=!1,this.surrogate_high="",this.lines=new f.CircularList(this.scrollback);for(var r=this.rows;r--;)this.lines.push(this.blankLine());this.selectionManager&&this.selectionManager.setBuffer(this.lines),this.tabs,this.setupStops(),this.userScrolling=!1}function o(e,t,r,i){Array.isArray(e)||(e=[e]),e.forEach(function(e){e.addEventListener(t,r,i||!1)})}function s(e,t,r,i){e.removeEventListener(t,r,i||!1)}function n(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function a(e,t){var r=e.browser.isMac&&t.altKey&&!t.ctrlKey&&!t.metaKey||e.browser.isMSWindows&&t.altKey&&t.ctrlKey&&!t.metaKey;return"keypress"==t.type?r:r&&(!t.keyCode||t.keyCode>47)}function l(e,t,r){var o=e<<16|t<<8|r;if(null!=l._cache[o])return l._cache[o];for(var s,n,a,h,c,u=1/0,d=-1,p=0;p>16&255,e>>8&255,255&e]);return t}(),i.defaults={colors:i.colors,theme:"default",convertEol:!1,termName:"xterm",geometry:[80,24],cursorBlink:!1,cursorStyle:"block",visualBell:!1,popOnBell:!1,scrollback:1e3,screenKeys:!1,debug:!1,cancelEvents:!1,disableStdin:!1,useFlowControl:!1,tabStopWidth:8},i.options={},i.focus=null,function(e,t,r){if(e.forEach)return e.forEach(t,r);for(var i=0;it){var o=this.lines.length-t,s=this.ydisp-o<0;this.lines.trimStart(o),this.ybase=Math.max(this.ybase-o,0),this.ydisp=Math.max(this.ydisp-o,0),s&&this.refresh(0,this.rows-1)}this.lines.maxLength=t,this.viewport.syncScrollArea()}}switch(this[e]=t,this.options[e]=t,e){case"cursorBlink":this.setCursorBlinking(t);break;case"cursorStyle":this.element.classList.toggle("xterm-cursor-style-underline","underline"===t),this.element.classList.toggle("xterm-cursor-style-bar","bar"===t);break;case"tabStopWidth":this.setupStops()}},i.prototype.restartCursorBlinking=function(){this.setCursorBlinking(this.options.cursorBlink)},i.prototype.setCursorBlinking=function(e){if(this.element.classList.toggle("xterm-cursor-blink",e),this.clearCursorBlinkingInterval(),e){var t=this;this.cursorBlinkInterval=setInterval(function(){t.element.classList.toggle("xterm-cursor-blink-on")},600)}},i.prototype.clearCursorBlinkingInterval=function(){this.element.classList.remove("xterm-cursor-blink-on"),this.cursorBlinkInterval&&(clearInterval(this.cursorBlinkInterval),this.cursorBlinkInterval=null)},i.bindFocus=function(e){o(e.textarea,"focus",function(t){e.sendFocus&&e.send(g.C0.ESC+"[I"),e.element.classList.add("focus"),e.showCursor(),e.restartCursorBlinking.apply(e),i.focus=e,e.emit("focus",{terminal:e})})},i.prototype.blur=function(){return this.textarea.blur()},i.bindBlur=function(e){o(e.textarea,"blur",function(t){e.refresh(e.y,e.y),e.sendFocus&&e.send(g.C0.ESC+"[O"),e.element.classList.remove("focus"),e.clearCursorBlinkingInterval.apply(e),i.focus=null,e.emit("blur",{terminal:e})})},i.prototype.initGlobal=function(){var e=this,t=this;i.bindKeys(this),i.bindFocus(this),i.bindBlur(this),o(this.element,"copy",function(r){e.mouseEvents||p.copyHandler(r,t,e.selectionManager)});var r=function(e){return p.pasteHandler(e,t)};o(this.textarea,"paste",r),o(this.element,"paste",r),t.browser.isFirefox?o(this.element,"mousedown",function(t){2==t.button&&p.rightClickHandler(t,e.textarea,e.selectionManager)}):o(this.element,"contextmenu",function(t){p.rightClickHandler(t,e.textarea,e.selectionManager)}),t.browser.isLinux&&o(this.element,"auxclick",function(t){1===t.button&&p.moveTextAreaUnderMouseCursor(t,e.textarea,e.selectionManager)})},i.bindKeys=function(e){o(e.element,"keydown",function(t){A.activeElement==this&&e.keyDown(t)},!0),o(e.element,"keypress",function(t){A.activeElement==this&&e.keyPress(t)},!0),o(e.element,"keyup",function(t){h(t)||e.focus(e)},!0),o(e.textarea,"keydown",function(t){e.keyDown(t)},!0),o(e.textarea,"keypress",function(t){e.keyPress(t),this.value=""},!0),o(e.textarea,"compositionstart",e.compositionHelper.compositionstart.bind(e.compositionHelper)),o(e.textarea,"compositionupdate",e.compositionHelper.compositionupdate.bind(e.compositionHelper)),o(e.textarea,"compositionend",e.compositionHelper.compositionend.bind(e.compositionHelper)),e.on("refresh",e.compositionHelper.updateCompositionElements.bind(e.compositionHelper)),e.on("refresh",function(t){e.queueLinkification(t.start,t.end)})},i.prototype.insertRow=function(e){return"object"!=typeof e&&(e=A.createElement("div")),this.rowContainer.appendChild(e),this.children.push(e),e},i.prototype.open=function(e,t){var r=this,i=this,s=0;if(this.parent=e||this.parent,!this.parent)throw new Error("Terminal requires a parent element.");for(this.context=this.parent.ownerDocument.defaultView,this.document=this.parent.ownerDocument,this.body=this.document.getElementsByTagName("body")[0],this.element=this.document.createElement("div"),this.element.classList.add("terminal"),this.element.classList.add("xterm"),this.element.classList.add("xterm-theme-"+this.theme),this.setCursorBlinking(this.options.cursorBlink),this.element.setAttribute("tabindex",0),this.viewportElement=A.createElement("div"),this.viewportElement.classList.add("xterm-viewport"),this.element.appendChild(this.viewportElement),this.viewportScrollArea=A.createElement("div"),this.viewportScrollArea.classList.add("xterm-scroll-area"),this.viewportElement.appendChild(this.viewportScrollArea),this.selectionContainer=A.createElement("div"),this.selectionContainer.classList.add("xterm-selection"),this.element.appendChild(this.selectionContainer),this.rowContainer=A.createElement("div"),this.rowContainer.classList.add("xterm-rows"),this.element.appendChild(this.rowContainer),this.children=[],this.linkifier.attachToDom(A,this.children),this.helperContainer=A.createElement("div"),this.helperContainer.classList.add("xterm-helpers"),this.element.appendChild(this.helperContainer),this.textarea=A.createElement("textarea"),this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this.textarea.addEventListener("focus",function(){i.emit("focus",{terminal:i})}),this.textarea.addEventListener("blur",function(){i.emit("blur",{terminal:i})}),this.helperContainer.appendChild(this.textarea),this.compositionView=A.createElement("div"),this.compositionView.classList.add("composition-view"),this.compositionHelper=new c.CompositionHelper(this.textarea,this.compositionView,this),this.helperContainer.appendChild(this.compositionView),this.charSizeStyleElement=A.createElement("style"),this.helperContainer.appendChild(this.charSizeStyleElement);s div{height:"+this.charMeasure.height+"px;}"},i.prototype.bindMouse=function(){function e(e){var t,r;if(t=n(e),r=v.getRawByteCoords(e,l.rowContainer,l.charMeasure,l.cols,l.rows))switch(i(t,r),e.overrideType||e.type){case"mousedown":h=t;break;case"mouseup":h=32}}function t(e){var t,r=h;(t=v.getRawByteCoords(e,l.rowContainer,l.charMeasure,l.cols,l.rows))&&i(r+=32,t)}function r(e,t){if(l.utfMouse){if(2047===t)return e.push(0);t<127?e.push(t):(t>2047&&(t=2047),e.push(192|t>>6),e.push(128|63&t))}else{if(255===t)return e.push(0);t>127&&(t=127),e.push(t)}}function i(e,t){if(l.vt300Mouse){e&=3,t.x-=32,t.y-=32;var i=g.C0.ESC+"[24";if(0===e)i+="1";else if(1===e)i+="3";else if(2===e)i+="5";else{if(3===e)return;i+="0"}return i+="~["+t.x+","+t.y+"]\r",void l.send(i)}return l.decLocator?(e&=3,t.x-=32,t.y-=32,0===e?e=2:1===e?e=4:2===e?e=6:3===e&&(e=3),void l.send(g.C0.ESC+"["+e+";"+(3===e?4:0)+";"+t.y+";"+t.x+";"+(t.page||0)+"&w")):l.urxvtMouse?(t.x-=32,t.y-=32,t.x++,t.y++,void l.send(g.C0.ESC+"["+e+";"+t.x+";"+t.y+"M")):l.sgrMouse?(t.x-=32,t.y-=32,void l.send(g.C0.ESC+"[<"+((3==(3&e)?-4&e:e)-32)+";"+t.x+";"+t.y+(3==(3&e)?"m":"M"))):(r(i=[],e),r(i,t.x),r(i,t.y),void l.send(g.C0.ESC+"[M"+String.fromCharCode.apply(String,i)))}function n(e){var t,r,i,o,s;switch(e.overrideType||e.type){case"mousedown":t=null!=e.button?+e.button:null!=e.which?e.which-1:null,l.browser.isMSIE&&(t=1===t?0:4===t?1:t);break;case"mouseup":t=3;break;case"DOMMouseScroll":t=e.detail<0?64:65;break;case"wheel":t=e.wheelDeltaY>0?64:65}return r=e.shiftKey?4:0,i=e.metaKey?8:0,o=e.ctrlKey?16:0,s=r|i|o,l.vt200Mouse?s&=o:l.normalMouse||(s=0),t=32+(s<<2)+t}var a=this.element,l=this,h=32;o(a,"mousedown",function(r){if(l.mouseEvents)return e(r),l.focus(),l.vt200Mouse?(r.overrideType="mouseup",e(r),l.cancel(r)):(l.normalMouse&&o(l.document,"mousemove",t),l.x10Mouse||o(l.document,"mouseup",function r(i){return e(i),l.normalMouse&&s(l.document,"mousemove",t),s(l.document,"mouseup",r),l.cancel(i)}),l.cancel(r))}),o(a,"wheel",function(t){if(l.mouseEvents&&!(l.x10Mouse||l.vt300Mouse||l.decLocator))return e(t),l.cancel(t)}),o(a,"wheel",function(e){if(!l.mouseEvents)return l.viewport.onWheel(e),l.cancel(e)}),o(a,"touchstart",function(e){if(!l.mouseEvents)return l.viewport.onTouchStart(e),l.cancel(e)}),o(a,"touchmove",function(e){if(!l.mouseEvents)return l.viewport.onTouchMove(e),l.cancel(e)})},i.prototype.destroy=function(){this.readable=!1,this.writable=!1,this._events={},this.handler=function(){},this.write=function(){},this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},i.prototype.refresh=function(e,t){this.renderer&&this.renderer.queueRefresh(e,t)},i.prototype.queueLinkification=function(e,t){if(this.linkifier)for(var r=e;r<=t;r++)this.linkifier.linkifyRow(r)},i.prototype.showCursor=function(){this.cursorState||(this.cursorState=1,this.refresh(this.y,this.y))},i.prototype.scroll=function(e){var t;this.lines.length===this.lines.maxLength&&(this.lines.trimStart(1),this.ybase--,0!==this.ydisp&&this.ydisp--),this.ybase++,this.userScrolling||(this.ydisp=this.ybase),t=this.ybase+this.rows-1,(t-=this.rows-1-this.scrollBottom)===this.lines.length?this.lines.push(this.blankLine(void 0,e)):this.lines.splice(t,0,this.blankLine(void 0,e)),0!==this.scrollTop&&(0!==this.ybase&&(this.ybase--,this.userScrolling||(this.ydisp=this.ybase)),this.lines.splice(this.ybase+this.scrollTop,1)),this.updateRange(this.scrollTop),this.updateRange(this.scrollBottom),this.emit("scroll",this.ydisp)},i.prototype.scrollDisp=function(e,t){if(e<0){if(0===this.ydisp)return;this.userScrolling=!0}else e+this.ydisp>=this.ybase&&(this.userScrolling=!1);this.ydisp+=e,this.ydisp>this.ybase?this.ydisp=this.ybase:this.ydisp<0&&(this.ydisp=0),t||this.emit("scroll",this.ydisp),this.refresh(0,this.rows-1)},i.prototype.scrollPages=function(e){this.scrollDisp(e*(this.rows-1))},i.prototype.scrollToTop=function(){this.scrollDisp(-this.ydisp)},i.prototype.scrollToBottom=function(){this.scrollDisp(this.ybase-this.ydisp)},i.prototype.write=function(e){if(this.writeBuffer.push(e),this.options.useFlowControl&&!this.xoffSentToCatchUp&&this.writeBuffer.length>=5&&(this.send(g.C0.DC3),this.xoffSentToCatchUp=!0),!this.writeInProgress&&this.writeBuffer.length>0){this.writeInProgress=!0;var t=this;setTimeout(function(){t.innerWrite()})}},i.prototype.innerWrite=function(){for(var e=this.writeBuffer.splice(0,300);e.length>0;){var t=e.shift();t.length;this.xoffSentToCatchUp&&0===e.length&&0===this.writeBuffer.length&&(this.send(g.C0.DC1),this.xoffSentToCatchUp=!1),this.refreshStart=this.y,this.refreshEnd=this.y;var r=this.parser.parse(t);this.parser.setState(r),this.updateRange(this.y),this.refresh(this.refreshStart,this.refreshEnd)}if(this.writeBuffer.length>0){var i=this;setTimeout(function(){i.innerWrite()},0)}else this.writeInProgress=!1},i.prototype.writeln=function(e){this.write(e+"\r\n")},i.prototype.attachCustomKeydownHandler=function(e){console.warn("attachCustomKeydownHandler() is DEPRECATED and will be removed soon. Please use attachCustomKeyEventHandler() instead."),this.attachCustomKeyEventHandler(e)},i.prototype.attachCustomKeyEventHandler=function(e){this.customKeyEventHandler=e},i.prototype.setHypertextLinkHandler=function(e){if(!this.linkifier)throw new Error("Cannot attach a hypertext link handler before Terminal.open is called");this.linkifier.setHypertextLinkHandler(e),this.refresh(0,this.rows-1)},i.prototype.setHypertextValidationCallback=function(e){if(!this.linkifier)throw new Error("Cannot attach a hypertext validation callback before Terminal.open is called");this.linkifier.setHypertextValidationCallback(e),this.refresh(0,this.rows-1)},i.prototype.registerLinkMatcher=function(e,t,r){if(this.linkifier){var i=this.linkifier.registerLinkMatcher(e,t,r);return this.refresh(0,this.rows-1),i}},i.prototype.deregisterLinkMatcher=function(e){this.linkifier&&this.linkifier.deregisterLinkMatcher(e)&&this.refresh(0,this.rows-1)},i.prototype.hasSelection=function(){return this.selectionManager.hasSelection},i.prototype.getSelection=function(){return this.selectionManager.selectionText},i.prototype.clearSelection=function(){this.selectionManager.clearSelection()},i.prototype.selectAll=function(){this.selectionManager.selectAll()},i.prototype.keyDown=function(e){if(this.customKeyEventHandler&&!1===this.customKeyEventHandler(e))return!1;if(this.restartCursorBlinking(),!this.compositionHelper.keydown.bind(this.compositionHelper)(e))return this.ybase!==this.ydisp&&this.scrollToBottom(),!1;var t=this.evaluateKeyEscapeSequence(e);return t.key===g.C0.DC3?this.writeStopped=!0:t.key===g.C0.DC1&&(this.writeStopped=!1),t.scrollDisp?(this.scrollDisp(t.scrollDisp),this.cancel(e,!0)):!!a(this,e)||(t.cancel&&this.cancel(e,!0),!t.key||(this.emit("keydown",e),this.emit("key",t.key,e),this.showCursor(),this.handler(t.key),this.cancel(e,!0)))},i.prototype.evaluateKeyEscapeSequence=function(e){var t={cancel:!1,key:void 0,scrollDisp:void 0},r=e.shiftKey<<0|e.altKey<<1|e.ctrlKey<<2|e.metaKey<<3;switch(e.keyCode){case 8:if(e.shiftKey){t.key=g.C0.BS;break}t.key=g.C0.DEL;break;case 9:if(e.shiftKey){t.key=g.C0.ESC+"[Z";break}t.key=g.C0.HT,t.cancel=!0;break;case 13:t.key=g.C0.CR,t.cancel=!0;break;case 27:t.key=g.C0.ESC,t.cancel=!0;break;case 37:r?(t.key=g.C0.ESC+"[1;"+(r+1)+"D",t.key==g.C0.ESC+"[1;3D"&&(t.key=this.browser.isMac?g.C0.ESC+"b":g.C0.ESC+"[1;5D")):this.applicationCursor?t.key=g.C0.ESC+"OD":t.key=g.C0.ESC+"[D";break;case 39:r?(t.key=g.C0.ESC+"[1;"+(r+1)+"C",t.key==g.C0.ESC+"[1;3C"&&(t.key=this.browser.isMac?g.C0.ESC+"f":g.C0.ESC+"[1;5C")):this.applicationCursor?t.key=g.C0.ESC+"OC":t.key=g.C0.ESC+"[C";break;case 38:r?(t.key=g.C0.ESC+"[1;"+(r+1)+"A",t.key==g.C0.ESC+"[1;3A"&&(t.key=g.C0.ESC+"[1;5A")):this.applicationCursor?t.key=g.C0.ESC+"OA":t.key=g.C0.ESC+"[A";break;case 40:r?(t.key=g.C0.ESC+"[1;"+(r+1)+"B",t.key==g.C0.ESC+"[1;3B"&&(t.key=g.C0.ESC+"[1;5B")):this.applicationCursor?t.key=g.C0.ESC+"OB":t.key=g.C0.ESC+"[B";break;case 45:e.shiftKey||e.ctrlKey||(t.key=g.C0.ESC+"[2~");break;case 46:t.key=r?g.C0.ESC+"[3;"+(r+1)+"~":g.C0.ESC+"[3~";break;case 36:r?t.key=g.C0.ESC+"[1;"+(r+1)+"H":this.applicationCursor?t.key=g.C0.ESC+"OH":t.key=g.C0.ESC+"[H";break;case 35:r?t.key=g.C0.ESC+"[1;"+(r+1)+"F":this.applicationCursor?t.key=g.C0.ESC+"OF":t.key=g.C0.ESC+"[F";break;case 33:e.shiftKey?t.scrollDisp=-(this.rows-1):t.key=g.C0.ESC+"[5~";break;case 34:e.shiftKey?t.scrollDisp=this.rows-1:t.key=g.C0.ESC+"[6~";break;case 112:t.key=r?g.C0.ESC+"[1;"+(r+1)+"P":g.C0.ESC+"OP";break;case 113:t.key=r?g.C0.ESC+"[1;"+(r+1)+"Q":g.C0.ESC+"OQ";break;case 114:t.key=r?g.C0.ESC+"[1;"+(r+1)+"R":g.C0.ESC+"OR";break;case 115:t.key=r?g.C0.ESC+"[1;"+(r+1)+"S":g.C0.ESC+"OS";break;case 116:t.key=r?g.C0.ESC+"[15;"+(r+1)+"~":g.C0.ESC+"[15~";break;case 117:t.key=r?g.C0.ESC+"[17;"+(r+1)+"~":g.C0.ESC+"[17~";break;case 118:t.key=r?g.C0.ESC+"[18;"+(r+1)+"~":g.C0.ESC+"[18~";break;case 119:t.key=r?g.C0.ESC+"[19;"+(r+1)+"~":g.C0.ESC+"[19~";break;case 120:t.key=r?g.C0.ESC+"[20;"+(r+1)+"~":g.C0.ESC+"[20~";break;case 121:t.key=r?g.C0.ESC+"[21;"+(r+1)+"~":g.C0.ESC+"[21~";break;case 122:t.key=r?g.C0.ESC+"[23;"+(r+1)+"~":g.C0.ESC+"[23~";break;case 123:t.key=r?g.C0.ESC+"[24;"+(r+1)+"~":g.C0.ESC+"[24~";break;default:!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?this.browser.isMac||!e.altKey||e.ctrlKey||e.metaKey?this.browser.isMac&&!e.altKey&&!e.ctrlKey&&e.metaKey&&65===e.keyCode&&this.selectAll():e.keyCode>=65&&e.keyCode<=90?t.key=g.C0.ESC+String.fromCharCode(e.keyCode+32):192===e.keyCode?t.key=g.C0.ESC+"`":e.keyCode>=48&&e.keyCode<=57&&(t.key=g.C0.ESC+(e.keyCode-48)):e.keyCode>=65&&e.keyCode<=90?t.key=String.fromCharCode(e.keyCode-64):32===e.keyCode?t.key=String.fromCharCode(0):e.keyCode>=51&&e.keyCode<=55?t.key=String.fromCharCode(e.keyCode-51+27):56===e.keyCode?t.key=String.fromCharCode(127):219===e.keyCode?t.key=String.fromCharCode(27):220===e.keyCode?t.key=String.fromCharCode(28):221===e.keyCode&&(t.key=String.fromCharCode(29))}return t},i.prototype.setgLevel=function(e){this.glevel=e,this.charset=this.charsets[e]},i.prototype.setgCharset=function(e,t){this.charsets[e]=t,this.glevel===e&&(this.charset=t)},i.prototype.keyPress=function(e){var t;if(this.customKeyEventHandler&&!1===this.customKeyEventHandler(e))return!1;if(this.cancel(e),e.charCode)t=e.charCode;else if(null==e.which)t=e.keyCode;else{if(0===e.which||0===e.charCode)return!1;t=e.which}return!(!t||(e.altKey||e.ctrlKey||e.metaKey)&&!a(this,e))&&(t=String.fromCharCode(t),this.emit("keypress",t,e),this.emit("key",t,e),this.showCursor(),this.handler(t),!0)},i.prototype.send=function(e){var t=this;this.queue||setTimeout(function(){t.handler(t.queue),t.queue=""},1),this.queue+=e},i.prototype.bell=function(){if(this.visualBell){var e=this;this.element.style.borderColor="white",setTimeout(function(){e.element.style.borderColor=""},10),this.popOnBell&&this.focus()}},i.prototype.log=function(){if(this.debug&&this.context.console&&this.context.console.log){var e=Array.prototype.slice.call(arguments);this.context.console.log.apply(this.context.console,e)}},i.prototype.error=function(){if(this.debug&&this.context.console&&this.context.console.error){var e=Array.prototype.slice.call(arguments);this.context.console.error.apply(this.context.console,e)}},i.prototype.resize=function(e,t){if(!isNaN(e)&&!isNaN(t)){t>this.getOption("scrollback")&&this.setOption("scrollback",t);var r,i,o,s,n;if(e!==this.cols||t!==this.rows){if(e<1&&(e=1),t<1&&(t=1),(o=this.cols)0&&this.lines.length<=this.ybase+this.y+n+1?(this.ybase--,n++,this.ydisp>0&&this.ydisp--):this.lines.push(this.blankLine())),this.children.lengtht;)if(this.lines.length>t+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++)),this.children.length>t){if(!(r=this.children.shift()))continue;r.parentNode.removeChild(r)}this.rows=t,this.y>=t&&(this.y=t-1),n&&(this.y+=n),this.x>=e&&(this.x=e-1),this.scrollTop=0,this.scrollBottom=t-1,this.charMeasure.measure(),this.refresh(0,this.rows-1),this.normal=null,this.geometry=[this.cols,this.rows],this.emit("resize",{terminal:this,cols:e,rows:t})}}},i.prototype.updateRange=function(e){ethis.refreshEnd&&(this.refreshEnd=e)},i.prototype.maxRange=function(){this.refreshStart=0,this.refreshEnd=this.rows-1},i.prototype.setupStops=function(e){for(null!=e?this.tabs[e]||(e=this.prevStop(e)):(this.tabs={},e=0);e0;);return e>=this.cols?this.cols-1:e<0?0:e},i.prototype.nextStop=function(e){for(null==e&&(e=this.x);!this.tabs[++e]&&e=this.cols?this.cols-1:e<0?0:e},i.prototype.eraseRight=function(e,t){var r=this.lines.get(this.ybase+t);if(r){for(var i=[this.eraseAttr()," ",1];ethis.scrollBottom&&(this.y--,this.scroll()),this.x>=this.cols&&this.x--},i.prototype.reverseIndex=function(){this.y===this.scrollTop?(this.lines.shiftElements(this.y+this.ybase,this.rows-1,1),this.lines.set(this.y+this.ybase,this.blankLine(!0)),this.updateRange(this.scrollTop),this.updateRange(this.scrollBottom)):this.y--},i.prototype.reset=function(){this.options.rows=this.rows,this.options.cols=this.cols;var e=this.customKeyEventHandler,t=this.cursorBlinkInterval;i.call(this,this.options),this.customKeyEventHandler=e,this.cursorBlinkInterval=t,this.refresh(0,this.rows-1),this.viewport.syncScrollArea()},i.prototype.tabSet=function(){this.tabs[this.x]=!0},i.prototype.matchColor=l,l._cache={},l.distance=function(e,t,r,i,o,s){return Math.pow(30*(e-i),2)+Math.pow(59*(t-o),2)+Math.pow(11*(r-s),2)},i.EventEmitter=u.EventEmitter,i.inherits=n,i.on=o,i.off=s,i.cancel=function(e,t){if(this.cancelEvents||t)return e.preventDefault(),e.stopPropagation(),!1},e.exports=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(){this._events=this._events||{}}return e.prototype.on=function(e,t){this._events[e]=this._events[e]||[],this._events[e].push(t)},e.prototype.off=function(e,t){if(this._events[e])for(var r=this._events[e],i=r.length;i--;)if(r[i]===t||r[i].listener===t)return void r.splice(i,1)},e.prototype.removeAllListeners=function(e){this._events[e]&&delete this._events[e]},e.prototype.once=function(e,t){function r(){var i=Array.prototype.slice.call(arguments);return this.off(e,r),t.apply(this,i)}return r.listener=t,this.on(e,r)},e.prototype.emit=function(e){for(var t=[],r=1;r=3?r[2].replace(/^\s*at\s+/,""):r[1].replace(/^\s*global code@/,"")}for(var o=0;ot.length&&(t=t.repeat(e/t.length+1)),t.slice(0,e)+String(this))}),String.prototype.padEnd||(String.prototype.padEnd=function(e,t){return(e-=this.length)<=0?String(this):(void 0===t&&(t=" "),e>t.length&&(t=t.repeat(e/t.length+1)),String(this)+t.slice(0,e))}),i.colors={},i.colors.re_={hex16:/#([a-f0-9])([a-f0-9])([a-f0-9])/i,hex24:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i,rgb:new RegExp("^/s*rgb/s*/(/s*(/d{1,3})/s*,/s*(/d{1,3})/s*,/s*(/d{1,3})/s*/)/s*$".replace(/\//g,"\\"),"i"),rgba:new RegExp("^/s*rgba/s*/(/s*(/d{1,3})/s*,/s*(/d{1,3})/s*,/s*(/d{1,3})/s*(?:,/s*(/d+(?:/./d+)?)/s*)/)/s*$".replace(/\//g,"\\"),"i"),rgbx:new RegExp("^/s*rgba?/s*/(/s*(/d{1,3})/s*,/s*(/d{1,3})/s*,/s*(/d{1,3})/s*(?:,/s*(/d+(?:/./d+)?)/s*)?/)/s*$".replace(/\//g,"\\"),"i"),x11rgb:/^\s*rgb:([a-f0-9]{1,4})\/([a-f0-9]{1,4})\/([a-f0-9]{1,4})\s*$/i,name:/[a-z][a-z0-9\s]+/},i.colors.rgbToX11=function(e){function t(e){return e=(257*Math.min(e,255)).toString(16),i.f.zpad(e,4)}var r=e.match(i.colors.re_.rgbx);return r?"rgb:"+t(r[1])+"/"+t(r[2])+"/"+t(r[3]):null},i.colors.x11HexToCSS=function(e){if(!e.startsWith("#"))return null;if(e=e.substr(1),-1==[3,6,9,12].indexOf(e.length))return null;if(e.match(/[^a-f0-9]/i))return null;var t=e.length/3,r=e.substr(0,t),o=e.substr(t,t),s=e.substr(t+t,t);return i.colors.arrayToRGBA([r,o,s].map(function(e){return e=parseInt(e,16),2==t?e:1==t?e<<4:e>>4*(t-2)}))},i.colors.x11ToCSS=function(e){var t=e.match(i.colors.re_.x11rgb);return t?(t.splice(0,1),i.colors.arrayToRGBA(t.map(function(e){return 1==e.length?parseInt(e+e,16):2==e.length?parseInt(e,16):(3==e.length&&(e+=e.substr(2)),Math.round(parseInt(e,16)/257))}))):e.startsWith("#")?i.colors.x11HexToCSS(e):i.colors.nameToRGB(e)},i.colors.hexToRGB=function(e){function t(e){4==e.length&&(e=e.replace(r,function(e,t,r,i){return"#"+t+t+r+r+i+i}));var t=e.match(o);return t?"rgb("+parseInt(t[1],16)+", "+parseInt(t[2],16)+", "+parseInt(t[3],16)+")":null}var r=i.colors.re_.hex16,o=i.colors.re_.hex24;if(e instanceof Array)for(var s=0;s3?e[3]:1;return"rgba("+e[0]+", "+e[1]+", "+e[2]+", "+t+")"},i.colors.setAlpha=function(e,t){var r=i.colors.crackRGB(e);return r[3]=t,i.colors.arrayToRGBA(r)},i.colors.mix=function(e,t,r){for(var o=i.colors.crackRGB(e),s=i.colors.crackRGB(t),n=0;n<4;++n){var a=s[n]-o[n];o[n]=Math.round(parseInt(o[n])+a*r)}return i.colors.arrayToRGBA(o)},i.colors.crackRGB=function(e){if(e.startsWith("rgba")){if(t=e.match(i.colors.re_.rgba))return t.shift(),t}else{var t=e.match(i.colors.re_.rgb);if(t)return t.shift(),t.push(1),t}return console.error("Couldn't crack: "+e),null},i.colors.nameToRGB=function(e){return e in i.colors.colorNames?i.colors.colorNames[e]:(e=e.toLowerCase())in i.colors.colorNames?i.colors.colorNames[e]:(e=e.replace(/\s+/g,""))in i.colors.colorNames?i.colors.colorNames[e]:null},i.colors.stockColorPalette=i.colors.hexToRGB(["#000000","#CC0000","#4E9A06","#C4A000","#3465A4","#75507B","#06989A","#D3D7CF","#555753","#EF2929","#00BA13","#FCE94F","#729FCF","#F200CB","#00B5BD","#EEEEEC","#000000","#00005F","#000087","#0000AF","#0000D7","#0000FF","#005F00","#005F5F","#005F87","#005FAF","#005FD7","#005FFF","#008700","#00875F","#008787","#0087AF","#0087D7","#0087FF","#00AF00","#00AF5F","#00AF87","#00AFAF","#00AFD7","#00AFFF","#00D700","#00D75F","#00D787","#00D7AF","#00D7D7","#00D7FF","#00FF00","#00FF5F","#00FF87","#00FFAF","#00FFD7","#00FFFF","#5F0000","#5F005F","#5F0087","#5F00AF","#5F00D7","#5F00FF","#5F5F00","#5F5F5F","#5F5F87","#5F5FAF","#5F5FD7","#5F5FFF","#5F8700","#5F875F","#5F8787","#5F87AF","#5F87D7","#5F87FF","#5FAF00","#5FAF5F","#5FAF87","#5FAFAF","#5FAFD7","#5FAFFF","#5FD700","#5FD75F","#5FD787","#5FD7AF","#5FD7D7","#5FD7FF","#5FFF00","#5FFF5F","#5FFF87","#5FFFAF","#5FFFD7","#5FFFFF","#870000","#87005F","#870087","#8700AF","#8700D7","#8700FF","#875F00","#875F5F","#875F87","#875FAF","#875FD7","#875FFF","#878700","#87875F","#878787","#8787AF","#8787D7","#8787FF","#87AF00","#87AF5F","#87AF87","#87AFAF","#87AFD7","#87AFFF","#87D700","#87D75F","#87D787","#87D7AF","#87D7D7","#87D7FF","#87FF00","#87FF5F","#87FF87","#87FFAF","#87FFD7","#87FFFF","#AF0000","#AF005F","#AF0087","#AF00AF","#AF00D7","#AF00FF","#AF5F00","#AF5F5F","#AF5F87","#AF5FAF","#AF5FD7","#AF5FFF","#AF8700","#AF875F","#AF8787","#AF87AF","#AF87D7","#AF87FF","#AFAF00","#AFAF5F","#AFAF87","#AFAFAF","#AFAFD7","#AFAFFF","#AFD700","#AFD75F","#AFD787","#AFD7AF","#AFD7D7","#AFD7FF","#AFFF00","#AFFF5F","#AFFF87","#AFFFAF","#AFFFD7","#AFFFFF","#D70000","#D7005F","#D70087","#D700AF","#D700D7","#D700FF","#D75F00","#D75F5F","#D75F87","#D75FAF","#D75FD7","#D75FFF","#D78700","#D7875F","#D78787","#D787AF","#D787D7","#D787FF","#D7AF00","#D7AF5F","#D7AF87","#D7AFAF","#D7AFD7","#D7AFFF","#D7D700","#D7D75F","#D7D787","#D7D7AF","#D7D7D7","#D7D7FF","#D7FF00","#D7FF5F","#D7FF87","#D7FFAF","#D7FFD7","#D7FFFF","#FF0000","#FF005F","#FF0087","#FF00AF","#FF00D7","#FF00FF","#FF5F00","#FF5F5F","#FF5F87","#FF5FAF","#FF5FD7","#FF5FFF","#FF8700","#FF875F","#FF8787","#FF87AF","#FF87D7","#FF87FF","#FFAF00","#FFAF5F","#FFAF87","#FFAFAF","#FFAFD7","#FFAFFF","#FFD700","#FFD75F","#FFD787","#FFD7AF","#FFD7D7","#FFD7FF","#FFFF00","#FFFF5F","#FFFF87","#FFFFAF","#FFFFD7","#FFFFFF","#080808","#121212","#1C1C1C","#262626","#303030","#3A3A3A","#444444","#4E4E4E","#585858","#626262","#6C6C6C","#767676","#808080","#8A8A8A","#949494","#9E9E9E","#A8A8A8","#B2B2B2","#BCBCBC","#C6C6C6","#D0D0D0","#DADADA","#E4E4E4","#EEEEEE"]),i.colors.colorPalette=i.colors.stockColorPalette,i.colors.colorNames={aliceblue:"rgb(240, 248, 255)",antiquewhite:"rgb(250, 235, 215)",antiquewhite1:"rgb(255, 239, 219)",antiquewhite2:"rgb(238, 223, 204)",antiquewhite3:"rgb(205, 192, 176)",antiquewhite4:"rgb(139, 131, 120)",aquamarine:"rgb(127, 255, 212)",aquamarine1:"rgb(127, 255, 212)",aquamarine2:"rgb(118, 238, 198)",aquamarine3:"rgb(102, 205, 170)",aquamarine4:"rgb(69, 139, 116)",azure:"rgb(240, 255, 255)",azure1:"rgb(240, 255, 255)",azure2:"rgb(224, 238, 238)",azure3:"rgb(193, 205, 205)",azure4:"rgb(131, 139, 139)",beige:"rgb(245, 245, 220)",bisque:"rgb(255, 228, 196)",bisque1:"rgb(255, 228, 196)",bisque2:"rgb(238, 213, 183)",bisque3:"rgb(205, 183, 158)",bisque4:"rgb(139, 125, 107)",black:"rgb(0, 0, 0)",blanchedalmond:"rgb(255, 235, 205)",blue:"rgb(0, 0, 255)",blue1:"rgb(0, 0, 255)",blue2:"rgb(0, 0, 238)",blue3:"rgb(0, 0, 205)",blue4:"rgb(0, 0, 139)",blueviolet:"rgb(138, 43, 226)",brown:"rgb(165, 42, 42)",brown1:"rgb(255, 64, 64)",brown2:"rgb(238, 59, 59)",brown3:"rgb(205, 51, 51)",brown4:"rgb(139, 35, 35)",burlywood:"rgb(222, 184, 135)",burlywood1:"rgb(255, 211, 155)",burlywood2:"rgb(238, 197, 145)",burlywood3:"rgb(205, 170, 125)",burlywood4:"rgb(139, 115, 85)",cadetblue:"rgb(95, 158, 160)",cadetblue1:"rgb(152, 245, 255)",cadetblue2:"rgb(142, 229, 238)",cadetblue3:"rgb(122, 197, 205)",cadetblue4:"rgb(83, 134, 139)",chartreuse:"rgb(127, 255, 0)",chartreuse1:"rgb(127, 255, 0)",chartreuse2:"rgb(118, 238, 0)",chartreuse3:"rgb(102, 205, 0)",chartreuse4:"rgb(69, 139, 0)",chocolate:"rgb(210, 105, 30)",chocolate1:"rgb(255, 127, 36)",chocolate2:"rgb(238, 118, 33)",chocolate3:"rgb(205, 102, 29)",chocolate4:"rgb(139, 69, 19)",coral:"rgb(255, 127, 80)",coral1:"rgb(255, 114, 86)",coral2:"rgb(238, 106, 80)",coral3:"rgb(205, 91, 69)",coral4:"rgb(139, 62, 47)",cornflowerblue:"rgb(100, 149, 237)",cornsilk:"rgb(255, 248, 220)",cornsilk1:"rgb(255, 248, 220)",cornsilk2:"rgb(238, 232, 205)",cornsilk3:"rgb(205, 200, 177)",cornsilk4:"rgb(139, 136, 120)",cyan:"rgb(0, 255, 255)",cyan1:"rgb(0, 255, 255)",cyan2:"rgb(0, 238, 238)",cyan3:"rgb(0, 205, 205)",cyan4:"rgb(0, 139, 139)",darkblue:"rgb(0, 0, 139)",darkcyan:"rgb(0, 139, 139)",darkgoldenrod:"rgb(184, 134, 11)",darkgoldenrod1:"rgb(255, 185, 15)",darkgoldenrod2:"rgb(238, 173, 14)",darkgoldenrod3:"rgb(205, 149, 12)",darkgoldenrod4:"rgb(139, 101, 8)",darkgray:"rgb(169, 169, 169)",darkgreen:"rgb(0, 100, 0)",darkgrey:"rgb(169, 169, 169)",darkkhaki:"rgb(189, 183, 107)",darkmagenta:"rgb(139, 0, 139)",darkolivegreen:"rgb(85, 107, 47)",darkolivegreen1:"rgb(202, 255, 112)",darkolivegreen2:"rgb(188, 238, 104)",darkolivegreen3:"rgb(162, 205, 90)",darkolivegreen4:"rgb(110, 139, 61)",darkorange:"rgb(255, 140, 0)",darkorange1:"rgb(255, 127, 0)",darkorange2:"rgb(238, 118, 0)",darkorange3:"rgb(205, 102, 0)",darkorange4:"rgb(139, 69, 0)",darkorchid:"rgb(153, 50, 204)",darkorchid1:"rgb(191, 62, 255)",darkorchid2:"rgb(178, 58, 238)",darkorchid3:"rgb(154, 50, 205)",darkorchid4:"rgb(104, 34, 139)",darkred:"rgb(139, 0, 0)",darksalmon:"rgb(233, 150, 122)",darkseagreen:"rgb(143, 188, 143)",darkseagreen1:"rgb(193, 255, 193)",darkseagreen2:"rgb(180, 238, 180)",darkseagreen3:"rgb(155, 205, 155)",darkseagreen4:"rgb(105, 139, 105)",darkslateblue:"rgb(72, 61, 139)",darkslategray:"rgb(47, 79, 79)",darkslategray1:"rgb(151, 255, 255)",darkslategray2:"rgb(141, 238, 238)",darkslategray3:"rgb(121, 205, 205)",darkslategray4:"rgb(82, 139, 139)",darkslategrey:"rgb(47, 79, 79)",darkturquoise:"rgb(0, 206, 209)",darkviolet:"rgb(148, 0, 211)",debianred:"rgb(215, 7, 81)",deeppink:"rgb(255, 20, 147)",deeppink1:"rgb(255, 20, 147)",deeppink2:"rgb(238, 18, 137)",deeppink3:"rgb(205, 16, 118)",deeppink4:"rgb(139, 10, 80)",deepskyblue:"rgb(0, 191, 255)",deepskyblue1:"rgb(0, 191, 255)",deepskyblue2:"rgb(0, 178, 238)",deepskyblue3:"rgb(0, 154, 205)",deepskyblue4:"rgb(0, 104, 139)",dimgray:"rgb(105, 105, 105)",dimgrey:"rgb(105, 105, 105)",dodgerblue:"rgb(30, 144, 255)",dodgerblue1:"rgb(30, 144, 255)",dodgerblue2:"rgb(28, 134, 238)",dodgerblue3:"rgb(24, 116, 205)",dodgerblue4:"rgb(16, 78, 139)",firebrick:"rgb(178, 34, 34)",firebrick1:"rgb(255, 48, 48)",firebrick2:"rgb(238, 44, 44)",firebrick3:"rgb(205, 38, 38)",firebrick4:"rgb(139, 26, 26)",floralwhite:"rgb(255, 250, 240)",forestgreen:"rgb(34, 139, 34)",gainsboro:"rgb(220, 220, 220)",ghostwhite:"rgb(248, 248, 255)",gold:"rgb(255, 215, 0)",gold1:"rgb(255, 215, 0)",gold2:"rgb(238, 201, 0)",gold3:"rgb(205, 173, 0)",gold4:"rgb(139, 117, 0)",goldenrod:"rgb(218, 165, 32)",goldenrod1:"rgb(255, 193, 37)",goldenrod2:"rgb(238, 180, 34)",goldenrod3:"rgb(205, 155, 29)",goldenrod4:"rgb(139, 105, 20)",gray:"rgb(190, 190, 190)",gray0:"rgb(0, 0, 0)",gray1:"rgb(3, 3, 3)",gray10:"rgb(26, 26, 26)",gray100:"rgb(255, 255, 255)",gray11:"rgb(28, 28, 28)",gray12:"rgb(31, 31, 31)",gray13:"rgb(33, 33, 33)",gray14:"rgb(36, 36, 36)",gray15:"rgb(38, 38, 38)",gray16:"rgb(41, 41, 41)",gray17:"rgb(43, 43, 43)",gray18:"rgb(46, 46, 46)",gray19:"rgb(48, 48, 48)",gray2:"rgb(5, 5, 5)",gray20:"rgb(51, 51, 51)",gray21:"rgb(54, 54, 54)",gray22:"rgb(56, 56, 56)",gray23:"rgb(59, 59, 59)",gray24:"rgb(61, 61, 61)",gray25:"rgb(64, 64, 64)",gray26:"rgb(66, 66, 66)",gray27:"rgb(69, 69, 69)",gray28:"rgb(71, 71, 71)",gray29:"rgb(74, 74, 74)",gray3:"rgb(8, 8, 8)",gray30:"rgb(77, 77, 77)",gray31:"rgb(79, 79, 79)",gray32:"rgb(82, 82, 82)",gray33:"rgb(84, 84, 84)",gray34:"rgb(87, 87, 87)",gray35:"rgb(89, 89, 89)",gray36:"rgb(92, 92, 92)",gray37:"rgb(94, 94, 94)",gray38:"rgb(97, 97, 97)",gray39:"rgb(99, 99, 99)",gray4:"rgb(10, 10, 10)",gray40:"rgb(102, 102, 102)",gray41:"rgb(105, 105, 105)",gray42:"rgb(107, 107, 107)",gray43:"rgb(110, 110, 110)",gray44:"rgb(112, 112, 112)",gray45:"rgb(115, 115, 115)",gray46:"rgb(117, 117, 117)",gray47:"rgb(120, 120, 120)",gray48:"rgb(122, 122, 122)",gray49:"rgb(125, 125, 125)",gray5:"rgb(13, 13, 13)",gray50:"rgb(127, 127, 127)",gray51:"rgb(130, 130, 130)",gray52:"rgb(133, 133, 133)",gray53:"rgb(135, 135, 135)",gray54:"rgb(138, 138, 138)",gray55:"rgb(140, 140, 140)",gray56:"rgb(143, 143, 143)",gray57:"rgb(145, 145, 145)",gray58:"rgb(148, 148, 148)",gray59:"rgb(150, 150, 150)",gray6:"rgb(15, 15, 15)",gray60:"rgb(153, 153, 153)",gray61:"rgb(156, 156, 156)",gray62:"rgb(158, 158, 158)",gray63:"rgb(161, 161, 161)",gray64:"rgb(163, 163, 163)",gray65:"rgb(166, 166, 166)",gray66:"rgb(168, 168, 168)",gray67:"rgb(171, 171, 171)",gray68:"rgb(173, 173, 173)",gray69:"rgb(176, 176, 176)",gray7:"rgb(18, 18, 18)",gray70:"rgb(179, 179, 179)",gray71:"rgb(181, 181, 181)",gray72:"rgb(184, 184, 184)",gray73:"rgb(186, 186, 186)",gray74:"rgb(189, 189, 189)",gray75:"rgb(191, 191, 191)",gray76:"rgb(194, 194, 194)",gray77:"rgb(196, 196, 196)",gray78:"rgb(199, 199, 199)",gray79:"rgb(201, 201, 201)",gray8:"rgb(20, 20, 20)",gray80:"rgb(204, 204, 204)",gray81:"rgb(207, 207, 207)",gray82:"rgb(209, 209, 209)",gray83:"rgb(212, 212, 212)",gray84:"rgb(214, 214, 214)",gray85:"rgb(217, 217, 217)",gray86:"rgb(219, 219, 219)",gray87:"rgb(222, 222, 222)",gray88:"rgb(224, 224, 224)",gray89:"rgb(227, 227, 227)",gray9:"rgb(23, 23, 23)",gray90:"rgb(229, 229, 229)",gray91:"rgb(232, 232, 232)",gray92:"rgb(235, 235, 235)",gray93:"rgb(237, 237, 237)",gray94:"rgb(240, 240, 240)",gray95:"rgb(242, 242, 242)",gray96:"rgb(245, 245, 245)",gray97:"rgb(247, 247, 247)",gray98:"rgb(250, 250, 250)",gray99:"rgb(252, 252, 252)",green:"rgb(0, 255, 0)",green1:"rgb(0, 255, 0)",green2:"rgb(0, 238, 0)",green3:"rgb(0, 205, 0)",green4:"rgb(0, 139, 0)",greenyellow:"rgb(173, 255, 47)",grey:"rgb(190, 190, 190)",grey0:"rgb(0, 0, 0)",grey1:"rgb(3, 3, 3)",grey10:"rgb(26, 26, 26)",grey100:"rgb(255, 255, 255)",grey11:"rgb(28, 28, 28)",grey12:"rgb(31, 31, 31)",grey13:"rgb(33, 33, 33)",grey14:"rgb(36, 36, 36)",grey15:"rgb(38, 38, 38)",grey16:"rgb(41, 41, 41)",grey17:"rgb(43, 43, 43)",grey18:"rgb(46, 46, 46)",grey19:"rgb(48, 48, 48)",grey2:"rgb(5, 5, 5)",grey20:"rgb(51, 51, 51)",grey21:"rgb(54, 54, 54)",grey22:"rgb(56, 56, 56)",grey23:"rgb(59, 59, 59)",grey24:"rgb(61, 61, 61)",grey25:"rgb(64, 64, 64)",grey26:"rgb(66, 66, 66)",grey27:"rgb(69, 69, 69)",grey28:"rgb(71, 71, 71)",grey29:"rgb(74, 74, 74)",grey3:"rgb(8, 8, 8)",grey30:"rgb(77, 77, 77)",grey31:"rgb(79, 79, 79)",grey32:"rgb(82, 82, 82)",grey33:"rgb(84, 84, 84)",grey34:"rgb(87, 87, 87)",grey35:"rgb(89, 89, 89)",grey36:"rgb(92, 92, 92)",grey37:"rgb(94, 94, 94)",grey38:"rgb(97, 97, 97)",grey39:"rgb(99, 99, 99)",grey4:"rgb(10, 10, 10)",grey40:"rgb(102, 102, 102)",grey41:"rgb(105, 105, 105)",grey42:"rgb(107, 107, 107)",grey43:"rgb(110, 110, 110)",grey44:"rgb(112, 112, 112)",grey45:"rgb(115, 115, 115)",grey46:"rgb(117, 117, 117)",grey47:"rgb(120, 120, 120)",grey48:"rgb(122, 122, 122)",grey49:"rgb(125, 125, 125)",grey5:"rgb(13, 13, 13)",grey50:"rgb(127, 127, 127)",grey51:"rgb(130, 130, 130)",grey52:"rgb(133, 133, 133)",grey53:"rgb(135, 135, 135)",grey54:"rgb(138, 138, 138)",grey55:"rgb(140, 140, 140)",grey56:"rgb(143, 143, 143)",grey57:"rgb(145, 145, 145)",grey58:"rgb(148, 148, 148)",grey59:"rgb(150, 150, 150)",grey6:"rgb(15, 15, 15)",grey60:"rgb(153, 153, 153)",grey61:"rgb(156, 156, 156)",grey62:"rgb(158, 158, 158)",grey63:"rgb(161, 161, 161)",grey64:"rgb(163, 163, 163)",grey65:"rgb(166, 166, 166)",grey66:"rgb(168, 168, 168)",grey67:"rgb(171, 171, 171)",grey68:"rgb(173, 173, 173)",grey69:"rgb(176, 176, 176)",grey7:"rgb(18, 18, 18)",grey70:"rgb(179, 179, 179)",grey71:"rgb(181, 181, 181)",grey72:"rgb(184, 184, 184)",grey73:"rgb(186, 186, 186)",grey74:"rgb(189, 189, 189)",grey75:"rgb(191, 191, 191)",grey76:"rgb(194, 194, 194)",grey77:"rgb(196, 196, 196)",grey78:"rgb(199, 199, 199)",grey79:"rgb(201, 201, 201)",grey8:"rgb(20, 20, 20)",grey80:"rgb(204, 204, 204)",grey81:"rgb(207, 207, 207)",grey82:"rgb(209, 209, 209)",grey83:"rgb(212, 212, 212)",grey84:"rgb(214, 214, 214)",grey85:"rgb(217, 217, 217)",grey86:"rgb(219, 219, 219)",grey87:"rgb(222, 222, 222)",grey88:"rgb(224, 224, 224)",grey89:"rgb(227, 227, 227)",grey9:"rgb(23, 23, 23)",grey90:"rgb(229, 229, 229)",grey91:"rgb(232, 232, 232)",grey92:"rgb(235, 235, 235)",grey93:"rgb(237, 237, 237)",grey94:"rgb(240, 240, 240)",grey95:"rgb(242, 242, 242)",grey96:"rgb(245, 245, 245)",grey97:"rgb(247, 247, 247)",grey98:"rgb(250, 250, 250)",grey99:"rgb(252, 252, 252)",honeydew:"rgb(240, 255, 240)",honeydew1:"rgb(240, 255, 240)",honeydew2:"rgb(224, 238, 224)",honeydew3:"rgb(193, 205, 193)",honeydew4:"rgb(131, 139, 131)",hotpink:"rgb(255, 105, 180)",hotpink1:"rgb(255, 110, 180)",hotpink2:"rgb(238, 106, 167)",hotpink3:"rgb(205, 96, 144)",hotpink4:"rgb(139, 58, 98)",indianred:"rgb(205, 92, 92)",indianred1:"rgb(255, 106, 106)",indianred2:"rgb(238, 99, 99)",indianred3:"rgb(205, 85, 85)",indianred4:"rgb(139, 58, 58)",ivory:"rgb(255, 255, 240)",ivory1:"rgb(255, 255, 240)",ivory2:"rgb(238, 238, 224)",ivory3:"rgb(205, 205, 193)",ivory4:"rgb(139, 139, 131)",khaki:"rgb(240, 230, 140)",khaki1:"rgb(255, 246, 143)",khaki2:"rgb(238, 230, 133)",khaki3:"rgb(205, 198, 115)",khaki4:"rgb(139, 134, 78)",lavender:"rgb(230, 230, 250)",lavenderblush:"rgb(255, 240, 245)",lavenderblush1:"rgb(255, 240, 245)",lavenderblush2:"rgb(238, 224, 229)",lavenderblush3:"rgb(205, 193, 197)",lavenderblush4:"rgb(139, 131, 134)",lawngreen:"rgb(124, 252, 0)",lemonchiffon:"rgb(255, 250, 205)",lemonchiffon1:"rgb(255, 250, 205)",lemonchiffon2:"rgb(238, 233, 191)",lemonchiffon3:"rgb(205, 201, 165)",lemonchiffon4:"rgb(139, 137, 112)",lightblue:"rgb(173, 216, 230)",lightblue1:"rgb(191, 239, 255)",lightblue2:"rgb(178, 223, 238)",lightblue3:"rgb(154, 192, 205)",lightblue4:"rgb(104, 131, 139)",lightcoral:"rgb(240, 128, 128)",lightcyan:"rgb(224, 255, 255)",lightcyan1:"rgb(224, 255, 255)",lightcyan2:"rgb(209, 238, 238)",lightcyan3:"rgb(180, 205, 205)",lightcyan4:"rgb(122, 139, 139)",lightgoldenrod:"rgb(238, 221, 130)",lightgoldenrod1:"rgb(255, 236, 139)",lightgoldenrod2:"rgb(238, 220, 130)",lightgoldenrod3:"rgb(205, 190, 112)",lightgoldenrod4:"rgb(139, 129, 76)",lightgoldenrodyellow:"rgb(250, 250, 210)",lightgray:"rgb(211, 211, 211)",lightgreen:"rgb(144, 238, 144)",lightgrey:"rgb(211, 211, 211)",lightpink:"rgb(255, 182, 193)",lightpink1:"rgb(255, 174, 185)",lightpink2:"rgb(238, 162, 173)",lightpink3:"rgb(205, 140, 149)",lightpink4:"rgb(139, 95, 101)",lightsalmon:"rgb(255, 160, 122)",lightsalmon1:"rgb(255, 160, 122)",lightsalmon2:"rgb(238, 149, 114)",lightsalmon3:"rgb(205, 129, 98)",lightsalmon4:"rgb(139, 87, 66)",lightseagreen:"rgb(32, 178, 170)",lightskyblue:"rgb(135, 206, 250)",lightskyblue1:"rgb(176, 226, 255)",lightskyblue2:"rgb(164, 211, 238)",lightskyblue3:"rgb(141, 182, 205)",lightskyblue4:"rgb(96, 123, 139)",lightslateblue:"rgb(132, 112, 255)",lightslategray:"rgb(119, 136, 153)",lightslategrey:"rgb(119, 136, 153)",lightsteelblue:"rgb(176, 196, 222)",lightsteelblue1:"rgb(202, 225, 255)",lightsteelblue2:"rgb(188, 210, 238)",lightsteelblue3:"rgb(162, 181, 205)",lightsteelblue4:"rgb(110, 123, 139)",lightyellow:"rgb(255, 255, 224)",lightyellow1:"rgb(255, 255, 224)",lightyellow2:"rgb(238, 238, 209)",lightyellow3:"rgb(205, 205, 180)",lightyellow4:"rgb(139, 139, 122)",limegreen:"rgb(50, 205, 50)",linen:"rgb(250, 240, 230)",magenta:"rgb(255, 0, 255)",magenta1:"rgb(255, 0, 255)",magenta2:"rgb(238, 0, 238)",magenta3:"rgb(205, 0, 205)",magenta4:"rgb(139, 0, 139)",maroon:"rgb(176, 48, 96)",maroon1:"rgb(255, 52, 179)",maroon2:"rgb(238, 48, 167)",maroon3:"rgb(205, 41, 144)",maroon4:"rgb(139, 28, 98)",mediumaquamarine:"rgb(102, 205, 170)",mediumblue:"rgb(0, 0, 205)",mediumorchid:"rgb(186, 85, 211)",mediumorchid1:"rgb(224, 102, 255)",mediumorchid2:"rgb(209, 95, 238)",mediumorchid3:"rgb(180, 82, 205)",mediumorchid4:"rgb(122, 55, 139)",mediumpurple:"rgb(147, 112, 219)",mediumpurple1:"rgb(171, 130, 255)",mediumpurple2:"rgb(159, 121, 238)",mediumpurple3:"rgb(137, 104, 205)",mediumpurple4:"rgb(93, 71, 139)",mediumseagreen:"rgb(60, 179, 113)",mediumslateblue:"rgb(123, 104, 238)",mediumspringgreen:"rgb(0, 250, 154)",mediumturquoise:"rgb(72, 209, 204)",mediumvioletred:"rgb(199, 21, 133)",midnightblue:"rgb(25, 25, 112)",mintcream:"rgb(245, 255, 250)",mistyrose:"rgb(255, 228, 225)",mistyrose1:"rgb(255, 228, 225)",mistyrose2:"rgb(238, 213, 210)",mistyrose3:"rgb(205, 183, 181)",mistyrose4:"rgb(139, 125, 123)",moccasin:"rgb(255, 228, 181)",navajowhite:"rgb(255, 222, 173)",navajowhite1:"rgb(255, 222, 173)",navajowhite2:"rgb(238, 207, 161)",navajowhite3:"rgb(205, 179, 139)",navajowhite4:"rgb(139, 121, 94)",navy:"rgb(0, 0, 128)",navyblue:"rgb(0, 0, 128)",oldlace:"rgb(253, 245, 230)",olivedrab:"rgb(107, 142, 35)",olivedrab1:"rgb(192, 255, 62)",olivedrab2:"rgb(179, 238, 58)",olivedrab3:"rgb(154, 205, 50)",olivedrab4:"rgb(105, 139, 34)",orange:"rgb(255, 165, 0)",orange1:"rgb(255, 165, 0)",orange2:"rgb(238, 154, 0)",orange3:"rgb(205, 133, 0)",orange4:"rgb(139, 90, 0)",orangered:"rgb(255, 69, 0)",orangered1:"rgb(255, 69, 0)",orangered2:"rgb(238, 64, 0)",orangered3:"rgb(205, 55, 0)",orangered4:"rgb(139, 37, 0)",orchid:"rgb(218, 112, 214)",orchid1:"rgb(255, 131, 250)",orchid2:"rgb(238, 122, 233)",orchid3:"rgb(205, 105, 201)",orchid4:"rgb(139, 71, 137)",palegoldenrod:"rgb(238, 232, 170)",palegreen:"rgb(152, 251, 152)",palegreen1:"rgb(154, 255, 154)",palegreen2:"rgb(144, 238, 144)",palegreen3:"rgb(124, 205, 124)",palegreen4:"rgb(84, 139, 84)",paleturquoise:"rgb(175, 238, 238)",paleturquoise1:"rgb(187, 255, 255)",paleturquoise2:"rgb(174, 238, 238)",paleturquoise3:"rgb(150, 205, 205)",paleturquoise4:"rgb(102, 139, 139)",palevioletred:"rgb(219, 112, 147)",palevioletred1:"rgb(255, 130, 171)",palevioletred2:"rgb(238, 121, 159)",palevioletred3:"rgb(205, 104, 137)",palevioletred4:"rgb(139, 71, 93)",papayawhip:"rgb(255, 239, 213)",peachpuff:"rgb(255, 218, 185)",peachpuff1:"rgb(255, 218, 185)",peachpuff2:"rgb(238, 203, 173)",peachpuff3:"rgb(205, 175, 149)",peachpuff4:"rgb(139, 119, 101)",peru:"rgb(205, 133, 63)",pink:"rgb(255, 192, 203)",pink1:"rgb(255, 181, 197)",pink2:"rgb(238, 169, 184)",pink3:"rgb(205, 145, 158)",pink4:"rgb(139, 99, 108)",plum:"rgb(221, 160, 221)",plum1:"rgb(255, 187, 255)",plum2:"rgb(238, 174, 238)",plum3:"rgb(205, 150, 205)",plum4:"rgb(139, 102, 139)",powderblue:"rgb(176, 224, 230)",purple:"rgb(160, 32, 240)",purple1:"rgb(155, 48, 255)",purple2:"rgb(145, 44, 238)",purple3:"rgb(125, 38, 205)",purple4:"rgb(85, 26, 139)",red:"rgb(255, 0, 0)",red1:"rgb(255, 0, 0)",red2:"rgb(238, 0, 0)",red3:"rgb(205, 0, 0)",red4:"rgb(139, 0, 0)",rosybrown:"rgb(188, 143, 143)",rosybrown1:"rgb(255, 193, 193)",rosybrown2:"rgb(238, 180, 180)",rosybrown3:"rgb(205, 155, 155)",rosybrown4:"rgb(139, 105, 105)",royalblue:"rgb(65, 105, 225)",royalblue1:"rgb(72, 118, 255)",royalblue2:"rgb(67, 110, 238)",royalblue3:"rgb(58, 95, 205)",royalblue4:"rgb(39, 64, 139)",saddlebrown:"rgb(139, 69, 19)",salmon:"rgb(250, 128, 114)",salmon1:"rgb(255, 140, 105)",salmon2:"rgb(238, 130, 98)",salmon3:"rgb(205, 112, 84)",salmon4:"rgb(139, 76, 57)",sandybrown:"rgb(244, 164, 96)",seagreen:"rgb(46, 139, 87)",seagreen1:"rgb(84, 255, 159)",seagreen2:"rgb(78, 238, 148)",seagreen3:"rgb(67, 205, 128)",seagreen4:"rgb(46, 139, 87)",seashell:"rgb(255, 245, 238)",seashell1:"rgb(255, 245, 238)",seashell2:"rgb(238, 229, 222)",seashell3:"rgb(205, 197, 191)",seashell4:"rgb(139, 134, 130)",sienna:"rgb(160, 82, 45)",sienna1:"rgb(255, 130, 71)",sienna2:"rgb(238, 121, 66)",sienna3:"rgb(205, 104, 57)",sienna4:"rgb(139, 71, 38)",skyblue:"rgb(135, 206, 235)",skyblue1:"rgb(135, 206, 255)",skyblue2:"rgb(126, 192, 238)",skyblue3:"rgb(108, 166, 205)",skyblue4:"rgb(74, 112, 139)",slateblue:"rgb(106, 90, 205)",slateblue1:"rgb(131, 111, 255)",slateblue2:"rgb(122, 103, 238)",slateblue3:"rgb(105, 89, 205)",slateblue4:"rgb(71, 60, 139)",slategray:"rgb(112, 128, 144)",slategray1:"rgb(198, 226, 255)",slategray2:"rgb(185, 211, 238)",slategray3:"rgb(159, 182, 205)",slategray4:"rgb(108, 123, 139)",slategrey:"rgb(112, 128, 144)",snow:"rgb(255, 250, 250)",snow1:"rgb(255, 250, 250)",snow2:"rgb(238, 233, 233)",snow3:"rgb(205, 201, 201)",snow4:"rgb(139, 137, 137)",springgreen:"rgb(0, 255, 127)",springgreen1:"rgb(0, 255, 127)",springgreen2:"rgb(0, 238, 118)",springgreen3:"rgb(0, 205, 102)",springgreen4:"rgb(0, 139, 69)",steelblue:"rgb(70, 130, 180)",steelblue1:"rgb(99, 184, 255)",steelblue2:"rgb(92, 172, 238)",steelblue3:"rgb(79, 148, 205)",steelblue4:"rgb(54, 100, 139)",tan:"rgb(210, 180, 140)",tan1:"rgb(255, 165, 79)",tan2:"rgb(238, 154, 73)",tan3:"rgb(205, 133, 63)",tan4:"rgb(139, 90, 43)",thistle:"rgb(216, 191, 216)",thistle1:"rgb(255, 225, 255)",thistle2:"rgb(238, 210, 238)",thistle3:"rgb(205, 181, 205)",thistle4:"rgb(139, 123, 139)",tomato:"rgb(255, 99, 71)",tomato1:"rgb(255, 99, 71)",tomato2:"rgb(238, 92, 66)",tomato3:"rgb(205, 79, 57)",tomato4:"rgb(139, 54, 38)",turquoise:"rgb(64, 224, 208)",turquoise1:"rgb(0, 245, 255)",turquoise2:"rgb(0, 229, 238)",turquoise3:"rgb(0, 197, 205)",turquoise4:"rgb(0, 134, 139)",violet:"rgb(238, 130, 238)",violetred:"rgb(208, 32, 144)",violetred1:"rgb(255, 62, 150)",violetred2:"rgb(238, 58, 140)",violetred3:"rgb(205, 50, 120)",violetred4:"rgb(139, 34, 82)",wheat:"rgb(245, 222, 179)",wheat1:"rgb(255, 231, 186)",wheat2:"rgb(238, 216, 174)",wheat3:"rgb(205, 186, 150)",wheat4:"rgb(139, 126, 102)",white:"rgb(255, 255, 255)",whitesmoke:"rgb(245, 245, 245)",yellow:"rgb(255, 255, 0)",yellow1:"rgb(255, 255, 0)",yellow2:"rgb(238, 238, 0)",yellow3:"rgb(205, 205, 0)",yellow4:"rgb(139, 139, 0)",yellowgreen:"rgb(154, 205, 50)"},i.f={},i.f.createEnum=function(e){return new String(e)},i.f.replaceVars=function(e,t){return e.replace(/%([a-z]*)\(([^\)]+)\)/gi,function(e,r,o){if(void 0===t[o])throw"Unknown variable: "+o;var s=t[o];if(r in i.f.replaceVars.functions)s=i.f.replaceVars.functions[r](s);else if(r)throw"Unknown escape function: "+r;return s})},i.f.replaceVars.functions={encodeURI:encodeURI,encodeURIComponent:encodeURIComponent,escapeHTML:function(e){var t={"<":"<",">":">","&":"&",'"':""","'":"'"};return e.replace(/[<>&\"\']/g,function(e){return t[e]})}},i.f.getAcceptLanguages=function(e){i.f.getAcceptLanguages.chromeSupported()?chrome.i18n.getAcceptLanguages(e):setTimeout(function(){e([navigator.language.replace(/-/g,"_")])},0)},i.f.getAcceptLanguages.chromeSupported=function(){return window.chrome&&chrome.i18n},i.f.parseQuery=function(e){e.startsWith("?")&&(e=e.substr(1));for(var t={},r=e.split("&"),i=0;ir?r:e},i.f.zpad=function(e,t){return String(e).padStart(t,"0")},i.f.getWhitespace=function(e){if(e<=0)return"";var t=this.getWhitespace;for(t.whitespace||(t.whitespace=" ");e>t.whitespace.length;)t.whitespace+=t.whitespace;return t.whitespace.substr(0,e)},i.f.alarm=function(e,t){var r=t||5e3,o=i.f.getStack(1);return function(){var t=setTimeout(function(){var i="string"==typeof e?i:e.name;i=i?": "+i:"",console.warn("lib.f.alarm: timeout expired: "+r/1e3+"s"+i),console.log(o),t=null},r),i=function(e){return function(){return t&&(clearTimeout(t),t=null),e.apply(null,arguments)}};return"string"==typeof e?i:i(e)}()},i.f.getStack=function(e){var t,r=e?e+2:2;try{throw new Error}catch(e){t=e.stack.split("\n")}for(var i={},o=r;o=0&&this.observers.splice(t,1)},i.PreferenceManager.Record.prototype.get=function(){return this.currentValue===this.DEFAULT_VALUE?/^(string|number)$/.test(typeof this.defaultValue)?this.defaultValue:"object"==typeof this.defaultValue?JSON.parse(JSON.stringify(this.defaultValue)):this.defaultValue:this.currentValue},i.PreferenceManager.prototype.deactivate=function(){if(!this.isActive_)throw new Error("Not activated");this.isActive_=!1,this.storage.removeObserver(this.storageObserver_)},i.PreferenceManager.prototype.activate=function(){if(this.isActive_)throw new Error("Already activated");this.isActive_=!0,this.storage.addObserver(this.storageObserver_)},i.PreferenceManager.prototype.readStorage=function(e){function t(){0==--r&&e&&e()}var r=0,i=Object.keys(this.prefRecords_).map(function(e){return this.prefix+e}.bind(this));this.trace&&console.log("Preferences read: "+this.prefix),this.storage.getItems(i,function(i){var o=this.prefix.length;for(var s in i){var n=i[s],a=s.substr(o),l=a in this.childLists_&&JSON.stringify(n)!=JSON.stringify(this.prefRecords_[a].currentValue);this.prefRecords_[a].currentValue=n,l&&(r++,this.syncChildList(a,t))}0==r&&e&&setTimeout(e)}.bind(this))},i.PreferenceManager.prototype.definePreference=function(e,t,r){var o=this.prefRecords_[e];o?this.changeDefault(e,t):o=this.prefRecords_[e]=new i.PreferenceManager.Record(e,t),r&&o.addObserver(r)},i.PreferenceManager.prototype.definePreferences=function(e){for(var t=0;t=0&&s.splice(l,1),!this.childLists_[e][a]){var h=this.childFactories_[e](this,a);if(!h){console.warn("Unable to restore child: "+e+": "+a);continue}h.trace=this.trace,this.childLists_[e][a]=h,r++,h.readStorage(function(){0==--r&&t&&t()})}}for(n=0;n=0;i--){var o=e[i],s=this.storage_.getItem(o);if("string"==typeof s)try{r[o]=JSON.parse(s)}catch(e){r[o]=s}else e.splice(i,1)}setTimeout(t.bind(null,r),0)},i.Storage.Local.prototype.setItem=function(e,t,r){this.storage_.setItem(e,JSON.stringify(t)),r&&setTimeout(r,0)},i.Storage.Local.prototype.setItems=function(e,t){for(var r in e)this.storage_.setItem(r,JSON.stringify(e[r]));t&&setTimeout(t,0)},i.Storage.Local.prototype.removeItem=function(e,t){this.storage_.removeItem(e),t&&setTimeout(t,0)},i.Storage.Local.prototype.removeItems=function(e,t){for(var r=0;r=0;i--){var o=e[i],s=this.storage_[o];if("string"==typeof s)try{r[o]=JSON.parse(s)}catch(e){r[o]=s}else e.splice(i,1)}setTimeout(t.bind(null,r),0)},i.Storage.Memory.prototype.setItem=function(e,t,r){var i=this.storage_[e];this.storage_[e]=JSON.stringify(t);var o={};o[e]={oldValue:i,newValue:t},setTimeout(function(){for(var e=0;e{let t="";switch(e){case"debug":case"warn":case"error":t=e.toUpperCase()+": "}const r=this.console_[e];this[e]=this.console_[e]=((...e)=>{this.save&&(this.data+=this.prefix_+t+e.join(" ")+"\n"),r.apply(this.console_,e)})}),["group","groupCollapsed"].forEach(e=>{const t=this.console_[e];this[e]=this.console_[e]=((e="")=>{t(e),this.save&&(this.data+=this.prefix_+e+"\n"),this.prefix_=" ".repeat(++this.prefixStack_)})});const t=this.console_.groupEnd;this.groupEnd=this.console_.groupEnd=(()=>{t(),this.prefix_=" ".repeat(--this.prefixStack_)})},i.TestManager.Suite=function(e){function t(t,r){this.testManager_=t,this.suiteName=e,this.setup(r)}return t.suiteName=e,t.addTest=i.TestManager.Suite.addTest,t.disableTest=i.TestManager.Suite.disableTest,t.getTest=i.TestManager.Suite.getTest,t.getTestList=i.TestManager.Suite.getTestList,t.testList_=[],t.testMap_={},t.prototype=Object.create(i.TestManager.Suite.prototype),t.constructor=i.TestManager.Suite,i.TestManager.Suite.subclasses.push(t),t},i.TestManager.Suite.subclasses=[],i.TestManager.Suite.addTest=function(e,t){if(e in this.testMap_)throw"Duplicate test name: "+e;var r=new i.TestManager.Test(this,e,t);this.testMap_[e]=r,this.testList_.push(r)},i.TestManager.Suite.disableTest=function(e,t){if(e in this.testMap_)throw"Duplicate test name: "+e;var r=new i.TestManager.Test(this,e,t);console.log("Disabled test: "+r.fullName)},i.TestManager.Suite.getTest=function(e){return this.testMap_[e]},i.TestManager.Suite.getTestList=function(){return this.testList_},i.TestManager.Suite.prototype.setDefaults=function(e,t){for(var r in t)this[r]=r in e?e[r]:t[r]},i.TestManager.Suite.prototype.setup=function(e){},i.TestManager.Suite.prototype.preamble=function(e,t){},i.TestManager.Suite.prototype.postamble=function(e,t){},i.TestManager.Test=function(e,t,r){this.suiteClass=e,this.testName=t,this.fullName=e.suiteName+"["+t+"]",this.testFunction_=r},i.TestManager.Test.prototype.run=function(e){try{this.testFunction_.apply(e.suite,[e,e.testRun.cx])}catch(t){if(t instanceof i.TestManager.Result.TestComplete)return;e.println("Test raised an exception: "+t),t.stack&&(t.stack instanceof Array?e.println(t.stack.join("\n")):e.println(t.stack)),e.completeTest_(e.FAILED,!1)}},i.TestManager.TestRun=function(e,t){this.testManager=e,this.log=e.log,this.cx=t||{},this.failures=[],this.passes=[],this.startDate=null,this.duration=null,this.currentResult=null,this.maxFailures=0,this.panic=!1,this.testQueue_=[]},i.TestManager.TestRun.prototype.ALL_TESTS=i.f.createEnum(""),i.TestManager.TestRun.prototype.selectTest=function(e){this.testQueue_.push(e)},i.TestManager.TestRun.prototype.selectSuite=function(e,t){for(var r=t||this.ALL_TESTS,i=0,o=e.getTestList(),s=0;s500&&this.log.warn("Slow test took "+this.msToSeconds_(e.duration)),this.log.groupEnd(),e.status==e.FAILED)this.failures.push(e),this.currentSuite=null;else{if(e.status!=e.PASSED)return this.log.error("Unknown result status: "+e.test.fullName+": "+e.status),this.panic=!0;this.passes.push(e)}this.runNextTest_()},i.TestManager.TestRun.prototype.onResultReComplete=function(e,t){this.log.error("Late complete for test: "+e.test.fullName+": "+t);var r=this.passes.indexOf(e);r>=0&&(this.passes.splice(r,1),this.failures.push(e))},i.TestManager.TestRun.prototype.runNextTest_=function(){if(this.panic||!this.testQueue_.length)return this.onTestRunComplete_();if(this.maxFailures&&this.failures.length>=this.maxFailures)return this.log.error("Maximum failure count reached, aborting test run."),this.onTestRunComplete_();var e=this.testQueue_[0],t=this.currentResult?this.currentResult.suite:null;try{t&&t instanceof e.suiteClass||(t&&this.log.groupEnd(),this.log.group(e.suiteClass.suiteName),t=new e.suiteClass(this.testManager,this.cx))}catch(e){return this.log.error("Exception during setup: "+(e.stack?e.stack:e)),this.panic=!0,void this.onTestRunComplete_()}try{this.log.group(e.testName),this.currentResult=new i.TestManager.Result(this,t,e),this.testManager.testPreamble(this.currentResult,this.cx),t.preamble(this.currentResult,this.cx),this.testQueue_.shift()}catch(e){return this.log.error("Unexpected exception during test preamble: "+(e.stack?e.stack:e)),this.log.groupEnd(),this.panic=!0,void this.onTestRunComplete_()}try{this.currentResult.run()}catch(e){this.log.error("Unexpected exception during test run: "+(e.stack?e.stack:e)),this.panic=!0}},i.TestManager.TestRun.prototype.run=function(){this.log.info("Running "+this.testQueue_.length+" test(s)"),window.onerror=this.onUncaughtException_.bind(this),this.startDate=new Date,this.runNextTest_()},i.TestManager.TestRun.prototype.msToSeconds_=function(e){return(e/1e3).toFixed(2)+"s"},i.TestManager.TestRun.prototype.summarize=function(){if(this.failures.length)for(var e=0;e1?"\n"+t.join("\n"):t.join("\n")}if(e!==t&&!(t instanceof Array&&this.arrayEQ_(e,t))){var o=r?"["+r+"]":"";this.fail("assertEQ"+o+": "+this.getCallerLocation_(1)+": "+i(e)+" !== "+i(t))}},i.TestManager.Result.prototype.assert=function(e,t){if(!0!==e){var r=t?"["+t+"]":"";this.fail("assert"+r+": "+this.getCallerLocation_(1)+": "+String(e))}},i.TestManager.Result.prototype.getCallerLocation_=function(e){try{throw new Error}catch(r){var t=r.stack.split("\n")[e+2].match(/([^/]+:\d+):\d+\)?$/);return t?t[1]:"???"}},i.TestManager.Result.prototype.println=function(e){this.testRun.log.info(e)},i.TestManager.Result.prototype.fail=function(e){arguments.length&&this.println(e),this.completeTest_(this.FAILED,!0)},i.TestManager.Result.prototype.pass=function(){this.completeTest_(this.PASSED,!0)},i.UTF8Decoder=function(){this.bytesLeft=0,this.codePoint=0,this.lowerBound=0},i.UTF8Decoder.prototype.decode=function(e){for(var t="",r=0;r1114111?t+="�":o<65536?t+=String.fromCharCode(o):(o-=65536,t+=String.fromCharCode(55296+(o>>>10&1023),56320+(1023&o)))}}else t+="�",this.bytesLeft=0,r--}return t},i.decodeUTF8=function(e){return(new i.UTF8Decoder).decode(e)},i.encodeUTF8=function(e){for(var t="",r=0;r>>6),s=1):i<=65535?(t+=String.fromCharCode(224|i>>>12),s=2):(t+=String.fromCharCode(240|i>>>18),s=3);s>0;)s--,t+=String.fromCharCode(128|i>>>6*s&63)}return t},i.wc={},i.wc.nulWidth=0,i.wc.controlWidth=0,i.wc.regardCjkAmbiguous=!1,i.wc.cjkAmbiguousWidth=2,i.wc.combining=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],i.wc.ambiguous=[[161,161],[164,164],[167,168],[170,170],[174,174],[176,180],[182,186],[188,191],[198,198],[208,208],[215,216],[222,225],[230,230],[232,234],[236,237],[240,240],[242,243],[247,250],[252,252],[254,254],[257,257],[273,273],[275,275],[283,283],[294,295],[299,299],[305,307],[312,312],[319,322],[324,324],[328,331],[333,333],[338,339],[358,359],[363,363],[462,462],[464,464],[466,466],[468,468],[470,470],[472,472],[474,474],[476,476],[593,593],[609,609],[708,708],[711,711],[713,715],[717,717],[720,720],[728,731],[733,733],[735,735],[913,929],[931,937],[945,961],[963,969],[1025,1025],[1040,1103],[1105,1105],[8208,8208],[8211,8214],[8216,8217],[8220,8221],[8224,8226],[8228,8231],[8240,8240],[8242,8243],[8245,8245],[8251,8251],[8254,8254],[8308,8308],[8319,8319],[8321,8324],[8364,8364],[8451,8451],[8453,8453],[8457,8457],[8467,8467],[8470,8470],[8481,8482],[8486,8486],[8491,8491],[8531,8532],[8539,8542],[8544,8555],[8560,8569],[8592,8601],[8632,8633],[8658,8658],[8660,8660],[8679,8679],[8704,8704],[8706,8707],[8711,8712],[8715,8715],[8719,8719],[8721,8721],[8725,8725],[8730,8730],[8733,8736],[8739,8739],[8741,8741],[8743,8748],[8750,8750],[8756,8759],[8764,8765],[8776,8776],[8780,8780],[8786,8786],[8800,8801],[8804,8807],[8810,8811],[8814,8815],[8834,8835],[8838,8839],[8853,8853],[8857,8857],[8869,8869],[8895,8895],[8978,8978],[9312,9449],[9451,9547],[9552,9587],[9600,9615],[9618,9621],[9632,9633],[9635,9641],[9650,9651],[9654,9655],[9660,9661],[9664,9665],[9670,9672],[9675,9675],[9678,9681],[9698,9701],[9711,9711],[9733,9734],[9737,9737],[9742,9743],[9748,9749],[9756,9756],[9758,9758],[9792,9792],[9794,9794],[9824,9825],[9827,9829],[9831,9834],[9836,9837],[9839,9839],[10045,10045],[10102,10111],[57344,63743],[65533,65533],[983040,1048573],[1048576,1114109]],i.wc.isSpace=function(e){var t,r=0,o=i.wc.combining.length-1;if(ei.wc.combining[o][1])return!1;for(;o>=r;)if(t=Math.floor((r+o)/2),e>i.wc.combining[t][1])r=t+1;else{if(!(ei.wc.ambiguous[o][1])return!1;for(;o>=r;)if(t=Math.floor((r+o)/2),e>i.wc.ambiguous[t][1])r=t+1;else{if(!(e=127&&e<160?i.wc.controlWidth:e<127?1:i.wc.isSpace(e)?0:1+(e>=4352&&(e<=4447||9001==e||9002==e||e>=11904&&e<=42191&&12351!=e||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072&&e<=196605||e>=196608&&e<=262141))},i.wc.charWidthRegardAmbiguous=function(e){return i.wc.isCjkAmbiguous(e)?i.wc.cjkAmbiguousWidth:i.wc.charWidthDisregardAmbiguous(e)},i.wc.strWidth=function(e){for(var t,r=0,o=0;ot);o++);if(void 0!=r){for(s=o,n=0;sr&&s--,e.substring(o,s)}return e.substr(o)},i.wc.substring=function(e,t,r){return i.wc.substr(e,t,r-t)},i.resource.add("libdot/changelog/version","text/plain","1.16"),i.resource.add("libdot/changelog/date","text/plain","2017-08-16"),i.rtdep("lib.Storage");var o={};o.windowType=null,o.zoomWarningMessage="ZOOM != 100%",o.notifyCopyMessage="✂",o.desktopNotificationTitle="♪ %(title) ♪",o.testDeps=["hterm.ScrollPort.Tests","hterm.Screen.Tests","hterm.Terminal.Tests","hterm.VT.Tests","hterm.VT.CannedTests"],i.registerInit("hterm",function(e){function t(t){o.windowType=t.type,setTimeout(e,0)}o.defaultStorage||(window.chrome&&chrome.storage&&chrome.storage.sync?o.defaultStorage=new i.Storage.Chrome(chrome.storage.sync):o.defaultStorage=new i.Storage.Local);var r=!1;if(window.chrome&&chrome.runtime&&chrome.runtime.getManifest){var s=chrome.runtime.getManifest();r=s.app&&s.app.background}r?setTimeout(t.bind(null,{type:"popup"}),0):window.chrome&&chrome.tabs?chrome.tabs.getCurrent(function(r){r&&window.chrome?chrome.windows.get(r.windowId,null,t):(o.windowType="normal",setTimeout(e,0))}):setTimeout(t.bind(null,{type:"normal"}),0)}),o.getClientSize=function(e){return e.getBoundingClientRect()},o.getClientWidth=function(e){return e.getBoundingClientRect().width},o.getClientHeight=function(e){return e.getBoundingClientRect().height},o.copySelectionToClipboard=function(e){try{e.execCommand("copy")}catch(e){}},o.pasteFromClipboard=function(e){try{return e.execCommand("paste")}catch(e){return!1}},o.notify=function(e){var t=(e,t)=>void 0!==e?e:t;void 0!==e&&null!==e||(e={});var r={body:e.body,icon:t(e.icon,i.resource.getDataUrl("hterm/images/icon-96"))},s=t(e.title,window.document.title);s||(s="hterm"),s=i.f.replaceVars(o.desktopNotificationTitle,{title:s});var n=new Notification(s,r);return n.onclick=function(){window.focus(),this.close()},n},o.Size=function(e,t){this.width=e,this.height=t},o.Size.prototype.resize=function(e,t){this.width=e,this.height=t},o.Size.prototype.clone=function(){return new o.Size(this.width,this.height)},o.Size.prototype.setTo=function(e){this.width=e.width,this.height=e.height},o.Size.prototype.equals=function(e){return this.width==e.width&&this.height==e.height},o.Size.prototype.toString=function(){return"[hterm.Size: "+this.width+", "+this.height+"]"},o.RowCol=function(e,t,r){this.row=e,this.column=t,this.overflow=!!r},o.RowCol.prototype.move=function(e,t,r){this.row=e,this.column=t,this.overflow=!!r},o.RowCol.prototype.clone=function(){return new o.RowCol(this.row,this.column,this.overflow)},o.RowCol.prototype.setTo=function(e){this.row=e.row,this.column=e.column,this.overflow=e.overflow},o.RowCol.prototype.equals=function(e){return this.row==e.row&&this.column==e.column&&this.overflow==e.overflow},o.RowCol.prototype.toString=function(){return"[hterm.RowCol: "+this.row+", "+this.column+", "+this.overflow+"]"},i.rtdep("lib.f"),o.Frame=function(e,t,r){this.terminal_=e,this.div_=e.div_,this.url=t,this.options=r||{},this.iframe_=null,this.container_=null,this.messageChannel_=null},o.Frame.prototype.onMessage_=function(e){switch(e.data.name){case"ipc-init-ok":return void this.sendTerminalInfo_();case"terminal-info-ok":return this.container_.style.display="flex",this.messageChannel_.port1.onmessage=this.onMessage.bind(this),void this.onLoad();default:return void console.log("Unknown message from frame:",e.data)}},o.Frame.prototype.onMessage=function(){},o.Frame.prototype.onLoad_=function(){this.messageChannel_=new MessageChannel,this.messageChannel_.port1.onmessage=this.onMessage_.bind(this),this.messageChannel_.port1.start(),this.iframe_.contentWindow.postMessage({name:"ipc-init",argv:[{messagePort:this.messageChannel_.port2}]},this.url,[this.messageChannel_.port2])},o.Frame.prototype.onLoad=function(){},o.Frame.prototype.sendTerminalInfo_=function(){i.f.getAcceptLanguages(function(e){this.postMessage("terminal-info",[{acceptLanguages:e,foregroundColor:this.terminal_.getForegroundColor(),backgroundColor:this.terminal_.getBackgroundColor(),cursorColor:this.terminal_.getCursorColor(),fontSize:this.terminal_.getFontSize(),fontFamily:this.terminal_.getFontFamily(),baseURL:i.f.getURL("/")}])}.bind(this))},o.Frame.prototype.onCloseClicked_=function(){this.close()},o.Frame.prototype.close=function(){this.container_&&this.container_.parentNode&&(this.container_.parentNode.removeChild(this.container_),this.onClose())},o.Frame.prototype.onClose=function(){},o.Frame.prototype.postMessage=function(e,t){if(!this.messageChannel_)throw new Error("Message channel is not set up.");this.messageChannel_.port1.postMessage({name:e,argv:t})},o.Frame.prototype.show=function(){function e(e,r){return e in t.options?t.options[e]:r}var t=this,t=this;if(this.container_&&this.container_.parentNode)console.error("Frame already visible");else{var r=o.getClientSize(this.div_),i=e("width",640),s=e("height",480),n=(r.width,r.height,this.terminal_.document_),a=this.container_=n.createElement("div");a.style.cssText="position: absolute;display: none;flex-direction: column;top: 10%;left: 4%;width: 90%;height: 80%;min-height: 20%;max-height: 80%;box-shadow: 0 0 2px "+this.terminal_.getForegroundColor()+";border: 2px "+this.terminal_.getForegroundColor()+" solid;";var l=this.iframe_=n.createElement("iframe");l.onload=this.onLoad_.bind(this),l.style.cssText="display: flex;flex: 1;width: 100%",l.setAttribute("src",this.url),l.setAttribute("seamless",!0),a.appendChild(l),this.div_.appendChild(a)}},i.rtdep("hterm.Keyboard.KeyMap"),o.Keyboard=function(e){this.terminal=e,this.keyboardElement_=null,this.handlers_=[["focusout",this.onFocusOut_.bind(this)],["keydown",this.onKeyDown_.bind(this)],["keypress",this.onKeyPress_.bind(this)],["keyup",this.onKeyUp_.bind(this)],["textInput",this.onTextInput_.bind(this)]],this.keyMap=new o.Keyboard.KeyMap(this),this.bindings=new o.Keyboard.Bindings(this),this.altGrMode="none",this.shiftInsertPaste=!0,this.homeKeysScroll=!1,this.pageKeysScroll=!1,this.ctrlPlusMinusZeroZoom=!0,this.ctrlCCopy=!1,this.ctrlVPaste=!1,this.applicationKeypad=!1,this.applicationCursor=!1,this.backspaceSendsBackspace=!1,this.characterEncoding="utf-8",this.metaSendsEscape=!0,this.passMetaV=!0,this.altSendsWhat="escape",this.altIsMeta=!1,this.altBackspaceIsMetaBackspace=!1,this.altKeyPressed=0,this.mediaKeysAreFKeys=!1,this.previousAltSendsWhat_=null},o.Keyboard.KeyActions={CANCEL:i.f.createEnum("CANCEL"),DEFAULT:i.f.createEnum("DEFAULT"),PASS:i.f.createEnum("PASS"),STRIP:i.f.createEnum("STRIP")},o.Keyboard.prototype.encode=function(e){return"utf-8"==this.characterEncoding?this.terminal.vt.encodeUTF8(e):e},o.Keyboard.prototype.installKeyboard=function(e){if(e!=this.keyboardElement_){e&&this.keyboardElement_&&this.installKeyboard(null);for(var t=0;t=32&&(r=e.charCode);r&&this.terminal.onVTKeystroke(String.fromCharCode(r)),e.preventDefault(),e.stopPropagation()}},o.Keyboard.prototype.preventChromeAppNonCtrlShiftDefault_=function(e){window.chrome&&window.chrome.app&&window.chrome.app.window&&(e.ctrlKey&&e.shiftKey||e.preventDefault())},o.Keyboard.prototype.onFocusOut_=function(e){this.altKeyPressed=0},o.Keyboard.prototype.onKeyUp_=function(e){18==e.keyCode&&(this.altKeyPressed=this.altKeyPressed&~(1<=64&&_<=95&&(f=String.fromCharCode(_-64))),u&&"8-bit"==this.altSendsWhat&&1==f.length){var _=f.charCodeAt(0)+128;f=String.fromCharCode(_)}(u&&"escape"==this.altSendsWhat||d&&this.metaSendsEscape)&&(f=""+f)}this.terminal.onVTKeystroke(f)}else console.warn("Invalid action: "+JSON.stringify(f))}else console.warn("No definition for keyCode: "+e.keyCode)},o.Keyboard.Bindings=function(){this.bindings_={}},o.Keyboard.Bindings.prototype.clear=function(){this.bindings_={}},o.Keyboard.Bindings.prototype.addBinding_=function(e,t){var r=null,i=this.bindings_[e.keyCode];if(i)for(var s=0;s",d,s(f,p),d,d],[191,"/?",d,i(a("_"),a("?")),d,d],[17,"[CTRL]",p,p,p,p],[18,"[ALT]",p,p,p,p],[91,"[LAPL]",p,p,p,p],[32," ",d,a("@"),d,d],[92,"[RAPL]",p,p,p,p],[93,"[RMENU]",p,p,p,p],[42,"[PRTSCR]",p,p,p,p],[145,"[SCRLK]",p,p,p,p],[19,"[BREAK]",p,p,p,p],[45,"[INSERT]",l("onKeyInsert_"),d,d,d],[36,"[HOME]",l("onKeyHome_"),d,d,d],[33,"[PGUP]",l("onKeyPageUp_"),d,d,d],[46,"[DEL]",l("onKeyDel_"),d,d,d],[35,"[END]",l("onKeyEnd_"),d,d,d],[34,"[PGDOWN]",l("onKeyPageDown_"),d,d,d],[38,"[UP]",l("onKeyArrowUp_"),d,d,d],[40,"[DOWN]",l("onKeyArrowDown_"),d,d,d],[39,"[RIGHT]",t("","OC"),d,d,d],[37,"[LEFT]",t("","OD"),d,d,d],[144,"[NUMLOCK]",p,p,p,p],[96,"[KP0]",d,d,d,d],[97,"[KP1]",d,d,d,d],[98,"[KP2]",d,d,d,d],[99,"[KP3]",d,d,d,d],[100,"[KP4]",d,d,d,d],[101,"[KP5]",d,d,d,d],[102,"[KP6]",d,d,d,d],[103,"[KP7]",d,d,d,d],[104,"[KP8]",d,d,d,d],[105,"[KP9]",d,d,d,d],[107,"[KP+]",d,l("onPlusMinusZero_"),d,l("onPlusMinusZero_")],[109,"[KP-]",d,l("onPlusMinusZero_"),d,l("onPlusMinusZero_")],[106,"[KP*]",d,d,d,d],[111,"[KP/]",d,d,d,d],[110,"[KP.]",d,d,d,d],[166,"[BACK]",h(n("OP","")),d,"[23~",d],[167,"[FWD]",h(n("OQ","")),d,"[24~",d],[168,"[RELOAD]",h(n("OR","")),d,"[25~",d],[183,"[FSCR]",h(n("OS","")),d,"[26~",d],[182,"[WINS]",h("[15~"),d,"[28~",d],[216,"[BRIT-]",h("[17~"),d,"[29~",d],[217,"[BRIT+]",h("[18~"),d,"[31~",d])},o.Keyboard.KeyMap.prototype.onKeyInsert_=function(e){return this.keyboard.shiftInsertPaste&&e.shiftKey?o.Keyboard.KeyActions.PASS:"[2~"},o.Keyboard.KeyMap.prototype.onKeyHome_=function(e){return!this.keyboard.homeKeysScroll^e.shiftKey?e.altey||e.ctrlKey||e.shiftKey||!this.keyboard.applicationCursor?"":"OH":(this.keyboard.terminal.scrollHome(),o.Keyboard.KeyActions.CANCEL)},o.Keyboard.KeyMap.prototype.onKeyEnd_=function(e){return!this.keyboard.homeKeysScroll^e.shiftKey?e.altKey||e.ctrlKey||e.shiftKey||!this.keyboard.applicationCursor?"":"OF":(this.keyboard.terminal.scrollEnd(),o.Keyboard.KeyActions.CANCEL)},o.Keyboard.KeyMap.prototype.onKeyPageUp_=function(e){return!this.keyboard.pageKeysScroll^e.shiftKey?"[5~":(this.keyboard.terminal.scrollPageUp(),o.Keyboard.KeyActions.CANCEL)},o.Keyboard.KeyMap.prototype.onKeyDel_=function(e){return this.keyboard.altBackspaceIsMetaBackspace&&this.keyboard.altKeyPressed&&!e.altKey?"":"[3~"},o.Keyboard.KeyMap.prototype.onKeyPageDown_=function(e){return!this.keyboard.pageKeysScroll^e.shiftKey?"[6~":(this.keyboard.terminal.scrollPageDown(),o.Keyboard.KeyActions.CANCEL)},o.Keyboard.KeyMap.prototype.onKeyArrowUp_=function(e){return!this.keyboard.applicationCursor&&e.shiftKey?(this.keyboard.terminal.scrollLineUp(),o.Keyboard.KeyActions.CANCEL):e.shiftKey||e.ctrlKey||e.altKey||e.metaKey||!this.keyboard.applicationCursor?"":"OA"},o.Keyboard.KeyMap.prototype.onKeyArrowDown_=function(e){return!this.keyboard.applicationCursor&&e.shiftKey?(this.keyboard.terminal.scrollLineDown(),o.Keyboard.KeyActions.CANCEL):e.shiftKey||e.ctrlKey||e.altKey||e.metaKey||!this.keyboard.applicationCursor?"":"OB"},o.Keyboard.KeyMap.prototype.onClear_=function(e,t){return this.keyboard.terminal.wipeContents(),o.Keyboard.KeyActions.CANCEL},o.Keyboard.KeyMap.prototype.onCtrlNum_=function(e,t){function r(e){return String.fromCharCode(e.charCodeAt(0)-64)}if(this.keyboard.terminal.passCtrlNumber&&!e.shiftKey)return o.Keyboard.KeyActions.PASS;switch(t.keyCap.substr(0,1)){case"1":return"1";case"2":return r("@");case"3":return r("[");case"4":return r("\\");case"5":return r("]");case"6":return r("^");case"7":return r("_");case"8":return"";case"9":return"9"}},o.Keyboard.KeyMap.prototype.onAltNum_=function(e,t){return this.keyboard.terminal.passAltNumber&&!e.shiftKey?o.Keyboard.KeyActions.PASS:o.Keyboard.KeyActions.DEFAULT},o.Keyboard.KeyMap.prototype.onMetaNum_=function(e,t){return this.keyboard.terminal.passMetaNumber&&!e.shiftKey?o.Keyboard.KeyActions.PASS:o.Keyboard.KeyActions.DEFAULT},o.Keyboard.KeyMap.prototype.onCtrlC_=function(e,t){var r=this.keyboard.terminal.getDocument().getSelection();if(!r.isCollapsed){if(this.keyboard.ctrlCCopy&&!e.shiftKey)return this.keyboard.terminal.clearSelectionAfterCopy&&setTimeout(r.collapseToEnd.bind(r),50),o.Keyboard.KeyActions.PASS;if(!this.keyboard.ctrlCCopy&&e.shiftKey)return this.keyboard.terminal.clearSelectionAfterCopy&&setTimeout(r.collapseToEnd.bind(r),50),this.keyboard.terminal.copySelectionToClipboard(),o.Keyboard.KeyActions.CANCEL}return""},o.Keyboard.KeyMap.prototype.onCtrlN_=function(e,t){return e.shiftKey?(window.open(document.location.href,"","chrome=no,close=yes,resize=yes,scrollbars=yes,minimizable=yes,width="+window.innerWidth+",height="+window.innerHeight),o.Keyboard.KeyActions.CANCEL):""},o.Keyboard.KeyMap.prototype.onCtrlV_=function(e,t){return!e.shiftKey&&this.keyboard.ctrlVPaste||e.shiftKey&&!this.keyboard.ctrlVPaste?this.keyboard.terminal.paste()?o.Keyboard.KeyActions.CANCEL:o.Keyboard.KeyActions.PASS:""},o.Keyboard.KeyMap.prototype.onMetaN_=function(e,t){return e.shiftKey?(window.open(document.location.href,"","chrome=no,close=yes,resize=yes,scrollbars=yes,minimizable=yes,width="+window.outerWidth+",height="+window.outerHeight),o.Keyboard.KeyActions.CANCEL):o.Keyboard.KeyActions.DEFAULT},o.Keyboard.KeyMap.prototype.onMetaC_=function(e,t){var r=this.keyboard.terminal.getDocument();return e.shiftKey||r.getSelection().isCollapsed?t.keyCap.substr(e.shiftKey?1:0,1):(this.keyboard.terminal.clearSelectionAfterCopy&&setTimeout(function(){r.getSelection().collapseToEnd()},50),o.Keyboard.KeyActions.PASS)},o.Keyboard.KeyMap.prototype.onMetaV_=function(e,t){return e.shiftKey?o.Keyboard.KeyActions.PASS:this.keyboard.passMetaV?o.Keyboard.KeyActions.PASS:o.Keyboard.KeyActions.DEFAULT},o.Keyboard.KeyMap.prototype.onPlusMinusZero_=function(e,t){if(!(this.keyboard.ctrlPlusMinusZeroZoom^e.shiftKey))return"-_"==t.keyCap?"":o.Keyboard.KeyActions.CANCEL;if(1!=this.keyboard.terminal.getZoomFactor())return o.Keyboard.KeyActions.PASS;var r=t.keyCap.substr(0,1);if("0"==r)this.keyboard.terminal.setFontSize(0);else{var i=this.keyboard.terminal.getFontSize();"-"==r||"[KP-]"==t.keyCap?i-=1:i+=1,this.keyboard.terminal.setFontSize(i)}return o.Keyboard.KeyActions.CANCEL},o.Keyboard.KeyPattern=function(e){this.wildcardCount=0,this.keyCode=e.keyCode,o.Keyboard.KeyPattern.modifiers.forEach(function(t){this[t]=e[t]||!1,"*"==this[t]&&this.wildcardCount++}.bind(this))},o.Keyboard.KeyPattern.modifiers=["shift","ctrl","alt","meta"],o.Keyboard.KeyPattern.sortCompare=function(e,t){return e.wildcardCountt.wildcardCount?1:0},o.Keyboard.KeyPattern.prototype.match_=function(e,t){if(this.keyCode!=e.keyCode)return!1;var r=!0;return o.Keyboard.KeyPattern.modifiers.forEach(function(i){var o=i in e&&e[i];r&&(t||"*"!=this[i])&&this[i]!=o&&(r=!1)}.bind(this)),r},o.Keyboard.KeyPattern.prototype.matchKeyDown=function(e){return this.match_(e,!1)},o.Keyboard.KeyPattern.prototype.matchKeyPattern=function(e){return this.match_(e,!0)},o.Options=function(e){this.wraparound=!e||e.wraparound,this.reverseWraparound=!!e&&e.reverseWraparound,this.originMode=!!e&&e.originMode,this.autoCarriageReturn=!!e&&e.autoCarriageReturn,this.cursorVisible=!!e&&e.cursorVisible,this.cursorBlink=!!e&&e.cursorBlink,this.insertMode=!!e&&e.insertMode,this.reverseVideo=!!e&&e.reverseVideo,this.bracketedPaste=!!e&&e.bracketedPaste},i.rtdep("hterm.Keyboard.KeyActions"),o.Parser=function(){this.source="",this.pos=0,this.ch=null},o.Parser.prototype.error=function(e){return new Error("Parse error at "+this.pos+": "+e)},o.Parser.prototype.isComplete=function(){return this.pos==this.source.length},o.Parser.prototype.reset=function(e,t){this.source=e,this.pos=t||0,this.ch=e.substr(0,1)},o.Parser.prototype.parseKeySequence=function(){var e={keyCode:null};for(var t in o.Parser.identifiers.modifierKeys)e[o.Parser.identifiers.modifierKeys[t]]=!1;for(;this.pos 'none', else => 'right-alt'\n'none': Disable any AltGr related munging.\n'ctrl-alt': Assume Ctrl+Alt means AltGr.\n'left-alt': Assume left Alt means AltGr.\n'right-alt': Assume right Alt means AltGr.\n"],"alt-backspace-is-meta-backspace":[o.PreferenceManager.categories.Keyboard,!1,"bool","If set, undoes the Chrome OS Alt-Backspace->DEL remap, so that alt-backspace indeed is alt-backspace."],"alt-is-meta":[o.PreferenceManager.categories.Keyboard,!1,"bool","Set whether the alt key acts as a meta key or as a distinct alt key."],"alt-sends-what":[o.PreferenceManager.categories.Keyboard,"escape",["escape","8-bit","browser-key"],"Controls how the alt key is handled.\n\n escape....... Send an ESC prefix.\n 8-bit........ Add 128 to the unshifted character as in xterm.\n browser-key.. Wait for the keypress event and see what the browser \n says. (This won't work well on platforms where the \n browser performs a default action for some alt sequences.)"],"audible-bell-sound":[o.PreferenceManager.categories.Sounds,"lib-resource:hterm/audio/bell","url","URL of the terminal bell sound. Empty string for no audible bell."],"desktop-notification-bell":[o.PreferenceManager.categories.Sounds,!1,"bool",'If true, terminal bells in the background will create a Web Notification. https://www.w3.org/TR/notifications/\n\nDisplaying notifications requires permission from the user. When this option is set to true, hterm will attempt to ask the user for permission if necessary. Note browsers may not show this permission request if it did not originate from a user action.\n\nChrome extensions with the "notifications" permission have permission to display notifications.'],"background-color":[o.PreferenceManager.categories.Appearance,"rgb(16, 16, 16)","color","The background color for text with no other color attributes."],"background-image":[o.PreferenceManager.categories.Appearance,"","string","CSS value of the background image. Empty string for no image.\n\nFor example:\n url(https://goo.gl/anedTK)\n linear-gradient(top bottom, blue, red)"],"background-size":[o.PreferenceManager.categories.Appearance,"","string","CSS value of the background image size. Defaults to none."],"background-position":[o.PreferenceManager.categories.Appearance,"","string","CSS value of the background image position.\n\nFor example:\n 10% 10%\n center"],"backspace-sends-backspace":[o.PreferenceManager.categories.Keyboard,!1,"bool","If true, the backspace should send BS ('\\x08', aka ^H). Otherwise the backspace key should send '\\x7f'."],"character-map-overrides":[o.PreferenceManager.categories.Appearance,null,"value",'This is specified as an object. It is a sparse array, where each property is the character set code and the value is an object that is a sparse array itself. In that sparse array, each property is the received character and the value is the displayed character.\n\nFor example:\n {"0":{"+":"\\u2192",",":"\\u2190","-":"\\u2191",".":"\\u2193", "0":"\\u2588"}}'],"close-on-exit":[o.PreferenceManager.categories.Miscellaneous,!0,"bool","Whether or not to close the window when the command exits."],"cursor-blink":[o.PreferenceManager.categories.Appearance,!1,"bool","Whether or not to blink the cursor by default."],"cursor-blink-cycle":[o.PreferenceManager.categories.Appearance,[1e3,500],"value","The cursor blink rate in milliseconds.\n\nA two element array, the first of which is how long the cursor should be on, second is how long it should be off."],"cursor-color":[o.PreferenceManager.categories.Appearance,"rgba(255, 0, 0, 0.5)","color","The color of the visible cursor."],"color-palette-overrides":[o.PreferenceManager.categories.Appearance,null,"value","Override colors in the default palette.\n\nThis can be specified as an array or an object. If specified as an object it is assumed to be a sparse array, where each property is a numeric index into the color palette.\n\nValues can be specified as almost any css color value. This includes #RGB, #RRGGBB, rgb(...), rgba(...), and any color names that are also part of the stock X11 rgb.txt file.\n\nYou can use 'null' to specify that the default value should be not be changed. This is useful for skipping a small number of indices when the value is specified as an array."],"copy-on-select":[o.PreferenceManager.categories.CopyPaste,!0,"bool","Automatically copy mouse selection to the clipboard."],"use-default-window-copy":[o.PreferenceManager.categories.CopyPaste,!1,"bool","Whether to use the default window copy behavior"],"clear-selection-after-copy":[o.PreferenceManager.categories.CopyPaste,!0,"bool","Whether to clear the selection after copying."],"ctrl-plus-minus-zero-zoom":[o.PreferenceManager.categories.Keyboard,!0,"bool","If true, Ctrl-Plus/Minus/Zero controls zoom.\nIf false, Ctrl-Shift-Plus/Minus/Zero controls zoom, Ctrl-Minus sends ^_, Ctrl-Plus/Zero do nothing."],"ctrl-c-copy":[o.PreferenceManager.categories.Keyboard,!1,"bool","Ctrl+C copies if true, send ^C to host if false.\nCtrl+Shift+C sends ^C to host if true, copies if false."],"ctrl-v-paste":[o.PreferenceManager.categories.Keyboard,!1,"bool","Ctrl+V pastes if true, send ^V to host if false.\nCtrl+Shift+V sends ^V to host if true, pastes if false."],"east-asian-ambiguous-as-two-column":[o.PreferenceManager.categories.Keyboard,!1,"bool","Set whether East Asian Ambiguous characters have two column width."],"enable-8-bit-control":[o.PreferenceManager.categories.Keyboard,!1,"bool","True to enable 8-bit control characters, false to ignore them.\n\nWe'll respect the two-byte versions of these control characters regardless of this setting."],"enable-bold":[o.PreferenceManager.categories.Appearance,null,"tristate","True if we should use bold weight font for text with the bold/bright attribute. False to use the normal weight font. Null to autodetect."],"enable-bold-as-bright":[o.PreferenceManager.categories.Appearance,!0,"bool","True if we should use bright colors (8-15 on a 16 color palette) for any text with the bold attribute. False otherwise."],"enable-blink":[o.PreferenceManager.categories.Appearance,!0,"bool","True if we should respect the blink attribute. False to ignore it. "],"enable-clipboard-notice":[o.PreferenceManager.categories.CopyPaste,!0,"bool","Show a message in the terminal when the host writes to the clipboard."],"enable-clipboard-write":[o.PreferenceManager.categories.CopyPaste,!0,"bool","Allow the host to write directly to the system clipboard."],"enable-dec12":[o.PreferenceManager.categories.Miscellaneous,!1,"bool","Respect the host's attempt to change the cursor blink status using DEC Private Mode 12."],environment:[o.PreferenceManager.categories.Miscellaneous,{TERM:"xterm-256color"},"value","The default environment variables, as an object."],"font-family":[o.PreferenceManager.categories.Appearance,'"DejaVu Sans Mono", "Everson Mono", FreeMono, "Menlo", "Terminal", monospace',"string","Default font family for the terminal text."],"font-size":[o.PreferenceManager.categories.Appearance,15,"int","The default font size in pixels."],"font-smoothing":[o.PreferenceManager.categories.Appearance,"antialiased","string","CSS font-smoothing property."],"foreground-color":[o.PreferenceManager.categories.Appearance,"rgb(240, 240, 240)","color","The foreground color for text with no other color attributes."],"home-keys-scroll":[o.PreferenceManager.categories.Keyboard,!1,"bool","If true, home/end will control the terminal scrollbar and shift home/end will send the VT keycodes. If false then home/end sends VT codes and shift home/end scrolls."],keybindings:[o.PreferenceManager.categories.Keyboard,null,"value",'A map of key sequence to key actions. Key sequences include zero or more modifier keys followed by a key code. Key codes can be decimal or hexadecimal numbers, or a key identifier. Key actions can be specified a string to send to the host, or an action identifier. For a full explanation of the format, see https://goo.gl/LWRndr.\n\nSample keybindings:\n{\n "Ctrl-Alt-K": "clearScrollback",\n "Ctrl-Shift-L": "PASS",\n "Ctrl-H": "\'HELLO\\n\'"\n}'],"max-string-sequence":[o.PreferenceManager.categories.Encoding,1e5,"int","Max length of a DCS, OSC, PM, or APS sequence before we give up and ignore the code."],"media-keys-are-fkeys":[o.PreferenceManager.categories.Keyboard,!1,"bool","If true, convert media keys to their Fkey equivalent. If false, let the browser handle the keys."],"meta-sends-escape":[o.PreferenceManager.categories.Keyboard,!0,"bool","Set whether the meta key sends a leading escape or not."],"mouse-right-click-paste":[o.PreferenceManager.categories.CopyPaste,!0,"bool",'Paste on right mouse button clicks.\n\nThis option is activate independent of the "mouse-paste-button" setting.\n\nNote: This will handle left & right handed mice correctly.'],"mouse-paste-button":[o.PreferenceManager.categories.CopyPaste,null,[null,0,1,2,3,4,5,6],"Mouse paste button, or null to autodetect.\n\nFor autodetect, we'll use the middle mouse button for non-X11 platforms (including Chrome OS). On X11, we'll use the right mouse button (since the native window manager should paste via the middle mouse button).\n\n0 == left (primary) button.\n1 == middle (auxiliary) button.\n2 == right (secondary) button.\n\nThis option is activate independent of the \"mouse-right-click-paste\" setting.\n\nNote: This will handle left & right handed mice correctly."],"word-break-match-left":[o.PreferenceManager.categories.CopyPaste,"[^\\s\\[\\](){}<>\"'\\^!@#$%&*,;:`]","string",'Regular expression to halt matching to the left (start) of a selection.\n\nNormally this is a character class to reject specific characters.\nWe allow "~" and "." by default as paths frequently start with those.'],"word-break-match-right":[o.PreferenceManager.categories.CopyPaste,"[^\\s\\[\\](){}<>\"'\\^!@#$%&*,;:~.`]","string","Regular expression to halt matching to the right (end) of a selection.\n\nNormally this is a character class to reject specific characters."],"word-break-match-middle":[o.PreferenceManager.categories.CopyPaste,"[^\\s\\[\\](){}<>\"'\\^]*","string","Regular expression to match all the characters in the middle.\n\nNormally this is a character class to reject specific characters.\n\nUsed to expand the selection surrounding the starting point."],"page-keys-scroll":[o.PreferenceManager.categories.Keyboard,!1,"bool","If true, page up/down will control the terminal scrollbar and shift page up/down will send the VT keycodes. If false then page up/down sends VT codes and shift page up/down scrolls."],"pass-alt-number":[o.PreferenceManager.categories.Keyboard,null,"tristate","Set whether we should pass Alt-1..9 to the browser.\n\nThis is handy when running hterm in a browser tab, so that you don't lose Chrome's \"switch to tab\" keyboard accelerators. When not running in a tab it's better to send these keys to the host so they can be used in vim or emacs.\n\nIf true, Alt-1..9 will be handled by the browser. If false, Alt-1..9 will be sent to the host. If null, autodetect based on browser platform and window type."],"pass-ctrl-number":[o.PreferenceManager.categories.Keyboard,null,"tristate","Set whether we should pass Ctrl-1..9 to the browser.\n\nThis is handy when running hterm in a browser tab, so that you don't lose Chrome's \"switch to tab\" keyboard accelerators. When not running in a tab it's better to send these keys to the host so they can be used in vim or emacs.\n\nIf true, Ctrl-1..9 will be handled by the browser. If false, Ctrl-1..9 will be sent to the host. If null, autodetect based on browser platform and window type."],"pass-meta-number":[o.PreferenceManager.categories.Keyboard,null,"tristate","Set whether we should pass Meta-1..9 to the browser.\n\nThis is handy when running hterm in a browser tab, so that you don't lose Chrome's \"switch to tab\" keyboard accelerators. When not running in a tab it's better to send these keys to the host so they can be used in vim or emacs.\n\nIf true, Meta-1..9 will be handled by the browser. If false, Meta-1..9 will be sent to the host. If null, autodetect based on browser platform and window type."],"pass-meta-v":[o.PreferenceManager.categories.Keyboard,!0,"bool","Set whether meta-V gets passed to host."],"receive-encoding":[o.PreferenceManager.categories.Encoding,"utf-8",["utf-8","raw"],"Set the expected encoding for data received from the host.\n\nValid values are 'utf-8' and 'raw'."],"scroll-on-keystroke":[o.PreferenceManager.categories.Scrolling,!0,"bool","If true, scroll to the bottom on any keystroke."],"scroll-on-output":[o.PreferenceManager.categories.Scrolling,!1,"bool","If true, scroll to the bottom on terminal output."],"scrollbar-visible":[o.PreferenceManager.categories.Scrolling,!0,"bool","The vertical scrollbar mode."],"scroll-wheel-may-send-arrow-keys":[o.PreferenceManager.categories.Scrolling,!1,"bool","When using the alternative screen buffer, and DECCKM (Application Cursor Keys) is active, mouse wheel scroll events will emulate arrow keys.\n\nIt can be temporarily disabled by holding the shift key.\n\nThis frequently comes up when using pagers (less) or reading man pages or text editors (vi/nano) or using screen/tmux."],"scroll-wheel-move-multiplier":[o.PreferenceManager.categories.Scrolling,1,"int","The multiplier for the pixel delta in wheel events caused by the scroll wheel. Alters how fast the page scrolls."],"send-encoding":[o.PreferenceManager.categories.Encoding,"utf-8",["utf-8","raw"],"Set the encoding for data sent to host."],"terminal-encoding":[o.PreferenceManager.categories.Encoding,"iso-2022",["iso-2022","utf-8","utf-8-locked"],"The default terminal encoding (DOCS).\n\nISO-2022 enables character map translations (like graphics maps).\nUTF-8 disables support for those.\n\nThe locked variant means the encoding cannot be changed at runtime via terminal escape sequences.\n\nYou should stick with UTF-8 unless you notice broken rendering with legacy applications."],"shift-insert-paste":[o.PreferenceManager.categories.Keyboard,!0,"bool","Shift + Insert pastes if true, sent to host if false."],"user-css":[o.PreferenceManager.categories.Appearance,"","url","URL of user stylesheet to include in the terminal document."],"user-css-text":[o.PreferenceManager.categories.Appearance,"","multiline-string","Custom CSS text for styling the terminal."]},o.PreferenceManager.prototype=Object.create(i.PreferenceManager.prototype),o.PreferenceManager.constructor=o.PreferenceManager,o.PubSub=function(){this.observers_={}},o.PubSub.addBehavior=function(e){var t=new o.PubSub;for(var r in o.PubSub.prototype)e[r]=o.PubSub.prototype[r].bind(t)},o.PubSub.prototype.subscribe=function(e,t){e in this.observers_||(this.observers_[e]=[]),this.observers_[e].push(t)},o.PubSub.prototype.unsubscribe=function(e,t){var r=this.observers_[e];if(!r)throw"Invalid subject: "+e;var i=r.indexOf(t);if(i<0)throw"Not subscribed: "+e;r.splice(i,1)},o.PubSub.prototype.publish=function(e,t,r){function i(e){e=e&&this.setCursorPosition(this.cursorPosition.row,e-1)},o.Screen.prototype.shiftRow=function(){return this.shiftRows(1)[0]},o.Screen.prototype.shiftRows=function(e){return this.rowsArray.splice(0,e)},o.Screen.prototype.unshiftRow=function(e){this.rowsArray.splice(0,0,e)},o.Screen.prototype.unshiftRows=function(e){this.rowsArray.unshift.apply(this.rowsArray,e)},o.Screen.prototype.popRow=function(){return this.popRows(1)[0]},o.Screen.prototype.popRows=function(e){return this.rowsArray.splice(this.rowsArray.length-e,e)},o.Screen.prototype.pushRow=function(e){this.rowsArray.push(e)},o.Screen.prototype.pushRows=function(e){e.push.apply(this.rowsArray,e)},o.Screen.prototype.insertRow=function(e,t){this.rowsArray.splice(e,0,t)},o.Screen.prototype.insertRows=function(e,t){for(var r=0;r=this.rowsArray.length?(console.error("Row out of bounds: "+e),e=this.rowsArray.length-1):e<0&&(console.error("Row out of bounds: "+e),e=0),t>=this.columnCount_?(console.error("Column out of bounds: "+t),t=this.columnCount_-1):t<0&&(console.error("Column out of bounds: "+t),t=0),this.cursorPosition.overflow=!1;var r=this.rowsArray[e],i=r.firstChild;i||(i=r.ownerDocument.createTextNode(""),r.appendChild(i));var s=0;for(r==this.cursorRowNode_?t>=this.cursorPosition.column-this.cursorOffset_&&(i=this.cursorNode_,s=this.cursorPosition.column-this.cursorOffset_):this.cursorRowNode_=r,this.cursorPosition.move(e,t);i;){var n=t-s,a=o.TextAttributes.nodeWidth(i);if(!i.nextSibling||a>n)return this.cursorNode_=i,void(this.cursorOffset_=n);s+=a,i=i.nextSibling}}else console.warn("Attempt to set cursor position on empty screen.")},o.Screen.prototype.syncSelectionCaret=function(e){try{e.collapse(this.cursorNode_,this.cursorOffset_)}catch(e){}},o.Screen.prototype.splitNode_=function(e,t){var r=e.cloneNode(!1),s=e.textContent;e.textContent=o.TextAttributes.nodeSubstr(e,0,t),r.textContent=i.wc.substr(s,t),r.textContent&&e.parentNode.insertBefore(r,e.nextSibling),e.textContent||e.parentNode.removeChild(e)},o.Screen.prototype.maybeClipCurrentRow=function(){var e=o.TextAttributes.nodeWidth(this.cursorRowNode_);if(e<=this.columnCount_)this.cursorPosition.column>=this.columnCount_&&(this.setCursorPosition(this.cursorPosition.row,this.columnCount_-1),this.cursorPosition.overflow=!0);else{var t=this.cursorPosition.column;this.setCursorPosition(this.cursorPosition.row,this.columnCount_-1),e=o.TextAttributes.nodeWidth(this.cursorNode_),this.cursorOffset_o.TextAttributes.nodeWidth(e);){if(!e.hasAttribute("line-overflow")||!e.nextSibling)return-1;t-=o.TextAttributes.nodeWidth(e),e=e.nextSibling}return this.getNodeAndOffsetWithinRow_(e,t)},o.Screen.prototype.getNodeAndOffsetWithinRow_=function(e,t){for(var r=0;ro)){var p=i.wc.substring(h,o,i.wc.strWidth(h)),f=new RegExp("^"+l+a),g=p.match(f);if(g){var m=o+i.wc.strWidth(g[0]);-1==m||ms.rowIndex)t();else if(i.focusNode==i.anchorNode)i.anchorOffset=this.lastRowCount_},o.ScrollPort.prototype.drawTopFold_=function(e){if(!this.selection.startRow||this.selection.startRow.rowIndex>=e)this.rowNodes_.firstChild!=this.topFold_&&this.rowNodes_.insertBefore(this.topFold_,this.rowNodes_.firstChild);else{if(!this.selection.isMultiline||this.selection.endRow.rowIndex>=e)this.selection.startRow.nextSibling!=this.topFold_&&this.rowNodes_.insertBefore(this.topFold_,this.selection.startRow.nextSibling);else for(this.selection.endRow.nextSibling!=this.topFold_&&this.rowNodes_.insertBefore(this.topFold_,this.selection.endRow.nextSibling);this.selection.startRow.nextSibling!=this.selection.endRow;)this.rowNodes_.removeChild(this.selection.startRow.nextSibling);for(;this.rowNodes_.firstChild!=this.selection.startRow;)this.rowNodes_.removeChild(this.rowNodes_.firstChild)}},o.ScrollPort.prototype.drawBottomFold_=function(e){if(!this.selection.endRow||this.selection.endRow.rowIndex<=e)this.rowNodes_.lastChild!=this.bottomFold_&&this.rowNodes_.appendChild(this.bottomFold_);else{if(!this.selection.isMultiline||this.selection.startRow.rowIndex<=e)this.bottomFold_.nextSibling!=this.selection.endRow&&this.rowNodes_.insertBefore(this.bottomFold_,this.selection.endRow);else for(this.bottomFold_.nextSibling!=this.selection.startRow&&this.rowNodes_.insertBefore(this.bottomFold_,this.selection.startRow);this.selection.startRow.nextSibling!=this.selection.endRow;)this.rowNodes_.removeChild(this.selection.startRow.nextSibling);for(;this.rowNodes_.lastChild!=this.selection.endRow;)this.rowNodes_.removeChild(this.rowNodes_.lastChild)}},o.ScrollPort.prototype.drawVisibleRows_=function(e,t){function r(e,t){for(;e!=t;){if(!e)throw"Did not encounter target node";if(e==i.bottomFold_)throw"Encountered bottom fold before target node";var r=e;e=e.nextSibling,r.parentNode.removeChild(r)}}for(var i=this,o=this.selection.startRow,s=this.selection.endRow,n=this.bottomFold_,a=this.topFold_.nextSibling,l=Math.min(this.visibleRowCount,this.rowProvider_.getRowCount()),h=0;h=this.lastRowCount_;var t=e*this.characterSize.height+this.visibleRowTopMargin,r=this.getScrollMax_();t>r&&(t=r),this.screen_.scrollTop!=t&&(this.screen_.scrollTop=t,this.scheduleRedraw())},o.ScrollPort.prototype.scrollRowToBottom=function(e){this.syncScrollHeight(),this.isScrolledEnd=e+this.visibleRowCount>=this.lastRowCount_;var t=e*this.characterSize.height+this.visibleRowTopMargin+this.visibleRowBottomMargin;(t-=this.visibleRowCount*this.characterSize.height)<0&&(t=0),this.screen_.scrollTop!=t&&(this.screen_.scrollTop=t)},o.ScrollPort.prototype.getTopRowIndex=function(){return Math.round(this.screen_.scrollTop/this.characterSize.height)},o.ScrollPort.prototype.getBottomRowIndex=function(e){return e+this.visibleRowCount-1},o.ScrollPort.prototype.onScroll_=function(e){var t=this.getScreenSize();t.width==this.lastScreenWidth_&&t.height==this.lastScreenHeight_?(this.redraw_(),this.publish("scroll",{scrollPort:this})):this.resize()},o.ScrollPort.prototype.onScrollWheel=function(e){},o.ScrollPort.prototype.onScrollWheel_=function(e){if(this.onScrollWheel(e),!e.defaultPrevented){var t=this.scrollWheelDelta(e),r=this.screen_.scrollTop-t;r<0&&(r=0);var i=this.getScrollMax_();r>i&&(r=i),r!=this.screen_.scrollTop&&(this.screen_.scrollTop=r,e.preventDefault())}},o.ScrollPort.prototype.scrollWheelDelta=function(e){var t;switch(e.deltaMode){case WheelEvent.DOM_DELTA_PIXEL:t=e.deltaY*this.scrollWheelMultiplier_;break;case WheelEvent.DOM_DELTA_LINE:t=e.deltaY*this.characterSize.height;break;case WheelEvent.DOM_DELTA_PAGE:t=e.deltaY*this.characterSize.height*this.screen_.getHeight()}return-1*t},o.ScrollPort.prototype.onTouch=function(e){},o.ScrollPort.prototype.onTouch_=function(e){if(this.onTouch(e),!e.defaultPrevented){var t,r,i=function(e){return{id:e.identifier,y:e.clientY,x:e.clientX}};switch(e.type){case"touchstart":for(t=0;tn&&(s=n),s!=this.screen_.scrollTop&&(this.screen_.scrollTop=s)}e.preventDefault()}},o.ScrollPort.prototype.onResize_=function(e){this.syncCharacterSize(),this.resize()},o.ScrollPort.prototype.onCopy=function(e){},o.ScrollPort.prototype.onCopy_=function(e){if(this.onCopy(e),!e.defaultPrevented&&(this.resetSelectBags_(),this.selection.sync(),this.selection.startRow&&!(this.selection.endRow.rowIndex-this.selection.startRow.rowIndex<2))){var t=this.getTopRowIndex(),r=this.getBottomRowIndex(t);if(this.selection.startRow.rowIndexr){var o;o=this.selection.startRow.rowIndex>r?this.selection.startRow.rowIndex+1:this.bottomFold_.previousSibling.rowIndex+1,this.bottomSelectBag_.textContent=this.rowProvider_.getRowsText(o,this.selection.endRow.rowIndex),this.rowNodes_.insertBefore(this.bottomSelectBag_,this.selection.endRow)}}},o.ScrollPort.prototype.onBodyKeyDown_=function(e){if(this.ctrlVPaste){var t=String.fromCharCode(e.which).toLowerCase();(e.ctrlKey||e.metaKey)&&"v"==t&&this.pasteTarget_.focus()}},o.ScrollPort.prototype.onPaste_=function(e){this.pasteTarget_.focus();var t=this;setTimeout(function(){t.publish("paste",{text:t.pasteTarget_.value}),t.pasteTarget_.value="",t.screen_.focus()},0)},o.ScrollPort.prototype.handlePasteTargetTextInput_=function(e){e.stopPropagation()},o.ScrollPort.prototype.setScrollbarVisible=function(e){this.screen_.style.overflowY=e?"scroll":"hidden"},o.ScrollPort.prototype.setScrollWheelMoveMultipler=function(e){this.scrollWheelMultiplier_=e},i.rtdep("lib.colors","lib.PreferenceManager","lib.resource","lib.wc","lib.f","hterm.Keyboard","hterm.Options","hterm.PreferenceManager","hterm.Screen","hterm.ScrollPort","hterm.Size","hterm.TextAttributes","hterm.VT"),o.Terminal=function(e){this.profileId_=null,this.primaryScreen_=new o.Screen,this.alternateScreen_=new o.Screen,this.screen_=this.primaryScreen_,this.screenSize=new o.Size(0,0),this.scrollPort_=new o.ScrollPort(this),this.scrollPort_.subscribe("resize",this.onResize_.bind(this)),this.scrollPort_.subscribe("scroll",this.onScroll_.bind(this)),this.scrollPort_.subscribe("paste",this.onPaste_.bind(this)),this.scrollPort_.onCopy=this.onCopy_.bind(this),this.div_=null,this.document_=window.document,this.scrollbackRows_=[],this.tabStops_=[],this.defaultTabStops=!0,this.vtScrollTop_=null,this.vtScrollBottom_=null,this.cursorNode_=null,this.cursorShape_=o.Terminal.cursorShape.BLOCK,this.cursorColor_=null,this.cursorBlinkCycle_=[100,100],this.myOnCursorBlink_=this.onCursorBlink_.bind(this),this.backgroundColor_=null,this.foregroundColor_=null,this.scrollOnOutput_=null,this.scrollOnKeystroke_=null,this.scrollWheelArrowKeys_=null,this.defeatMouseReports_=!1,this.bellAudio_=this.document_.createElement("audio"),this.bellAudio_.id="hterm:bell-audio",this.bellAudio_.setAttribute("preload","auto"),this.bellNotificationList_=[],this.desktopNotificationBell_=!1,this.savedOptions_={},this.options_=new o.Options,this.timeouts_={},this.vt=new o.VT(this),this.keyboard=new o.Keyboard(this),this.io=new o.Terminal.IO(this),this.enableMouseDragScroll=!0,this.copyOnSelect=null,this.mouseRightClickPaste=null,this.mousePasteButton=null,this.useDefaultWindowCopy=!1,this.clearSelectionAfterCopy=!0,this.realizeSize_(80,24),this.setDefaultTabStops(),this.setProfile(e||"default",function(){this.onTerminalReady()}.bind(this))},o.Terminal.cursorShape={BLOCK:"BLOCK",BEAM:"BEAM",UNDERLINE:"UNDERLINE"},o.Terminal.prototype.onTerminalReady=function(){},o.Terminal.prototype.tabWidth=8,o.Terminal.prototype.setProfile=function(e,t){this.profileId_=e.replace(/\//g,"");var r=this;this.prefs_&&this.prefs_.deactivate(),this.prefs_=new o.PreferenceManager(this.profileId_),this.prefs_.addObservers(null,{"alt-gr-mode":function(e){e=null==e?"en-us"==navigator.language.toLowerCase()?"none":"right-alt":"string"==typeof e?e.toLowerCase():"none",/^(none|ctrl-alt|left-alt|right-alt)$/.test(e)||(e="none"),r.keyboard.altGrMode=e},"alt-backspace-is-meta-backspace":function(e){r.keyboard.altBackspaceIsMetaBackspace=e},"alt-is-meta":function(e){r.keyboard.altIsMeta=e},"alt-sends-what":function(e){/^(escape|8-bit|browser-key)$/.test(e)||(e="escape"),r.keyboard.altSendsWhat=e},"audible-bell-sound":function(e){var t=e.match(/^lib-resource:(\S+)/);t?r.bellAudio_.setAttribute("src",i.resource.getDataUrl(t[1])):r.bellAudio_.setAttribute("src",e)},"desktop-notification-bell":function(e){e&&Notification?(r.desktopNotificationBell_="granted"===Notification.permission,r.desktopNotificationBell_||console.warn("desktop-notification-bell is true but we do not have permission to display notifications.")):r.desktopNotificationBell_=!1},"background-color":function(e){r.setBackgroundColor(e)},"background-image":function(e){r.scrollPort_.setBackgroundImage(e)},"background-size":function(e){r.scrollPort_.setBackgroundSize(e)},"background-position":function(e){r.scrollPort_.setBackgroundPosition(e)},"backspace-sends-backspace":function(e){r.keyboard.backspaceSendsBackspace=e},"character-map-overrides":function(e){null==e||e instanceof Object?(r.vt.characterMaps.reset(),r.vt.characterMaps.setOverrides(e)):console.warn("Preference character-map-modifications is not an object: "+e)},"cursor-blink":function(e){r.setCursorBlink(!!e)},"cursor-blink-cycle":function(e){e instanceof Array&&"number"==typeof e[0]&&"number"==typeof e[1]?r.cursorBlinkCycle_=e:r.cursorBlinkCycle_="number"==typeof e?[e,e]:[100,100]},"cursor-color":function(e){r.setCursorColor(e)},"color-palette-overrides":function(e){if(null==e||e instanceof Object||e instanceof Array){if(i.colors.colorPalette=i.colors.stockColorPalette.concat(),e)for(var t in e){var o=parseInt(t);if(isNaN(o)||o<0||o>255)console.log("Invalid value in palette: "+t+": "+e[t]);else if(e[o]){var s=i.colors.normalizeCSS(e[o]);s&&(i.colors.colorPalette[o]=s)}}r.primaryScreen_.textAttributes.resetColorPalette(),r.alternateScreen_.textAttributes.resetColorPalette()}else console.warn("Preference color-palette-overrides is not an array or object: "+e)},"copy-on-select":function(e){r.copyOnSelect=!!e},"use-default-window-copy":function(e){r.useDefaultWindowCopy=!!e},"clear-selection-after-copy":function(e){r.clearSelectionAfterCopy=!!e},"ctrl-plus-minus-zero-zoom":function(e){r.keyboard.ctrlPlusMinusZeroZoom=e},"ctrl-c-copy":function(e){r.keyboard.ctrlCCopy=e},"ctrl-v-paste":function(e){r.keyboard.ctrlVPaste=e,r.scrollPort_.setCtrlVPaste(e)},"east-asian-ambiguous-as-two-column":function(e){i.wc.regardCjkAmbiguous=e},"enable-8-bit-control":function(e){r.vt.enable8BitControl=!!e},"enable-bold":function(e){r.syncBoldSafeState()},"enable-bold-as-bright":function(e){r.primaryScreen_.textAttributes.enableBoldAsBright=!!e,r.alternateScreen_.textAttributes.enableBoldAsBright=!!e},"enable-blink":function(e){r.syncBlinkState()},"enable-clipboard-write":function(e){r.vt.enableClipboardWrite=!!e},"enable-dec12":function(e){r.vt.enableDec12=!!e},"font-family":function(e){r.syncFontFamily()},"font-size":function(e){r.setFontSize(e)},"font-smoothing":function(e){r.syncFontFamily()},"foreground-color":function(e){r.setForegroundColor(e)},"home-keys-scroll":function(e){r.keyboard.homeKeysScroll=e},keybindings:function(e){if(r.keyboard.bindings.clear(),e)if(e instanceof Object)try{r.keyboard.bindings.addBindings(e)}catch(e){console.error("Error in keybindings preference: "+e)}else console.error("Error in keybindings preference: Expected object")},"max-string-sequence":function(e){r.vt.maxStringSequence=e},"media-keys-are-fkeys":function(e){r.keyboard.mediaKeysAreFKeys=e},"meta-sends-escape":function(e){r.keyboard.metaSendsEscape=e},"mouse-right-click-paste":function(e){r.mouseRightClickPaste=e},"mouse-paste-button":function(e){r.syncMousePasteButton()},"page-keys-scroll":function(e){r.keyboard.pageKeysScroll=e},"pass-alt-number":function(e){null==e&&(e=!window.navigator.userAgent.match(/Mac OS X/)&&"popup"!=o.windowType),r.passAltNumber=e},"pass-ctrl-number":function(e){null==e&&(e=!window.navigator.userAgent.match(/Mac OS X/)&&"popup"!=o.windowType),r.passCtrlNumber=e},"pass-meta-number":function(e){null==e&&(e=window.navigator.userAgent.match(/Mac OS X/)&&"popup"!=o.windowType),r.passMetaNumber=e},"pass-meta-v":function(e){r.keyboard.passMetaV=e},"receive-encoding":function(e){/^(utf-8|raw)$/.test(e)||(console.warn('Invalid value for "receive-encoding": '+e),e="utf-8"),r.vt.characterEncoding=e},"scroll-on-keystroke":function(e){r.scrollOnKeystroke_=e},"scroll-on-output":function(e){r.scrollOnOutput_=e},"scrollbar-visible":function(e){r.setScrollbarVisible(e)},"scroll-wheel-may-send-arrow-keys":function(e){r.scrollWheelArrowKeys_=e},"scroll-wheel-move-multiplier":function(e){r.setScrollWheelMoveMultipler(e)},"send-encoding":function(e){/^(utf-8|raw)$/.test(e)||(console.warn('Invalid value for "send-encoding": '+e),e="utf-8"),r.keyboard.characterEncoding=e},"shift-insert-paste":function(e){r.keyboard.shiftInsertPaste=e},"terminal-encoding":function(e){r.vt.setEncoding(e)},"user-css":function(e){r.scrollPort_.setUserCssUrl(e)},"user-css-text":function(e){r.scrollPort_.setUserCssText(e)},"word-break-match-left":function(e){r.primaryScreen_.wordBreakMatchLeft=e,r.alternateScreen_.wordBreakMatchLeft=e},"word-break-match-right":function(e){r.primaryScreen_.wordBreakMatchRight=e,r.alternateScreen_.wordBreakMatchRight=e},"word-break-match-middle":function(e){r.primaryScreen_.wordBreakMatchMiddle=e,r.alternateScreen_.wordBreakMatchMiddle=e}}),this.prefs_.readStorage(function(){this.prefs_.notifyAll(),t&&t()}.bind(this))},o.Terminal.prototype.getPrefs=function(){return this.prefs_},o.Terminal.prototype.setBracketedPaste=function(e){this.options_.bracketedPaste=e},o.Terminal.prototype.setCursorColor=function(e){this.cursorColor_=e,this.cursorNode_.style.backgroundColor=e,this.cursorNode_.style.borderColor=e},o.Terminal.prototype.getCursorColor=function(){return this.cursorColor_},o.Terminal.prototype.setSelectionEnabled=function(e){this.enableMouseDragScroll=e},o.Terminal.prototype.setBackgroundColor=function(e){this.backgroundColor_=i.colors.normalizeCSS(e),this.primaryScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_),this.alternateScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_),this.scrollPort_.setBackgroundColor(e)},o.Terminal.prototype.getBackgroundColor=function(){return this.backgroundColor_},o.Terminal.prototype.setForegroundColor=function(e){this.foregroundColor_=i.colors.normalizeCSS(e),this.primaryScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_),this.alternateScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_),this.scrollPort_.setForegroundColor(e)},o.Terminal.prototype.getForegroundColor=function(){return this.foregroundColor_},o.Terminal.prototype.runCommandClass=function(e,t){var r=this.prefs_.get("environment");"object"==typeof r&&null!=r||(r={});var i=this;this.command=new e({argString:t||"",io:this.io.push(),environment:r,onExit:function(e){i.io.pop(),i.uninstallKeyboard(),i.prefs_.get("close-on-exit")&&window.close()}}),this.installKeyboard(),this.command.run()},o.Terminal.prototype.isPrimaryScreen=function(){return this.screen_==this.primaryScreen_},o.Terminal.prototype.installKeyboard=function(){this.keyboard.installKeyboard(this.scrollPort_.getDocument().body)},o.Terminal.prototype.uninstallKeyboard=function(){this.keyboard.installKeyboard(null)},o.Terminal.prototype.setCssVar=function(e,t,r="--hterm-"){this.document_.documentElement.style.setProperty(`${r}${e}`,t)},o.Terminal.prototype.setFontSize=function(e){0===e&&(e=this.prefs_.get("font-size")),this.scrollPort_.setFontSize(e),this.setCssVar("charsize-width",this.scrollPort_.characterSize.width+"px"),this.setCssVar("charsize-height",this.scrollPort_.characterSize.height+"px")},o.Terminal.prototype.getFontSize=function(){return this.scrollPort_.getFontSize()},o.Terminal.prototype.getFontFamily=function(){return this.scrollPort_.getFontFamily()},o.Terminal.prototype.syncFontFamily=function(){this.scrollPort_.setFontFamily(this.prefs_.get("font-family"),this.prefs_.get("font-smoothing")),this.syncBoldSafeState()},o.Terminal.prototype.syncMousePasteButton=function(){var e=this.prefs_.get("mouse-paste-button");if("number"!=typeof e){var t=navigator.userAgent.match(/\(X11;\s+(\S+)/);t&&"CrOS"!=t[1]?this.mousePasteButton=2:this.mousePasteButton=1}else this.mousePasteButton=e},o.Terminal.prototype.syncBoldSafeState=function(){var e=this.prefs_.get("enable-bold");if(null!==e)return this.primaryScreen_.textAttributes.enableBold=e,void(this.alternateScreen_.textAttributes.enableBold=e);var t=this.scrollPort_.measureCharacterSize(),r=this.scrollPort_.measureCharacterSize("bold"),i=t.equals(r);i||console.warn("Bold characters disabled: Size of bold weight differs from normal. Font family is: "+this.scrollPort_.getFontFamily()),this.primaryScreen_.textAttributes.enableBold=i,this.alternateScreen_.textAttributes.enableBold=i},o.Terminal.prototype.syncBlinkState=function(){this.setCssVar("node-duration",this.prefs_.get("enable-blink")?"0.7s":"0")},o.Terminal.prototype.syncMouseStyle=function(){this.setCssVar("mouse-cursor-style",this.vt.mouseReport==this.vt.MOUSE_REPORT_DISABLED?"var(--hterm-mouse-cursor-text)":"var(--hterm-mouse-cursor-pointer)")},o.Terminal.prototype.saveCursor=function(){return this.screen_.cursorPosition.clone()},o.Terminal.prototype.getTextAttributes=function(){return this.screen_.textAttributes},o.Terminal.prototype.setTextAttributes=function(e){this.screen_.textAttributes=e},o.Terminal.prototype.getZoomFactor=function(){return this.scrollPort_.characterSize.zoomFactor},o.Terminal.prototype.setWindowTitle=function(e){window.document.title=e},o.Terminal.prototype.restoreCursor=function(e){var t=i.f.clamp(e.row,0,this.screenSize.height-1),r=i.f.clamp(e.column,0,this.screenSize.width-1);this.screen_.setCursorPosition(t,r),(e.column>r||e.column==r&&e.overflow)&&(this.screen_.cursorPosition.overflow=!0)},o.Terminal.prototype.clearCursorOverflow=function(){this.screen_.cursorPosition.overflow=!1},o.Terminal.prototype.setCursorShape=function(e){this.cursorShape_=e,this.restyleCursor_()},o.Terminal.prototype.getCursorShape=function(){return this.cursorShape_},o.Terminal.prototype.setWidth=function(e){null!=e?(this.div_.style.width=Math.ceil(this.scrollPort_.characterSize.width*e+this.scrollPort_.currentScrollbarWidthPx)+"px",this.realizeSize_(e,this.screenSize.height),this.scheduleSyncCursorPosition_()):this.div_.style.width="100%"},o.Terminal.prototype.setHeight=function(e){null!=e?(this.div_.style.height=this.scrollPort_.characterSize.height*e+"px",this.realizeSize_(this.screenSize.width,e),this.scheduleSyncCursorPosition_()):this.div_.style.height="100%"},o.Terminal.prototype.realizeSize_=function(e,t){e!=this.screenSize.width&&this.realizeWidth_(e),t!=this.screenSize.height&&this.realizeHeight_(t),this.io.onTerminalResize_(e,t)},o.Terminal.prototype.realizeWidth_=function(e){if(e<=0)throw new Error("Attempt to realize bad width: "+e);var t=e-this.screen_.getWidth();if(this.screenSize.width=e,this.screen_.setColumnCount(e),t>0)this.defaultTabStops&&this.setDefaultTabStops(this.screenSize.width-t);else for(var r=this.tabStops_.length-1;r>=0&&!(this.tabStops_[r]0){if(t<=this.scrollbackRows_.length){var s=Math.min(t,this.scrollbackRows_.length),n=this.scrollbackRows_.splice(this.scrollbackRows_.length-s,s);this.screen_.unshiftRows(n),t-=s,r.row+=s}t&&this.appendRows_(t)}this.setVTScrollRegion(null,null),this.restoreCursor(r)},o.Terminal.prototype.scrollHome=function(){this.scrollPort_.scrollRowToTop(0)},o.Terminal.prototype.scrollEnd=function(){this.scrollPort_.scrollRowToBottom(this.getRowCount())},o.Terminal.prototype.scrollPageUp=function(){var e=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(e-this.screenSize.height+1)},o.Terminal.prototype.scrollPageDown=function(){var e=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(e+this.screenSize.height-1)},o.Terminal.prototype.scrollLineUp=function(){var e=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(e-1)},o.Terminal.prototype.scrollLineDown=function(){var e=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(e+1)},o.Terminal.prototype.wipeContents=function(){this.scrollbackRows_.length=0,this.scrollPort_.resetCache(),[this.primaryScreen_,this.alternateScreen_].forEach(function(e){var t=e.getHeight();t>0&&(this.renumberRows_(0,t),this.clearHome(e))}.bind(this)),this.syncCursorPosition_(),this.scrollPort_.invalidate()},o.Terminal.prototype.reset=function(){this.clearAllTabStops(),this.setDefaultTabStops(),this.clearHome(this.primaryScreen_),this.primaryScreen_.textAttributes.reset(),this.clearHome(this.alternateScreen_),this.alternateScreen_.textAttributes.reset(),this.setCursorBlink(!!this.prefs_.get("cursor-blink")),this.vt.reset(),this.softReset()},o.Terminal.prototype.softReset=function(){this.options_=new o.Options,this.options_.cursorBlink=!!this.timeouts_.cursorBlink,this.primaryScreen_.textAttributes.resetColorPalette(),this.alternateScreen_.textAttributes.resetColorPalette(),this.setVTScrollRegion(null,null),this.setCursorVisible(!0)},o.Terminal.prototype.forwardTabStop=function(){for(var e=this.screen_.cursorPosition.column,t=0;te)return void this.setCursorColumn(this.tabStops_[t]);var r=this.screen_.cursorPosition.overflow;this.setCursorColumn(this.screenSize.width-1),this.screen_.cursorPosition.overflow=r},o.Terminal.prototype.backwardTabStop=function(){for(var e=this.screen_.cursorPosition.column,t=this.tabStops_.length-1;t>=0;t--)if(this.tabStops_[t]=0;t--){if(this.tabStops_[t]==e)return;if(this.tabStops_[t]0){var n=this.screen_.shiftRows(s);Array.prototype.push.apply(this.scrollbackRows_,n),this.scrollPort_.isScrolledEnd&&this.scheduleScrollDown_()}t>=this.screen_.rowsArray.length&&(t=this.screen_.rowsArray.length-1),this.setAbsoluteCursorPosition(t,0)},o.Terminal.prototype.moveRows_=function(e,t,r){var i=this.screen_.removeRows(e,t);this.screen_.insertRows(r,i);var o,s;e=this.screenSize.width&&(a=!0,n=this.screenSize.width-this.screen_.cursorPosition.column),a&&!this.options_.wraparound?(s=i.wc.substr(e,t,n-1)+i.wc.substr(e,r-1),n=r):s=i.wc.substr(e,t,n);for(var l=o.TextAttributes.splitWidecharString(s),h=0;h=0;o--)this.setAbsoluteCursorPosition(t+o,0),this.screen_.clearCursorRow()},o.Terminal.prototype.deleteLines=function(e){var t=this.saveCursor(),r=t.row,i=this.getVTScrollBottom(),o=i-r+1,s=i-(e=Math.min(e,o))+1;e!=o&&this.moveRows_(r,e,s);for(var n=0;nt)this.setCssVar("cursor-offset-row","-1");else{this.options_.cursorVisible&&"none"==this.cursorNode_.style.display&&(this.cursorNode_.style.display=""),this.setCssVar("cursor-offset-row",`${r-e} + `+`${this.scrollPort_.visibleRowTopMargin}px`),this.setCssVar("cursor-offset-col",this.screen_.cursorPosition.column),this.cursorNode_.setAttribute("title","("+this.screen_.cursorPosition.column+", "+this.screen_.cursorPosition.row+")");var i=this.document_.getSelection();i&&i.isCollapsed&&this.screen_.syncSelectionCaret(i)}},o.Terminal.prototype.restyleCursor_=function(){var e=this.cursorShape_;"false"==this.cursorNode_.getAttribute("focus")&&(e=o.Terminal.cursorShape.BLOCK);var t=this.cursorNode_.style;switch(e){case o.Terminal.cursorShape.BEAM:t.height="var(--hterm-charsize-height)",t.backgroundColor="transparent",t.borderBottomStyle=null,t.borderLeftStyle="solid";break;case o.Terminal.cursorShape.UNDERLINE:t.height=this.scrollPort_.characterSize.baseline+"px",t.backgroundColor="transparent",t.borderBottomStyle="solid",t.borderLeftStyle=null;break;default:t.height="var(--hterm-charsize-height)",t.backgroundColor=this.cursorColor_,t.borderBottomStyle=null,t.borderLeftStyle=null}},o.Terminal.prototype.scheduleSyncCursorPosition_=function(){if(!this.timeouts_.syncCursor){var e=this;this.timeouts_.syncCursor=setTimeout(function(){e.syncCursorPosition_(),delete e.timeouts_.syncCursor},0)}},o.Terminal.prototype.showZoomWarning_=function(e){if(!this.zoomWarningNode_){if(!e)return;this.zoomWarningNode_=this.document_.createElement("div"),this.zoomWarningNode_.id="hterm:zoom-warning",this.zoomWarningNode_.style.cssText="color: black;background-color: #ff2222;font-size: large;border-radius: 8px;opacity: 0.75;padding: 0.2em 0.5em 0.2em 0.5em;top: 0.5em;right: 1.2em;position: absolute;-webkit-text-size-adjust: none;-webkit-user-select: none;-moz-text-size-adjust: none;-moz-user-select: none;",this.zoomWarningNode_.addEventListener("click",function(e){this.parentNode.removeChild(this)})}this.zoomWarningNode_.textContent=i.MessageManager.replaceReferences(o.zoomWarningMessage,[parseInt(100*this.scrollPort_.characterSize.zoomFactor)]),this.zoomWarningNode_.style.fontFamily=this.prefs_.get("font-family"),e?this.zoomWarningNode_.parentNode||this.div_.parentNode.appendChild(this.zoomWarningNode_):this.zoomWarningNode_.parentNode&&this.zoomWarningNode_.parentNode.removeChild(this.zoomWarningNode_)},o.Terminal.prototype.showOverlay=function(e,t){if(!this.overlayNode_){if(!this.div_)return;this.overlayNode_=this.document_.createElement("div"),this.overlayNode_.style.cssText="border-radius: 15px;font-size: xx-large;opacity: 0.75;padding: 0.2em 0.5em 0.2em 0.5em;position: absolute;-webkit-user-select: none;-webkit-transition: opacity 180ms ease-in;-moz-user-select: none;-moz-transition: opacity 180ms ease-in;",this.overlayNode_.addEventListener("mousedown",function(e){e.preventDefault(),e.stopPropagation()},!0)}this.overlayNode_.style.color=this.prefs_.get("background-color"),this.overlayNode_.style.backgroundColor=this.prefs_.get("foreground-color"),this.overlayNode_.style.fontFamily=this.prefs_.get("font-family"),this.overlayNode_.textContent=e,this.overlayNode_.style.opacity="0.75",this.overlayNode_.parentNode||this.div_.appendChild(this.overlayNode_);var r=o.getClientSize(this.div_),i=o.getClientSize(this.overlayNode_);this.overlayNode_.style.top=(r.height-i.height)/2+"px",this.overlayNode_.style.left=(r.width-i.width-this.scrollPort_.currentScrollbarWidthPx)/2+"px";var s=this;this.overlayTimeout_&&clearTimeout(this.overlayTimeout_),null!==t&&(this.overlayTimeout_=setTimeout(function(){s.overlayNode_.style.opacity="0",s.overlayTimeout_=setTimeout(function(){s.overlayNode_.parentNode&&s.overlayNode_.parentNode.removeChild(s.overlayNode_),s.overlayTimeout_=null,s.overlayNode_.style.opacity="0.75"},200)},t||1500))},o.Terminal.prototype.paste=function(){return o.pasteFromClipboard(this.document_)},o.Terminal.prototype.copyStringToClipboard=function(e){this.prefs_.get("enable-clipboard-notice")&&setTimeout(this.showOverlay.bind(this,o.notifyCopyMessage,500),200);var t=this.document_.createElement("pre");t.id="hterm:copy-to-clipboard-source",t.textContent=e,t.style.cssText="-webkit-user-select: text;-moz-user-select: text;position: absolute;top: -99px",this.document_.body.appendChild(t);var r=this.document_.getSelection(),i=r.anchorNode,s=r.anchorOffset,n=r.focusNode,a=r.focusOffset;r.selectAllChildren(t),o.copySelectionToClipboard(this.document_),r.extend&&(r.collapse(i,s),r.extend(n,a)),t.parentNode.removeChild(t)},o.Terminal.prototype.getSelectionText=function(){var e=this.scrollPort_.selection;if(e.sync(),e.isCollapsed)return null;var t=e.startOffset,r=e.startNode;if("X-ROW"!=r.nodeName)for("#text"==r.nodeName&&"SPAN"==r.parentNode.nodeName&&(r=r.parentNode);r.previousSibling;)r=r.previousSibling,t+=o.TextAttributes.nodeWidth(r);var s=o.TextAttributes.nodeWidth(e.endNode)-e.endOffset;if("X-ROW"!=(r=e.endNode).nodeName)for("#text"==r.nodeName&&"SPAN"==r.parentNode.nodeName&&(r=r.parentNode);r.nextSibling;)r=r.nextSibling,s+=o.TextAttributes.nodeWidth(r);var n=this.getRowsText(e.startRow.rowIndex,e.endRow.rowIndex+1);return i.wc.substring(n,t,i.wc.strWidth(n)-s)},o.Terminal.prototype.copySelectionToClipboard=function(){var e=this.getSelectionText();null!=e&&this.copyStringToClipboard(e)},o.Terminal.prototype.overlaySize=function(){this.showOverlay(this.screenSize.width+"x"+this.screenSize.height)},o.Terminal.prototype.onVTKeystroke=function(e){this.scrollOnKeystroke_&&this.scrollPort_.scrollRowToBottom(this.getRowCount()),this.io.onVTKeystroke(this.keyboard.encode(e))},o.Terminal.prototype.openUrl=function(e){window.chrome&&window.chrome.browser?chrome.browser.openTab({url:e}):window.open(e,"_blank").focus()},o.Terminal.prototype.openSelectedUrl_=function(){var e=this.getSelectionText();if((null!=e||(this.screen_.expandSelection(this.document_.getSelection()),null!=(e=this.getSelectionText())))&&!(e.length>2048||e.search(/[\s\[\](){}<>"'\\^`]/)>=0)){if(e.search("^[a-zA-Z][a-zA-Z0-9+.-]*://")<0)switch(e.split(":",1)[0]){case"mailto":break;default:e="http://"+e}this.openUrl(e)}},o.Terminal.prototype.onMouse_=function(e){if(!e.processedByTerminalHandler_){var t=!this.defeatMouseReports_&&this.vt.mouseReport!=this.vt.MOUSE_REPORT_DISABLED;if(e.processedByTerminalHandler_=!0,e.terminalRow=parseInt((e.clientY-this.scrollPort_.visibleRowTopMargin)/this.scrollPort_.characterSize.height)+1,e.terminalColumn=parseInt(e.clientX/this.scrollPort_.characterSize.width)+1,!("mousedown"==e.type&&e.terminalColumn>this.screenSize.width)){if(this.options_.cursorVisible&&!t&&(e.terminalRow-1==this.screen_.cursorPosition.row&&e.terminalColumn-1==this.screen_.cursorPosition.column?this.cursorNode_.style.display="none":"none"==this.cursorNode_.style.display&&(this.cursorNode_.style.display="")),"mousedown"==e.type&&(e.altKey||!t?(this.defeatMouseReports_=!0,this.setSelectionEnabled(!0)):(this.defeatMouseReports_=!1,this.document_.getSelection().collapseToEnd(),this.setSelectionEnabled(!1),e.preventDefault())),t)this.scrollBlockerNode_.engaged||("mousedown"==e.type?(this.scrollBlockerNode_.engaged=!0,this.scrollBlockerNode_.style.top=e.clientY-5+"px",this.scrollBlockerNode_.style.left=e.clientX-5+"px"):"mousemove"==e.type&&(this.document_.getSelection().collapseToEnd(),e.preventDefault())),this.onMouse(e);else{if("dblclick"==e.type&&this.copyOnSelect&&(this.screen_.expandSelection(this.document_.getSelection()),this.copySelectionToClipboard(this.document_)),"click"==e.type&&!e.shiftKey&&(e.ctrlKey||e.metaKey))return clearTimeout(this.timeouts_.openUrl),void(this.timeouts_.openUrl=setTimeout(this.openSelectedUrl_.bind(this),500));if("mousedown"==e.type&&(this.mouseRightClickPaste&&2==e.button||e.button==this.mousePasteButton)&&(this.paste()||console.warning("Could not paste manually due to web restrictions")),"mouseup"==e.type&&0==e.button&&this.copyOnSelect&&!this.document_.getSelection().isCollapsed&&this.copySelectionToClipboard(this.document_),"mousemove"!=e.type&&"mouseup"!=e.type||!this.scrollBlockerNode_.engaged||(this.scrollBlockerNode_.engaged=!1,this.scrollBlockerNode_.style.top="-99px"),this.scrollWheelArrowKeys_&&!e.shiftKey&&this.keyboard.applicationCursor&&!this.isPrimaryScreen()&&"wheel"==e.type){var r=this.scrollPort_.scrollWheelDelta(e),o=i.f.smartFloorDivide(Math.abs(r),this.scrollPort_.characterSize.height),s="O"+(r<0?"B":"A");this.io.sendString(s.repeat(o)),e.preventDefault()}}"mouseup"==e.type&&this.document_.getSelection().isCollapsed&&(this.defeatMouseReports_=!1)}}},o.Terminal.prototype.onMouse=function(e){},o.Terminal.prototype.onFocusChange_=function(e){this.cursorNode_.setAttribute("focus",e),this.restyleCursor_(),!0===e&&this.closeBellNotifications_()},o.Terminal.prototype.onScroll_=function(){this.scheduleSyncCursorPosition_()},o.Terminal.prototype.onPaste_=function(e){var t=e.text.replace(/\n/gm,"\r");t=this.keyboard.encode(t),this.options_.bracketedPaste&&(t="[200~"+t+"[201~"),this.io.sendString(t)},o.Terminal.prototype.onCopy_=function(e){this.useDefaultWindowCopy||(e.preventDefault(),setTimeout(this.copySelectionToClipboard.bind(this),0))},o.Terminal.prototype.onResize_=function(){var e=Math.floor(this.scrollPort_.getScreenWidth()/this.scrollPort_.characterSize.width)||0,t=i.f.smartFloorDivide(this.scrollPort_.getScreenHeight(),this.scrollPort_.characterSize.height)||0;if(!(e<=0||t<=0)){var r=e!=this.screenSize.width||t!=this.screenSize.height;this.realizeSize_(e,t),this.showZoomWarning_(1!=this.scrollPort_.characterSize.zoomFactor),r&&this.overlaySize(),this.restyleCursor_(),this.scheduleSyncCursorPosition_()}},o.Terminal.prototype.onCursorBlink_=function(){this.options_.cursorBlink?"false"==this.cursorNode_.getAttribute("focus")||"0"==this.cursorNode_.style.opacity?(this.cursorNode_.style.opacity="1",this.timeouts_.cursorBlink=setTimeout(this.myOnCursorBlink_,this.cursorBlinkCycle_[0])):(this.cursorNode_.style.opacity="0",this.timeouts_.cursorBlink=setTimeout(this.myOnCursorBlink_,this.cursorBlinkCycle_[1])):delete this.timeouts_.cursorBlink},o.Terminal.prototype.setScrollbarVisible=function(e){this.scrollPort_.setScrollbarVisible(e)},o.Terminal.prototype.setScrollWheelMoveMultipler=function(e){this.scrollPort_.setScrollWheelMoveMultipler(e)},o.Terminal.prototype.closeBellNotifications_=function(){this.bellNotificationList_.forEach(function(e){e.close()}),this.bellNotificationList_.length=0},i.rtdep("lib.encodeUTF8"),o.Terminal.IO=function(e){this.terminal_=e,this.previousIO_=null},o.Terminal.IO.prototype.showOverlay=function(e,t){this.terminal_.showOverlay(e,t)},o.Terminal.IO.prototype.createFrame=function(e,t){return new o.Frame(this.terminal_,e,t)},o.Terminal.IO.prototype.setTerminalProfile=function(e){this.terminal_.setProfile(e)},o.Terminal.IO.prototype.push=function(){var e=new o.Terminal.IO(this.terminal_);return e.keyboardCaptured_=this.keyboardCaptured_,e.columnCount=this.columnCount,e.rowCount=this.rowCount,e.previousIO_=this.terminal_.io,this.terminal_.io=e,e},o.Terminal.IO.prototype.pop=function(){this.terminal_.io=this.previousIO_},o.Terminal.IO.prototype.sendString=function(e){console.log("Unhandled sendString: "+e)},o.Terminal.IO.prototype.onVTKeystroke=function(e){console.log("Unobserverd VT keystroke: "+JSON.stringify(e))},o.Terminal.IO.prototype.onTerminalResize_=function(e,t){for(var r=this;r;)r.columnCount=e,r.rowCount=t,r=r.previousIO_;this.onTerminalResize(e,t)},o.Terminal.IO.prototype.onTerminalResize=function(e,t){},o.Terminal.IO.prototype.writeUTF8=function(e){if(this.terminal_.io!=this)throw"Attempt to print from inactive IO object.";this.terminal_.interpret(e)},o.Terminal.IO.prototype.writelnUTF8=function(e){if(this.terminal_.io!=this)throw"Attempt to print from inactive IO object.";this.terminal_.interpret(e+"\r\n")},o.Terminal.IO.prototype.print=o.Terminal.IO.prototype.writeUTF16=function(e){this.writeUTF8(i.encodeUTF8(e))},o.Terminal.IO.prototype.println=o.Terminal.IO.prototype.writelnUTF16=function(e){this.writelnUTF8(i.encodeUTF8(e))},i.rtdep("lib.colors"),o.TextAttributes=function(e){this.document_=e,this.foregroundSource=this.SRC_DEFAULT,this.backgroundSource=this.SRC_DEFAULT,this.foreground=this.DEFAULT_COLOR,this.background=this.DEFAULT_COLOR,this.defaultForeground="rgb(255, 255, 255)",this.defaultBackground="rgb(0, 0, 0)",this.bold=!1,this.faint=!1,this.italic=!1,this.blink=!1,this.underline=!1,this.strikethrough=!1,this.inverse=!1,this.invisible=!1,this.wcNode=!1,this.asciiNode=!0,this.tileData=null,this.colorPalette=null,this.resetColorPalette()},o.TextAttributes.prototype.enableBold=!0,o.TextAttributes.prototype.enableBoldAsBright=!0,o.TextAttributes.prototype.DEFAULT_COLOR=i.f.createEnum(""),o.TextAttributes.prototype.SRC_DEFAULT="default",o.TextAttributes.prototype.SRC_RGB="rgb",o.TextAttributes.prototype.setDocument=function(e){this.document_=e},o.TextAttributes.prototype.clone=function(){var e=new o.TextAttributes(null);for(var t in this)e[t]=this[t];return e.colorPalette=this.colorPalette.concat(),e},o.TextAttributes.prototype.reset=function(){this.foregroundSource=this.SRC_DEFAULT,this.backgroundSource=this.SRC_DEFAULT,this.foreground=this.DEFAULT_COLOR,this.background=this.DEFAULT_COLOR,this.bold=!1,this.faint=!1,this.italic=!1,this.blink=!1,this.underline=!1,this.strikethrough=!1,this.inverse=!1,this.invisible=!1,this.wcNode=!1,this.asciiNode=!0},o.TextAttributes.prototype.resetColorPalette=function(){this.colorPalette=i.colors.colorPalette.concat(),this.syncColors()},o.TextAttributes.prototype.isDefault=function(){return this.foregroundSource==this.SRC_DEFAULT&&this.backgroundSource==this.SRC_DEFAULT&&!this.bold&&!this.faint&&!this.italic&&!this.blink&&!this.underline&&!this.strikethrough&&!this.inverse&&!this.invisible&&!this.wcNode&&this.asciiNode&&null==this.tileData},o.TextAttributes.prototype.createContainer=function(e){if(this.isDefault())return this.document_.createTextNode(e);var t=this.document_.createElement("span"),r=t.style,i=[];this.foreground!=this.DEFAULT_COLOR&&(r.color=this.foreground),this.background!=this.DEFAULT_COLOR&&(r.backgroundColor=this.background),this.enableBold&&this.bold&&(r.fontWeight="bold"),this.faint&&(t.faint=!0),this.italic&&(r.fontStyle="italic"),this.blink&&(i.push("blink-node"),t.blinkNode=!0);var o="";return this.underline&&(o+=" underline",t.underline=!0),this.strikethrough&&(o+=" line-through",t.strikethrough=!0),o&&(r.textDecoration=o),this.wcNode&&(i.push("wc-node"),t.wcNode=!0,t.asciiNode=!1),null!=this.tileData&&(i.push("tile"),i.push("tile_"+this.tileData),t.tileNode=!0),e&&(t.textContent=e),i.length&&(t.className=i.join(" ")),t},o.TextAttributes.prototype.matchesContainer=function(e){if("string"==typeof e||3==e.nodeType)return this.isDefault();var t=e.style;return!(this.wcNode||e.wcNode||this.asciiNode!=this.asciiNode||null!=this.tileData||e.tileNode||this.foreground!=t.color||this.background!=t.backgroundColor||(this.enableBold&&this.bold)!=!!t.fontWeight||this.blink!=e.blinkNode||this.italic!=!!t.fontStyle||!!this.underline!=!!e.underline||!!this.strikethrough!=!!e.strikethrough)},o.TextAttributes.prototype.setDefaults=function(e,t){this.defaultForeground=e,this.defaultBackground=t,this.syncColors()},o.TextAttributes.prototype.syncColors=function(){var e=this.foregroundSource,t=this.backgroundSource,r=this.DEFAULT_COLOR,o=this.DEFAULT_COLOR;if(this.inverse&&(e=this.backgroundSource,t=this.foregroundSource,r=this.defaultBackground,o=this.defaultForeground),this.enableBoldAsBright&&this.bold&&e!=this.SRC_DEFAULT&&e!=this.SRC_RGB&&(e=function(e){return e<8?e+8:e}(e)),this.invisible&&(e=t,r=this.defaultBackground),e!=this.SRC_RGB&&(this.foreground=e==this.SRC_DEFAULT?r:this.colorPalette[e]),this.faint&&!this.invisible){var s=this.foreground==this.DEFAULT_COLOR?this.defaultForeground:this.foreground;this.foreground=i.colors.mix(s,"rgb(0, 0, 0)",.3333)}t!=this.SRC_RGB&&(this.background=t==this.SRC_DEFAULT?o:this.colorPalette[t])},o.TextAttributes.containersMatch=function(e,t){if("string"==typeof e)return o.TextAttributes.containerIsDefault(t);if(e.nodeType!=t.nodeType)return!1;if(3==e.nodeType)return!0;var r=e.style,i=t.style;return r.color==i.color&&r.backgroundColor==i.backgroundColor&&r.fontWeight==i.fontWeight&&r.fontStyle==i.fontStyle&&r.textDecoration==i.textDecoration},o.TextAttributes.containerIsDefault=function(e){return"string"==typeof e||3==e.nodeType},o.TextAttributes.nodeWidth=function(e){return e.asciiNode?e.textContent.length:i.wc.strWidth(e.textContent)},o.TextAttributes.nodeSubstr=function(e,t,r){return e.asciiNode?e.textContent.substr(t,r):i.wc.substr(e.textContent,t,r)},o.TextAttributes.nodeSubstring=function(e,t,r){return e.asciiNode?e.textContent.substring(t,r):i.wc.substring(e.textContent,t,r)},o.TextAttributes.splitWidecharString=function(e){for(var t=[],r=0,o=0,s=!0,n=0;n0?0:1),n|=r,t=""+String.fromCharCode(n)+o+s,e.preventDefault();break;case"mousedown":var n=Math.min(e.button,2)+32;n|=r,t=""+String.fromCharCode(n)+o+s;break;case"mouseup":t="#"+o+s;break;case"mousemove":this.mouseReport==this.MOUSE_REPORT_DRAG&&e.buttons&&(n=32,1&e.buttons?n+=0:4&e.buttons?n+=1:2&e.buttons?n+=2:n+=3,n+=32,n|=r,t=""+String.fromCharCode(n)+o+s);break;case"click":case"dblclick":break;default:console.error("Unknown mouse event: "+e.type,e)}t&&this.terminal.io.sendString(t)}},o.VT.prototype.interpret=function(e){for(this.parseState_.resetBuf(this.decode(e));!this.parseState_.isComplete();){var t=this.parseState_.func,r=this.parseState_.pos,e=this.parseState_.buf;if(this.parseState_.func.call(this,this.parseState_),this.parseState_.func==t&&this.parseState_.pos==r&&this.parseState_.buf==e)throw"Parser did not alter the state!"}},o.VT.prototype.decode=function(e){return"utf-8"==this.characterEncoding?this.decodeUTF8(e):e},o.VT.prototype.encodeUTF8=function(e){return i.encodeUTF8(e)},o.VT.prototype.decodeUTF8=function(e){return this.utf8Decoder_.decode(e)},o.VT.prototype.setEncoding=function(e){switch(e){default:console.warn('Invalid value for "terminal-encoding": '+e);case"iso-2022":this.codingSystemUtf8_=!1,this.codingSystemLocked_=!1;break;case"utf-8-locked":this.codingSystemUtf8_=!0,this.codingSystemLocked_=!0;break;case"utf-8":this.codingSystemUtf8_=!0,this.codingSystemLocked_=!1}this.updateEncodingState_()},o.VT.prototype.updateEncodingState_=function(){var e=Object.keys(o.VT.CC1).filter(e=>!this.codingSystemUtf8_||e.charCodeAt()<128).map(e=>"\\x"+i.f.zpad(e.charCodeAt().toString(16),2)).join("");this.cc1Pattern_=new RegExp(`[${e}]`)},o.VT.prototype.parseUnknown_=function(e){function t(e){!r.codingSystemUtf8_&&r[r.GL].GL&&(e=r[r.GL].GL(e)),r.terminal.print(e)}var r=this,i=e.peekRemainingBuf(),o=i.search(this.cc1Pattern_);return 0==o?(this.dispatch("CC1",i.substr(0,1),e),void e.advance(1)):-1==o?(t(i),void e.reset()):(t(i.substr(0,o)),this.dispatch("CC1",i.substr(o,1),e),void e.advance(o+1))},o.VT.prototype.parseCSI_=function(e){var t=e.peekChar(),r=e.args;t>="@"&&t<="~"?(this.dispatch("CSI",this.leadingModifier_+this.trailingModifier_+t,e),e.resetParseFunction()):";"==t?this.trailingModifier_?e.resetParseFunction():(r.length||r.push(""),r.push("")):t>="0"&&t<="9"?this.trailingModifier_?e.resetParseFunction():r.length?r[r.length-1]+=t:r[0]=t:t>=" "&&t<="?"&&":"!=t?r.length?this.trailingModifier_+=t:this.leadingModifier_+=t:this.cc1Pattern_.test(t)?this.dispatch("CC1",t,e):e.resetParseFunction(),e.advance(1)},o.VT.prototype.parseUntilStringTerminator_=function(e){var t=e.peekRemainingBuf(),r=t.search(/(\x1b\\|\x07)/),i=e.args;if(i.length||(i[0]="",i[1]=new Date),-1==r){i[0]+=t;var o;return i[0].length>this.maxStringSequence&&(o="too long: "+i[0].length),-1!=i[0].indexOf("")&&(o="embedded escape: "+i[0].indexOf("")),new Date-i[1]>this.oscTimeLimit_&&(o="timeout expired: "+new Date-i[1]),o?(console.log("parseUntilStringTerminator_: aborting: "+o,i[0]),e.reset(i[0]),!1):(e.advance(t.length),!0)}return i[0].length+r>this.maxStringSequence?(e.reset(i[0]+t),!1):(i[0]+=t.substr(0,r),e.resetParseFunction(),e.advance(r+(""==t.substr(r,1)?2:1)),!0)},o.VT.prototype.dispatch=function(e,t,r){var i=o.VT[e][t];i?i!=o.VT.ignore?"CC1"==e&&t>""&&!this.enable8BitControl?console.warn("Ignoring 8-bit control code: 0x"+t.charCodeAt(0).toString(16)):i.apply(this,[r,t]):this.warnUnimplemented&&console.warn("Ignored "+e+" code: "+JSON.stringify(t)):this.warnUnimplemented&&console.warn("Unknown "+e+" code: "+JSON.stringify(t))},o.VT.prototype.setANSIMode=function(e,t){4==e?this.terminal.setInsertMode(t):20==e?this.terminal.setAutoCarriageReturn(t):this.warnUnimplemented&&console.warn("Unimplemented ANSI Mode: "+e)},o.VT.prototype.setDECMode=function(e,t){switch(parseInt(e,10)){case 1:this.terminal.keyboard.applicationCursor=t;break;case 3:this.allowColumnWidthChanges_&&(this.terminal.setWidth(t?132:80),this.terminal.clearHome(),this.terminal.setVTScrollRegion(null,null));break;case 5:this.terminal.setReverseVideo(t);break;case 6:this.terminal.setOriginMode(t);break;case 7:this.terminal.setWraparound(t);break;case 12:this.enableDec12&&this.terminal.setCursorBlink(t);break;case 25:this.terminal.setCursorVisible(t);break;case 30:this.terminal.setScrollbarVisible(t);break;case 40:this.terminal.allowColumnWidthChanges_=t;break;case 45:this.terminal.setReverseWraparound(t);break;case 67:this.terminal.keyboard.backspaceSendsBackspace=t;break;case 1e3:this.mouseReport=t?this.MOUSE_REPORT_CLICK:this.MOUSE_REPORT_DISABLED,this.terminal.syncMouseStyle();break;case 1002:this.mouseReport=t?this.MOUSE_REPORT_DRAG:this.MOUSE_REPORT_DISABLED,this.terminal.syncMouseStyle();break;case 1010:this.terminal.scrollOnOutput=t;break;case 1011:this.terminal.scrollOnKeystroke=t;break;case 1036:this.terminal.keyboard.metaSendsEscape=t;break;case 1039:t?this.terminal.keyboard.previousAltSendsWhat_||(this.terminal.keyboard.previousAltSendsWhat_=this.terminal.keyboard.altSendsWhat,this.terminal.keyboard.altSendsWhat="escape"):this.terminal.keyboard.previousAltSendsWhat_&&(this.terminal.keyboard.altSendsWhat=this.terminal.keyboard.previousAltSendsWhat_,this.terminal.keyboard.previousAltSendsWhat_=null);break;case 47:case 1047:this.terminal.setAlternateMode(t);break;case 1048:this.savedState_.save();case 1049:t?(this.savedState_.save(),this.terminal.setAlternateMode(t),this.terminal.clear()):(this.terminal.setAlternateMode(t),this.savedState_.restore());break;case 2004:this.terminal.setBracketedPaste(t);break;default:this.warnUnimplemented&&console.warn("Unimplemented DEC Private Mode: "+e)}},o.VT.ignore=function(){},o.VT.CC1={},o.VT.ESC={},o.VT.CSI={},o.VT.OSC={},o.VT.VT52={},o.VT.CC1["\0"]=o.VT.ignore,o.VT.CC1[""]=o.VT.ignore,o.VT.CC1[""]=function(){this.terminal.ringBell()},o.VT.CC1["\b"]=function(){this.terminal.cursorLeft(1)},o.VT.CC1["\t"]=function(){this.terminal.forwardTabStop()},o.VT.CC1["\n"]=function(){this.terminal.formFeed()},o.VT.CC1["\v"]=o.VT.CC1["\n"],o.VT.CC1["\f"]=o.VT.CC1["\n"],o.VT.CC1["\r"]=function(){this.terminal.setCursorColumn(0)},o.VT.CC1[""]=function(){this.GL="G1"},o.VT.CC1[""]=function(){this.GL="G0"},o.VT.CC1[""]=o.VT.ignore,o.VT.CC1[""]=o.VT.ignore,o.VT.CC1[""]=function(e){"G1"==this.GL&&(this.GL="G0"),e.resetParseFunction(),this.terminal.print("?")},o.VT.CC1[""]=o.VT.CC1[""],o.VT.CC1[""]=function(e){function t(e){var r=e.consumeChar();""!=r&&(this.dispatch("ESC",r,e),e.func==t&&e.resetParseFunction())}e.func=t},o.VT.CC1[""]=o.VT.ignore,o.VT.CC1["„"]=o.VT.ESC.D=function(){this.terminal.lineFeed()},o.VT.CC1["…"]=o.VT.ESC.E=function(){this.terminal.setCursorColumn(0),this.terminal.cursorDown(1)},o.VT.CC1["ˆ"]=o.VT.ESC.H=function(){this.terminal.setTabStop(this.terminal.getCursorColumn())},o.VT.CC1[""]=o.VT.ESC.M=function(){this.terminal.reverseLineFeed()},o.VT.CC1["Ž"]=o.VT.ESC.N=o.VT.ignore,o.VT.CC1[""]=o.VT.ESC.O=o.VT.ignore,o.VT.CC1[""]=o.VT.ESC.P=function(e){e.resetArguments(),e.func=this.parseUntilStringTerminator_},o.VT.CC1["–"]=o.VT.ESC.V=o.VT.ignore,o.VT.CC1["—"]=o.VT.ESC.W=o.VT.ignore,o.VT.CC1["˜"]=o.VT.ESC.X=o.VT.ignore,o.VT.CC1["š"]=o.VT.ESC.Z=function(){this.terminal.io.sendString("[?1;2c")},o.VT.CC1["›"]=o.VT.ESC["["]=function(e){e.resetArguments(),this.leadingModifier_="",this.trailingModifier_="",e.func=this.parseCSI_},o.VT.CC1["œ"]=o.VT.ESC["\\"]=o.VT.ignore,o.VT.CC1[""]=o.VT.ESC["]"]=function(e){function t(e){if(this.parseUntilStringTerminator_(e)&&e.func!=t){var r=e.args[0].match(/^(\d+);(.*)$/);r?(e.args[0]=r[2],this.dispatch("OSC",r[1],e)):console.warn("Invalid OSC: "+JSON.stringify(e.args[0]))}}e.resetArguments(),e.func=t},o.VT.CC1["ž"]=o.VT.ESC["^"]=function(e){e.resetArguments(),e.func=this.parseUntilStringTerminator_},o.VT.CC1["Ÿ"]=o.VT.ESC._=function(e){e.resetArguments(),e.func=this.parseUntilStringTerminator_},o.VT.ESC[" "]=function(e){e.func=function(e){var t=e.consumeChar();this.warnUnimplemented&&console.warn("Unimplemented sequence: ESC 0x20 "+t),e.resetParseFunction()}},o.VT.ESC["#"]=function(e){e.func=function(e){"8"==e.consumeChar()&&this.terminal.fill("E"),e.resetParseFunction()}},o.VT.ESC["%"]=function(e){e.func=function(e){var t=e.consumeChar();if(this.codingSystemLocked_)return"/"==t&&e.consumeChar(),void e.resetParseFunction();switch(t){case"@":this.setEncoding("iso-2022");break;case"G":this.setEncoding("utf-8");break;case"/":switch(t=e.consumeChar()){case"G":case"H":case"I":this.setEncoding("utf-8-locked");break;default:this.warnUnimplemented&&console.warn("Unknown ESC % / argument: "+JSON.stringify(t))}break;default:this.warnUnimplemented&&console.warn("Unknown ESC % argument: "+JSON.stringify(t))}e.resetParseFunction()}},o.VT.ESC["("]=o.VT.ESC[")"]=o.VT.ESC["*"]=o.VT.ESC["+"]=o.VT.ESC["-"]=o.VT.ESC["."]=o.VT.ESC["/"]=function(e,t){e.func=function(e){var r=e.consumeChar();if(""==r)return e.resetParseFunction(),void e.func();var i=this.characterMaps.getMap(r);void 0!==i?"("==t?this.G0=i:")"==t||"-"==t?this.G1=i:"*"==t||"."==t?this.G2=i:"+"!=t&&"/"!=t||(this.G3=i):this.warnUnimplemented&&console.log('Invalid character set for "'+t+'": '+r),e.resetParseFunction()}},o.VT.ESC[6]=o.VT.ignore,o.VT.ESC[7]=function(){this.savedState_.save()},o.VT.ESC[8]=function(){this.savedState_.restore()},o.VT.ESC[9]=o.VT.ignore,o.VT.ESC["="]=function(){this.terminal.keyboard.applicationKeypad=!0},o.VT.ESC[">"]=function(){this.terminal.keyboard.applicationKeypad=!1},o.VT.ESC.F=o.VT.ignore,o.VT.ESC.c=function(){this.reset(),this.terminal.reset()},o.VT.ESC.l=o.VT.ESC.m=o.VT.ignore,o.VT.ESC.n=function(){this.GL="G2"},o.VT.ESC.o=function(){this.GL="G3"},o.VT.ESC["|"]=function(){this.GR="G3"},o.VT.ESC["}"]=function(){this.GR="G2"},o.VT.ESC["~"]=function(){this.GR="G1"},o.VT.OSC[0]=function(e){this.terminal.setWindowTitle(e.args[0])},o.VT.OSC[2]=o.VT.OSC[0],o.VT.OSC[4]=function(e){for(var t=e.args[0].split(";"),r=parseInt(t.length/2),o=this.terminal.getTextAttributes().colorPalette,s=[],n=0;n=o.length||("?"!=l?(l=i.colors.x11ToCSS(l))&&(o[a]=l):(l=i.colors.rgbToX11(o[a]))&&s.push(a+";"+l))}s.length&&this.terminal.io.sendString("]4;"+s.join(";")+"")},o.VT.OSC[9]=function(e){o.notify({body:e.args[0]})},o.VT.OSC[10]=function(e){var t=e.args[0].split(";");if(t){var r=i.colors.x11ToCSS(t.shift());r&&this.terminal.setForegroundColor(r),t.length>0&&(e.args[0]=t.join(";"),o.VT.OSC[11].apply(this,[e]))}},o.VT.OSC[11]=function(e){var t=e.args[0].split(";");if(t){var r=i.colors.x11ToCSS(t.shift());r&&this.terminal.setBackgroundColor(r)}},o.VT.OSC[50]=function(e){var t=e.args[0].match(/CursorShape=(.)/i);if(t)switch(t[1]){case"1":this.terminal.setCursorShape(o.Terminal.cursorShape.BEAM);break;case"2":this.terminal.setCursorShape(o.Terminal.cursorShape.UNDERLINE);break;default:this.terminal.setCursorShape(o.Terminal.cursorShape.BLOCK)}else console.warn("Could not parse OSC 50 args: "+e.args[0])},o.VT.OSC[52]=function(e){var t=e.args[0].match(/^[cps01234567]*;(.*)/);if(t){var r=window.atob(t[1]);r&&this.terminal.copyStringToClipboard(this.decode(r))}},o.VT.OSC[777]=function(e){var t;switch(e.args[0].split(";",1)[0]){case"notify":var r,i;(t=e.args[0].match(/^[^;]+;([^;]*)(;([\s\S]*))?$/))&&(r=t[1],i=t[3]),o.notify({title:r,body:i});break;default:console.warn("Unknown urxvt module: "+e.args[0])}},o.VT.CSI["@"]=function(e){this.terminal.insertSpace(e.iarg(0,1))},o.VT.CSI.A=function(e){this.terminal.cursorUp(e.iarg(0,1))},o.VT.CSI.B=function(e){this.terminal.cursorDown(e.iarg(0,1))},o.VT.CSI.C=function(e){this.terminal.cursorRight(e.iarg(0,1))},o.VT.CSI.D=function(e){this.terminal.cursorLeft(e.iarg(0,1))},o.VT.CSI.E=function(e){this.terminal.cursorDown(e.iarg(0,1)),this.terminal.setCursorColumn(0)},o.VT.CSI.F=function(e){this.terminal.cursorUp(e.iarg(0,1)),this.terminal.setCursorColumn(0)},o.VT.CSI.G=function(e){this.terminal.setCursorColumn(e.iarg(0,1)-1)},o.VT.CSI.H=function(e){this.terminal.setCursorPosition(e.iarg(0,1)-1,e.iarg(1,1)-1)},o.VT.CSI.I=function(e){var t=e.iarg(0,1);t=i.f.clamp(t,1,this.terminal.screenSize.width);for(var r=0;rT"]=o.VT.ignore,o.VT.CSI.X=function(e){this.terminal.eraseToRight(e.iarg(0,1))},o.VT.CSI.Z=function(e){var t=e.iarg(0,1);t=i.f.clamp(t,1,this.terminal.screenSize.width);for(var r=0;rc"]=function(e){this.terminal.io.sendString("[>0;256;0c")},o.VT.CSI.d=function(e){this.terminal.setAbsoluteCursorRow(e.iarg(0,1)-1)},o.VT.CSI.f=o.VT.CSI.H,o.VT.CSI.g=function(e){e.args[0]&&0!=e.args[0]?3==e.args[0]&&this.terminal.clearAllTabStops():this.terminal.clearTabStopAtCursor(!1)},o.VT.CSI.h=function(e){for(var t=0;t=i.colorPalette.length)continue;i.foregroundSource=a}else if(39==s)i.foregroundSource=i.SRC_DEFAULT;else if(s<48)i.backgroundSource=s-40;else if(48==s){var n=r(o);if(null!=n)i.backgroundSource=i.SRC_RGB,i.background=n,o+=5;else{var a=t(o);if(null==a)break;if(o+=2,a>=i.colorPalette.length)continue;i.backgroundSource=a}}else i.backgroundSource=i.SRC_DEFAULT;else s>=90&&s<=97?i.foregroundSource=s-90+8:s>=100&&s<=107&&(i.backgroundSource=s-100+8)}i.setDefaults(this.terminal.getForegroundColor(),this.terminal.getBackgroundColor())}else i.reset()},o.VT.CSI[">m"]=o.VT.ignore,o.VT.CSI.n=function(e){if(5==e.args[0])this.terminal.io.sendString("0n");else if(6==e.args[0]){var t=this.terminal.getCursorRow()+1,r=this.terminal.getCursorColumn()+1;this.terminal.io.sendString("["+t+";"+r+"R")}},o.VT.CSI[">n"]=o.VT.ignore,o.VT.CSI["?n"]=function(e){if(6==e.args[0]){var t=this.terminal.getCursorRow()+1,r=this.terminal.getCursorColumn()+1;this.terminal.io.sendString("["+t+";"+r+"R")}else 15==e.args[0]?this.terminal.io.sendString("[?11n"):25==e.args[0]?this.terminal.io.sendString("[?21n"):26==e.args[0]?this.terminal.io.sendString("[?12;1;0;0n"):53==e.args[0]&&this.terminal.io.sendString("[?50n")},o.VT.CSI[">p"]=o.VT.ignore,o.VT.CSI["!p"]=function(){this.reset(),this.terminal.softReset()},o.VT.CSI.$p=o.VT.ignore,o.VT.CSI["?$p"]=o.VT.ignore,o.VT.CSI['"p']=o.VT.ignore,o.VT.CSI.q=o.VT.ignore,o.VT.CSI[" q"]=function(e){var t=e.args[0];0==t||1==t?(this.terminal.setCursorShape(o.Terminal.cursorShape.BLOCK),this.terminal.setCursorBlink(!0)):2==t?(this.terminal.setCursorShape(o.Terminal.cursorShape.BLOCK),this.terminal.setCursorBlink(!1)):3==t?(this.terminal.setCursorShape(o.Terminal.cursorShape.UNDERLINE),this.terminal.setCursorBlink(!0)):4==t?(this.terminal.setCursorShape(o.Terminal.cursorShape.UNDERLINE),this.terminal.setCursorBlink(!1)):5==t?(this.terminal.setCursorShape(o.Terminal.cursorShape.BEAM),this.terminal.setCursorBlink(!0)):6==t?(this.terminal.setCursorShape(o.Terminal.cursorShape.BEAM),this.terminal.setCursorBlink(!1)):console.warn("Unknown cursor style: "+t)},o.VT.CSI['"q']=o.VT.ignore,o.VT.CSI.r=function(e){var t=e.args,r=t[0]?parseInt(t[0],10)-1:null,i=t[1]?parseInt(t[1],10)-1:null;this.terminal.setVTScrollRegion(r,i),this.terminal.setCursorPosition(0,0)},o.VT.CSI["?r"]=o.VT.ignore,o.VT.CSI.$r=o.VT.ignore,o.VT.CSI.s=function(){this.savedState_.save()},o.VT.CSI["?s"]=o.VT.ignore,o.VT.CSI.t=o.VT.ignore,o.VT.CSI.$t=o.VT.ignore,o.VT.CSI[">t"]=o.VT.ignore,o.VT.CSI[" t"]=o.VT.ignore,o.VT.CSI.u=function(){this.savedState_.restore()},o.VT.CSI[" u"]=o.VT.ignore,o.VT.CSI.$v=o.VT.ignore,o.VT.CSI["'w"]=o.VT.ignore,o.VT.CSI.x=o.VT.ignore,o.VT.CSI["*x"]=o.VT.ignore,o.VT.CSI.$x=o.VT.ignore,o.VT.CSI.z=function(e){if(!(e.args.length<1)){var t=e.args[0];if(0==t){if(e.args.length<2)return;this.terminal.getTextAttributes().tileData=e.args[1]}else 1==t&&(this.terminal.getTextAttributes().tileData=null)}},o.VT.CSI["'z"]=o.VT.ignore,o.VT.CSI.$z=o.VT.ignore,o.VT.CSI["'{"]=o.VT.ignore,o.VT.CSI["'|"]=o.VT.ignore,o.VT.CSI["'}"]=o.VT.ignore,o.VT.CSI["'~"]=o.VT.ignore,i.rtdep("lib.f"),o.VT.CharacterMap=function(e,t){this.description=e,this.GL=null,this.glmapBase_=t,this.sync_()},o.VT.CharacterMap.prototype.sync_=function(e){if(!this.glmapBase_&&!e)return this.GL=null,delete this.glmap_,void delete this.glre_;this.glmap_=e?Object.assign({},this.glmapBase_,e):this.glmapBase_;var t=Object.keys(this.glmap_).map(e=>"\\x"+i.f.zpad(e.charCodeAt(0).toString(16)));this.glre_=new RegExp("["+t.join("")+"]","g"),this.GL=(e=>e.replace(this.glre_,e=>this.glmap_[e]))},o.VT.CharacterMap.prototype.reset=function(){this.glmap_!==this.glmapBase_&&this.sync_()},o.VT.CharacterMap.prototype.setOverrides=function(e){this.sync_(e)},o.VT.CharacterMap.prototype.clone=function(){var e=new o.VT.CharacterMap(this.description,this.glmapBase_);return this.glmap_!==this.glmapBase_&&e.setOverrides(this.glmap_),e},o.VT.CharacterMaps=function(){this.maps_=o.VT.CharacterMaps.DefaultMaps,this.mapsBase_=this.maps_},o.VT.CharacterMaps.prototype.getMap=function(e){return this.maps_.hasOwnProperty(e)?this.maps_[e]:void 0},o.VT.CharacterMaps.prototype.addMap=function(e,t){this.maps_===this.mapsBase_&&(this.maps_=Object.assign({},this.mapsBase_)),this.maps_[e]=t},o.VT.CharacterMaps.prototype.reset=function(){this.maps_!==o.VT.CharacterMaps.DefaultMaps&&(this.maps_=o.VT.CharacterMaps.DefaultMaps)},o.VT.CharacterMaps.prototype.setOverrides=function(e){this.maps_===this.mapsBase_&&(this.maps_=Object.assign({},this.mapsBase_));for(var t in e){var r=this.getMap(t);void 0!==r?(this.maps_[t]=r.clone(),this.maps_[t].setOverrides(e[t])):this.addMap(t,new o.VT.CharacterMap("user "+t,e[t]))}},o.VT.CharacterMaps.DefaultMaps={},o.VT.CharacterMaps.DefaultMaps[0]=new o.VT.CharacterMap("graphic",{"`":"◆",a:"▒",b:"␉",c:"␌",d:"␍",e:"␊",f:"°",g:"±",h:"␤",i:"␋",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"}),o.VT.CharacterMaps.DefaultMaps.A=new o.VT.CharacterMap("british",{"#":"£"}),o.VT.CharacterMaps.DefaultMaps.B=new o.VT.CharacterMap("us",null),o.VT.CharacterMaps.DefaultMaps[4]=new o.VT.CharacterMap("dutch",{"#":"£","@":"¾","[":"IJ","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"}),o.VT.CharacterMaps.DefaultMaps.C=o.VT.CharacterMaps.DefaultMaps[5]=new o.VT.CharacterMap("finnish",{"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"}),o.VT.CharacterMaps.DefaultMaps.R=new o.VT.CharacterMap("french",{"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"}),o.VT.CharacterMaps.DefaultMaps.Q=new o.VT.CharacterMap("french canadian",{"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"}),o.VT.CharacterMaps.DefaultMaps.K=new o.VT.CharacterMap("german",{"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"}),o.VT.CharacterMaps.DefaultMaps.Y=new o.VT.CharacterMap("italian",{"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"}),o.VT.CharacterMaps.DefaultMaps.E=o.VT.CharacterMaps.DefaultMaps[6]=new o.VT.CharacterMap("norwegian/danish",{"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"}),o.VT.CharacterMaps.DefaultMaps.Z=new o.VT.CharacterMap("spanish",{"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"}),o.VT.CharacterMaps.DefaultMaps[7]=o.VT.CharacterMaps.DefaultMaps.H=new o.VT.CharacterMap("swedish",{"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"}),o.VT.CharacterMaps.DefaultMaps["="]=new o.VT.CharacterMap("swiss",{"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"}),i.resource.add("hterm/audio/bell","audio/ogg;base64","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"),i.resource.add("hterm/images/icon-96","image/png;base64","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"),i.resource.add("hterm/concat/date","text/plain","Tue, 22 Aug 2017 06:42:31 +0000"),i.resource.add("hterm/changelog/version","text/plain","1.70"),i.resource.add("hterm/changelog/date","text/plain","2017-08-16"),i.resource.add("hterm/git/HEAD","text/plain","git rev-parse HEAD"),e.exports={hterm:o,lib:i}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CHARSETS={},t.DEFAULT_CHARSET=t.CHARSETS.B,t.CHARSETS[0]={"`":"◆",a:"▒",b:"\t",c:"\f",d:"\r",e:"\n",f:"°",g:"±",h:"␤",i:"\v",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},t.CHARSETS.A={"#":"£"},t.CHARSETS.B=null,t.CHARSETS[4]={"#":"£","@":"¾","[":"ij","\\":"½","]":"|","{":"¨","|":"f","}":"¼","~":"´"},t.CHARSETS.C=t.CHARSETS[5]={"[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS.R={"#":"£","@":"à","[":"°","\\":"ç","]":"§","{":"é","|":"ù","}":"è","~":"¨"},t.CHARSETS.Q={"@":"à","[":"â","\\":"ç","]":"ê","^":"î","`":"ô","{":"é","|":"ù","}":"è","~":"û"},t.CHARSETS.K={"@":"§","[":"Ä","\\":"Ö","]":"Ü","{":"ä","|":"ö","}":"ü","~":"ß"},t.CHARSETS.Y={"#":"£","@":"§","[":"°","\\":"ç","]":"é","`":"ù","{":"à","|":"ò","}":"è","~":"ì"},t.CHARSETS.E=t.CHARSETS[6]={"@":"Ä","[":"Æ","\\":"Ø","]":"Å","^":"Ü","`":"ä","{":"æ","|":"ø","}":"å","~":"ü"},t.CHARSETS.Z={"#":"£","@":"§","[":"¡","\\":"Ñ","]":"¿","{":"°","|":"ñ","}":"ç"},t.CHARSETS.H=t.CHARSETS[7]={"@":"É","[":"Ä","\\":"Ö","]":"Å","^":"Ü","`":"é","{":"ä","|":"ö","}":"å","~":"ü"},t.CHARSETS["="]={"#":"ù","@":"à","[":"é","\\":"ç","]":"ê","^":"î",_:"è","`":"ô","{":"ä","|":"ö","}":"ü","~":"û"}},function(e,t,r){/** + * Implements the attach method, that attaches the terminal to a WebSocket stream. + * @module xterm/addons/attach/attach + * @license MIT + */ +!function(t){e.exports=t(r(0))}(function(e){"use strict";var t={};return t.attach=function(e,t,r,i){r=void 0===r||r,e.socket=t,e._flushBuffer=function(){e.write(e._attachSocketBuffer),e._attachSocketBuffer=null,clearTimeout(e._attachSocketBufferTimer),e._attachSocketBufferTimer=null},e._pushToBuffer=function(t){e._attachSocketBuffer?e._attachSocketBuffer+=t:(e._attachSocketBuffer=t,setTimeout(e._flushBuffer,10))},e._getMessage=function(t){i?e._pushToBuffer(t.data):e.write(t.data)},e._sendData=function(e){t.send(e)},t.addEventListener("message",e._getMessage),r&&e.on("data",e._sendData),t.addEventListener("close",e.detach.bind(e,t)),t.addEventListener("error",e.detach.bind(e,t))},t.detach=function(e,t){e.off("data",e._sendData),(t=void 0===t?e.socket:t)&&t.removeEventListener("message",e._getMessage),delete e.socket},e.prototype.attach=function(e,r,i){return t.attach(this,e,r,i)},e.prototype.detach=function(e){return t.detach(this,e)},t})},function(e,t,r){/** + * Fit terminal columns and rows to the dimensions of its DOM element. + * + * ## Approach + * - Rows: Truncate the division of the terminal parent element height by the terminal row height. + * + * - Columns: Truncate the division of the terminal parent element width by the terminal character + * width (apply display: inline at the terminal row and truncate its width with the current + * number of columns). + * @module xterm/addons/fit/fit + * @license MIT + */ +!function(t){e.exports=t(r(0))}(function(e){var t={};return t.proposeGeometry=function(e){if(!e.element.parentElement)return null;var t,r,i,o,s=window.getComputedStyle(e.element.parentElement),n=parseInt(s.getPropertyValue("height")),a=Math.max(0,parseInt(s.getPropertyValue("width"))-17),l=window.getComputedStyle(e.element),h=n-(parseInt(l.getPropertyValue("padding-top"))+parseInt(l.getPropertyValue("padding-bottom"))),c=a-(parseInt(l.getPropertyValue("padding-right"))+parseInt(l.getPropertyValue("padding-left"))),u=(e.rowContainer,e.rowContainer.firstElementChild),d=u.innerHTML;return u.style.display="inline",u.innerHTML="W",i=u.getBoundingClientRect().width,u.style.display="",t=u.getBoundingClientRect().height,u.innerHTML=d,r=parseInt(h/t),o=parseInt(c/i),{cols:o,rows:r}},t.fit=function(e){var r=t.proposeGeometry(e);r&&e.resize(r.cols,r.rows)},e.prototype.proposeGeometry=function(){return t.proposeGeometry(this)},e.prototype.fit=function(){return t.fit(this)},t})},function(e,t,r){/** + * Fullscreen addon for xterm.js + * @module xterm/addons/fullscreen/fullscreen + * @license MIT + */ +!function(t){e.exports=t(r(0))}(function(e){var t={};return t.toggleFullScreen=function(e,t){var r;r=void 0===t?e.element.classList.contains("fullscreen")?"remove":"add":t?"add":"remove",e.element.classList[r]("fullscreen")},e.prototype.toggleFullscreen=function(e){t.toggleFullScreen(this,e)},t})},function(e,t,r){/** + * This module provides methods for attaching a terminal to a terminado WebSocket stream. + * + * @module xterm/addons/terminado/terminado + * @license MIT + */ +!function(t){e.exports=t(r(0))}(function(e){"use strict";var t={};return t.terminadoAttach=function(e,t,r,i){r=void 0===r||r,e.socket=t,e._flushBuffer=function(){e.write(e._attachSocketBuffer),e._attachSocketBuffer=null,clearTimeout(e._attachSocketBufferTimer),e._attachSocketBufferTimer=null},e._pushToBuffer=function(t){e._attachSocketBuffer?e._attachSocketBuffer+=t:(e._attachSocketBuffer=t,setTimeout(e._flushBuffer,10))},e._getMessage=function(t){var r=JSON.parse(t.data);"stdout"==r[0]&&(i?e._pushToBuffer(r[1]):e.write(r[1]))},e._sendData=function(e){t.send(JSON.stringify(["stdin",e]))},e._setSize=function(e){t.send(JSON.stringify(["set_size",e.rows,e.cols]))},t.addEventListener("message",e._getMessage),r&&e.on("data",e._sendData),e.on("resize",e._setSize),t.addEventListener("close",e.terminadoDetach.bind(e,t)),t.addEventListener("error",e.terminadoDetach.bind(e,t))},t.terminadoDetach=function(e,t){e.off("data",e._sendData),(t=void 0===t?e.socket:t)&&t.removeEventListener("message",e._getMessage),delete e.socket},e.prototype.terminadoAttach=function(e,r,i){return t.terminadoAttach(this,e,r,i)},e.prototype.terminadoDetach=function(e){return t.terminadoDetach(this,e)},t})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(27),o="undefined"==typeof navigator,s=o?"node":navigator.userAgent,n=o?"node":navigator.platform;t.isFirefox=!!~s.indexOf("Firefox"),t.isMSIE=!!~s.indexOf("MSIE")||!!~s.indexOf("Trident"),t.isMac=i.contains(["Macintosh","MacIntel","MacPPC","Mac68K"],n),t.isIpad="iPad"===n,t.isIphone="iPhone"===n,t.isMSWindows=i.contains(["Windows","Win16","Win32","WinCE"],n),t.isLinux=n.indexOf("Linux")>=0},function(e,t,r){"use strict";function i(e,t){if(null==e.pageX)return null;for(var r=e.pageX,i=e.pageY;t&&t!==self.document.documentElement;)r-=t.offsetLeft,i-=t.offsetTop,t="offsetParent"in t?t.offsetParent:t.parentElement;return[r,i]}function o(e,t,r,o,s,n){var a=i(e,t);return a[0]=Math.ceil((a[0]+(n?r.width/2:0))/r.width),a[1]=Math.ceil(a[1]/r.height),a[0]=Math.min(Math.max(a[0],1),o+1),a[1]=Math.min(Math.max(a[1],1),s+1),a}Object.defineProperty(t,"__esModule",{value:!0}),t.getCoordsRelativeToElement=i,t.getCoords=o,t.getRawByteCoords=function(e,t,r,i,s){var n=o(e,t,r,i,s),a=n[0],l=n[1];return a+=32,l+=32,{x:a,y:l}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(3),o=function(){function e(e){this.elem=e,i.hterm.defaultStorage=new i.lib.Storage.Memory,this.term=new i.hterm.Terminal,this.term.getPrefs().set("send-encoding","raw"),this.term.decorate(this.elem),this.io=this.term.io.push(),this.term.installKeyboard()}return e.prototype.info=function(){return{columns:this.columns,rows:this.rows}},e.prototype.output=function(e){null!=this.term.io&&this.term.io.writeUTF8(e)},e.prototype.showMessage=function(e,t){this.message=e,t>0?this.term.io.showOverlay(e,t):this.term.io.showOverlay(e,null)},e.prototype.removeMessage=function(){this.term.io.showOverlay(this.message,0)},e.prototype.setWindowTitle=function(e){this.term.setWindowTitle(e)},e.prototype.setPreferences=function(e){var t=this;Object.keys(e).forEach(function(r){t.term.getPrefs().set(r,e[r])})},e.prototype.onInput=function(e){this.io.onVTKeystroke=function(t){e(t)},this.io.sendString=function(t){e(t)}},e.prototype.onResize=function(e){var t=this;this.io.onTerminalResize=function(r,i){t.columns=r,t.rows=i,e(r,i)}},e.prototype.deactivate=function(){this.io.onVTKeystroke=null,this.io.sendString=null,this.io.onTerminalResize=null,this.term.uninstallKeyboard()},e.prototype.reset=function(){this.removeMessage(),this.term.installKeyboard()},e.prototype.close=function(){this.term.uninstallKeyboard()},e}();t.Hterm=o},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){this.url=e,this.protocols=t}return e.prototype.create=function(){return new o(this.url,this.protocols)},e}();t.ConnectionFactory=i;var o=function(){function e(e,t){this.bare=new WebSocket(e,t)}return e.prototype.open=function(){},e.prototype.close=function(){this.bare.close()},e.prototype.send=function(e){this.bare.send(e)},e.prototype.isOpen=function(){return this.bare.readyState==WebSocket.CONNECTING||this.bare.readyState==WebSocket.OPEN},e.prototype.onOpen=function(e){this.bare.onopen=function(t){e()}},e.prototype.onReceive=function(e){this.bare.onmessage=function(t){e(t.data)}},e.prototype.onClose=function(e){this.bare.onclose=function(t){e()}},e}();t.Connection=o},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.protocols=["webtty"],t.msgInputUnknown="0",t.msgInput="1",t.msgPing="2",t.msgResizeTerminal="3",t.msgUnknownOutput="0",t.msgOutput="1",t.msgPong="2",t.msgSetWindowTitle="3",t.msgSetPreferences="4",t.msgSetReconnect="5";var i=function(){function e(e,t,r,i){this.term=e,this.connectionFactory=t,this.args=r,this.authToken=i,this.reconnect=-1}return e.prototype.open=function(){var e,r,i=this,o=this.connectionFactory.create(),s=function(){o.onOpen(function(){var r=i.term.info();o.send(JSON.stringify({Arguments:i.args,AuthToken:i.authToken}));var s=function(e,r){o.send(t.msgResizeTerminal+JSON.stringify({columns:e,rows:r}))};i.term.onResize(s),s(r.columns,r.rows),i.term.onInput(function(e){o.send(t.msgInput+e)}),e=setInterval(function(){o.send(t.msgPing)},3e4)}),o.onReceive(function(e){var r=e.slice(1);switch(e[0]){case t.msgOutput:i.term.output(atob(r));break;case t.msgPong:break;case t.msgSetWindowTitle:i.term.setWindowTitle(r);break;case t.msgSetPreferences:var o=JSON.parse(r);i.term.setPreferences(o);break;case t.msgSetReconnect:var s=JSON.parse(r);console.log("Enabling reconnect: "+s+" seconds"),i.reconnect=s}}),o.onClose(function(){clearInterval(e),i.term.deactivate(),i.term.showMessage("Connection Closed",0),i.reconnect>0&&(r=setTimeout(function(){o=i.connectionFactory.create(),i.term.reset(),s()},1e3*i.reconnect))}),o.open()};return s(),function(){clearTimeout(r),o.close()}},e}();t.WebTTY=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(0),o=r(3);i.loadAddon("fit");var s=function(){function e(e){var t=this;this.elem=e,this.term=new i,this.message=e.ownerDocument.createElement("div"),this.message.className="xterm-overlay",this.messageTimeout=2e3,this.resizeListener=function(){t.term.fit(),t.term.scrollToBottom(),t.showMessage(String(t.term.cols)+"x"+String(t.term.rows),t.messageTimeout)},this.term.on("open",function(){t.resizeListener(),window.addEventListener("resize",function(){t.resizeListener()})}),this.term.open(e,!0),this.decoder=new o.lib.UTF8Decoder}return e.prototype.info=function(){return{columns:this.term.cols,rows:this.term.rows}},e.prototype.output=function(e){this.term.write(this.decoder.decode(e))},e.prototype.showMessage=function(e,t){var r=this;this.message.textContent=e,this.elem.appendChild(this.message),this.messageTimer&&clearTimeout(this.messageTimer),t>0&&(this.messageTimer=setTimeout(function(){r.elem.removeChild(r.message)},t))},e.prototype.removeMessage=function(){this.message.parentNode==this.elem&&this.elem.removeChild(this.message)},e.prototype.setWindowTitle=function(e){document.title=e},e.prototype.setPreferences=function(e){},e.prototype.onInput=function(e){this.term.on("data",function(t){e(t)})},e.prototype.onResize=function(e){this.term.on("resize",function(t){e(t.cols,t.rows)})},e.prototype.deactivate=function(){this.term.off("data"),this.term.off("resize"),this.term.blur()},e.prototype.reset=function(){this.removeMessage(),this.term.clear()},e.prototype.close=function(){window.removeEventListener("resize",this.resizeListener),this.term.destroy()},e}();t.Xterm=s},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t,r){this.textarea=e,this.compositionView=t,this.terminal=r,this.isComposing=!1,this.isSendingComposition=!1,this.compositionPosition={start:null,end:null}}return e.prototype.compositionstart=function(){this.isComposing=!0,this.compositionPosition.start=this.textarea.value.length,this.compositionView.textContent="",this.compositionView.classList.add("active")},e.prototype.compositionupdate=function(e){var t=this;this.compositionView.textContent=e.data,this.updateCompositionElements(),setTimeout(function(){t.compositionPosition.end=t.textarea.value.length},0)},e.prototype.compositionend=function(){this.finalizeComposition(!0)},e.prototype.keydown=function(e){if(this.isComposing||this.isSendingComposition){if(229===e.keyCode)return!1;if(16===e.keyCode||17===e.keyCode||18===e.keyCode)return!1;this.finalizeComposition(!1)}return 229!==e.keyCode||(this.handleAnyTextareaChanges(),!1)},e.prototype.finalizeComposition=function(e){var t=this;if(this.compositionView.classList.remove("active"),this.isComposing=!1,this.clearTextareaPosition(),e){var r={start:this.compositionPosition.start,end:this.compositionPosition.end};this.isSendingComposition=!0,setTimeout(function(){if(t.isSendingComposition){t.isSendingComposition=!1;var e=void 0;e=t.isComposing?t.textarea.value.substring(r.start,r.end):t.textarea.value.substring(r.start),t.terminal.handler(e)}},0)}else{this.isSendingComposition=!1;var i=this.textarea.value.substring(this.compositionPosition.start,this.compositionPosition.end);this.terminal.handler(i)}},e.prototype.handleAnyTextareaChanges=function(){var e=this,t=this.textarea.value;setTimeout(function(){if(!e.isComposing){var r=e.textarea.value.replace(t,"");r.length>0&&e.terminal.handler(r)}},0)},e.prototype.updateCompositionElements=function(e){var t=this;if(this.isComposing){var r=this.terminal.element.querySelector(".terminal-cursor");if(r){var i=this.terminal.element.querySelector(".xterm-rows").offsetTop+r.offsetTop;this.compositionView.style.left=r.offsetLeft+"px",this.compositionView.style.top=i+"px",this.compositionView.style.height=r.offsetHeight+"px",this.compositionView.style.lineHeight=r.offsetHeight+"px";var o=this.compositionView.getBoundingClientRect();this.textarea.style.left=r.offsetLeft+"px",this.textarea.style.top=i+"px",this.textarea.style.width=o.width+"px",this.textarea.style.height=o.height+"px",this.textarea.style.lineHeight=o.height+"px"}e||setTimeout(function(){return t.updateCompositionElements(!0)},0)}},e.prototype.clearTextareaPosition=function(){this.textarea.style.left="",this.textarea.style.top=""},e}();t.CompositionHelper=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(2),o=r(4),s=function(){function e(e){this._terminal=e}return e.prototype.addChar=function(e,t){if(e>=" "){var r=n(t);this._terminal.charset&&this._terminal.charset[e]&&(e=this._terminal.charset[e]);var i=this._terminal.y+this._terminal.ybase;if(!r&&this._terminal.x)return void(this._terminal.lines.get(i)[this._terminal.x-1]&&(this._terminal.lines.get(i)[this._terminal.x-1][2]?this._terminal.lines.get(i)[this._terminal.x-1][1]+=e:this._terminal.lines.get(i)[this._terminal.x-2]&&(this._terminal.lines.get(i)[this._terminal.x-2][1]+=e),this._terminal.updateRange(this._terminal.y)));if(this._terminal.x+r-1>=this._terminal.cols)if(this._terminal.wraparoundMode)this._terminal.x=0,++this._terminal.y>this._terminal.scrollBottom?(this._terminal.y--,this._terminal.scroll(!0)):this._terminal.lines.get(this._terminal.y).isWrapped=!0;else if(2===r)return;if(i=this._terminal.y+this._terminal.ybase,this._terminal.insertMode)for(var o=0;othis._terminal.scrollBottom&&(this._terminal.y--,this._terminal.scroll()),this._terminal.x>=this._terminal.cols&&this._terminal.x--},e.prototype.carriageReturn=function(){this._terminal.x=0},e.prototype.backspace=function(){this._terminal.x>0&&this._terminal.x--},e.prototype.tab=function(){this._terminal.x=this._terminal.nextStop()},e.prototype.shiftOut=function(){this._terminal.setgLevel(1)},e.prototype.shiftIn=function(){this._terminal.setgLevel(0)},e.prototype.insertChars=function(e){var t,r,i,o;for((t=e[0])<1&&(t=1),r=this._terminal.y+this._terminal.ybase,i=this._terminal.x,o=[this._terminal.eraseAttr()," ",1];t--&&i=this._terminal.rows&&(this._terminal.y=this._terminal.rows-1),this._terminal.x>=this._terminal.cols&&this._terminal.x--},e.prototype.cursorForward=function(e){var t=e[0];t<1&&(t=1),this._terminal.x+=t,this._terminal.x>=this._terminal.cols&&(this._terminal.x=this._terminal.cols-1)},e.prototype.cursorBackward=function(e){var t=e[0];t<1&&(t=1),this._terminal.x>=this._terminal.cols&&this._terminal.x--,this._terminal.x-=t,this._terminal.x<0&&(this._terminal.x=0)},e.prototype.cursorNextLine=function(e){var t=e[0];t<1&&(t=1),this._terminal.y+=t,this._terminal.y>=this._terminal.rows&&(this._terminal.y=this._terminal.rows-1),this._terminal.x=0},e.prototype.cursorPrecedingLine=function(e){var t=e[0];t<1&&(t=1),this._terminal.y-=t,this._terminal.y<0&&(this._terminal.y=0),this._terminal.x=0},e.prototype.cursorCharAbsolute=function(e){var t=e[0];t<1&&(t=1),this._terminal.x=t-1},e.prototype.cursorPosition=function(e){var t,r;t=e[0]-1,r=e.length>=2?e[1]-1:0,t<0?t=0:t>=this._terminal.rows&&(t=this._terminal.rows-1),r<0?r=0:r>=this._terminal.cols&&(r=this._terminal.cols-1),this._terminal.x=r,this._terminal.y=t},e.prototype.cursorForwardTab=function(e){for(var t=e[0]||1;t--;)this._terminal.x=this._terminal.nextStop()},e.prototype.eraseInDisplay=function(e){var t;switch(e[0]){case 0:for(this._terminal.eraseRight(this._terminal.x,this._terminal.y),t=this._terminal.y+1;t0&&(this._terminal.lines.trimStart(r),this._terminal.ybase=Math.max(this._terminal.ybase-r,0),this._terminal.ydisp=Math.max(this._terminal.ydisp-r,0))}},e.prototype.eraseInLine=function(e){switch(e[0]){case 0:this._terminal.eraseRight(this._terminal.x,this._terminal.y);break;case 1:this._terminal.eraseLeft(this._terminal.x,this._terminal.y);break;case 2:this._terminal.eraseLine(this._terminal.y)}},e.prototype.insertLines=function(e){var t,r,i;for((t=e[0])<1&&(t=1),r=this._terminal.y+this._terminal.ybase,i=this._terminal.rows-1-this._terminal.scrollBottom,i=this._terminal.rows-1+this._terminal.ybase-i+1;t--;)this._terminal.lines.length===this._terminal.lines.maxLength&&(this._terminal.lines.trimStart(1),this._terminal.ybase--,this._terminal.ydisp--,r--,i--),this._terminal.lines.splice(r,0,this._terminal.blankLine(!0)),this._terminal.lines.splice(i,1);this._terminal.updateRange(this._terminal.y),this._terminal.updateRange(this._terminal.scrollBottom)},e.prototype.deleteLines=function(e){var t,r,i;for((t=e[0])<1&&(t=1),r=this._terminal.y+this._terminal.ybase,i=this._terminal.rows-1-this._terminal.scrollBottom,i=this._terminal.rows-1+this._terminal.ybase-i;t--;)this._terminal.lines.length===this._terminal.lines.maxLength&&(this._terminal.lines.trimStart(1),this._terminal.ybase-=1,this._terminal.ydisp-=1),this._terminal.lines.splice(i+1,0,this._terminal.blankLine(!0)),this._terminal.lines.splice(r,1);this._terminal.updateRange(this._terminal.y),this._terminal.updateRange(this._terminal.scrollBottom)},e.prototype.deleteChars=function(e){var t,r,i;for((t=e[0])<1&&(t=1),r=this._terminal.y+this._terminal.ybase,i=[this._terminal.eraseAttr()," ",1];t--;)this._terminal.lines.get(r).splice(this._terminal.x,1),this._terminal.lines.get(r).push(i)},e.prototype.scrollUp=function(e){for(var t=e[0]||1;t--;)this._terminal.lines.splice(this._terminal.ybase+this._terminal.scrollTop,1),this._terminal.lines.splice(this._terminal.ybase+this._terminal.scrollBottom,0,this._terminal.blankLine());this._terminal.updateRange(this._terminal.scrollTop),this._terminal.updateRange(this._terminal.scrollBottom)},e.prototype.scrollDown=function(e){for(var t=e[0]||1;t--;)this._terminal.lines.splice(this._terminal.ybase+this._terminal.scrollBottom,1),this._terminal.lines.splice(this._terminal.ybase+this._terminal.scrollTop,0,this._terminal.blankLine());this._terminal.updateRange(this._terminal.scrollTop),this._terminal.updateRange(this._terminal.scrollBottom)},e.prototype.eraseChars=function(e){var t,r,i,o;for((t=e[0])<1&&(t=1),r=this._terminal.y+this._terminal.ybase,i=this._terminal.x,o=[this._terminal.eraseAttr()," ",1];t--&&i=this._terminal.cols&&(this._terminal.x=this._terminal.cols-1)},e.prototype.HPositionRelative=function(e){var t=e[0];t<1&&(t=1),this._terminal.x+=t,this._terminal.x>=this._terminal.cols&&(this._terminal.x=this._terminal.cols-1)},e.prototype.repeatPrecedingCharacter=function(e){for(var t=e[0]||1,r=this._terminal.lines.get(this._terminal.ybase+this._terminal.y),i=r[this._terminal.x-1]||[this._terminal.defAttr," ",1];t--;)r[this._terminal.x++]=i},e.prototype.sendDeviceAttributes=function(e){e[0]>0||(this._terminal.prefix?">"===this._terminal.prefix&&(this._terminal.is("xterm")?this._terminal.send(i.C0.ESC+"[>0;276;0c"):this._terminal.is("rxvt-unicode")?this._terminal.send(i.C0.ESC+"[>85;95;0c"):this._terminal.is("linux")?this._terminal.send(e[0]+"c"):this._terminal.is("screen")&&this._terminal.send(i.C0.ESC+"[>83;40003;0c")):this._terminal.is("xterm")||this._terminal.is("rxvt-unicode")||this._terminal.is("screen")?this._terminal.send(i.C0.ESC+"[?1;2c"):this._terminal.is("linux")&&this._terminal.send(i.C0.ESC+"[?6c"))},e.prototype.linePosAbsolute=function(e){var t=e[0];t<1&&(t=1),this._terminal.y=t-1,this._terminal.y>=this._terminal.rows&&(this._terminal.y=this._terminal.rows-1)},e.prototype.VPositionRelative=function(e){var t=e[0];t<1&&(t=1),this._terminal.y+=t,this._terminal.y>=this._terminal.rows&&(this._terminal.y=this._terminal.rows-1),this._terminal.x>=this._terminal.cols&&this._terminal.x--},e.prototype.HVPosition=function(e){e[0]<1&&(e[0]=1),e[1]<1&&(e[1]=1),this._terminal.y=e[0]-1,this._terminal.y>=this._terminal.rows&&(this._terminal.y=this._terminal.rows-1),this._terminal.x=e[1]-1,this._terminal.x>=this._terminal.cols&&(this._terminal.x=this._terminal.cols-1)},e.prototype.tabClear=function(e){var t=e[0];t<=0?delete this._terminal.tabs[this._terminal.x]:3===t&&(this._terminal.tabs={})},e.prototype.setMode=function(e){if(e.length>1)for(var t=0;t1e3,this._terminal.mouseEvents=!0,this._terminal.element.classList.add("enable-mouse-events"),this._terminal.selectionManager.disable(),this._terminal.log("Binding to mouse events.");break;case 1004:this._terminal.sendFocus=!0;break;case 1005:this._terminal.utfMouse=!0;break;case 1006:this._terminal.sgrMouse=!0;break;case 1015:this._terminal.urxvtMouse=!0;break;case 25:this._terminal.cursorHidden=!1;break;case 1049:case 47:case 1047:if(!this._terminal.normal){var r={lines:this._terminal.lines,ybase:this._terminal.ybase,ydisp:this._terminal.ydisp,x:this._terminal.x,y:this._terminal.y,scrollTop:this._terminal.scrollTop,scrollBottom:this._terminal.scrollBottom,tabs:this._terminal.tabs};this._terminal.reset(),this._terminal.viewport.syncScrollArea(),this._terminal.normal=r,this._terminal.showCursor()}}}else switch(e[0]){case 4:this._terminal.insertMode=!0}},e.prototype.resetMode=function(e){if(e.length>1)for(var t=0;t>18,s=this._terminal.curAttr>>9&511,n=511&this._terminal.curAttr;i=30&&t<=37?s=t-30:t>=40&&t<=47?n=t-40:t>=90&&t<=97?s=(t+=8)-90:t>=100&&t<=107?n=(t+=8)-100:0===t?(o=this._terminal.defAttr>>18,s=this._terminal.defAttr>>9&511,n=511&this._terminal.defAttr):1===t?o|=1:4===t?o|=2:5===t?o|=4:7===t?o|=8:8===t?o|=16:22===t?o&=-2:24===t?o&=-3:25===t?o&=-5:27===t?o&=-9:28===t?o&=-17:39===t?s=this._terminal.defAttr>>9&511:49===t?n=511&this._terminal.defAttr:38===t?2===e[i+1]?(i+=2,-1===(s=this._terminal.matchColor(255&e[i],255&e[i+1],255&e[i+2]))&&(s=511),i+=2):5===e[i+1]&&(s=t=255&e[i+=2]):48===t?2===e[i+1]?(i+=2,-1===(n=this._terminal.matchColor(255&e[i],255&e[i+1],255&e[i+2]))&&(n=511),i+=2):5===e[i+1]&&(n=t=255&e[i+=2]):100===t?(s=this._terminal.defAttr>>9&511,n=511&this._terminal.defAttr):this._terminal.error("Unknown SGR attribute: %d.",t);this._terminal.curAttr=o<<18|s<<9|n}else this._terminal.curAttr=this._terminal.defAttr},e.prototype.deviceStatus=function(e){if(this._terminal.prefix){if("?"===this._terminal.prefix)switch(e[0]){case 6:this._terminal.send(i.C0.ESC+"[?"+(this._terminal.y+1)+";"+(this._terminal.x+1)+"R")}}else switch(e[0]){case 5:this._terminal.send(i.C0.ESC+"[0n");break;case 6:this._terminal.send(i.C0.ESC+"["+(this._terminal.y+1)+";"+(this._terminal.x+1)+"R")}},e.prototype.softReset=function(e){this._terminal.cursorHidden=!1,this._terminal.insertMode=!1,this._terminal.originMode=!1,this._terminal.wraparoundMode=!0,this._terminal.applicationKeypad=!1,this._terminal.viewport.syncScrollArea(),this._terminal.applicationCursor=!1,this._terminal.scrollTop=0,this._terminal.scrollBottom=this._terminal.rows-1,this._terminal.curAttr=this._terminal.defAttr,this._terminal.x=this._terminal.y=0,this._terminal.charset=null,this._terminal.glevel=0,this._terminal.charsets=[null]},e.prototype.setCursorStyle=function(e){var t=e[0]<1?1:e[0];switch(t){case 1:case 2:this._terminal.setOption("cursorStyle","block");break;case 3:case 4:this._terminal.setOption("cursorStyle","underline");break;case 5:case 6:this._terminal.setOption("cursorStyle","bar")}var r=t%2==1;this._terminal.setOption("cursorBlink",r)},e.prototype.setScrollRegion=function(e){this._terminal.prefix||(this._terminal.scrollTop=(e[0]||1)-1,this._terminal.scrollBottom=(e[1]&&e[1]<=this._terminal.rows?e[1]:this._terminal.rows)-1,this._terminal.x=0,this._terminal.y=0)},e.prototype.saveCursor=function(e){this._terminal.savedX=this._terminal.x,this._terminal.savedY=this._terminal.y},e.prototype.restoreCursor=function(e){this._terminal.x=this._terminal.savedX||0,this._terminal.y=this._terminal.savedY||0},e}();t.InputHandler=s;var n=function(e){function t(e){var t,r=0,o=i.length-1;if(ei[o][1])return!1;for(;o>=r;)if(t=Math.floor((r+o)/2),e>i[t][1])r=t+1;else{if(!(e=4352&&(e<=4447||9001===e||9002===e||e>=11904&&e<=42191&&12351!==e||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072&&e<=196605||e>=196608&&e<=262141)}var i=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]];return function(i){return 0===i?e.nul:i<32||i>=127&&i<160?e.control:t(i)?0:r(i)?2:1}}({nul:0,control:0})},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=new RegExp("(?:^|[^\\da-z\\.-]+)((https?:\\/\\/)((([\\da-z\\.-]+)\\.([a-z\\.]{2,6}))|((\\d{1,3}\\.){3}\\d{1,3})|(localhost))(:\\d{1,5})?(\\/[\\/\\w\\.\\-%~]*)*(\\?[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?(#[0-9\\w\\[\\]\\(\\)\\/\\?\\!#@$%&'*+,:;~\\=\\.\\-]*)?)($|[^\\/\\w\\.\\-%]+)"),o=0,s=function(){function e(){this._nextLinkMatcherId=o,this._rowTimeoutIds=[],this._linkMatchers=[],this.registerLinkMatcher(i,null,{matchIndex:1})}return e.prototype.attachToDom=function(e,t){this._document=e,this._rows=t},e.prototype.linkifyRow=function(t){if(this._document){var r=this._rowTimeoutIds[t];r&&clearTimeout(r),this._rowTimeoutIds[t]=setTimeout(this._linkifyRow.bind(this,t),e.TIME_BEFORE_LINKIFY)}},e.prototype.setHypertextLinkHandler=function(e){this._linkMatchers[o].handler=e},e.prototype.setHypertextValidationCallback=function(e){this._linkMatchers[o].validationCallback=e},e.prototype.registerLinkMatcher=function(e,t,r){if(void 0===r&&(r={}),this._nextLinkMatcherId!==o&&!t)throw new Error("handler must be defined");var i={id:this._nextLinkMatcherId++,regex:e,handler:t,matchIndex:r.matchIndex,validationCallback:r.validationCallback,priority:r.priority||0};return this._addLinkMatcherToList(i),i.id},e.prototype._addLinkMatcherToList=function(e){if(0!==this._linkMatchers.length){for(var t=this._linkMatchers.length-1;t>=0;t--)if(e.priority<=this._linkMatchers[t].priority)return void this._linkMatchers.splice(t+1,0,e);this._linkMatchers.splice(0,0,e)}else this._linkMatchers.push(e)},e.prototype.deregisterLinkMatcher=function(e){for(var t=1;t0){if(i.validationCallback)for(var s=function(e){var t=o[e];i.validationCallback(t.textContent,t,function(e){e||t.classList.add("xterm-invalid-link")})},n=0;n=0){var d=this._createAnchorElement(a,t.handler,i);if(c.textContent.length===a.length)if(3===c.nodeType)this._replaceNode(c,d);else{var p=c;if("A"===p.nodeName)return r;p.innerHTML="",p.appendChild(d)}else if(c.childNodes.length>1)for(var f=0;f"]=function(e){return e.setPrefix(">")},a["!"]=function(e){return e.setPrefix("!")},a[0]=function(e){return e.setParam(10*e.getParam())},a[1]=function(e){return e.setParam(10*e.getParam()+1)},a[2]=function(e){return e.setParam(10*e.getParam()+2)},a[3]=function(e){return e.setParam(10*e.getParam()+3)},a[4]=function(e){return e.setParam(10*e.getParam()+4)},a[5]=function(e){return e.setParam(10*e.getParam()+5)},a[6]=function(e){return e.setParam(10*e.getParam()+6)},a[7]=function(e){return e.setParam(10*e.getParam()+7)},a[8]=function(e){return e.setParam(10*e.getParam()+8)},a[9]=function(e){return e.setParam(10*e.getParam()+9)},a.$=function(e){return e.setPostfix("$")},a['"']=function(e){return e.setPostfix('"')},a[" "]=function(e){return e.setPostfix(" ")},a["'"]=function(e){return e.setPostfix("'")},a[";"]=function(e){return e.finalizeParam()},a[i.C0.CAN]=function(e){return e.setState(h.NORMAL)};var l={};l["@"]=function(e,t,r){return e.insertChars(t)},l.A=function(e,t,r){return e.cursorUp(t)},l.B=function(e,t,r){return e.cursorDown(t)},l.C=function(e,t,r){return e.cursorForward(t)},l.D=function(e,t,r){return e.cursorBackward(t)},l.E=function(e,t,r){return e.cursorNextLine(t)},l.F=function(e,t,r){return e.cursorPrecedingLine(t)},l.G=function(e,t,r){return e.cursorCharAbsolute(t)},l.H=function(e,t,r){return e.cursorPosition(t)},l.I=function(e,t,r){return e.cursorForwardTab(t)},l.J=function(e,t,r){return e.eraseInDisplay(t)},l.K=function(e,t,r){return e.eraseInLine(t)},l.L=function(e,t,r){return e.insertLines(t)},l.M=function(e,t,r){return e.deleteLines(t)},l.P=function(e,t,r){return e.deleteChars(t)},l.S=function(e,t,r){return e.scrollUp(t)},l.T=function(e,t,r){t.length<2&&!r&&e.scrollDown(t)},l.X=function(e,t,r){return e.eraseChars(t)},l.Z=function(e,t,r){return e.cursorBackwardTab(t)},l["`"]=function(e,t,r){return e.charPosAbsolute(t)},l.a=function(e,t,r){return e.HPositionRelative(t)},l.b=function(e,t,r){return e.repeatPrecedingCharacter(t)},l.c=function(e,t,r){return e.sendDeviceAttributes(t)},l.d=function(e,t,r){return e.linePosAbsolute(t)},l.e=function(e,t,r){return e.VPositionRelative(t)},l.f=function(e,t,r){return e.HVPosition(t)},l.g=function(e,t,r){return e.tabClear(t)},l.h=function(e,t,r){return e.setMode(t)},l.l=function(e,t,r){return e.resetMode(t)},l.m=function(e,t,r){return e.charAttributes(t)},l.n=function(e,t,r){return e.deviceStatus(t)},l.p=function(e,t,r){switch(r){case"!":e.softReset(t)}},l.q=function(e,t,r,i){" "===i&&e.setCursorStyle(t)},l.r=function(e,t){return e.setScrollRegion(t)},l.s=function(e,t){return e.saveCursor(t)},l.u=function(e,t){return e.restoreCursor(t)},l[i.C0.CAN]=function(e,t,r,i,o){return o.setState(h.NORMAL)};var h;!function(e){e[e.NORMAL=0]="NORMAL",e[e.ESCAPED=1]="ESCAPED",e[e.CSI_PARAM=2]="CSI_PARAM",e[e.CSI=3]="CSI",e[e.OSC=4]="OSC",e[e.CHARSET=5]="CHARSET",e[e.DCS=6]="DCS",e[e.IGNORE=7]="IGNORE"}(h||(h={}));var c=function(){function e(e,t){this._inputHandler=e,this._terminal=t,this._state=h.NORMAL}return e.prototype.parse=function(e){var t,r,c,u,d=e.length;for(this._position=0,this._terminal.surrogate_high&&(e=this._terminal.surrogate_high+e,this._terminal.surrogate_high="");this._position":this._terminal.log("Switching back to normal keypad."),this._terminal.applicationKeypad=!1,this._terminal.viewport.syncScrollArea(),this._state=h.NORMAL;break;default:this._state=h.NORMAL,this._terminal.error("Unknown ESC control: %s.",r)}break;case h.CHARSET:r in o.CHARSETS?(t=o.CHARSETS[r],"/"===r&&this.skipNextChar()):t=o.DEFAULT_CHARSET,this._terminal.setgCharset(this._terminal.gcharset,t),this._terminal.gcharset=null,this._state=h.NORMAL;break;case h.OSC:if(r===i.C0.ESC||r===i.C0.BEL){switch(r===i.C0.ESC&&this._position++,this._terminal.params.push(this._terminal.currentParam),this._terminal.params[0]){case 0:case 1:case 2:this._terminal.params[1]&&(this._terminal.title=this._terminal.params[1],this._terminal.handleTitle(this._terminal.title))}this._terminal.params=[],this._terminal.currentParam=0,this._state=h.NORMAL}else this._terminal.params.length?this._terminal.currentParam+=r:r>="0"&&r<="9"?this._terminal.currentParam=10*this._terminal.currentParam+r.charCodeAt(0)-48:";"===r&&(this._terminal.params.push(this._terminal.currentParam),this._terminal.currentParam="");break;case h.CSI_PARAM:if(r in a){a[r](this);break}this.finalizeParam(),this._state=h.CSI;case h.CSI:r in l?l[r](this._inputHandler,this._terminal.params,this._terminal.prefix,this._terminal.postfix,this):this._terminal.error("Unknown CSI code: %s.",r),this._state=h.NORMAL,this._terminal.prefix="",this._terminal.postfix="";break;case h.DCS:if(r===i.C0.ESC||r===i.C0.BEL){r===i.C0.ESC&&this._position++;var p=void 0,f=void 0;switch(this._terminal.prefix){case"":break;case"$q":switch(p=this._terminal.currentParam,f=!1,p){case'"q':p='0"q';break;case'"p':p='61"p';break;case"r":p=this._terminal.scrollTop+1+";"+(this._terminal.scrollBottom+1)+"r";break;case"m":p="0m";break;default:this._terminal.error("Unknown DCS Pt: %s.",p),p=""}this._terminal.send(i.C0.ESC+"P"+ +f+"$r"+p+i.C0.ESC+"\\");break;case"+p":break;case"+q":p=this._terminal.currentParam,f=!1,this._terminal.send(i.C0.ESC+"P"+ +f+"+r"+p+i.C0.ESC+"\\");break;default:this._terminal.error("Unknown DCS prefix: %s.",this._terminal.prefix)}this._terminal.currentParam=0,this._terminal.prefix="",this._state=h.NORMAL}else this._terminal.currentParam?this._terminal.currentParam+=r:this._terminal.prefix||"$"===r||"+"===r?2===this._terminal.prefix.length?this._terminal.currentParam=r:this._terminal.prefix+=r:this._terminal.currentParam=r;break;case h.IGNORE:r!==i.C0.ESC&&r!==i.C0.BEL||(r===i.C0.ESC&&this._position++,this._state=h.NORMAL)}}return this._state},e.prototype.setState=function(e){this._state=e},e.prototype.setPrefix=function(e){this._terminal.prefix=e},e.prototype.setPostfix=function(e){this._terminal.postfix=e},e.prototype.setParam=function(e){this._terminal.currentParam=e},e.prototype.getParam=function(){return this._terminal.currentParam},e.prototype.finalizeParam=function(){this._terminal.params.push(this._terminal.currentParam),this._terminal.currentParam=0},e.prototype.skipNextChar=function(){this._position++},e}();t.Parser=c},function(e,t,r){"use strict";function i(e){var t=e.ownerDocument.createElement("span");t.innerHTML="hello world",e.appendChild(t);var r=t.offsetWidth,i=t.offsetHeight;t.style.fontWeight="bold";var o=t.offsetWidth,s=t.offsetHeight;return e.removeChild(t),r!==o||i!==s}Object.defineProperty(t,"__esModule",{value:!0});var o,s=r(26);!function(e){e[e.BOLD=1]="BOLD",e[e.UNDERLINE=2]="UNDERLINE",e[e.BLINK=4]="BLINK",e[e.INVERSE=8]="INVERSE",e[e.INVISIBLE=16]="INVISIBLE"}(o||(o={}));var n=null,a=function(){function e(e){this._terminal=e,this._refreshRowsQueue=[],this._refreshFramesSkipped=0,this._refreshAnimationFrame=null,this._spanElementObjectPool=new s.DomElementObjectPool("span"),null===n&&(n=i(this._terminal.element)),this._spanElementObjectPool=new s.DomElementObjectPool("span")}return e.prototype.queueRefresh=function(e,t){this._refreshRowsQueue.push({start:e,end:t}),this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame(this._refreshLoop.bind(this)))},e.prototype._refreshLoop=function(){if(this._terminal.writeBuffer.length>0&&this._refreshFramesSkipped++<=5)this._refreshAnimationFrame=window.requestAnimationFrame(this._refreshLoop.bind(this));else{this._refreshFramesSkipped=0;var e,t;if(this._refreshRowsQueue.length>4)e=0,t=this._terminal.rows-1;else{e=this._refreshRowsQueue[0].start,t=this._refreshRowsQueue[0].end;for(var r=1;rt&&(t=this._refreshRowsQueue[r].end)}this._refreshRowsQueue=[],this._refreshAnimationFrame=null,this._refresh(e,t)}},e.prototype._refresh=function(e,t){var r;t-e>=this._terminal.rows/2&&(r=this._terminal.element.parentNode)&&this._terminal.element.removeChild(this._terminal.rowContainer);var i=this._terminal.cols,s=e;for(t>=this._terminal.rows&&(this._terminal.log("`end` is too large. Most likely a bad CSR."),t=this._terminal.rows-1);s<=t;s++){var a=s+this._terminal.ydisp,l=this._terminal.lines.get(a),h=void 0;h=this._terminal.y===s-(this._terminal.ybase-this._terminal.ydisp)&&this._terminal.cursorState&&!this._terminal.cursorHidden?this._terminal.x:-1;for(var c=this._terminal.defAttr,u=document.createDocumentFragment(),d="",p=void 0;this._terminal.children[s].children.length;){var f=this._terminal.children[s].children[0];this._terminal.children[s].removeChild(f),this._spanElementObjectPool.release(f)}for(var g=0;g>9&511,w=m>>18;if(w&o.BOLD&&(n||p.classList.add("xterm-bold"),C<8&&(C+=8)),w&o.UNDERLINE&&p.classList.add("xterm-underline"),w&o.BLINK&&p.classList.add("xterm-blink"),w&o.INVERSE){var S=_;_=C,C=S,1&w&&C<8&&(C+=8)}w&o.INVISIBLE&&p.classList.add("xterm-hidden"),w&o.INVERSE&&(257===_&&(_=15),256===C&&(C=0)),_<256&&p.classList.add("xterm-bg-color-"+_),C<256&&p.classList.add("xterm-color-"+C)}if(2===b)d+=''+y+"";else if(y.charCodeAt(0)>255)d+=''+y+"";else switch(y){case"&":d+="&";break;case"<":d+="<";break;case">":d+=">";break;default:d+=y<=" "?" ":y}c=m}}d&&!p&&(p=this._spanElementObjectPool.acquire()),p&&(d&&(p.innerHTML=d,d=""),u.appendChild(p),p=null),this._terminal.children[s].appendChild(u)}r&&this._terminal.element.appendChild(this._terminal.rowContainer),this._terminal.emit("refresh",{element:this._terminal.element,start:e,end:t})},e.prototype.refreshSelection=function(e,t){for(;this._terminal.selectionContainer.children.length;)this._terminal.selectionContainer.removeChild(this._terminal.selectionContainer.children[0]);if(e&&t){var r=e[1]-this._terminal.ydisp,i=t[1]-this._terminal.ydisp,o=Math.max(r,0),s=Math.min(i,this._terminal.rows-1);if(!(o>=this._terminal.rows||s<0)){var n=document.createDocumentFragment(),a=r===o?e[0]:0,l=o===s?t[0]:this._terminal.cols;n.appendChild(this._createSelectionElement(o,a,l));var h=s-o-1;if(n.appendChild(this._createSelectionElement(o+1,0,this._terminal.cols,h)),o!==s){var c=i===s?t[0]:this._terminal.cols;n.appendChild(this._createSelectionElement(s,0,c))}this._terminal.selectionContainer.appendChild(n)}}},e.prototype._createSelectionElement=function(e,t,r,i){void 0===i&&(i=1);var o=document.createElement("div");return o.style.height=i*this._terminal.charMeasure.height+"px",o.style.top=e*this._terminal.charMeasure.height+"px",o.style.left=t*this._terminal.charMeasure.width+"px",o.style.width=this._terminal.charMeasure.width*(r-t)+"px",o},e}();t.Renderer=a},function(e,t,r){"use strict";var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function i(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var o,s=r(10),n=r(9),a=r(1),l=r(21),h=String.fromCharCode(160),c=new RegExp(h,"g");!function(e){e[e.NORMAL=0]="NORMAL",e[e.WORD=1]="WORD",e[e.LINE=2]="LINE"}(o||(o={}));var u=function(e){function t(t,r,i,s){var n=e.call(this)||this;return n._terminal=t,n._buffer=r,n._rowContainer=i,n._charMeasure=s,n._initListeners(),n.enable(),n._model=new l.SelectionModel(t),n._lastMouseDownTime=0,n._activeSelectionMode=o.NORMAL,n}return i(t,e),t.prototype._initListeners=function(){var e=this;this._bufferTrimListener=function(t){return e._onTrim(t)},this._mouseMoveListener=function(t){return e._onMouseMove(t)},this._mouseDownListener=function(t){return e._onMouseDown(t)},this._mouseUpListener=function(t){return e._onMouseUp(t)}},t.prototype.disable=function(){this.clearSelection(),this._buffer.off("trim",this._bufferTrimListener),this._rowContainer.removeEventListener("mousedown",this._mouseDownListener)},t.prototype.enable=function(){this._buffer.on("trim",this._bufferTrimListener),this._rowContainer.addEventListener("mousedown",this._mouseDownListener)},t.prototype.setBuffer=function(e){this._buffer=e,this.clearSelection()},Object.defineProperty(t.prototype,"hasSelection",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;return!(!e||!t)&&(e[0]!==t[0]||e[1]!==t[1])},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"selectionText",{get:function(){var e=this._model.finalSelectionStart,t=this._model.finalSelectionEnd;if(!e||!t)return"";var r=e[1]===t[1]?t[0]:null,i=[];i.push(this._translateBufferLineToString(this._buffer.get(e[1]),!0,e[0],r));for(var o=e[1]+1;o<=t[1]-1;o++){var s=this._buffer.get(o),a=this._translateBufferLineToString(s,!0);s.isWrapped?i[i.length-1]+=a:i.push(a)}if(e[1]!==t[1]){var s=this._buffer.get(t[1]),a=this._translateBufferLineToString(s,!0,0,t[0]);s.isWrapped?i[i.length-1]+=a:i.push(a)}return i.map(function(e){return e.replace(c," ")}).join(n.isMSWindows?"\r\n":"\n")},enumerable:!0,configurable:!0}),t.prototype.clearSelection=function(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh()},t.prototype._translateBufferLineToString=function(e,t,r,i){void 0===r&&(r=0),void 0===i&&(i=null);for(var o="",s=r,n=i,a=0;a=a&&s--,i>=a&&n--)}var h=n||e.length;if(t){var c=o.search(/\s+$/);if(-1!==c&&(h=Math.min(h,c)),h<=s)return""}return o.substring(s,h)},t.prototype.refresh=function(e){var t=this;this._refreshAnimationFrame||(this._refreshAnimationFrame=window.requestAnimationFrame(function(){return t._refresh()})),n.isLinux&&e&&this.selectionText.length&&this.emit("newselection",this.selectionText)},t.prototype._refresh=function(){this._refreshAnimationFrame=null,this.emit("refresh",{start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd})},t.prototype.selectAll=function(){this._model.isSelectAllActive=!0,this.refresh()},t.prototype._onTrim=function(e){this._model.onTrim(e)&&this.refresh()},t.prototype._getMouseBufferCoords=function(e){var t=s.getCoords(e,this._rowContainer,this._charMeasure,this._terminal.cols,this._terminal.rows,!0);return t[0]--,t[1]--,t[1]+=this._terminal.ydisp,t},t.prototype._getMouseEventScrollAmount=function(e){var t=s.getCoordsRelativeToElement(e,this._rowContainer)[1],r=this._terminal.rows*this._charMeasure.height;return t>=0&&t<=r?0:(t>r&&(t-=r),t=Math.min(Math.max(t,-50),50),(t/=50)/Math.abs(t)+Math.round(14*t))},t.prototype._onMouseDown=function(e){0===e.button&&(e.preventDefault(),this._dragScrollAmount=0,this._setMouseClickCount(e),e.shiftKey?this._onShiftClick(e):1===this._clickCount?this._onSingleClick(e):2===this._clickCount?this._onDoubleClick(e):3===this._clickCount&&this._onTripleClick(e),this._addMouseDownListeners(),this.refresh(!0))},t.prototype._addMouseDownListeners=function(){var e=this;this._rowContainer.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._rowContainer.ownerDocument.addEventListener("mouseup",this._mouseUpListener),this._dragScrollIntervalTimer=setInterval(function(){return e._dragScroll()},50)},t.prototype._removeMouseDownListeners=function(){this._rowContainer.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._rowContainer.ownerDocument.removeEventListener("mouseup",this._mouseUpListener),clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=null},t.prototype._onShiftClick=function(e){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(e))},t.prototype._onSingleClick=function(e){this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=o.NORMAL,this._model.selectionStart=this._getMouseBufferCoords(e),this._model.selectionStart&&(this._model.selectionEnd=null,0===this._buffer.get(this._model.selectionStart[1])[this._model.selectionStart[0]][2]&&this._model.selectionStart[0]++)},t.prototype._onDoubleClick=function(e){var t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=o.WORD,this._selectWordAt(t))},t.prototype._onTripleClick=function(e){var t=this._getMouseBufferCoords(e);t&&(this._activeSelectionMode=o.LINE,this._selectLineAt(t[1]))},t.prototype._setMouseClickCount=function(e){var t=(new Date).getTime();(t-this._lastMouseDownTime>400||this._distanceFromLastMousePosition(e)>10)&&(this._clickCount=0),this._lastMouseDownTime=t,this._lastMousePosition=[e.pageX,e.pageY],this._clickCount++},t.prototype._distanceFromLastMousePosition=function(e){return Math.max(Math.abs(this._lastMousePosition[0]-e.pageX),Math.abs(this._lastMousePosition[1]-e.pageY))},t.prototype._onMouseMove=function(e){var t=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(e),this._activeSelectionMode===o.LINE?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._terminal.cols-1:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]0?this._model.selectionEnd=[this._terminal.cols-1,this._terminal.ydisp+this._terminal.rows]:this._model.selectionEnd=[0,this._terminal.ydisp],this.refresh())},t.prototype._onMouseUp=function(e){this._removeMouseDownListeners()},t.prototype._convertViewportColToCharacterIndex=function(e,t){for(var r=t[0],i=0;t[0]>=i;i++)0===e[i][2]&&r--;return r},t.prototype._getWordAt=function(e){var t=this._buffer.get(e[1]),r=this._translateBufferLineToString(t,!1),i=this._convertViewportColToCharacterIndex(t,e),o=i,s=e[0]-o,n=0,a=0;if(" "===r.charAt(o)){for(;o>0&&" "===r.charAt(o-1);)o--;for(;i0&&!this._isCharWordSeparator(r.charAt(o-1));)0===t[l-1][2]&&(n++,l--),o--,l--;for(;i+1=0},t.prototype._selectLineAt=function(e){this._model.selectionStart=[0,e],this._model.selectionStartLength=this._terminal.cols},t}(a.EventEmitter);t.SelectionManager=u},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e){this._terminal=e,this.clearSelection()}return e.prototype.clearSelection=function(){this.selectionStart=null,this.selectionEnd=null,this.isSelectAllActive=!1,this.selectionStartLength=0},Object.defineProperty(e.prototype,"finalSelectionStart",{get:function(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"finalSelectionEnd",{get:function(){return this.isSelectAllActive?[this._terminal.cols,this._terminal.ybase+this._terminal.rows-1]:this.selectionStart?!this.selectionEnd||this.areSelectionValuesReversed()?[this.selectionStart[0]+this.selectionStartLength,this.selectionStart[1]]:this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]?[Math.max(this.selectionStart[0]+this.selectionStartLength,this.selectionEnd[0]),this.selectionEnd[1]]:this.selectionEnd:null},enumerable:!0,configurable:!0}),e.prototype.areSelectionValuesReversed=function(){var e=this.selectionStart,t=this.selectionEnd;return e[1]>t[1]||e[1]===t[1]&&e[0]>t[0]},e.prototype.onTrim=function(e){return this.selectionStart&&(this.selectionStart[1]-=e),this.selectionEnd&&(this.selectionEnd[1]-=e),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)},e}();t.SelectionModel=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t,r,i){var o=this;this.terminal=e,this.viewportElement=t,this.scrollArea=r,this.charMeasure=i,this.currentRowHeight=0,this.lastRecordedBufferLength=0,this.lastRecordedViewportHeight=0,this.terminal.on("scroll",this.syncScrollArea.bind(this)),this.terminal.on("resize",this.syncScrollArea.bind(this)),this.viewportElement.addEventListener("scroll",this.onScroll.bind(this)),setTimeout(function(){return o.syncScrollArea()},0)}return e.prototype.refresh=function(){if(this.charMeasure.height>0){var e=this.charMeasure.height!==this.currentRowHeight;e&&(this.currentRowHeight=this.charMeasure.height,this.viewportElement.style.lineHeight=this.charMeasure.height+"px",this.terminal.rowContainer.style.lineHeight=this.charMeasure.height+"px");var t=this.lastRecordedViewportHeight!==this.terminal.rows;(e||t)&&(this.lastRecordedViewportHeight=this.terminal.rows,this.viewportElement.style.height=this.charMeasure.height*this.terminal.rows+"px",this.terminal.selectionContainer.style.height=this.viewportElement.style.height),this.scrollArea.style.height=this.charMeasure.height*this.lastRecordedBufferLength+"px"}},e.prototype.syncScrollArea=function(){this.lastRecordedBufferLength!==this.terminal.lines.length?(this.lastRecordedBufferLength=this.terminal.lines.length,this.refresh()):this.lastRecordedViewportHeight!==this.terminal.rows?this.refresh():this.charMeasure.height!==this.currentRowHeight&&this.refresh();var e=this.terminal.ydisp*this.currentRowHeight;this.viewportElement.scrollTop!==e&&(this.viewportElement.scrollTop=e)},e.prototype.onScroll=function(e){var t=Math.round(this.viewportElement.scrollTop/this.currentRowHeight)-this.terminal.ydisp;this.terminal.scrollDisp(t,!0)},e.prototype.onWheel=function(e){if(0!==e.deltaY){var t=1;e.deltaMode===WheelEvent.DOM_DELTA_LINE?t=this.currentRowHeight:e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(t=this.currentRowHeight*this.terminal.rows),this.viewportElement.scrollTop+=e.deltaY*t,e.preventDefault()}},e.prototype.onTouchStart=function(e){this.lastTouchY=e.touches[0].pageY},e.prototype.onTouchMove=function(e){var t=this.lastTouchY-e.touches[0].pageY;this.lastTouchY=e.touches[0].pageY,0!==t&&(this.viewportElement.scrollTop+=t,e.preventDefault())},e}();t.Viewport=i},function(e,t,r){"use strict";function i(e,t){return t?e.replace(/\r?\n/g,"\r"):e}function o(e,t){t.style.position="fixed",t.style.width="20px",t.style.height="20px",t.style.left=e.clientX-10+"px",t.style.top=e.clientY-10+"px",t.style.zIndex="1000",t.focus(),setTimeout(function(){t.style.position=null,t.style.width=null,t.style.height=null,t.style.left=null,t.style.top=null,t.style.zIndex=null},4)}Object.defineProperty(t,"__esModule",{value:!0}),t.prepareTextForTerminal=i,t.copyHandler=function(e,t,r){t.browser.isMSIE?window.clipboardData.setData("Text",r.selectionText):e.clipboardData.setData("text/plain",r.selectionText),e.preventDefault()},t.pasteHandler=function(e,t){e.stopPropagation();var r=function(r){return r=i(r,t.browser.isMSWindows),t.handler(r),t.textarea.value="",t.emit("paste",r),t.cancel(e)};t.browser.isMSIE?window.clipboardData&&r(window.clipboardData.getData("Text")):e.clipboardData&&r(e.clipboardData.getData("text/plain"))},t.moveTextAreaUnderMouseCursor=o,t.rightClickHandler=function(e,t,r){o(e,t),t.value=r.selectionText,t.select()}},function(e,t,r){"use strict";var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function i(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(t,r){var i=e.call(this)||this;return i._document=t,i._parentElement=r,i}return i(t,e),Object.defineProperty(t.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),t.prototype.measure=function(){var e=this;this._measureElement?this._doMeasure():(this._measureElement=this._document.createElement("span"),this._measureElement.style.position="absolute",this._measureElement.style.top="0",this._measureElement.style.left="-9999em",this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement),setTimeout(function(){return e._doMeasure()},0))},t.prototype._doMeasure=function(){var e=this._measureElement.getBoundingClientRect();0!==e.width&&0!==e.height&&(this._width===e.width&&this._height===e.height||(this._width=e.width,this._height=e.height,this.emit("charsizechanged")))},t}(r(1).EventEmitter);t.CharMeasure=o},function(e,t,r){"use strict";var i=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function i(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(t){var r=e.call(this)||this;return r._array=new Array(t),r._startIndex=0,r._length=0,r}return i(t,e),Object.defineProperty(t.prototype,"maxLength",{get:function(){return this._array.length},set:function(e){for(var t=new Array(e),r=0;rthis._length)for(var t=this._length;t=e;o--)this._array[this._getCyclicIndex(o+r.length)]=this._array[this._getCyclicIndex(o)];for(var o=0;othis.maxLength){var s=this._length+r.length-this.maxLength;this._startIndex+=s,this._length=this.maxLength,this.emit("trim",s)}else this._length+=r.length}},t.prototype.trimStart=function(e){e>this._length&&(e=this._length),this._startIndex+=e,this._length-=e,this.emit("trim",e)},t.prototype.shiftElements=function(e,t,r){if(!(t<=0)){if(e<0||e>=this._length)throw new Error("start argument out of range");if(e+r<0)throw new Error("Cannot shift elements in list beyond index 0");if(r>0){for(o=t-1;o>=0;o--)this.set(e+o+r,this.get(e+o));var i=e+t+r-this._length;if(i>0)for(this._length+=i;this._length>this.maxLength;)this._length--,this._startIndex++,this.emit("trim",1)}else for(var o=0;o=0}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=r(11),o=r(14),s=r(13),n=r(12),a=document.getElementById("terminal");if(null!==a){var l;l="hterm"==gotty_term?new i.Hterm(a):new o.Xterm(a);var h=("https:"==window.location.protocol?"wss://":"ws://")+window.location.host+window.location.pathname+"ws",c=window.location.search,u=new n.ConnectionFactory(h,s.protocols),d=new s.WebTTY(l,u,c,gotty_auth_token).open();window.addEventListener("unload",function(){d(),l.close()})}},function(e,t,r){function i(e){return r(o(e))}function o(e){var t=s[e];if(!(t+1))throw new Error("Cannot find module '"+e+"'.");return t}var s={"./attach/attach":5,"./attach/attach.js":5,"./attach/package.json":30,"./fit/fit":6,"./fit/fit.js":6,"./fit/package.json":31,"./fullscreen/fullscreen":7,"./fullscreen/fullscreen.css":32,"./fullscreen/fullscreen.js":7,"./fullscreen/package.json":33,"./terminado/package.json":34,"./terminado/terminado":8,"./terminado/terminado.js":8};i.keys=function(){return Object.keys(s)},i.resolve=o,e.exports=i,i.id=29},function(e,t){e.exports={name:"xterm.attach",main:"attach.js",private:!0}},function(e,t){e.exports={name:"xterm.fit",main:"fit.js",private:!0}},function(e,t){throw new Error("Module parse failed: /home/yudai/archive/products/2015/gotty/src/github.com/yudai/gotty/js/node_modules/xterm/lib/addons/fullscreen/fullscreen.css Unexpected token (1:0)\nYou may need an appropriate loader to handle this file type.\n| .xterm.fullscreen {\n| position: fixed;\n| top: 0;")},function(e,t){e.exports={name:"xterm.fullscreen",main:"fullscreen.js",private:!0}},function(e,t){e.exports={name:"xterm.terminado",main:"terminado.js",private:!0}}]); \ No newline at end of file diff --git a/vendor/github.com/yudai/gotty/js/dist/hterm.d.ts b/vendor/github.com/yudai/gotty/js/dist/hterm.d.ts new file mode 100644 index 0000000..2402bda --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/dist/hterm.d.ts @@ -0,0 +1,24 @@ +import * as bare from "libapps"; +export declare class Hterm { + elem: HTMLElement; + term: bare.hterm.Terminal; + io: bare.hterm.IO; + columns: number; + rows: number; + message: string; + constructor(elem: HTMLElement); + info(): { + columns: number; + rows: number; + }; + output(data: string): void; + showMessage(message: string, timeout: number): void; + removeMessage(): void; + setWindowTitle(title: string): void; + setPreferences(value: object): void; + onInput(callback: (input: string) => void): void; + onResize(callback: (colmuns: number, rows: number) => void): void; + deactivate(): void; + reset(): void; + close(): void; +} diff --git a/vendor/github.com/yudai/gotty/js/dist/main.d.ts b/vendor/github.com/yudai/gotty/js/dist/main.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/yudai/gotty/js/dist/websocket.d.ts b/vendor/github.com/yudai/gotty/js/dist/websocket.d.ts new file mode 100644 index 0000000..0ce5eab --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/dist/websocket.d.ts @@ -0,0 +1,17 @@ +export declare class ConnectionFactory { + url: string; + protocols: string[]; + constructor(url: string, protocols: string[]); + create(): Connection; +} +export declare class Connection { + bare: WebSocket; + constructor(url: string, protocols: string[]); + open(): void; + close(): void; + send(data: string): void; + isOpen(): boolean; + onOpen(callback: () => void): void; + onReceive(callback: (data: string) => void): void; + onClose(callback: () => void): void; +} diff --git a/vendor/github.com/yudai/gotty/js/dist/webtty.d.ts b/vendor/github.com/yudai/gotty/js/dist/webtty.d.ts new file mode 100644 index 0000000..782c815 --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/dist/webtty.d.ts @@ -0,0 +1,48 @@ +export declare const protocols: string[]; +export declare const msgInputUnknown = "0"; +export declare const msgInput = "1"; +export declare const msgPing = "2"; +export declare const msgResizeTerminal = "3"; +export declare const msgUnknownOutput = "0"; +export declare const msgOutput = "1"; +export declare const msgPong = "2"; +export declare const msgSetWindowTitle = "3"; +export declare const msgSetPreferences = "4"; +export declare const msgSetReconnect = "5"; +export interface Terminal { + info(): { + columns: number; + rows: number; + }; + output(data: string): void; + showMessage(message: string, timeout: number): void; + removeMessage(): void; + setWindowTitle(title: string): void; + setPreferences(value: object): void; + onInput(callback: (input: string) => void): void; + onResize(callback: (colmuns: number, rows: number) => void): void; + reset(): void; + deactivate(): void; + close(): void; +} +export interface Connection { + open(): void; + close(): void; + send(data: string): void; + isOpen(): boolean; + onOpen(callback: () => void): void; + onReceive(callback: (data: string) => void): void; + onClose(callback: () => void): void; +} +export interface ConnectionFactory { + create(): Connection; +} +export declare class WebTTY { + term: Terminal; + connectionFactory: ConnectionFactory; + args: string; + authToken: string; + reconnect: number; + constructor(term: Terminal, connectionFactory: ConnectionFactory, args: string, authToken: string); + open(): () => void; +} diff --git a/vendor/github.com/yudai/gotty/js/dist/xterm.d.ts b/vendor/github.com/yudai/gotty/js/dist/xterm.d.ts new file mode 100644 index 0000000..053d8e8 --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/dist/xterm.d.ts @@ -0,0 +1,26 @@ +import * as bare from "xterm"; +import { lib } from "libapps"; +export declare class Xterm { + elem: HTMLElement; + term: bare; + resizeListener: () => void; + decoder: lib.UTF8Decoder; + message: HTMLElement; + messageTimeout: number; + messageTimer: number; + constructor(elem: HTMLElement); + info(): { + columns: number; + rows: number; + }; + output(data: string): void; + showMessage(message: string, timeout: number): void; + removeMessage(): void; + setWindowTitle(title: string): void; + setPreferences(value: object): void; + onInput(callback: (input: string) => void): void; + onResize(callback: (colmuns: number, rows: number) => void): void; + deactivate(): void; + reset(): void; + close(): void; +} diff --git a/vendor/github.com/yudai/gotty/js/package-lock.json b/vendor/github.com/yudai/gotty/js/package-lock.json new file mode 100644 index 0000000..0a9eede --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/package-lock.json @@ -0,0 +1,2404 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "acorn": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } + }, + "aproba": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", + "integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=", + "dev": true + }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "bn.js": { + "version": "4.11.7", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.0.6", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.0" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "0.2.9" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "9.2.9", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-9.2.9.tgz", + "integrity": "sha512-ghg1j5OyTJ6qsrqU++dN23QiTDxb5AZCFGsF3oB+v9v/gY+F4X8L/0gdQMEjd+8Ot3D29M2etX5PKozHRn2JQw==", + "dev": true, + "requires": { + "bluebird": "3.5.0", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.1", + "mississippi": "1.3.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.1", + "ssri": "4.1.6", + "unique-filename": "1.1.0", + "y18n": "3.2.1" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.3.tgz", + "integrity": "sha1-Rft4ZiSaHKiJqlcI5svSc+dbslA=", + "dev": true, + "requires": { + "aproba": "1.1.2", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "run-queue": "1.0.3" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "crypto-browserify": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.12", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "duplexify": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", + "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "enhanced-resolve": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", + "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.7" + } + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", + "dev": true, + "requires": { + "create-hash": "1.1.3" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.0.0", + "pkg-dir": "2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "flush-write-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz", + "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.9.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "libapps": { + "version": "github:yudai/libapps#424e3e95e5346ef0c0c281aaf2ef73463a55b39e" + }, + "license-loader": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/license-loader/-/license-loader-0.5.0.tgz", + "integrity": "sha512-4p+estbTHilHxOXv/wh8qHndksfINzBT6HGvgIU4sfwWu28kCByHGV57K/HVgSujoFFv2wCITghGbK/qRiRbUQ==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", + "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "brorand": "1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", + "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "duplexify": "3.5.1", + "end-of-stream": "1.4.0", + "flush-write-stream": "1.0.2", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "1.0.2", + "pumpify": "1.3.5", + "stream-each": "1.2.0", + "through2": "2.0.3" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.1.2", + "copy-concurrently": "1.0.3", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "run-queue": "1.0.3" + } + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.0.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.6", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.0", + "pbkdf2": "3.0.12" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pbkdf2": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + } + } + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.7", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "pump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", + "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz", + "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=", + "dev": true, + "requires": { + "duplexify": "3.5.1", + "inherits": "2.0.3", + "pump": "1.0.2" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.2.2" + }, + "dependencies": { + "ajv": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "source-list-map": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "ssri": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-4.1.6.tgz", + "integrity": "sha512-WUbCdgSAMQjTFZRWvSPpauryvREEA+Krn19rx67UlJEJx/M192ZHxMmJXjZ4tkdFm+Sb0SXGlENeQVlA5wY7kA==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-each": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.0.tgz", + "integrity": "sha1-HpXUdXP1gNgU3A/4zQ9m8c5TyZE=", + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "tapable": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.7.tgz", + "integrity": "sha1-5GwNqsuyuKmLmwzqD0BSEFgX7Vw=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "ts-loader": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.0.3.tgz", + "integrity": "sha1-ibjIdZjwSN8GV2bgfhU48OrrEWU=", + "dev": true, + "requires": { + "colors": "1.1.2", + "enhanced-resolve": "3.3.0", + "loader-utils": "1.1.0", + "semver": "5.3.0" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.2.tgz", + "integrity": "sha1-8PBF4Zb2mnLwayX9O9OdAcPOmYQ=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.0.0-beta.2.tgz", + "integrity": "sha512-vTt+xUdBbjfIAmaSm3li3y/9k0m35GXV5AZWAUrSDMOAtI0mmhQ4FAQFtqEkmgEGS+A3S+qFaA0dk1lKheYQSw==", + "dev": true, + "requires": { + "cacache": "9.2.9", + "find-cache-dir": "1.0.0", + "schema-utils": "0.3.0", + "source-map": "0.5.6", + "uglify-es": "3.0.28", + "webpack-sources": "1.0.1", + "worker-farm": "1.5.0" + }, + "dependencies": { + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "uglify-es": { + "version": "3.0.28", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.0.28.tgz", + "integrity": "sha512-xw1hJsSp361OO0Sq0XvNyTI2wfQ4eKNljfSYyeYX/dz9lKEDj+DK+A8CzB0NmoCwWX1MnEx9f16HlkKXyG65CQ==", + "dev": true, + "requires": { + "commander": "2.11.0", + "source-map": "0.5.6" + } + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.6" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "webpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.5.1.tgz", + "integrity": "sha1-YXQvDPivVVuHRgqc2Lui8ePuL84=", + "dev": true, + "requires": { + "acorn": "5.1.1", + "acorn-dynamic-import": "2.0.2", + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "async": "2.5.0", + "enhanced-resolve": "3.3.0", + "interpret": "1.0.3", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "0.2.17", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.6", + "supports-color": "3.2.3", + "tapable": "0.2.7", + "uglify-js": "2.8.29", + "watchpack": "1.4.0", + "webpack-sources": "0.2.3", + "yargs": "6.6.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, + "webpack-sources": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", + "dev": true, + "requires": { + "source-list-map": "1.1.2", + "source-map": "0.5.6" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "worker-farm": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.0.tgz", + "integrity": "sha512-DHRiUggxtbruaTwnLDm2/BRDKZIoOYvrgYUj5Bam4fU6Gtvc0FaEyoswFPBjMXAweGW2H4BDNIpy//1yXXuaqQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "xterm": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-2.8.1.tgz", + "integrity": "sha512-AuqLOWpprmhSe4TcGE6Gh2uwkR0wUC95V0Q736OFUmG+84W+w+g6RzcgVhrbOTo/Fzcq9i0TRR5nYksRt2DSIQ==" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } +} diff --git a/vendor/github.com/yudai/gotty/js/package.json b/vendor/github.com/yudai/gotty/js/package.json new file mode 100644 index 0000000..8beaeb5 --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/package.json @@ -0,0 +1,13 @@ +{ + "devDependencies": { + "license-loader": "^0.5.0", + "ts-loader": "^2.0.3", + "typescript": "^2.3.2", + "uglifyjs-webpack-plugin": "^1.0.0-beta.2", + "webpack": "^2.5.1" + }, + "dependencies": { + "libapps": "github:yudai/libapps#release-hterm-1.70", + "xterm": "^2.7.0" + } +} diff --git a/vendor/github.com/yudai/gotty/js/src/hterm.ts b/vendor/github.com/yudai/gotty/js/src/hterm.ts new file mode 100644 index 0000000..b49a22f --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/src/hterm.ts @@ -0,0 +1,92 @@ +import * as bare from "libapps"; + +export class Hterm { + elem: HTMLElement; + + term: bare.hterm.Terminal; + io: bare.hterm.IO; + + columns: number; + rows: number; + + // to "show" the current message when removeMessage() is called + message: string; + + constructor(elem: HTMLElement) { + this.elem = elem; + bare.hterm.defaultStorage = new bare.lib.Storage.Memory(); + this.term = new bare.hterm.Terminal(); + this.term.getPrefs().set("send-encoding", "raw"); + this.term.decorate(this.elem); + + this.io = this.term.io.push(); + this.term.installKeyboard(); + }; + + info(): { columns: number, rows: number } { + return { columns: this.columns, rows: this.rows }; + }; + + output(data: string) { + if (this.term.io != null) { + this.term.io.writeUTF8(data); + } + }; + + showMessage(message: string, timeout: number) { + this.message = message; + if (timeout > 0) { + this.term.io.showOverlay(message, timeout); + } else { + this.term.io.showOverlay(message, null); + } + }; + + removeMessage(): void { + // there is no hideOverlay(), so show the same message with 0 sec + this.term.io.showOverlay(this.message, 0); + } + + setWindowTitle(title: string) { + this.term.setWindowTitle(title); + }; + + setPreferences(value: object) { + Object.keys(value).forEach((key) => { + this.term.getPrefs().set(key, value[key]); + }); + }; + + onInput(callback: (input: string) => void) { + this.io.onVTKeystroke = (data) => { + callback(data); + }; + this.io.sendString = (data) => { + callback(data); + }; + }; + + onResize(callback: (colmuns: number, rows: number) => void) { + this.io.onTerminalResize = (columns: number, rows: number) => { + this.columns = columns; + this.rows = rows; + callback(columns, rows); + }; + }; + + deactivate(): void { + this.io.onVTKeystroke = function(){}; + this.io.sendString = function(){}; + this.io.onTerminalResize = function(){}; + this.term.uninstallKeyboard(); + } + + reset(): void { + this.removeMessage(); + this.term.installKeyboard(); + } + + close(): void { + this.term.uninstallKeyboard(); + } +} diff --git a/vendor/github.com/yudai/gotty/js/src/main.ts b/vendor/github.com/yudai/gotty/js/src/main.ts new file mode 100644 index 0000000..101190a --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/src/main.ts @@ -0,0 +1,30 @@ +import { Hterm } from "./hterm"; +import { Xterm } from "./xterm"; +import { Terminal, WebTTY, protocols } from "./webtty"; +import { ConnectionFactory } from "./websocket"; + +// @TODO remove these +declare var gotty_auth_token: string; +declare var gotty_term: string; + +const elem = document.getElementById("terminal") + +if (elem !== null) { + var term: Terminal; + if (gotty_term == "hterm") { + term = new Hterm(elem); + } else { + term = new Xterm(elem); + } + const httpsEnabled = window.location.protocol == "https:"; + const url = (httpsEnabled ? 'wss://' : 'ws://') + window.location.host + window.location.pathname + 'ws'; + const args = window.location.search; + const factory = new ConnectionFactory(url, protocols); + const wt = new WebTTY(term, factory, args, gotty_auth_token); + const closer = wt.open(); + + window.addEventListener("unload", () => { + closer(); + term.close(); + }); +}; diff --git a/vendor/github.com/yudai/gotty/js/src/websocket.ts b/vendor/github.com/yudai/gotty/js/src/websocket.ts new file mode 100644 index 0000000..7f65177 --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/src/websocket.ts @@ -0,0 +1,60 @@ +export class ConnectionFactory { + url: string; + protocols: string[]; + + constructor(url: string, protocols: string[]) { + this.url = url; + this.protocols = protocols; + }; + + create(): Connection { + return new Connection(this.url, this.protocols); + }; +} + +export class Connection { + bare: WebSocket; + + + constructor(url: string, protocols: string[]) { + this.bare = new WebSocket(url, protocols); + } + + open() { + // nothing todo for websocket + }; + + close() { + this.bare.close(); + }; + + send(data: string) { + this.bare.send(data); + }; + + isOpen(): boolean { + if (this.bare.readyState == WebSocket.CONNECTING || + this.bare.readyState == WebSocket.OPEN) { + return true + } + return false + } + + onOpen(callback: () => void) { + this.bare.onopen = (event) => { + callback(); + } + }; + + onReceive(callback: (data: string) => void) { + this.bare.onmessage = (event) => { + callback(event.data); + } + }; + + onClose(callback: () => void) { + this.bare.onclose = (event) => { + callback(); + }; + }; +} diff --git a/vendor/github.com/yudai/gotty/js/src/webtty.ts b/vendor/github.com/yudai/gotty/js/src/webtty.ts new file mode 100644 index 0000000..1cd79ac --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/src/webtty.ts @@ -0,0 +1,148 @@ +export const protocols = ["webtty"]; + +export const msgInputUnknown = '0'; +export const msgInput = '1'; +export const msgPing = '2'; +export const msgResizeTerminal = '3'; + +export const msgUnknownOutput = '0'; +export const msgOutput = '1'; +export const msgPong = '2'; +export const msgSetWindowTitle = '3'; +export const msgSetPreferences = '4'; +export const msgSetReconnect = '5'; + + +export interface Terminal { + info(): { columns: number, rows: number }; + output(data: string): void; + showMessage(message: string, timeout: number): void; + removeMessage(): void; + setWindowTitle(title: string): void; + setPreferences(value: object): void; + onInput(callback: (input: string) => void): void; + onResize(callback: (colmuns: number, rows: number) => void): void; + reset(): void; + deactivate(): void; + close(): void; +} + +export interface Connection { + open(): void; + close(): void; + send(data: string): void; + isOpen(): boolean; + onOpen(callback: () => void): void; + onReceive(callback: (data: string) => void): void; + onClose(callback: () => void): void; +} + +export interface ConnectionFactory { + create(): Connection; +} + + +export class WebTTY { + term: Terminal; + connectionFactory: ConnectionFactory; + args: string; + authToken: string; + reconnect: number; + + constructor(term: Terminal, connectionFactory: ConnectionFactory, args: string, authToken: string) { + this.term = term; + this.connectionFactory = connectionFactory; + this.args = args; + this.authToken = authToken; + this.reconnect = -1; + }; + + open() { + let connection = this.connectionFactory.create(); + let pingTimer: number; + let reconnectTimeout: number; + + const setup = () => { + connection.onOpen(() => { + const termInfo = this.term.info(); + + connection.send(JSON.stringify( + { + Arguments: this.args, + AuthToken: this.authToken, + } + )); + + + const resizeHandler = (colmuns: number, rows: number) => { + connection.send( + msgResizeTerminal + JSON.stringify( + { + columns: colmuns, + rows: rows + } + ) + ); + }; + + this.term.onResize(resizeHandler); + resizeHandler(termInfo.columns, termInfo.rows); + + this.term.onInput( + (input: string) => { + connection.send(msgInput + input); + } + ); + + pingTimer = setInterval(() => { + connection.send(msgPing) + }, 30 * 1000); + + }); + + connection.onReceive((data) => { + const payload = data.slice(1); + switch (data[0]) { + case msgOutput: + this.term.output(atob(payload)); + break; + case msgPong: + break; + case msgSetWindowTitle: + this.term.setWindowTitle(payload); + break; + case msgSetPreferences: + const preferences = JSON.parse(payload); + this.term.setPreferences(preferences); + break; + case msgSetReconnect: + const autoReconnect = JSON.parse(payload); + console.log("Enabling reconnect: " + autoReconnect + " seconds") + this.reconnect = autoReconnect; + break; + } + }); + + connection.onClose(() => { + clearInterval(pingTimer); + this.term.deactivate(); + this.term.showMessage("Connection Closed", 0); + if (this.reconnect > 0) { + reconnectTimeout = setTimeout(() => { + connection = this.connectionFactory.create(); + this.term.reset(); + setup(); + }, this.reconnect * 1000); + } + }); + + connection.open(); + } + + setup(); + return () => { + clearTimeout(reconnectTimeout); + connection.close(); + } + }; +}; diff --git a/vendor/github.com/yudai/gotty/js/src/xterm.ts b/vendor/github.com/yudai/gotty/js/src/xterm.ts new file mode 100644 index 0000000..16a3e63 --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/src/xterm.ts @@ -0,0 +1,105 @@ +import * as bare from "xterm"; +import { lib } from "libapps" + + +bare.loadAddon("fit"); + +export class Xterm { + elem: HTMLElement; + term: bare; + resizeListener: () => void; + decoder: lib.UTF8Decoder; + + message: HTMLElement; + messageTimeout: number; + messageTimer: number; + + + constructor(elem: HTMLElement) { + this.elem = elem; + this.term = new bare(); + + this.message = elem.ownerDocument.createElement("div"); + this.message.className = "xterm-overlay"; + this.messageTimeout = 2000; + + this.resizeListener = () => { + this.term.fit(); + this.term.scrollToBottom(); + this.showMessage(String(this.term.cols) + "x" + String(this.term.rows), this.messageTimeout); + }; + + this.term.on("open", () => { + this.resizeListener(); + window.addEventListener("resize", () => { this.resizeListener(); }); + }); + + this.term.open(elem, true); + + this.decoder = new lib.UTF8Decoder() + }; + + info(): { columns: number, rows: number } { + return { columns: this.term.cols, rows: this.term.rows }; + }; + + output(data: string) { + this.term.write(this.decoder.decode(data)); + }; + + showMessage(message: string, timeout: number) { + this.message.textContent = message; + this.elem.appendChild(this.message); + + if (this.messageTimer) { + clearTimeout(this.messageTimer); + } + if (timeout > 0) { + this.messageTimer = setTimeout(() => { + this.elem.removeChild(this.message); + }, timeout); + } + }; + + removeMessage(): void { + if (this.message.parentNode == this.elem) { + this.elem.removeChild(this.message); + } + } + + setWindowTitle(title: string) { + document.title = title; + }; + + setPreferences(value: object) { + }; + + onInput(callback: (input: string) => void) { + this.term.on("data", (data) => { + callback(data); + }); + + }; + + onResize(callback: (colmuns: number, rows: number) => void) { + this.term.on("resize", (data) => { + callback(data.cols, data.rows); + }); + }; + + deactivate(): void { + this.term.off("data"); + this.term.off("resize"); + this.term.blur(); + } + + reset(): void { + this.removeMessage(); + this.term.clear(); + } + + close(): void { + window.removeEventListener("resize", this.resizeListener); + this.term.destroy(); + } +} diff --git a/vendor/github.com/yudai/gotty/js/tsconfig.json b/vendor/github.com/yudai/gotty/js/tsconfig.json new file mode 100644 index 0000000..58346f0 --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "strictNullChecks": true, + "noUnusedLocals" : true, + "noImplicitThis": true, + "alwaysStrict": true, + "outDir": "./dist/", + "declaration": true, + "sourceMap": true, + "target": "es5", + "module": "commonJS", + "baseUrl": ".", + "paths": { + "*": ["./typings/*"] + } + }, + "exclude": [ + "node_modules" + ] +} diff --git a/vendor/github.com/yudai/gotty/js/typings/libapps/index.d.ts b/vendor/github.com/yudai/gotty/js/typings/libapps/index.d.ts new file mode 100644 index 0000000..81eb66d --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/typings/libapps/index.d.ts @@ -0,0 +1,51 @@ +export declare namespace hterm { + export class Terminal { + io: IO; + onTerminalReady: () => void; + + constructor(); + getPrefs(): Prefs; + decorate(HTMLElement); + installKeyboard(): void; + uninstallKeyboard(): void; + setWindowTitle(title: string): void; + reset(): void; + softReset(): void; + } + + export class IO { + writeUTF8: ((data: string) => void); + writeUTF16: ((data: string) => void); + onVTKeystroke: ((data: string) => void) | null; + sendString: ((data: string) => void) | null; + onTerminalResize: ((columns: number, rows: number) => void) | null; + + push(): IO; + writeUTF(data: string); + showOverlay(message: string, timeout: number | null); + } + + export class Prefs { + set(key: string, value: string): void; + } + + export var defaultStorage: lib.Storage; +} + +export declare namespace lib { + export interface Storage { + } + + export interface Memory { + new (): Storage; + Memory(): Storage + } + + export var Storage: { + Memory: Memory + } + + export class UTF8Decoder { + decode(str: string) + } +} diff --git a/vendor/github.com/yudai/gotty/js/webpack.config.js b/vendor/github.com/yudai/gotty/js/webpack.config.js new file mode 100644 index 0000000..e035379 --- /dev/null +++ b/vendor/github.com/yudai/gotty/js/webpack.config.js @@ -0,0 +1,29 @@ +const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); + +module.exports = { + entry: "./src/main.ts", + output: { + filename: "./dist/gotty-bundle.js" + }, + devtool: "source-map", + resolve: { + extensions: [".ts", ".tsx", ".js"], + }, + module: { + rules: [ + { + test: /\.tsx?$/, + loader: "ts-loader", + exclude: /node_modules/ + }, + { + test: /\.js$/, + include: /node_modules/, + loader: 'license-loader' + } + ] + }, + plugins: [ + new UglifyJSPlugin() + ] +}; diff --git a/vendor/github.com/yudai/gotty/main.go b/vendor/github.com/yudai/gotty/main.go new file mode 100644 index 0000000..b6290be --- /dev/null +++ b/vendor/github.com/yudai/gotty/main.go @@ -0,0 +1,152 @@ +package main + +import ( + "context" + "fmt" + "log" + "os" + "os/signal" + "strings" + "syscall" + + "github.com/codegangsta/cli" + + "github.com/yudai/gotty/backend/localcommand" + "github.com/yudai/gotty/pkg/homedir" + "github.com/yudai/gotty/server" + "github.com/yudai/gotty/utils" +) + +func main() { + app := cli.NewApp() + app.Name = "gotty" + app.Version = Version + "+" + CommitID + app.Usage = "Share your terminal as a web application" + app.HideHelp = true + cli.AppHelpTemplate = helpTemplate + + appOptions := &server.Options{} + if err := utils.ApplyDefaultValues(appOptions); err != nil { + exit(err, 1) + } + backendOptions := &localcommand.Options{} + if err := utils.ApplyDefaultValues(backendOptions); err != nil { + exit(err, 1) + } + + cliFlags, flagMappings, err := utils.GenerateFlags(appOptions, backendOptions) + if err != nil { + exit(err, 3) + } + + app.Flags = append( + cliFlags, + cli.StringFlag{ + Name: "config", + Value: "~/.gotty", + Usage: "Config file path", + EnvVar: "GOTTY_CONFIG", + }, + ) + + app.Action = func(c *cli.Context) { + if len(c.Args()) == 0 { + msg := "Error: No command given." + cli.ShowAppHelp(c) + exit(fmt.Errorf(msg), 1) + } + + configFile := c.String("config") + _, err := os.Stat(homedir.Expand(configFile)) + if configFile != "~/.gotty" || !os.IsNotExist(err) { + if err := utils.ApplyConfigFile(configFile, appOptions, backendOptions); err != nil { + exit(err, 2) + } + } + + utils.ApplyFlags(cliFlags, flagMappings, c, appOptions, backendOptions) + + appOptions.EnableBasicAuth = c.IsSet("credential") + appOptions.EnableTLSClientAuth = c.IsSet("tls-ca-crt") + + err = appOptions.Validate() + if err != nil { + exit(err, 6) + } + + args := c.Args() + factory, err := localcommand.NewFactory(args[0], args[1:], backendOptions) + if err != nil { + exit(err, 3) + } + + hostname, _ := os.Hostname() + appOptions.TitleVariables = map[string]interface{}{ + "command": args[0], + "argv": args[1:], + "hostname": hostname, + } + + srv, err := server.New(factory, appOptions) + if err != nil { + exit(err, 3) + } + + ctx, cancel := context.WithCancel(context.Background()) + gCtx, gCancel := context.WithCancel(context.Background()) + + log.Printf("GoTTY is starting with command: %s", strings.Join(args, " ")) + + errs := make(chan error, 1) + go func() { + errs <- srv.Run(ctx, server.WithGracefullContext(gCtx)) + }() + err = waitSignals(errs, cancel, gCancel) + + if err != nil && err != context.Canceled { + fmt.Printf("Error: %s\n", err) + exit(err, 8) + } + + } + app.Run(os.Args) +} + +func exit(err error, code int) { + if err != nil { + fmt.Println(err) + } + os.Exit(code) +} + +func waitSignals(errs chan error, cancel context.CancelFunc, gracefullCancel context.CancelFunc) error { + sigChan := make(chan os.Signal, 1) + signal.Notify( + sigChan, + syscall.SIGINT, + syscall.SIGTERM, + ) + + select { + case err := <-errs: + return err + + case s := <-sigChan: + switch s { + case syscall.SIGINT: + gracefullCancel() + fmt.Println("C-C to force close") + select { + case err := <-errs: + return err + case <-sigChan: + fmt.Println("Force closing...") + cancel() + return <-errs + } + default: + cancel() + return <-errs + } + } +} diff --git a/vendor/github.com/yudai/gotty/pkg/homedir/expand.go b/vendor/github.com/yudai/gotty/pkg/homedir/expand.go new file mode 100644 index 0000000..724a203 --- /dev/null +++ b/vendor/github.com/yudai/gotty/pkg/homedir/expand.go @@ -0,0 +1,13 @@ +package homedir + +import ( + "os" +) + +func Expand(path string) string { + if path[0:2] == "~/" { + return os.Getenv("HOME") + path[1:] + } else { + return path + } +} diff --git a/vendor/github.com/yudai/gotty/pkg/randomstring/generate.go b/vendor/github.com/yudai/gotty/pkg/randomstring/generate.go new file mode 100644 index 0000000..b5062ce --- /dev/null +++ b/vendor/github.com/yudai/gotty/pkg/randomstring/generate.go @@ -0,0 +1,18 @@ +package randomstring + +import ( + "crypto/rand" + "math/big" + "strconv" +) + +func Generate(length int) string { + const base = 36 + size := big.NewInt(base) + n := make([]byte, length) + for i, _ := range n { + c, _ := rand.Int(rand.Reader, size) + n[i] = strconv.FormatInt(c.Int64(), base)[0] + } + return string(n) +} diff --git a/vendor/github.com/yudai/gotty/resources/favicon.png b/vendor/github.com/yudai/gotty/resources/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1eb3936b92932483736ada405f7236cba5913b GIT binary patch literal 863 zcmV-l1EBngP)|tMR#sG0R1_2xFDxz>7Z)2F8$?7zH8nLe zGc!s`N;Wn&I5;>UVm351G%zqQF)=YCBqVipbt)n!AXPFhD=jA9ZxPLDJLINF#xeUCoU>?cXuc+D=IN9 z0Jc0MBO@p!Coe895pgnFT3QrlFfb@BE+s4?S~VU~FD@}JDIq2*J~1UGCMz;698WDQ zBq}f_EGQr)S65d6t~w_rCMqW>EGa7`Ehqr5J1jIWA|oRw9waF+EGsiE1fV)5BPAM8 zEgw-Z0JS>+vpXvzChA9D?(W{7Zt^?~?B}x%%yLE46cjHp;$NcvfaD+q5S6dvH_)Mjo`K%b-Y}?K3vDj9V|kyF?!nA(0u=g35>as zsU|+y@6@B1oD5`+!)GCw|DjMi2ge6*TS9Pm!Jue9;Ii#sLNGU|Lus;hu%~t=gka{J zMrl(vuoaFE_~3J(M}r~?9 + + + {{ .title }} + + + + + + +
+ + + + + diff --git a/vendor/github.com/yudai/gotty/resources/xterm_customize.css b/vendor/github.com/yudai/gotty/resources/xterm_customize.css new file mode 100644 index 0000000..8e4ddd9 --- /dev/null +++ b/vendor/github.com/yudai/gotty/resources/xterm_customize.css @@ -0,0 +1,19 @@ +.terminal { + font-family: "DejaVu Sans Mono", "Everson Mono", FreeMono, Menlo, Terminal, monospace, "Apple Symbols"; +} + +.xterm-overlay { + font-family: "DejaVu Sans Mono", "Everson Mono", FreeMono, Menlo, Terminal, monospace, "Apple Symbols"; + border-radius: 15px; + font-size: xx-large; + color: black; + background: white; + opacity: 0.75; + padding: 0.2em 0.5em 0.2em 0.5em; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + user-select: none; + transition: opacity 180ms ease-in; +} \ No newline at end of file diff --git a/vendor/github.com/yudai/gotty/screenshot.gif b/vendor/github.com/yudai/gotty/screenshot.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d13c8384179b726570ff5c823b0e6a6d9a075a7 GIT binary patch literal 2174622 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%0AB#jaeX0szsrY>H&F%LS>|VNfbq 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

0TU;zMLWzk@X}$!)k4NN2=MC%!u;4w;-Zs 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

RqOmSKhd)|~~Jg*7QX~t8AJ{(&v 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

oFevyr1VD$(Qh=vqm%U}~PCCMy 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

o(cpaXae=Z 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

=ZhPIo&sL(zZj-d1pGpgwLPS z`$ib+loT5oxTU?wUks8hkFFN0I|y@Vf!z-KJMtyuD0ewNb=`EdY&HJaSRl(tmbxlj0l4z289-rp%OCe3nZrzo=6A-SpnrqM3LM@rj7sZ|8$6@E;qCn0>M`SV>B0tj z!18uJ%aMmt)n7>xx-^}9>8GeyJ0U{H#{=;l2UcB0h_lMr^@4<_8^}lkZY=f3qzHlQ zTe>P9UNa>E6Wm&VCc&Uvi8Oi6Ff_NGMn=Zy>=ntOlC;mZ%G5o1Parh7Fm@v;ik`v# z_3G`RA8=@BsTG4)ZhK>E}v&#UHo5EoqITw{~!PF z?Y0e@kz|KPb5>!@A*V9tOj&1y<``0jIaI29<`^-Dq>|syR!_91`VIbEptn zCrPz_`~LI0e!qWrU)Qc(yYFk)-mlm5@pxALc~#*MBOc$XZVBA~DVWCX_)vZGZ3_n+ z`#sci)>cE}uJGz|$5D;+TdTR&uZ|YhQo8FpZt473b!U}-$^15(wp98%+-@Ax%TMcK z^a-w?iLGyQT(8+e%TQbg8G{dV*Y^SnnvwbCm@UZzt>09JcG~`zbBX3qWdxBQ{j8qO z>sc%frokSu_Dy^}&`0B4d^6_; z%l@>>&GNIuaI^K*6T7VEnEm-1e~C|g-uAP~<7sI)-n=LGxAoUqZP~zNp%D_kXy~Gq z{q5_s*G5T0LtbuIjf7ho7V@@}J&wG5xj*pi-hG=F`=hPKEuEBa@7D7+9Z>t``O<|$ z71yV!I!Kb%Y*)DR&3pu(XRzlU;)mZ?I4IN0+UIlI-QcDFZ~FIFH)bbBC*lUT@Apsr zn)7uOlvg6xK5Tr{^x!cDFM>WXeyA`el(q^01V+Evua*407jo-*c`hLJn!@+pUA_Vh zuIgvMpRH(VQBwMbXa$^G5!2Fpx^U+XpZAL`M>MQwst((u)B?uj0HS%O*A|oAb-h!k zN3~^L$|a;<=HtpmN1Gd|^^;ROwo+q#D)Z`!d(bnM&gcCfC&j&=*))`9dVs1#u2MU1 z)AYa+S)nt1douUHQEy5w`BS*}rto)X`p45soKrT@adEB9KD+;!C4C^kRG{fA{=5rw zHg6@x4h#03byL@_CL@Tzoj*#K?pyhqHE3KIK2qB_|1*dlJNvipKiuW^L-y5853a4h z)x_=v1pGG|)kHw8zwN)3>HH_Lk4zpzvj7HJUyfB%(MMmX_8k_WwW|qq$mGAn5r9>h zRXRttzYPXCXTsh-f(1YzDqxoHn&F$UF&I)6(IPNEC`uXr-#>5KQjegtib$|AGLbmu zsU`(3;@FNydSZ6m=6^S+^!enQP=Ziqx8>j0iIz&a0ZTqq8l~j2WzV!6!4*#@yx@7N z!vyG|!IYDKwXlDT>5uE7+z_P>q`lM}Umb}2Iqn1;tnI>A-?3xQ0>EKQiOY$QRBk-a z2unz^x0p3X+W1MMxK;wADFE=b?LZGeA~X+%qVfW_03s*i+CyCF*pRp}_Uwq?*m=3m zo)oRBv#=;AH{O=+VAlF_HAw@yxJHI#9aVBTe2VyPu|5CtckPLdrSiELAOz^q z`*Oi6{(TSC&|4lMD|+}i`Gs1jc+||%wfeMBgFva}N~{6|zy=&#hUVgAy6tuIbF&&#@Ktq>(NjauLC*sX>Q%K9h zFXtlNRhrh;Y?UoQB*x)NirF$}Pnxv<1qTW!wv30d0u7V|MCCCm_H!w7@qbgV*_Eofj)=q+)E zquVdtKZ|MUO#$_B&}E5wjM*?|1UG$XeAbRaPj-4 zTa|SQk`a7aQePo1923+UdRzT$-NrQ*-!7o3HIxHK$$|SYUYdIWV~R=gtBbb;UtbcD zo{*gRRv&)XFamUzQ9d zGK;mo`F*rt*sSB7I=6Q-*f$dN)~tme`mzc!Hr#YC{)ngUtw;X+_{{kBMTeo;==23C=xxak%ef-JK6T-9?R*6`dQQX2J6 z@)`6i9u*FS`j~dYI-XTes!2s+;_a8-4IRyml`d)(9KB*Ovv7iOoqDZ39|*{#6Wk4p zjP$dQKK!!RDS!d}4Lr|iTOGZp+6nk7aj`?Q?M17XW6#ka9*q}iLy1(%mpP_dPq>01 zJ6~dM$yVKo440wK(=yI0@Kt|!$4Zreq@=4(%P!nDUKB7AkZE|36g z^Qjqqd%ZX_{~7Nr+YH=%RiIkGK(nP1Gh}bl z3J_ZO8}CJc5#_LOj%rf5TGAx_#q>4-2P02jKhlG)nB10Jb3GuWf(qwfGVL8Gutrz<*K$l*kyZDTR7pk zJytl0Mv7$3X={Ed+J@U>SM9MQvV_M>qH#OYb80pvk-nspf&bo!||A;inc35bX0htDw5il^!zcNv2O))(5zmz=8HyKuI`7Z zCH1V7`kqfznf^|l1Fc3@oi}xq7vrR~`Ur?>WjgjMn5ZB2W%g*?uCjz+!(f069d46}MO6$JFG!F$ah-v zrMCA%myV(%j0$09pc^tNxNaISKs8ZYb8x2DM(G;X{Vdtj0G#5hhI6o`pxgo(b^Php z{w_4H4jmo{MLC7CqRsZ}8-{5R`k_S3PLsff-?c}jgsfVD2E|;2AA=!h22-^+*0s_e zVrkeYn3`w4Pnc6vD-GxqC`czNVVsYTkwz?jo^=Q*O0@2F4<)$4W?(`8mW~WF5*OwO z_!-}kr!BJ~%q4ey8Ic5^yVma>0;v5YQ)$oNS51-OqpLWY0sI1HBymT(joiq${zxFK z95VwD@O)|N9~Z?Z1^_0gASn?*+*7G4qk#APVjlcnKs_YNl|J)^cE^G)jeJ5>aj^5` z7L{AHz&-DyX3=L9vEnmeQn`$)yW`tnOEX%we1>L$y{VbAXDOWEZu-5t3Sh9+hRf}q z3rvIA?lsTT6WU0T(NZ)3{klz+y|yo5daGt_C8Paz&`$TztBFzJ7|G63vu=yNDFS{P zJ_Jh%v&SK!fm*iL;q9?3TCSfQ$``^&myHt|8$QXYSBw}PO@C;ejeG?D!7{J)rWkD> zel{y16X#(BOkY{J#!1^EFQ*?(JEYB(0|{daC#Ti`u4_nYp!IVYfmADB08<~DTz2@e zcOtuL)E-w*uF6~7e!C0ZEB$=@93wt@ffm~wx99SYBzM|YWk(e6r52SrRk{R6u6tJj zo)Ymf-L!`nf7r5^m=C?^iN%oB_BcU*dW+%yE9L<<*Y+hj0F~8_AhJK)b3(j3SoiMg z&{das-Ip^>OrN9izOvm3SI1Ib`q^Rw1`zgV(gV6*G7S^_cNyB3&3N{uZ9k*C$=)bv z)3V$phl8Tv`il2Kdq=OUfMU(P8lH9It)U?e;E4bWy9034zCcwovc50$w=CwJWM4wK z+BL0NL0fKHfl?5zs!jFyJ`@DA9_NM?axs`F#Ah(b{+8wfe@zRA;%B^mq$vF9XufYS zan=5MFyo1Ec1EeEo;egc+OM^<&ob|Mv*-0_dS~c? zi!;IhIvrnW)0Wb*epu%JOY=}25BWwvkaT8OlqQ`l5#7mLd_}e@)Kv`$JfflBYo6<* zS+OPmnfF$}w68k#=&MSEbhE+McYmGgTsq_1XzsRjJ~Z6(z!9MPl$mEuTA^0L)?Nso z%h5FBV@Y*J0YybWyeoS}gkla>M%!*mB%P;YOJz_z&N6F1odL(HeB5d99bXoR3lMmf zF$$;nxMUaRz3Xq1We)x0V6OW(n$b|LQMf2h=7nRa$J(g@WYiL8T>};?q_nsT(Bet` zTgQNj@)a}fzjp(}X6>_bVJWL&a%w|6j%xi#Xv2g}(gVoE=0UYBy^jB2D89X3#CR@| z10e5Tx$+||>SOsld2oigVZ!8xSRNY0puxkSs=06$7%#T z+kNwOFJJwGK$TYxqXMaiCKqR)Tv@wSE!ZYeo&ce|&EGf4fea~$`xudyi z(r_M9l~7J+y13`>IGEI?n%7Zz`3SVb^--7x>_3&z@QR$3AfQ0wtik5$?U%f~_G~z= zC;M?`>H6yvQ?tPA)Sd$&lCmS+XzFx~loW`{=vvxk<$l1lxlabsJ6=$ZvA!ccN_Ylu zKRPtI!Epv(P>zU&vK!u9A;8sIg!)Nv>`I`OqK9q^`Jyz`lYF9yk*Mb&AQAmeii=x5 z(X1Of&}@-9NiPDq<6eLOIb?q%ZgxX>`5LL#P2TOOP(v-}8?eukcvs`v9h{T?MT#N?;C9-gB*=pd(zdEQ@{0$%cuK4BNLKf&wlC= zMzXO{ci;hsj?V0~4KV9Xvvuxr(U*~b@mVvj)Wf8&`rv4)YgK%PqGMNx2>qCkek?%i zn(cagadqg&VGD`Ri;u0ewO0ddu^y?0BVV~X(FE;M5I!YkT?0q50x?XV!sorb;LKdT z%TaM!$!@jt6``Z?^A9xsY96?pYJLq0mMx%%o{7^AjI3+$esuJoJu2?MD={FdMO2vE z0mO>5Px_D@j!mne!?piL&O$iLjpKjsQ|6iEq`;#5j0sinfmW#hvGT<0h2Rs~iOH~? zAG;DWIhPy$d-LV8rwDjT6@6TgHe4VH5-cjH*zL;XrUICjw(PYJxVZwo8OVFngR2q)`3d+^lIXRW(;=Ad|hRG)5sN)bScs0Zi` zWs`pbt_ALN-ob_c=shHN{_(>3s(#5Pl&pB$zqSvOHqV0qQMxEnqG&aj7o6K>HAOqp zbPY36UfKKK0^*8AA8i9Z@h}rw0ccopAbBd{q=o%Ebz5RAKv;nmCc|*0t3Z+lp}Krc zQn1*`&Zev!_k<>h2qaRU0guTO+453M&!I^NTMeVSbR`*Q0OC{MkDay<)ZH@Z;Rrn6 z)C;t8-;B?EJKVC%VfpUQ%Lm(!g8HV;V@$Ooe&6U7yWcN$_aD1EyfbWRxoNEFon+xs z?$B7;oUUWw`))Kl_%!*&r=BN2FLZbTqVH?quk+gPPw?;M)O;%H(gITO4{`sD{@7$1 zm$#>3)>|jbnpAXVsciOb%`~a(K1;GW{zsNt)yo~|2B6`?YH9#dA$Mf#{lWAU_^6q0 zHC>Q;-uA@mA33vHVYy?rvLQF;eKxvv9uSI#Y8^o<_BgM48XCFj_we{%d5b#lGodnm z3^G)rR*b7iKbs(i8?INXXkuDf+9j_5FCT(kP4)g4gy$=^Rt&d==%Jb?O88XX|91<*g0Oa>E&F&06FKg_Ri<+qO=OeY>) zVK9kiy@eTTtZHFQs9! z$=*S`B-hO7sW$VU)GQ8jKRz>5L{??bBqNz*0VnFenpX&xl9Wy~#t1_$M&A1M5+4SL zx{P`z0xQn>D>(O{52p5nT{$KBwad&BV5H+L$-y2lm-P5HiAlVO#VJaFyGL9t)>P>! z#K{8Xq+ycf+&-ePAjfK40DQQ5{g&^XsYw%CU>d?sEHRVD?ttVw%k7c3A4`0g2Y~*& z*+nOucDDoHA^;l6ZSniz#-Tph>p+Mj_%69HEv>_}Ka!6Jp3cUK8b6fXxWe?e1-U1) zQ}%Wv2E>|Yt)z)Kpk;OG#zgXXBfX#6iob^gEd_zjXwXb)(-W*+>v`-y_M{VTOYYux z5I8n!+^K%Le_iUDyP2VW}7C_MDeeTYQdtv>#KW;#3+-Q?l zK&UkiIB&RFirq3MU=O?6Da4QL^4cE%a^JzTlK4^I=;!gT0!}L=j0NRwPZ$roayH?0 z$@C4mNmFMiFOsHn?XbsY z3cPk4dtZDo_t=Mv(JzjDEIW-oK3kEu?lmE7a=*KfZ#{^`~e?1_cD13OME-g}pO zVyWfxixZz8|HCGW+ZDZ%zjSZNOa9tN8A$&2!cOtz_aQH@lRrie=AB%A9X)XJ=iAeY zr&gx&yiWc4a3$~5>iq42Q@@vP>f44MmQFf0?2sSu}>k~0jI z835)_v_^ZD5+Kh6V6#g5Wf;63fCilw)u*@3O>(ru>2Mm~0|7xWOnp0O3jx|m4j4F3 zK-lCMPDc}Ql|}7qRYk!JjITUJ)VVfxO@{pmf!vi6XZ?!$EJPCRq^!8pByx?0W$ExlUX4AwbEMk6T;P17b{al)`5~a=lAx>Y6i1R@Xiz@z!~eGRNF(#D?t)wy?dXF*el_WJj-E_y-K z!he}T@>bU%8F$lz>T$Yyd2;=dgR46)4J7MgV+f7@k$29O7KIeCvNn?n@=MMdeAIrf z-ye%CEPWC+wedpMK=ORtl|KtLcK_srkUX0&V_0jict)7IiCvC4QcK@(@%&Tca4iH= zprdikS>>x^IA$f-$z=6esBbqAPN>kc8h4FX-&3L1c5eONT4(*EBYABh!SKqBFPQ+VTkU)9_uxe22e1F~*uO zy}NZ64z6>zzM^lBf?|uP&vO8Si$n4&)Ep0m+Pi0flw7kld6yk!b-e_IJFZjVYr-AY z%E%43tiG35eXgNl6S1>aQoOE0wJlgtacFPxc8(rH2Ld#i@a+tk`)=(jcaz{8L)$gz zx_S^T1H2>^dz8zs0J2}**Qn%($h&w_JAO>cTX?bjMUmXvi!{W>QjttK-!WQ?m7@Fo zo?M9!7uKwVR%K0+ud@(nS3!#SI8dI?O4Z6Gr!Y(IYw80FcGiP(QjNPz6hv8H@l2-7 z%zo{c%k6T;Yvfmk0L0gqjylG42+(Q>TO?l?d4l6iLdM72syWf05Y;7 z8J`^3jqOp|2z6S@{-hN2ZEsfMec_qS^@4Q=df#F#L;%t3sWK{G0GVCXs4Wx1j9E^b z-d-Pdc9)O=ZDv~H1D^ces5Y?7)oHW0h_i15e`5U@0Au%SGe{vayJ{VEYAZ_u;hPXfCH5$Nv3K`t#Ss^1brD5gEySBZ`{U~&w? z+u+Drj_MHY@Y-6Bk2I}1|=2V<5U1&u4$KE z_bB`t3$Zz%EoDnp#e_la+ioSLt1wIE-R*r-j=w;dJo_uKu69O#voXhd8u>Ahn?u31J3sd3^z?Ic~nc2xR+LQ-Ry>h=6-AI0K za76)6WGR^$z~qeo^$>)@*vs(|0Ic`e3+T1ydEiLx&tM@?&(R-5E0d49V?o)zdG~}CjYk-D9kO{GVbk-^9^Osuh6*i zYVM7-JJWtH{e750+30Z9Lu1ObZx4U?s^=x;D&k(z2-oW0Y?R}lV+|{NRe>BaVRp)<)8xwTv zck|K7rbG7MZqAq7c*#47-sW64e*442taYFFj@>hO*A%c(k96Sv{ppEF!wqUnv9E3g zcON6TG`I5n3c*yuB&4kZR=!m9Nyp8@XmGE%| zSrE@!5=_grUR}up+|_A}0+7Vi;kg(+2r2N`lr^0T%7#ENsWKv@09oQggYBvQfuh=NKv};qy)xxOmV__E};Eb9AX$rjNQVh1Jh6X3`f^#DrtRnIw<-dm&Se4Da zzp~wT`~%%hl`qIk*E9=(d0B)&aLKVHpAeY0D*0MojJsPctP$&5L%XWF5rUt5@vHWN zyt&oRGPh0q+FYM|zaq;X@4FV-=v|goTYh}1wl@Et)Z_z;#9m)4l{NV^)9gmnHhkcD z@$hu3W|PnX`BM_dLCQwdQ?N?@WU)Zz5T65=5czFrf~+zKO6|vI0U~6+a(5K&en$evOGB`c9hm`L1sG$2l+izaaws*kI z@;e-&8~huQhP>oPNssc4(mPM+8-#EyJ~)R%JFwr+vTu{t%+IIsHpvOo-}fyEjXpTW z^&1fNZSLeEY0}*wg=Z64?ozYKxSzC{CBO|%>_!7P3lh3ImQ}+q%(Up+>nma! z0pO|4l1-EvhIH^m5#v6PVHP5kH1|+5PD040DsHZoKd{xfCwhLir2r>u3@fu~@4uew z93Yj)CDa|MEsuV-K}Y7qM}zo93c1^Qs2m1{0E9)sWt`M`8#I%P!SKEN5~_6OE^sk$ zJicfoO#71wpP_xYjMPGVsPiQ=_!D){1YwjhpziCRGSpXxXQe+T3xXN<)@0faPI<5Gki% z#z6XyXhhqtFNbNWI;oYw)F1XrClrAhm@yz|JPCY@RYb+JGNi$HFgKrrV?le@ zdA4DF$26i3^3#m^L=M1g#c{_=CB}2jk8U;rYI92Op7!&&HbMt!tTIK=%c7XF%T-y; zG+2ueVQtnfQ~%XLt)Eq}DG4q4#Ir0kaAjM7TYnTaYb|Fu<}!um5+2I@^xC zodPqQ5+O)@hQ`0)0Q8bcw#fn)Bd=9b%x0kcbL?T(^<10eKorUIZvLE^0Nn?m{AXw$ z0V@uMv*HF=D_^xS$$rt7mR&t>Qs!JZAz*czAm^ohlVd%2OWkb>6M?Gn%=dtq5-Q+N zettrD2a#wp6kPH>FQpLNeE*O%N*1I_;az|S5uGfTDQEmb4Bjuf`fz0-TyifTIm?nd z=sPg2l>usfWN2{EoFGZK5+qnv8&jAizT0T3Gy=Re(9s{|01+xDImwx4~kO<%tt%>8c= zPVkdR$+~>3uQU-rVWB89JOz@l0W(Oxi@j@~;X~GnRu2~ZtHrxWb1x@C)`o@d-^x2Z zsu2p-zcPybqDXbr+D=;Uuf+?zcUm%j3|WfUF^~YfA(DYaq07?pWEyTHST$n@ikp!L z3z`unRsMzpt>lRZ&XqEwAPu=^(}DAUm4(-jiaX6{kh7@cYT$wI&46%EZq_bvR@`ov zG?;n%D_p92Oy|Z!z8rrgpka(coswpo9Jy_^%a?$#or)G=OkA&b#J{mKHGivpJ%BKmUKx?2e5#UVBFPbkk#l;%*i%9VZ4_6 z`nz7&%d>fEOXf7v_np#~Sn$q|@E%+eC-=`W1F(k?GF)8_!fLHRq%3SsMxqOuYewmCsLa0`3gQ_O+-=#TR!p+hqw=;5WV1$G;YWKj7kM21O(FqVA3 z2LfP-6>lMCMXlQygz!PqVhDigv2RI35NnnPwm{gh273K6Tz*tG(lltT4scL}y~p=x z;K8JtZ|^R&H4hvT(Bt>&YKz#Tno~9Xm@X=?xv~3q=EBOzTSodf7s% zQ9Ivkt@uHa-l#Rm!~!Dh=?w5UEjzka+e)Ai!wk^+zyKh`fDrIi-q>r5%x=_n1+ZUt zqfYDES?d9b^#`BJQU}NY$dd##R;C#Ore!r-<$2P#K*1r!2IHJ*t)uZu3X)wwFY_S$ z8|HN}Y?_}o$bbP%bZjD~7zGaTU`=Aj;D#duOr2cEw1YroslFAhVe6ZFilIE%0t0ne z=J?lP>AWQeYp)bzRG$VTeo$pYw!Skr3B3TD<14oE zFbxtGJCchjD%lpmPqnTFy_;>ke|Qa~fsPL-0b~V=h%&@?jTc8t&cROpG(8c4C5gSY zn$WX+#mrH74-M7JSB$%dK7mvCK`wUDx@dF=_52uSW-ja>4>tH+kxe^EFh=5--~z+H zU*{-@N7#e5arMD1_S3jhGPeUy*u~JJe`Iyb3*mHD? z!XlF%XbSlAr14Bw3KYpwmkrv!hXq%b7LB=By%k~W22hh^+T4GGeR z$bMEuS-P1v9|YKHA-v%}wn=O{(t@33AV0k4z_pSGjTKse$nCpP}X7a;~{=snkT6B&vR8!QG}&R%k*N=go#l}j0x zrU<^9TGgWmnFpn&e`$dLVg)hIM~i4E+YnN(aScHRwX~^RVZTBj3{?<>{LQL&T`qw+}nJF>aqfc)vajc?-Q;iuv&3xNU&h^p(U^7wxoWEhBnTp9D zf^T?Tf1-iTm~zUL_yF^rCX3X|rJwY#7e07&UdNxT0B6u#GqeJ%-8?jnMb)rDUZu&k zi>zPlu9?Y19gO2o(6XQ(hEOJ2t0+0`#SgE|rHEU(A5M z8x(GfzGL{~uMPCR-#T!ZlgE^Hz6W)d?veoR3;gE2ak@D{W?$9`YEZn{o210bo@S`h zbiT-rnw$l$@mwc*GPr6^CE5R@Ux+0;Ij5gGJDqIfM>T74Ixyp(lfCuFY?W6$%#c>$ zUTRnK71FQk_^_qxp^FQ`(YeqJ7H<1Ub+}8b2O}h>z~eHZDy3be&4aHkt|8l)t=l_= zy71kAvKE+BH#(ou1TSdSy^umd;ww<9^w%U6tGyx}4U=zyk{nY$+jH zR@A5-%GJm$o1WHBosMJ79MisN*)FS`EdGS|D%{E3mY0}gVV#rJvf#gFhH8B{F>0OD z>?^Y=dDoq6dYhvsy zj)xi6-BP!{lE7N6u-9t+ab51y=mzi9zRowb&yRa{d|Bw!%Xvttdxn7ByzEKJkauNF zUA?wE@bHy+5W*|{%(Gi@wZ?PCW~R?vHI2QHp_@%>@A}mq)!OIfKy9lMYz`R+485Ln zLb9p5uIG4%^EKsX=WLAbdwP0>g*^Uam356mZ?^*jb*Pn(ZckCyZFk&k+xi~W&5V=Q zcJ@8`zRM))&|}XI3dU@+K}U1(sgNwKr9b}XlZSa%TdOUMAHI3eGhLi>$>P7wYk~|f z%W~|TEQIt)Gh*YOV~5*8Qy`wPwMcuUl?+1K+XA9m44FuymnGKqJN>?OhF)lARtokq zkz<~6U15o^$CTk~RJpFAC#H+Q3$;4FH z4dRm!J9xlshN?|6g|+TRUObVgSS$UlwfRIt9dSS}@vJHqO$s|{Kgmb#+YiQ&-Z<{1#BcGuMCeshu48>1OtfZ}B3lZWk)Msp7VBQc$ z*HusoWl$o+x7neiHRIC@EY!urCKu)v7e&~EeBk6X)mmj^qv^8%L7jMe&zjkbFJ?!K zI#R^Ei#xT=vB8`8*?M{iC&@|WneJh;}gtAbNSeS>EV4{c`3(16kRXqKHf)XO6 z%_A&v$i8*w3#$N20XntnD9AuBlKFp>Y}E_55P4Yn2XjUvzJL&s$kz#FVK$7Gm*Qm z*eNE&4Jd6xiV&?V)av7B|J70dHDZaz3M%~8qbrftf}WR&zM!h%4blHFSOv9)Fj z&jOrLBJ|V>7wk_7W`Upg?5HTR&kVT~VdFO-x;M*G{Cp&pB2uiAZEdPd`aa4VU?41^ z|IS5)AVdhM550w<*du-wB)ORpBUB9j?67YfVF?tlFZd-0&_^Ps<~)rtBDTqXMOU7^ z*S>u}7=ep?#i(~N-6dFBE!fIO$DPiiNgKgf99F%e1%wDh13=r-ID|$hz)QLgt6F1G z7}Y&2dzYILfKj8XOSk7%OI6CB%`09rt_50(q)X|b|5j7Dx_U2k>jge(JixXU0DPX6 z4z!RpK<=o?dCRjzc2YTjJrzKFc_M*U)dout&(RWY=Q{Dou(808X~kw4hP@%&e6tys zCYQKsx>OaljpT$T3I$#}E*xJpYW(Yw^8!sJkUm)6GuQ6T(^304lbu?;Eg<31Jhf)p z$8HN?oGdZW7kK(nT(K-cAa+Nt>Mpe>>1qd-qh2>1>8YmQC@w``JK(8rNqc1g5TmAO z)suo-RFGYuk;G54GR4?hmwvdq!oh_G)Sk^Wy#}xblK#8)QKte~IUpoFR(dSrMECL3IwRS{~er(pGu0s&Ji9|@+myOgeF zK);`9MBKfTmV2UwEL(G&SAI43r0c3VJRztU*ND)DiH2?6uHR+NR|>$ zr?I-hB(z$~q89A2Ku--{=Ce!zNW`HHzIO*}uyh4|`o$cK1mI%=qG-C@UttNGAD`z< zqOg>uwv@0uc~;F8O7ECn>OHKGOdtW79Ydv4^;cgTc_64<|Ng>^j z(wm2h+4Fb6BN@`#6apaA%smg9&4@Q#t5U|@1KHy}Sd#bM*@f(WpZwf}aP54EO3a@o zQ4*{~xopo1I_uxZt`6=gMG7X>6IXJ=9-j7tpSTk28-D1DZ_<5=wTp3l8TG3A*Exm{=}0y^4_0lRBLpaAReS4Y zL^Y>l<}P_j?xp1UKr%=+uPvolN#W-Nmwn4-3@>a`S0D%Ds_SJF7mRB@z~=BjlmrH^ zVPMy>Ne&JV<;&2}Nh^vQ{eSzC!eh2rD(P(u(Wn38X`bW#qN7mFcwj=KQ&k#@#<$Qj zMt3Uuiat?lsh~;A9;DH+h%ie&cZ&Fv20CxNbvunW9 z%v!{G%9~`d>IT!v4ibUl`5;?5Z(-WMx~mDsQVumD0fPQTC!`o|H6~!V zNc~KI@;R0hT821%kYq+vO0=cx&DEoMEkzu55-gEDd)~f}mfqE=t7p-S!vC-*AzJxZ zOJe~b5-3VndT#149=s*wOo=~@c$@ehZr(B&r^c7Ip>Q|K0I0Ym4ki%*426RT&>t#e zL-eh-wZM#{qcvN=AzhD9qx#+19}?~xlX47zs;AYT8fTg<-+6%(b2k*$W$tXx!jNO- zoX0xkq@2w;tDp)e$` zjx%#{?A4xcmSNBj4!6Ycx**vMxN9w*+F&RZ)|PNmaZuIe6pWiFsXWhDDHV5^o1uVV z0&{X->JVcH8(*eMiFCX?H=BZ`^3EQ7TX_%#%=c1#l>twz+6q3itIVXbbYfE7a(9l- zPkA6Dl(`{9_7ElWUM|M5O0CJ}Ofv6ocJYs32)@#@?Vf`N+u)j7I*f5U(ms3pqion- zOHD$Q@P^4OXkE9}9k+U1(Z3&6cM~?bRZy;IK3OFbD{jZ#m40c`ijRQKwn&PSf)BD6 z=oO=^$2ihu>u|C~WRJU`jdQB+w$wc6bULmgJ2bSJ$7pJV>K)%A;!_&BF^FssSZ5=ot9xmnwG;MNuH zpj@P%qY4A#DI8|)GcsVHRH@3EO>z8p=fNALW&F7S9;tQViDhleIZY~Uy^$kI4GaWCqIx=kFa5op=YmUIIiUht(fKF7aRr!a!Uj{@a-9&Hcap z#xbe4mJUww=FI=oAh3YMq-NEOklA+3vrp|8c6-j06dk#*{VV(OhO&=w!+DK8LIlBs z3X$qAU=@CO$j-Acn$O1GQ!<{rU=uiU+Cx@_^SiQJMs#-LXsEm*pBMiMV5ar&!>doZ z4J8gffJ1kUS%En zDDSOKx@~&*mMKOLu7BU@`Zg*|McN;f)CS-i%sY zKZqOr#clgEyG+3n@435`Hjggef`|wtIxU4+PgOpo(G&ZhApJvZh8=d zm3@@t=9a&d?EUlV{o`+lNdeFA@^ggp8=Z&!pLgy%{d^3zp4}>#SRJMG9!mMHsDP(o zLtNd12$gfcjBk?(EB(p$J`Z^ypZ++~BUirM_m}wcoo~syEG|Vtq=9bs|1O-7#5`&0 z1spb?qgd9!*x9V{8@mG6eqjhUZ$5X6!NbwuGdJu+m!25!6r8#UiScqq$7Ppg^NjfU zz@189V%tx&pi*eIDvi(($)&Sf8}B^%au`#}Xj?O3Z?l?d1i=JBZ5o{vDYl}8S*yTk ze|L=I|N2S3NE*`4QX2mC{Aon+abZw^{!^7?;Jiw+LJq(HrHjb;?h zSdN}i0*GAgC>X)LaQj!>b`!rR%*eLW5Kw~_z{0nhSjqEBfbJ59HKaC~NlnL)JR3)O ziAHf#xV^x*XzQLQRh#L5;BwZ-98DIUbO{VHcMZMD9exz(;!?ODuO+da-?H|uAc zP0p`&TJ(43z!hpG>!D8g?N3n4hCAyquG*vM$5r~aMHlRjFVHeqoWe%zGf5rXF{|#{ zmR7B8x7Q02Ley@RbT%;_{T%LCzlRQ+Xgs~gl{fZ?zq_|`@=9tc;l<{sl4Fj>cX~Fj z1rR=uAH^!{G%$%yKARn4uSIgBF3=-F`eY)vz-TEZ`fIFvIVr}VbvU!- z5h_|S0Ui^2{;c(wBYhm$QX0;&spZmFQFt;~>Z?ww2dxD)3F{%F@YIbqIo6DtZw*{u zv2MOG*GCNBBy+Z7kmGCMLbigs9a|6)0%v#RVrFl7>6uFvT$^TY#eu8VmYN{Mu@*eD zX;zXfC&5aIQd-QjPPvm(o94sg46f>18eb%Nc5n7@iL(VT`W_kmS*pfqO@1BLjt&{d z+`W86>;ZMD7|;fP4vpvf(E7UtQeipwKnK-|MlqF=M4-~lLVm`yyEyZTvD?6*{;jUb zvhFsuznB}XR_UnPJuokrJjBaK29=;^3%~@jv`2AII4mPr^di6a`FRMoW%?1C)$k-@_xhxC zM!$;*MiJ2q_^;HpN^Pc6Co(G|!g4di2ANFTC^bp5!cigowPO!Z$7?OH$I?&B7U$b; zriyueu^Vss7&=Nfq<_)KaL&?N-0%VV88cZqt90{VlobF_AXG$c#+wG%Nr(`_&o5NE z&C5y;HqQ9i0!8oIzwzOr>O55H^;PJOrJfT~q!gpB%2h7T?7*<97>C01uRH zgPoM>C-HmYlu9Fb>5&9Ek_eF?*8H8s*+Wmioz?979x>11MnD8Q2pphor0pK72to4$ z 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�cXO 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

  • B(dZbd1caKfz|X~`BZ<_@>s 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

    m8P^{4RBJHuHIBaV~%LwO;jqYw37*l3JyX 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

    f}@UY*ebd((OeuhrxJ+v(gN4vD(omhyw)uvBn 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

    CorCHF!t>35rkqbd6~qxcoe8`Uy!9h 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

    Cv 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 0 { + counter.zeroTimer.Stop() + } + counter.wg.Add(n) + counter.connections += n + + return counter.connections +} + +func (counter *counter) done() int { + counter.mutex.Lock() + defer counter.mutex.Unlock() + + counter.connections-- + counter.wg.Done() + if counter.connections == 0 && counter.duration > 0 { + counter.zeroTimer.Reset(counter.duration) + } + + return counter.connections +} + +func (counter *counter) count() int { + counter.mutex.Lock() + defer counter.mutex.Unlock() + + return counter.connections +} + +func (counter *counter) wait() { + counter.wg.Wait() +} + +func (counter *counter) timer() *time.Timer { + return counter.zeroTimer +} diff --git a/vendor/github.com/yudai/gotty/server/handlers.go b/vendor/github.com/yudai/gotty/server/handlers.go new file mode 100644 index 0000000..f1a2f9b --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/handlers.go @@ -0,0 +1,235 @@ +package server + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "log" + "net/http" + "net/url" + "sync/atomic" + + "github.com/gorilla/websocket" + "github.com/pkg/errors" + + "github.com/yudai/gotty/webtty" +) + +func (server *Server) generateHandleWS(ctx context.Context, cancel context.CancelFunc, counter *counter) http.HandlerFunc { + once := new(int64) + + go func() { + select { + case <-counter.timer().C: + cancel() + case <-ctx.Done(): + } + }() + + return func(w http.ResponseWriter, r *http.Request) { + if server.options.Once { + success := atomic.CompareAndSwapInt64(once, 0, 1) + if !success { + http.Error(w, "Server is shutting down", http.StatusServiceUnavailable) + return + } + } + + num := counter.add(1) + closeReason := "unknown reason" + + defer func() { + num := counter.done() + log.Printf( + "Connection closed by %s: %s, connections: %d/%d", + closeReason, r.RemoteAddr, num, server.options.MaxConnection, + ) + + if server.options.Once { + cancel() + } + }() + + if int64(server.options.MaxConnection) != 0 { + if num > server.options.MaxConnection { + closeReason = "exceeding max number of connections" + return + } + } + + log.Printf("New client connected: %s, connections: %d/%d", r.RemoteAddr, num, server.options.MaxConnection) + + if r.Method != "GET" { + http.Error(w, "Method not allowed", 405) + return + } + + conn, err := server.upgrader.Upgrade(w, r, nil) + if err != nil { + closeReason = err.Error() + return + } + defer conn.Close() + + err = server.processWSConn(ctx, conn) + + switch err { + case ctx.Err(): + closeReason = "cancelation" + case webtty.ErrSlaveClosed: + closeReason = server.factory.Name() + case webtty.ErrMasterClosed: + closeReason = "client" + default: + closeReason = fmt.Sprintf("an error: %s", err) + } + } +} + +func (server *Server) processWSConn(ctx context.Context, conn *websocket.Conn) error { + typ, initLine, err := conn.ReadMessage() + if err != nil { + return errors.Wrapf(err, "failed to authenticate websocket connection") + } + if typ != websocket.TextMessage { + return errors.New("failed to authenticate websocket connection: invalid message type") + } + + var init InitMessage + err = json.Unmarshal(initLine, &init) + if err != nil { + return errors.Wrapf(err, "failed to authenticate websocket connection") + } + if init.AuthToken != server.options.Credential { + return errors.New("failed to authenticate websocket connection") + } + + queryPath := "?" + if server.options.PermitArguments && init.Arguments != "" { + queryPath = init.Arguments + } + + query, err := url.Parse(queryPath) + if err != nil { + return errors.Wrapf(err, "failed to parse arguments") + } + params := query.Query() + var slave Slave + slave, err = server.factory.New(params) + if err != nil { + return errors.Wrapf(err, "failed to create backend") + } + defer slave.Close() + + titleVars := server.titleVariables( + []string{"server", "master", "slave"}, + map[string]map[string]interface{}{ + "server": server.options.TitleVariables, + "master": map[string]interface{}{ + "remote_addr": conn.RemoteAddr(), + }, + "slave": slave.WindowTitleVariables(), + }, + ) + + titleBuf := new(bytes.Buffer) + err = server.titleTemplate.Execute(titleBuf, titleVars) + if err != nil { + return errors.Wrapf(err, "failed to fill window title template") + } + + opts := []webtty.Option{ + webtty.WithWindowTitle(titleBuf.Bytes()), + } + if server.options.PermitWrite { + opts = append(opts, webtty.WithPermitWrite()) + } + if server.options.EnableReconnect { + opts = append(opts, webtty.WithReconnect(server.options.ReconnectTime)) + } + if server.options.Width > 0 { + opts = append(opts, webtty.WithFixedColumns(server.options.Width)) + } + if server.options.Height > 0 { + opts = append(opts, webtty.WithFixedRows(server.options.Height)) + } + if server.options.Preferences != nil { + opts = append(opts, webtty.WithMasterPreferences(server.options.Preferences)) + } + + tty, err := webtty.New(&wsWrapper{conn}, slave, opts...) + if err != nil { + return errors.Wrapf(err, "failed to create webtty") + } + + err = tty.Run(ctx) + + return err +} + +func (server *Server) handleIndex(w http.ResponseWriter, r *http.Request) { + titleVars := server.titleVariables( + []string{"server", "master"}, + map[string]map[string]interface{}{ + "server": server.options.TitleVariables, + "master": map[string]interface{}{ + "remote_addr": r.RemoteAddr, + }, + }, + ) + + titleBuf := new(bytes.Buffer) + err := server.titleTemplate.Execute(titleBuf, titleVars) + if err != nil { + http.Error(w, "Internal Server Error", 500) + return + } + + indexVars := map[string]interface{}{ + "title": titleBuf.String(), + } + + indexBuf := new(bytes.Buffer) + err = server.indexTemplate.Execute(indexBuf, indexVars) + if err != nil { + http.Error(w, "Internal Server Error", 500) + return + } + + w.Write(indexBuf.Bytes()) +} + +func (server *Server) handleAuthToken(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/javascript") + // @TODO hashing? + w.Write([]byte("var gotty_auth_token = '" + server.options.Credential + "';")) +} + +func (server *Server) handleConfig(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/javascript") + w.Write([]byte("var gotty_term = '" + server.options.Term + "';")) +} + +// titleVariables merges maps in a specified order. +// varUnits are name-keyed maps, whose names will be iterated using order. +func (server *Server) titleVariables(order []string, varUnits map[string]map[string]interface{}) map[string]interface{} { + titleVars := map[string]interface{}{} + + for _, name := range order { + vars, ok := varUnits[name] + if !ok { + panic("title variable name error") + } + for key, val := range vars { + titleVars[key] = val + } + } + + // safe net for conflicted keys + for _, name := range order { + titleVars[name] = varUnits[name] + } + + return titleVars +} diff --git a/vendor/github.com/yudai/gotty/server/init_message.go b/vendor/github.com/yudai/gotty/server/init_message.go new file mode 100644 index 0000000..60801bf --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/init_message.go @@ -0,0 +1,6 @@ +package server + +type InitMessage struct { + Arguments string `json:"Arguments,omitempty"` + AuthToken string `json:"AuthToken,omitempty"` +} diff --git a/vendor/github.com/yudai/gotty/server/list_address.go b/vendor/github.com/yudai/gotty/server/list_address.go new file mode 100644 index 0000000..de2e8b2 --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/list_address.go @@ -0,0 +1,28 @@ +package server + +import ( + "net" +) + +func listAddresses() (addresses []string) { + ifaces, err := net.Interfaces() + if err != nil { + return []string{} + } + + addresses = make([]string, 0, len(ifaces)) + + for _, iface := range ifaces { + ifAddrs, _ := iface.Addrs() + for _, ifAddr := range ifAddrs { + switch v := ifAddr.(type) { + case *net.IPNet: + addresses = append(addresses, v.IP.String()) + case *net.IPAddr: + addresses = append(addresses, v.IP.String()) + } + } + } + + return addresses +} diff --git a/vendor/github.com/yudai/gotty/server/log_response_writer.go b/vendor/github.com/yudai/gotty/server/log_response_writer.go new file mode 100644 index 0000000..1b75fd8 --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/log_response_writer.go @@ -0,0 +1,23 @@ +package server + +import ( + "bufio" + "net" + "net/http" +) + +type logResponseWriter struct { + http.ResponseWriter + status int +} + +func (w *logResponseWriter) WriteHeader(status int) { + w.status = status + w.ResponseWriter.WriteHeader(status) +} + +func (w *logResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + hj, _ := w.ResponseWriter.(http.Hijacker) + w.status = http.StatusSwitchingProtocols + return hj.Hijack() +} diff --git a/vendor/github.com/yudai/gotty/server/middleware.go b/vendor/github.com/yudai/gotty/server/middleware.go new file mode 100644 index 0000000..ee89176 --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/middleware.go @@ -0,0 +1,51 @@ +package server + +import ( + "encoding/base64" + "log" + "net/http" + "strings" +) + +func (server *Server) wrapLogger(handler http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + rw := &logResponseWriter{w, 200} + handler.ServeHTTP(rw, r) + log.Printf("%s %d %s %s", r.RemoteAddr, rw.status, r.Method, r.URL.Path) + }) +} + +func (server *Server) wrapHeaders(handler http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // todo add version + w.Header().Set("Server", "GoTTY") + handler.ServeHTTP(w, r) + }) +} + +func (server *Server) wrapBasicAuth(handler http.Handler, credential string) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + token := strings.SplitN(r.Header.Get("Authorization"), " ", 2) + + if len(token) != 2 || strings.ToLower(token[0]) != "basic" { + w.Header().Set("WWW-Authenticate", `Basic realm="GoTTY"`) + http.Error(w, "Bad Request", http.StatusUnauthorized) + return + } + + payload, err := base64.StdEncoding.DecodeString(token[1]) + if err != nil { + http.Error(w, "Internal Server Error", http.StatusInternalServerError) + return + } + + if credential != string(payload) { + w.Header().Set("WWW-Authenticate", `Basic realm="GoTTY"`) + http.Error(w, "authorization failed", http.StatusUnauthorized) + return + } + + log.Printf("Basic Authentication Succeeded: %s", r.RemoteAddr) + handler.ServeHTTP(w, r) + }) +} diff --git a/vendor/github.com/yudai/gotty/server/options.go b/vendor/github.com/yudai/gotty/server/options.go new file mode 100644 index 0000000..3d7f69c --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/options.go @@ -0,0 +1,99 @@ +package server + +import ( + "github.com/pkg/errors" +) + +type Options struct { + Address string `hcl:"address" flagName:"address" flagSName:"a" flagDescribe:"IP address to listen" default:"0.0.0.0"` + Port string `hcl:"port" flagName:"port" flagSName:"p" flagDescribe:"Port number to liten" default:"8080"` + PermitWrite bool `hcl:"permit_write" flagName:"permit-write" flagSName:"w" flagDescribe:"Permit clients to write to the TTY (BE CAREFUL)" default:"false"` + EnableBasicAuth bool `hcl:"enable_basic_auth" default:"false"` + Credential string `hcl:"credential" flagName:"credential" flagSName:"c" flagDescribe:"Credential for Basic Authentication (ex: user:pass, default disabled)" default:""` + EnableRandomUrl bool `hcl:"enable_random_url" flagName:"random-url" flagSName:"r" flagDescribe:"Add a random string to the URL" default:"false"` + RandomUrlLength int `hcl:"random_url_length" flagName:"random-url-length" flagDescribe:"Random URL length" default:"8"` + EnableTLS bool `hcl:"enable_tls" flagName:"tls" flagSName:"t" flagDescribe:"Enable TLS/SSL" default:"false"` + TLSCrtFile string `hcl:"tls_crt_file" flagName:"tls-crt" flagDescribe:"TLS/SSL certificate file path" default:"~/.gotty.crt"` + TLSKeyFile string `hcl:"tls_key_file" flagName:"tls-key" flagDescribe:"TLS/SSL key file path" default:"~/.gotty.key"` + EnableTLSClientAuth bool `hcl:"enable_tls_client_auth" default:"false"` + TLSCACrtFile string `hcl:"tls_ca_crt_file" flagName:"tls-ca-crt" flagDescribe:"TLS/SSL CA certificate file for client certifications" default:"~/.gotty.ca.crt"` + IndexFile string `hcl:"index_file" flagName:"index" flagDescribe:"Custom index.html file" default:""` + TitleFormat string `hcl:"title_format" flagName:"title-format" flagSName:"" flagDescribe:"Title format of browser window" default:"{{ .command }}@{{ .hostname }}"` + EnableReconnect bool `hcl:"enable_reconnect" flagName:"reconnect" flagDescribe:"Enable reconnection" default:"false"` + ReconnectTime int `hcl:"reconnect_time" flagName:"reconnect-time" flagDescribe:"Time to reconnect" default:"10"` + MaxConnection int `hcl:"max_connection" flagName:"max-connection" flagDescribe:"Maximum connection to gotty" default:"0"` + Once bool `hcl:"once" flagName:"once" flagDescribe:"Accept only one client and exit on disconnection" default:"false"` + Timeout int `hcl:"timeout" flagName:"timeout" flagDescribe:"Timeout seconds for waiting a client(0 to disable)" default:"0"` + PermitArguments bool `hcl:"permit_arguments" flagName:"permit-arguments" flagDescribe:"Permit clients to send command line arguments in URL (e.g. http://example.com:8080/?arg=AAA&arg=BBB)" default:"true"` + Preferences *HtermPrefernces `hcl:"preferences"` + Width int `hcl:"width" flagName:"width" flagDescribe:"Static width of the screen, 0(default) means dynamically resize" default:"0"` + Height int `hcl:"height" flagName:"height" flagDescribe:"Static height of the screen, 0(default) means dynamically resize" default:"0"` + WSOrigin string `hcl:"ws_origin" flagName:"ws-origin" flagDescribe:"A regular expression that matches origin URLs to be accepted by WebSocket. No cross origin requests are acceptable by default" default:""` + Term string `hcl:"term" flagName:"term" flagDescribe:"Terminal name to use on the browser, one of xterm or hterm." default:"xterm"` + + TitleVariables map[string]interface{} +} + +func (options *Options) Validate() error { + if options.EnableTLSClientAuth && !options.EnableTLS { + return errors.New("TLS client authentication is enabled, but TLS is not enabled") + } + return nil +} + +type HtermPrefernces struct { + AltGrMode *string `hcl:"alt_gr_mode" json:"alt-gr-mode,omitempty"` + AltBackspaceIsMetaBackspace bool `hcl:"alt_backspace_is_meta_backspace" json:"alt-backspace-is-meta-backspace,omitempty"` + AltIsMeta bool `hcl:"alt_is_meta" json:"alt-is-meta,omitempty"` + AltSendsWhat string `hcl:"alt_sends_what" json:"alt-sends-what,omitempty"` + AudibleBellSound string `hcl:"audible_bell_sound" json:"audible-bell-sound,omitempty"` + DesktopNotificationBell bool `hcl:"desktop_notification_bell" json:"desktop-notification-bell,omitempty"` + BackgroundColor string `hcl:"background_color" json:"background-color,omitempty"` + BackgroundImage string `hcl:"background_image" json:"background-image,omitempty"` + BackgroundSize string `hcl:"background_size" json:"background-size,omitempty"` + BackgroundPosition string `hcl:"background_position" json:"background-position,omitempty"` + BackspaceSendsBackspace bool `hcl:"backspace_sends_backspace" json:"backspace-sends-backspace,omitempty"` + CharacterMapOverrides map[string]map[string]string `hcl:"character_map_overrides" json:"character-map-overrides,omitempty"` + CloseOnExit bool `hcl:"close_on_exit" json:"close-on-exit,omitempty"` + CursorBlink bool `hcl:"cursor_blink" json:"cursor-blink,omitempty"` + CursorBlinkCycle [2]int `hcl:"cursor_blink_cycle" json:"cursor-blink-cycle,omitempty"` + CursorColor string `hcl:"cursor_color" json:"cursor-color,omitempty"` + ColorPaletteOverrides []*string `hcl:"color_palette_overrides" json:"color-palette-overrides,omitempty"` + CopyOnSelect bool `hcl:"copy_on_select" json:"copy-on-select,omitempty"` + UseDefaultWindowCopy bool `hcl:"use_default_window_copy" json:"use-default-window-copy,omitempty"` + ClearSelectionAfterCopy bool `hcl:"clear_selection_after_copy" json:"clear-selection-after-copy,omitempty"` + CtrlPlusMinusZeroZoom bool `hcl:"ctrl_plus_minus_zero_zoom" json:"ctrl-plus-minus-zero-zoom,omitempty"` + CtrlCCopy bool `hcl:"ctrl_c_copy" json:"ctrl-c-copy,omitempty"` + CtrlVPaste bool `hcl:"ctrl_v_paste" json:"ctrl-v-paste,omitempty"` + EastAsianAmbiguousAsTwoColumn bool `hcl:"east_asian_ambiguous_as_two_column" json:"east-asian-ambiguous-as-two-column,omitempty"` + Enable8BitControl *bool `hcl:"enable_8_bit_control" json:"enable-8-bit-control,omitempty"` + EnableBold *bool `hcl:"enable_bold" json:"enable-bold,omitempty"` + EnableBoldAsBright bool `hcl:"enable_bold_as_bright" json:"enable-bold-as-bright,omitempty"` + EnableClipboardNotice bool `hcl:"enable_clipboard_notice" json:"enable-clipboard-notice,omitempty"` + EnableClipboardWrite bool `hcl:"enable_clipboard_write" json:"enable-clipboard-write,omitempty"` + EnableDec12 bool `hcl:"enable_dec12" json:"enable-dec12,omitempty"` + Environment map[string]string `hcl:"environment" json:"environment,omitempty"` + FontFamily string `hcl:"font_family" json:"font-family,omitempty"` + FontSize int `hcl:"font_size" json:"font-size,omitempty"` + FontSmoothing string `hcl:"font_smoothing" json:"font-smoothing,omitempty"` + ForegroundColor string `hcl:"foreground_color" json:"foreground-color,omitempty"` + HomeKeysScroll bool `hcl:"home_keys_scroll" json:"home-keys-scroll,omitempty"` + Keybindings map[string]string `hcl:"keybindings" json:"keybindings,omitempty"` + MaxStringSequence int `hcl:"max_string_sequence" json:"max-string-sequence,omitempty"` + MediaKeysAreFkeys bool `hcl:"media_keys_are_fkeys" json:"media-keys-are-fkeys,omitempty"` + MetaSendsEscape bool `hcl:"meta_sends_escape" json:"meta-sends-escape,omitempty"` + MousePasteButton *int `hcl:"mouse_paste_button" json:"mouse-paste-button,omitempty"` + PageKeysScroll bool `hcl:"page_keys_scroll" json:"page-keys-scroll,omitempty"` + PassAltNumber *bool `hcl:"pass_alt_number" json:"pass-alt-number,omitempty"` + PassCtrlNumber *bool `hcl:"pass_ctrl_number" json:"pass-ctrl-number,omitempty"` + PassMetaNumber *bool `hcl:"pass_meta_number" json:"pass-meta-number,omitempty"` + PassMetaV bool `hcl:"pass_meta_v" json:"pass-meta-v,omitempty"` + ReceiveEncoding string `hcl:"receive_encoding" json:"receive-encoding,omitempty"` + ScrollOnKeystroke bool `hcl:"scroll_on_keystroke" json:"scroll-on-keystroke,omitempty"` + ScrollOnOutput bool `hcl:"scroll_on_output" json:"scroll-on-output,omitempty"` + ScrollbarVisible bool `hcl:"scrollbar_visible" json:"scrollbar-visible,omitempty"` + ScrollWheelMoveMultiplier int `hcl:"scroll_wheel_move_multiplier" json:"scroll-wheel-move-multiplier,omitempty"` + SendEncoding string `hcl:"send_encoding" json:"send-encoding,omitempty"` + ShiftInsertPaste bool `hcl:"shift_insert_paste" json:"shift-insert-paste,omitempty"` + UserCss string `hcl:"user_css" json:"user-css,omitempty"` +} diff --git a/vendor/github.com/yudai/gotty/server/run_option.go b/vendor/github.com/yudai/gotty/server/run_option.go new file mode 100644 index 0000000..2939d63 --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/run_option.go @@ -0,0 +1,21 @@ +package server + +import ( + "context" +) + +// RunOptions holds a set of configurations for Server.Run(). +type RunOptions struct { + gracefullCtx context.Context +} + +// RunOption is an option of Server.Run(). +type RunOption func(*RunOptions) + +// WithGracefullContext accepts a context to shutdown a Server +// with care for existing client connections. +func WithGracefullContext(ctx context.Context) RunOption { + return func(options *RunOptions) { + options.gracefullCtx = ctx + } +} diff --git a/vendor/github.com/yudai/gotty/server/server.go b/vendor/github.com/yudai/gotty/server/server.go new file mode 100644 index 0000000..6411e71 --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/server.go @@ -0,0 +1,246 @@ +package server + +import ( + "context" + "crypto/tls" + "crypto/x509" + "html/template" + "io/ioutil" + "log" + "net" + "net/http" + "regexp" + noesctmpl "text/template" + "time" + + "github.com/NYTimes/gziphandler" + "github.com/elazarl/go-bindata-assetfs" + "github.com/gorilla/websocket" + "github.com/pkg/errors" + + "github.com/yudai/gotty/pkg/homedir" + "github.com/yudai/gotty/pkg/randomstring" + "github.com/yudai/gotty/webtty" +) + +// Server provides a webtty HTTP endpoint. +type Server struct { + factory Factory + options *Options + + upgrader *websocket.Upgrader + indexTemplate *template.Template + titleTemplate *noesctmpl.Template +} + +// New creates a new instance of Server. +// Server will use the New() of the factory provided to handle each request. +func New(factory Factory, options *Options) (*Server, error) { + indexData, err := Asset("static/index.html") + if err != nil { + panic("index not found") // must be in bindata + } + if options.IndexFile != "" { + path := homedir.Expand(options.IndexFile) + indexData, err = ioutil.ReadFile(path) + if err != nil { + return nil, errors.Wrapf(err, "failed to read custom index file at `%s`", path) + } + } + indexTemplate, err := template.New("index").Parse(string(indexData)) + if err != nil { + panic("index template parse failed") // must be valid + } + + titleTemplate, err := noesctmpl.New("title").Parse(options.TitleFormat) + if err != nil { + return nil, errors.Wrapf(err, "failed to parse window title format `%s`", options.TitleFormat) + } + + var originChekcer func(r *http.Request) bool + if options.WSOrigin != "" { + matcher, err := regexp.Compile(options.WSOrigin) + if err != nil { + return nil, errors.Wrapf(err, "failed to compile regular expression of Websocket Origin: %s", options.WSOrigin) + } + originChekcer = func(r *http.Request) bool { + return matcher.MatchString(r.Header.Get("Origin")) + } + } + + return &Server{ + factory: factory, + options: options, + + upgrader: &websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + Subprotocols: webtty.Protocols, + CheckOrigin: originChekcer, + }, + indexTemplate: indexTemplate, + titleTemplate: titleTemplate, + }, nil +} + +// Run starts the main process of the Server. +// The cancelation of ctx will shutdown the server immediately with aborting +// existing connections. Use WithGracefullContext() to support gracefull shutdown. +func (server *Server) Run(ctx context.Context, options ...RunOption) error { + cctx, cancel := context.WithCancel(ctx) + opts := &RunOptions{gracefullCtx: context.Background()} + for _, opt := range options { + opt(opts) + } + + counter := newCounter(time.Duration(server.options.Timeout) * time.Second) + + path := "/" + if server.options.EnableRandomUrl { + path = "/" + randomstring.Generate(server.options.RandomUrlLength) + "/" + } + + handlers := server.setupHandlers(cctx, cancel, path, counter) + srv, err := server.setupHTTPServer(handlers) + if err != nil { + return errors.Wrapf(err, "failed to setup an HTTP server") + } + + if server.options.PermitWrite { + log.Printf("Permitting clients to write input to the PTY.") + } + if server.options.Once { + log.Printf("Once option is provided, accepting only one client") + } + + if server.options.Port == "0" { + log.Printf("Port number configured to `0`, choosing a random port") + } + hostPort := net.JoinHostPort(server.options.Address, server.options.Port) + listener, err := net.Listen("tcp", hostPort) + if err != nil { + return errors.Wrapf(err, "failed to listen at `%s`", hostPort) + } + + scheme := "http" + if server.options.EnableTLS { + scheme = "https" + } + host, port, _ := net.SplitHostPort(listener.Addr().String()) + log.Printf("HTTP server is listening at: %s", scheme+"://"+host+":"+port+path) + if server.options.Address == "0.0.0.0" { + for _, address := range listAddresses() { + log.Printf("Alternative URL: %s", scheme+"://"+address+":"+port+path) + } + } + + srvErr := make(chan error, 1) + go func() { + if server.options.EnableTLS { + crtFile := homedir.Expand(server.options.TLSCrtFile) + keyFile := homedir.Expand(server.options.TLSKeyFile) + log.Printf("TLS crt file: " + crtFile) + log.Printf("TLS key file: " + keyFile) + + err = srv.ServeTLS(listener, crtFile, keyFile) + } else { + err = srv.Serve(listener) + } + if err != nil { + srvErr <- err + } + }() + + go func() { + select { + case <-opts.gracefullCtx.Done(): + srv.Shutdown(context.Background()) + case <-cctx.Done(): + } + }() + + select { + case err = <-srvErr: + if err == http.ErrServerClosed { // by gracefull ctx + err = nil + } else { + cancel() + } + case <-cctx.Done(): + srv.Close() + err = cctx.Err() + } + + conn := counter.count() + if conn > 0 { + log.Printf("Waiting for %d connections to be closed", conn) + } + counter.wait() + + return err +} + +func (server *Server) setupHandlers(ctx context.Context, cancel context.CancelFunc, pathPrefix string, counter *counter) http.Handler { + staticFileHandler := http.FileServer( + &assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, Prefix: "static"}, + ) + + var siteMux = http.NewServeMux() + siteMux.HandleFunc(pathPrefix, server.handleIndex) + siteMux.Handle(pathPrefix+"js/", http.StripPrefix(pathPrefix, staticFileHandler)) + siteMux.Handle(pathPrefix+"favicon.png", http.StripPrefix(pathPrefix, staticFileHandler)) + siteMux.Handle(pathPrefix+"css/", http.StripPrefix(pathPrefix, staticFileHandler)) + + siteMux.HandleFunc(pathPrefix+"auth_token.js", server.handleAuthToken) + siteMux.HandleFunc(pathPrefix+"config.js", server.handleConfig) + + siteHandler := http.Handler(siteMux) + + if server.options.EnableBasicAuth { + log.Printf("Using Basic Authentication") + siteHandler = server.wrapBasicAuth(siteHandler, server.options.Credential) + } + + withGz := gziphandler.GzipHandler(server.wrapHeaders(siteHandler)) + siteHandler = server.wrapLogger(withGz) + + wsMux := http.NewServeMux() + wsMux.Handle("/", siteHandler) + wsMux.HandleFunc(pathPrefix+"ws", server.generateHandleWS(ctx, cancel, counter)) + siteHandler = http.Handler(wsMux) + + return siteHandler +} + +func (server *Server) setupHTTPServer(handler http.Handler) (*http.Server, error) { + srv := &http.Server{ + Handler: handler, + } + + if server.options.EnableTLSClientAuth { + tlsConfig, err := server.tlsConfig() + if err != nil { + return nil, errors.Wrapf(err, "failed to setup TLS configuration") + } + srv.TLSConfig = tlsConfig + } + + return srv, nil +} + +func (server *Server) tlsConfig() (*tls.Config, error) { + caFile := homedir.Expand(server.options.TLSCACrtFile) + caCert, err := ioutil.ReadFile(caFile) + if err != nil { + return nil, errors.New("could not open CA crt file " + caFile) + } + caCertPool := x509.NewCertPool() + if !caCertPool.AppendCertsFromPEM(caCert) { + return nil, errors.New("could not parse CA crt file data in " + caFile) + } + tlsConfig := &tls.Config{ + ClientCAs: caCertPool, + ClientAuth: tls.RequireAndVerifyClientCert, + } + return tlsConfig, nil +} diff --git a/vendor/github.com/yudai/gotty/server/slave.go b/vendor/github.com/yudai/gotty/server/slave.go new file mode 100644 index 0000000..77d0973 --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/slave.go @@ -0,0 +1,17 @@ +package server + +import ( + "github.com/yudai/gotty/webtty" +) + +// Slave is webtty.Slave with some additional methods. +type Slave interface { + webtty.Slave + + Close() error +} + +type Factory interface { + Name() string + New(params map[string][]string) (Slave, error) +} diff --git a/vendor/github.com/yudai/gotty/server/ws_wrapper.go b/vendor/github.com/yudai/gotty/server/ws_wrapper.go new file mode 100644 index 0000000..819c393 --- /dev/null +++ b/vendor/github.com/yudai/gotty/server/ws_wrapper.go @@ -0,0 +1,33 @@ +package server + +import ( + "github.com/gorilla/websocket" +) + +type wsWrapper struct { + *websocket.Conn +} + +func (wsw *wsWrapper) Write(p []byte) (n int, err error) { + writer, err := wsw.Conn.NextWriter(websocket.TextMessage) + if err != nil { + return 0, err + } + defer writer.Close() + return writer.Write(p) +} + +func (wsw *wsWrapper) Read(p []byte) (n int, err error) { + for { + msgType, reader, err := wsw.Conn.NextReader() + if err != nil { + return 0, err + } + + if msgType != websocket.TextMessage { + continue + } + + return reader.Read(p) + } +} diff --git a/vendor/github.com/yudai/gotty/utils/default.go b/vendor/github.com/yudai/gotty/utils/default.go new file mode 100644 index 0000000..e813b3b --- /dev/null +++ b/vendor/github.com/yudai/gotty/utils/default.go @@ -0,0 +1,41 @@ +package utils + +import ( + "fmt" + "github.com/fatih/structs" + "reflect" + "strconv" +) + +func ApplyDefaultValues(struct_ interface{}) (err error) { + o := structs.New(struct_) + + for _, field := range o.Fields() { + defaultValue := field.Tag("default") + if defaultValue == "" { + continue + } + var val interface{} + switch field.Kind() { + case reflect.String: + val = defaultValue + case reflect.Bool: + if defaultValue == "true" { + val = true + } else if defaultValue == "false" { + val = false + } else { + return fmt.Errorf("invalid bool expression: %v, use true/false", defaultValue) + } + case reflect.Int: + val, err = strconv.Atoi(defaultValue) + if err != nil { + return err + } + default: + val = field.Value() + } + field.Set(val) + } + return nil +} diff --git a/vendor/github.com/yudai/gotty/utils/flags.go b/vendor/github.com/yudai/gotty/utils/flags.go new file mode 100644 index 0000000..b5c66b9 --- /dev/null +++ b/vendor/github.com/yudai/gotty/utils/flags.go @@ -0,0 +1,124 @@ +package utils + +import ( + "io/ioutil" + "log" + "os" + "reflect" + "strings" + + "github.com/codegangsta/cli" + "github.com/fatih/structs" + "github.com/yudai/hcl" + + "github.com/yudai/gotty/pkg/homedir" +) + +func GenerateFlags(options ...interface{}) (flags []cli.Flag, mappings map[string]string, err error) { + mappings = make(map[string]string) + + for _, struct_ := range options { + o := structs.New(struct_) + for _, field := range o.Fields() { + flagName := field.Tag("flagName") + if flagName == "" { + continue + } + envName := "GOTTY_" + strings.ToUpper(strings.Join(strings.Split(flagName, "-"), "_")) + mappings[flagName] = field.Name() + + flagShortName := field.Tag("flagSName") + if flagShortName != "" { + flagName += ", " + flagShortName + } + + flagDescription := field.Tag("flagDescribe") + + switch field.Kind() { + case reflect.String: + flags = append(flags, cli.StringFlag{ + Name: flagName, + Value: field.Value().(string), + Usage: flagDescription, + EnvVar: envName, + }) + case reflect.Bool: + flags = append(flags, cli.BoolFlag{ + Name: flagName, + Usage: flagDescription, + EnvVar: envName, + }) + case reflect.Int: + flags = append(flags, cli.IntFlag{ + Name: flagName, + Value: field.Value().(int), + Usage: flagDescription, + EnvVar: envName, + }) + } + } + } + + return +} + +func ApplyFlags( + flags []cli.Flag, + mappingHint map[string]string, + c *cli.Context, + options ...interface{}, +) { + objects := make([]*structs.Struct, len(options)) + for i, struct_ := range options { + objects[i] = structs.New(struct_) + } + + for flagName, fieldName := range mappingHint { + if !c.IsSet(flagName) { + continue + } + var field *structs.Field + var ok bool + for _, o := range objects { + field, ok = o.FieldOk(fieldName) + if ok { + break + } + } + if field == nil { + continue + } + var val interface{} + switch field.Kind() { + case reflect.String: + val = c.String(flagName) + case reflect.Bool: + val = c.Bool(flagName) + case reflect.Int: + val = c.Int(flagName) + } + field.Set(val) + } +} + +func ApplyConfigFile(filePath string, options ...interface{}) error { + filePath = homedir.Expand(filePath) + if _, err := os.Stat(filePath); os.IsNotExist(err) { + return err + } + + fileString := []byte{} + log.Printf("Loading config file at: %s", filePath) + fileString, err := ioutil.ReadFile(filePath) + if err != nil { + return err + } + + for _, object := range options { + if err := hcl.Decode(object, string(fileString)); err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/yudai/gotty/version.go b/vendor/github.com/yudai/gotty/version.go new file mode 100644 index 0000000..ab7b913 --- /dev/null +++ b/vendor/github.com/yudai/gotty/version.go @@ -0,0 +1,4 @@ +package main + +var Version = "unknown_version" +var CommitID = "unknown_commit" diff --git a/vendor/github.com/yudai/gotty/webtty/doc.go b/vendor/github.com/yudai/gotty/webtty/doc.go new file mode 100644 index 0000000..b7d76b9 --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/doc.go @@ -0,0 +1,3 @@ +// Package webtty provides a protocl and an implementation to +// controll terminals thorough networks. +package webtty diff --git a/vendor/github.com/yudai/gotty/webtty/errors.go b/vendor/github.com/yudai/gotty/webtty/errors.go new file mode 100644 index 0000000..0ea6473 --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/errors.go @@ -0,0 +1,13 @@ +package webtty + +import ( + "errors" +) + +var ( + // ErrSlaveClosed indicates the function has exited by the slave + ErrSlaveClosed = errors.New("slave closed") + + // ErrSlaveClosed is returned when the slave connection is closed. + ErrMasterClosed = errors.New("master closed") +) diff --git a/vendor/github.com/yudai/gotty/webtty/master.go b/vendor/github.com/yudai/gotty/webtty/master.go new file mode 100644 index 0000000..7f30f47 --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/master.go @@ -0,0 +1,8 @@ +package webtty + +import ( + "io" +) + +// Master represents a PTY master, usually it's a websocket connection. +type Master io.ReadWriter diff --git a/vendor/github.com/yudai/gotty/webtty/message_types.go b/vendor/github.com/yudai/gotty/webtty/message_types.go new file mode 100644 index 0000000..c437a42 --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/message_types.go @@ -0,0 +1,31 @@ +package webtty + +// Protocols defines the name of this protocol, +// which is supposed to be used to the subprotocol of Websockt streams. +var Protocols = []string{"webtty"} + +const ( + // Unknown message type, maybe sent by a bug + UnknownInput = '0' + // User input typically from a keyboard + Input = '1' + // Ping to the server + Ping = '2' + // Notify that the browser size has been changed + ResizeTerminal = '3' +) + +const ( + // Unknown message type, maybe set by a bug + UnknownOutput = '0' + // Normal output to the terminal + Output = '1' + // Pong to the browser + Pong = '2' + // Set window title of the terminal + SetWindowTitle = '3' + // Set terminal preference + SetPreferences = '4' + // Make terminal to reconnect + SetReconnect = '5' +) diff --git a/vendor/github.com/yudai/gotty/webtty/option.go b/vendor/github.com/yudai/gotty/webtty/option.go new file mode 100644 index 0000000..1618e89 --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/option.go @@ -0,0 +1,62 @@ +package webtty + +import ( + "encoding/json" + + "github.com/pkg/errors" +) + +// Option is an option for WebTTY. +type Option func(*WebTTY) error + +// WithPermitWrite sets a WebTTY to accept input from slaves. +func WithPermitWrite() Option { + return func(wt *WebTTY) error { + wt.permitWrite = true + return nil + } +} + +// WithFixedColumns sets a fixed width to TTY master. +func WithFixedColumns(columns int) Option { + return func(wt *WebTTY) error { + wt.columns = columns + return nil + } +} + +// WithFixedRows sets a fixed height to TTY master. +func WithFixedRows(rows int) Option { + return func(wt *WebTTY) error { + wt.rows = rows + return nil + } +} + +// WithWindowTitle sets the default window title of the session +func WithWindowTitle(windowTitle []byte) Option { + return func(wt *WebTTY) error { + wt.windowTitle = windowTitle + return nil + } +} + +// WithReconnect enables reconnection on the master side. +func WithReconnect(timeInSeconds int) Option { + return func(wt *WebTTY) error { + wt.reconnect = timeInSeconds + return nil + } +} + +// WithMasterPreferences sets an optional configuration of master. +func WithMasterPreferences(preferences interface{}) Option { + return func(wt *WebTTY) error { + prefs, err := json.Marshal(preferences) + if err != nil { + return errors.Wrapf(err, "failed to marshal preferences as JSON") + } + wt.masterPrefs = prefs + return nil + } +} diff --git a/vendor/github.com/yudai/gotty/webtty/slave.go b/vendor/github.com/yudai/gotty/webtty/slave.go new file mode 100644 index 0000000..b9893ba --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/slave.go @@ -0,0 +1,17 @@ +package webtty + +import ( + "io" +) + +// Slave represents a PTY slave, typically it's a local command. +type Slave interface { + io.ReadWriter + + // WindowTitleVariables returns any values that can be used to fill out + // the title of a terminal. + WindowTitleVariables() map[string]interface{} + + // ResizeTerminal sets a new size of the terminal. + ResizeTerminal(columns int, rows int) error +} diff --git a/vendor/github.com/yudai/gotty/webtty/webtty.go b/vendor/github.com/yudai/gotty/webtty/webtty.go new file mode 100644 index 0000000..ed4f8b9 --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/webtty.go @@ -0,0 +1,219 @@ +package webtty + +import ( + "context" + "encoding/base64" + "encoding/json" + "sync" + + "github.com/pkg/errors" +) + +// WebTTY bridges a PTY slave and its PTY master. +// To support text-based streams and side channel commands such as +// terminal resizing, WebTTY uses an original protocol. +type WebTTY struct { + // PTY Master, which probably a connection to browser + masterConn Master + // PTY Slave + slave Slave + + windowTitle []byte + permitWrite bool + columns int + rows int + reconnect int // in seconds + masterPrefs []byte + + bufferSize int + writeMutex sync.Mutex +} + +// New creates a new instance of WebTTY. +// masterConn is a connection to the PTY master, +// typically it's a websocket connection to a client. +// slave is a PTY slave such as a local command with a PTY. +func New(masterConn Master, slave Slave, options ...Option) (*WebTTY, error) { + wt := &WebTTY{ + masterConn: masterConn, + slave: slave, + + permitWrite: false, + columns: 0, + rows: 0, + + bufferSize: 1024, + } + + for _, option := range options { + option(wt) + } + + return wt, nil +} + +// Run starts the main process of the WebTTY. +// This method blocks until the context is canceled. +// Note that the master and slave are left intact even +// after the context is canceled. Closing them is caller's +// responsibility. +// If the connection to one end gets closed, returns ErrSlaveClosed or ErrMasterClosed. +func (wt *WebTTY) Run(ctx context.Context) error { + err := wt.sendInitializeMessage() + if err != nil { + return errors.Wrapf(err, "failed to send initializing message") + } + + errs := make(chan error, 2) + + go func() { + errs <- func() error { + buffer := make([]byte, wt.bufferSize) + for { + n, err := wt.slave.Read(buffer) + if err != nil { + return ErrSlaveClosed + } + + err = wt.handleSlaveReadEvent(buffer[:n]) + if err != nil { + return err + } + } + }() + }() + + go func() { + errs <- func() error { + buffer := make([]byte, wt.bufferSize) + for { + n, err := wt.masterConn.Read(buffer) + if err != nil { + return ErrMasterClosed + } + + err = wt.handleMasterReadEvent(buffer[:n]) + if err != nil { + return err + } + } + }() + }() + + select { + case <-ctx.Done(): + err = ctx.Err() + case err = <-errs: + } + + return err +} + +func (wt *WebTTY) sendInitializeMessage() error { + err := wt.masterWrite(append([]byte{SetWindowTitle}, wt.windowTitle...)) + if err != nil { + return errors.Wrapf(err, "failed to send window title") + } + + if wt.reconnect > 0 { + reconnect, _ := json.Marshal(wt.reconnect) + err := wt.masterWrite(append([]byte{SetReconnect}, reconnect...)) + if err != nil { + return errors.Wrapf(err, "failed to set reconnect") + } + } + + if wt.masterPrefs != nil { + err := wt.masterWrite(append([]byte{SetPreferences}, wt.masterPrefs...)) + if err != nil { + return errors.Wrapf(err, "failed to set preferences") + } + } + + return nil +} + +func (wt *WebTTY) handleSlaveReadEvent(data []byte) error { + safeMessage := base64.StdEncoding.EncodeToString(data) + err := wt.masterWrite(append([]byte{Output}, []byte(safeMessage)...)) + if err != nil { + return errors.Wrapf(err, "failed to send message to master") + } + + return nil +} + +func (wt *WebTTY) masterWrite(data []byte) error { + wt.writeMutex.Lock() + defer wt.writeMutex.Unlock() + + _, err := wt.masterConn.Write(data) + if err != nil { + return errors.Wrapf(err, "failed to write to master") + } + + return nil +} + +func (wt *WebTTY) handleMasterReadEvent(data []byte) error { + if len(data) == 0 { + return errors.New("unexpected zero length read from master") + } + + switch data[0] { + case Input: + if !wt.permitWrite { + return nil + } + + if len(data) <= 1 { + return nil + } + + _, err := wt.slave.Write(data[1:]) + if err != nil { + return errors.Wrapf(err, "failed to write received data to slave") + } + + case Ping: + err := wt.masterWrite([]byte{Pong}) + if err != nil { + return errors.Wrapf(err, "failed to return Pong message to master") + } + + case ResizeTerminal: + if wt.columns != 0 && wt.rows != 0 { + break + } + + if len(data) <= 1 { + return errors.New("received malformed remote command for terminal resize: empty payload") + } + + var args argResizeTerminal + err := json.Unmarshal(data[1:], &args) + if err != nil { + return errors.Wrapf(err, "received malformed data for terminal resize") + } + rows := wt.rows + if rows == 0 { + rows = int(args.Rows) + } + + columns := wt.columns + if columns == 0 { + columns = int(args.Columns) + } + + wt.slave.ResizeTerminal(columns, rows) + default: + return errors.Errorf("unknown message type `%c`", data[0]) + } + + return nil +} + +type argResizeTerminal struct { + Columns float64 + Rows float64 +} diff --git a/vendor/github.com/yudai/gotty/webtty/webtty_test.go b/vendor/github.com/yudai/gotty/webtty/webtty_test.go new file mode 100644 index 0000000..92a3620 --- /dev/null +++ b/vendor/github.com/yudai/gotty/webtty/webtty_test.go @@ -0,0 +1,139 @@ +package webtty + +import ( + "bytes" + "context" + "encoding/base64" + "io" + "sync" + "testing" +) + +type pipePair struct { + *io.PipeReader + *io.PipeWriter +} + +func TestWriteFromPTY(t *testing.T) { + connInPipeReader, connInPipeWriter := io.Pipe() // in to conn + connOutPipeReader, _ := io.Pipe() // out from conn + + conn := pipePair{ + connOutPipeReader, + connInPipeWriter, + } + dt, err := New(conn) + if err != nil { + t.Fatalf("Unexpected error from New(): %s", err) + } + + ctx, cancel := context.WithCancel(context.Background()) + var wg sync.WaitGroup + wg.Add(1) + go func() { + wg.Done() + err := dt.Run(ctx) + if err != nil { + t.Fatalf("Unexpected error from Run(): %s", err) + } + }() + + message := []byte("foobar") + n, err := dt.TTY().Write(message) + if err != nil { + t.Fatalf("Unexpected error from Write(): %s", err) + } + if n != len(message) { + t.Fatalf("Write() accepted `%d` for message `%s`", n, message) + } + + buf := make([]byte, 1024) + n, err = connInPipeReader.Read(buf) + if err != nil { + t.Fatalf("Unexpected error from Read(): %s", err) + } + if buf[0] != Output { + t.Fatalf("Unexpected message type `%c`", buf[0]) + } + decoded := make([]byte, 1024) + n, err = base64.StdEncoding.Decode(decoded, buf[1:n]) + if err != nil { + t.Fatalf("Unexpected error from Decode(): %s", err) + } + if !bytes.Equal(decoded[:n], message) { + t.Fatalf("Unexpected message received: `%s`", decoded[:n]) + } + + cancel() + wg.Wait() +} + +func TestWriteFromConn(t *testing.T) { + connInPipeReader, connInPipeWriter := io.Pipe() // in to conn + connOutPipeReader, connOutPipeWriter := io.Pipe() // out from conn + + conn := pipePair{ + connOutPipeReader, + connInPipeWriter, + } + + dt, err := New(conn) + if err != nil { + t.Fatalf("Unexpected error from New(): %s", err) + } + + ctx, cancel := context.WithCancel(context.Background()) + var wg sync.WaitGroup + wg.Add(1) + go func() { + wg.Done() + err := dt.Run(ctx) + if err != nil { + t.Fatalf("Unexpected error from Run(): %s", err) + } + }() + + var ( + message []byte + n int + ) + readBuf := make([]byte, 1024) + + // input + message = []byte("0hello\n") // line buffered canonical mode + n, err = connOutPipeWriter.Write(message) + if err != nil { + t.Fatalf("Unexpected error from Write(): %s", err) + } + if n != len(message) { + t.Fatalf("Write() accepted `%d` for message `%s`", n, message) + } + + n, err = dt.TTY().Read(readBuf) + if err != nil { + t.Fatalf("Unexpected error from Write(): %s", err) + } + if !bytes.Equal(readBuf[:n], message[1:]) { + t.Fatalf("Unexpected message received: `%s`", readBuf[:n]) + } + + // ping + message = []byte("1\n") // line buffered canonical mode + n, err = connOutPipeWriter.Write(message) + if n != len(message) { + t.Fatalf("Write() accepted `%d` for message `%s`", n, message) + } + + n, err = connInPipeReader.Read(readBuf) + if err != nil { + t.Fatalf("Unexpected error from Read(): %s", err) + } + if !bytes.Equal(readBuf[:n], []byte{'1'}) { + t.Fatalf("Unexpected message received: `%s`", readBuf[:n]) + } + + // TODO: resize + + cancel() + wg.Wait() +} diff --git a/vendor/github.com/yudai/gotty/wercker.yml b/vendor/github.com/yudai/gotty/wercker.yml new file mode 100644 index 0000000..019952d --- /dev/null +++ b/vendor/github.com/yudai/gotty/wercker.yml @@ -0,0 +1,32 @@ +box: golang:1.9.0 + +build: + steps: + - setup-go-workspace + - script: + name: tools + code: make tools + - script: + name: test + code: make test + - script: + name: cross compile + code: make cross_compile OUTPUT_DIR=$WERCKER_OUTPUT_DIR + - script: + name: store Makefile + code: cp Makefile $WERCKER_OUTPUT_DIR/ + +deploy: + steps: + - script: + name: tools + code: make tools + - script: + name: targz + code: make targz OUTPUT_DIR=. + - script: + name: shasums + code: make shasums OUTPUT_DIR=. + - script: + name: release + code: make release OUTPUT_DIR=. GIT_COMMIT=$WERCKER_GIT_COMMIT diff --git a/vendor/github.com/yudai/hcl/.gitignore b/vendor/github.com/yudai/hcl/.gitignore new file mode 100644 index 0000000..e8acb0a --- /dev/null +++ b/vendor/github.com/yudai/hcl/.gitignore @@ -0,0 +1 @@ +y.output diff --git a/vendor/github.com/yudai/hcl/LICENSE b/vendor/github.com/yudai/hcl/LICENSE new file mode 100644 index 0000000..c33dcc7 --- /dev/null +++ b/vendor/github.com/yudai/hcl/LICENSE @@ -0,0 +1,354 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. “Contributor” + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. “Contributor Version” + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor’s Contribution. + +1.3. “Contribution” + + means Covered Software of a particular Contributor. + +1.4. “Covered Software” + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. “Incompatible With Secondary Licenses” + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of version + 1.1 or earlier of the License, but not also under the terms of a + Secondary License. + +1.6. “Executable Form” + + means any form of the work other than Source Code Form. + +1.7. “Larger Work” + + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + +1.8. “License” + + means this document. + +1.9. “Licensable” + + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed by + this License. + +1.10. “Modifications” + + means any of the following: + + a. any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. “Patent Claims” of a Contributor + + means any patent claim(s), including without limitation, method, process, + and apparatus claims, in any patent Licensable by such Contributor that + would be infringed, but for the grant of the License, by the making, + using, selling, offering for sale, having made, import, or transfer of + either its Contributions or its Contributor Version. + +1.12. “Secondary License” + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. “Source Code Form” + + means the form of the work preferred for making modifications. + +1.14. “You” (or “Your”) + + means an individual or a legal entity exercising rights under this + License. For legal entities, “You” includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, “control” means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or as + part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its Contributions + or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding Section + 2.1(b) above, no patent license is granted by a Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party’s + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of its + Contributions. + + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the + notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this License + (see Section 10.2) or under the terms of a Secondary License (if permitted + under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions + are its original creation(s) or it has sufficient rights to grant the + rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form + of the Covered Software is governed by the terms of this License, and how + they can obtain a copy of this License. You may not attempt to alter or + restrict the recipients’ rights in the Source Code Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this License, + or sublicense it under different terms, provided that the license for + the Executable Form does not attempt to limit or alter the recipients’ + rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software + with a work governed by one or more Secondary Licenses, and the Covered + Software is not Incompatible With Secondary Licenses, this License permits + You to additionally distribute such Covered Software under the terms of + such Secondary License(s), so that the recipient of the Larger Work may, at + their option, further distribute the Covered Software under the terms of + either this License or such Secondary License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations + of liability) contained within the Source Code Form of the Covered + Software, except that You may alter any license notices to the extent + required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on behalf + of any Contributor. You must make it absolutely clear that any such + warranty, support, indemnity, or liability obligation is offered by You + alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, judicial + order, or regulation then You must: (a) comply with the terms of this License + to the maximum extent possible; and (b) describe the limitations and the code + they affect. Such description must be placed in a text file included with all + distributions of the Covered Software under this License. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing basis, + if such Contributor fails to notify You of the non-compliance by some + reasonable means prior to 60 days after You have come back into compliance. + Moreover, Your grants from a particular Contributor are reinstated on an + ongoing basis if such Contributor notifies You of the non-compliance by + some reasonable means, this is the first time You have received notice of + non-compliance with this License from such Contributor, and You become + compliant prior to 30 days after Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, + and cross-claims) alleging that a Contributor Version directly or + indirectly infringes any patent, then the rights granted to You by any and + all Contributors for the Covered Software under Section 2.1 of this License + shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an “as is” basis, without + warranty of any kind, either expressed, implied, or statutory, including, + without limitation, warranties that the Covered Software is free of defects, + merchantable, fit for a particular purpose or non-infringing. The entire + risk as to the quality and performance of the Covered Software is with You. + Should any Covered Software prove defective in any respect, You (not any + Contributor) assume the cost of any necessary servicing, repair, or + correction. This disclaimer of warranty constitutes an essential part of this + License. No use of any Covered Software is authorized under this License + except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from such + party’s negligence to the extent applicable law prohibits such limitation. + Some jurisdictions do not allow the exclusion or limitation of incidental or + consequential damages, so this exclusion and limitation may not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of + a jurisdiction where the defendant maintains its principal place of business + and such litigation shall be governed by laws of that jurisdiction, without + reference to its conflict-of-law provisions. Nothing in this Section shall + prevent a party’s ability to bring cross-claims or counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. Any law or regulation which provides that the language of a + contract shall be construed against the drafter shall not be used to construe + this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of + the License under which You originally received the Covered Software, or + under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a modified + version of this License if you rename the license and remove any + references to the name of the license steward (except to note that such + modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the + notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - “Incompatible With Secondary Licenses” Notice + + This Source Code Form is “Incompatible + With Secondary Licenses”, as defined by + the Mozilla Public License, v. 2.0. + diff --git a/vendor/github.com/yudai/hcl/Makefile b/vendor/github.com/yudai/hcl/Makefile new file mode 100644 index 0000000..ad404a8 --- /dev/null +++ b/vendor/github.com/yudai/hcl/Makefile @@ -0,0 +1,17 @@ +TEST?=./... + +default: test + +fmt: generate + go fmt ./... + +test: generate + go test $(TEST) $(TESTARGS) + +generate: + go generate ./... + +updatedeps: + go get -u golang.org/x/tools/cmd/stringer + +.PHONY: default generate test updatedeps diff --git a/vendor/github.com/yudai/hcl/README.md b/vendor/github.com/yudai/hcl/README.md new file mode 100644 index 0000000..c69d17e --- /dev/null +++ b/vendor/github.com/yudai/hcl/README.md @@ -0,0 +1,84 @@ +# HCL + +HCL (HashiCorp Configuration Language) is a configuration language built +by HashiCorp. The goal of HCL is to build a structured configuration language +that is both human and machine friendly for use with command-line tools, but +specifically targeted towards DevOps tools, servers, etc. + +HCL is also fully JSON compatible. That is, JSON can be used as completely +valid input to a system expecting HCL. This helps makes systems +interoperable with other systems. + +HCL is heavily inspired by +[libucl](https://github.com/vstakhov/libucl), +nginx configuration, and others similar. + +## Why? + +A common question when viewing HCL is to ask the question: why not +JSON, YAML, etc.? + +Prior to HCL, the tools we built at [HashiCorp](http://www.hashicorp.com) +used a variety of configuration languages from full programming languages +such as Ruby to complete data structure languages such as JSON. What we +learned is that some people wanted human-friendly configuration languages +and some people wanted machine-friendly languages. + +JSON fits a nice balance in this, but is fairly verbose and most +importantly doesn't support comments. With YAML, we found that beginners +had a really hard time determining what the actual structure was, and +ended up guessing more than not whether to use a hyphen, colon, etc. +in order to represent some configuration key. + +Full programming languages such as Ruby enable complex behavior +a configuration language shouldn't usually allow, and also forces +people to learn some set of Ruby. + +Because of this, we decided to create our own configuration language +that is JSON-compatible. Our configuration language (HCL) is designed +to be written and modified by humans. The API for HCL allows JSON +as an input so that it is also machine-friendly (machines can generate +JSON instead of trying to generate HCL). + +Our goal with HCL is not to alienate other configuration languages. +It is instead to provide HCL as a specialized language for our tools, +and JSON as the interoperability layer. + +## Syntax + +The complete grammar +[can be found here](https://github.com/hashicorp/hcl/blob/master/hcl/parse.y), +if you're more comfortable reading specifics, but a high-level overview +of the syntax and grammar are listed here. + + * Single line comments start with `#` or `//` + + * Multi-line comments are wrapped in `/*` and `*/`. Nested block comments + are not allowed. A multi-line comment (also known as a block comment) + terminates at the first `*/` found. + + * Values are assigned with the syntax `key = value` (whitespace doesn't + matter). The value can be any primitive: a string, number, boolean, + object, or list. + + * Strings are double-quoted and can contain any UTF-8 characters. + Example: `"Hello, World"` + + * Numbers are assumed to be base 10. If you prefix a number with 0x, + it is treated as a hexadecimal. If it is prefixed with 0, it is + treated as an octal. Numbers can be in scientific notation: "1e10". + + * Boolean values: `true`, `false` + + * Arrays can be made by wrapping it in `[]`. Example: + `["foo", "bar", 42]`. Arrays can contain primitives + and other arrays, but cannot contain objects. Objects must + use the block syntax shown below. + +Objects and nested objects are created using the structure shown below: + +``` +variable "ami" { + description = "the AMI to use" +} +``` diff --git a/vendor/github.com/yudai/hcl/decoder.go b/vendor/github.com/yudai/hcl/decoder.go new file mode 100644 index 0000000..72f14c6 --- /dev/null +++ b/vendor/github.com/yudai/hcl/decoder.go @@ -0,0 +1,490 @@ +package hcl + +import ( + "errors" + "fmt" + "reflect" + "sort" + "strconv" + "strings" + + "github.com/yudai/hcl/hcl" +) + +// This is the tag to use with structures to have settings for HCL +const tagName = "hcl" + +// Decode reads the given input and decodes it into the structure +// given by `out`. +func Decode(out interface{}, in string) error { + obj, err := Parse(in) + if err != nil { + return err + } + + return DecodeObject(out, obj) +} + +// DecodeObject is a lower-level version of Decode. It decodes a +// raw Object into the given output. +func DecodeObject(out interface{}, n *hcl.Object) error { + val := reflect.ValueOf(out) + if val.Kind() != reflect.Ptr { + return errors.New("result must be a pointer") + } + + var d decoder + return d.decode("root", n, val.Elem()) +} + +type decoder struct { + stack []reflect.Kind +} + +func (d *decoder) decode(name string, o *hcl.Object, result reflect.Value) error { + k := result + + // If we have an interface with a valid value, we use that + // for the check. + if result.Kind() == reflect.Interface { + elem := result.Elem() + if elem.IsValid() { + k = elem + } + } + + // Push current onto stack unless it is an interface. + if k.Kind() != reflect.Interface { + d.stack = append(d.stack, k.Kind()) + + // Schedule a pop + defer func() { + d.stack = d.stack[:len(d.stack)-1] + }() + } + + switch k.Kind() { + case reflect.Bool: + return d.decodeBool(name, o, result) + case reflect.Float64: + return d.decodeFloat(name, o, result) + case reflect.Int: + return d.decodeInt(name, o, result) + case reflect.Interface: + // When we see an interface, we make our own thing + return d.decodeInterface(name, o, result) + case reflect.Map: + return d.decodeMap(name, o, result) + case reflect.Ptr: + return d.decodePtr(name, o, result) + case reflect.Slice: + return d.decodeSlice(name, o, result) + case reflect.String: + return d.decodeString(name, o, result) + case reflect.Struct: + return d.decodeStruct(name, o, result) + default: + return fmt.Errorf( + "%s: unknown kind to decode into: %s", name, k.Kind()) + } + + return nil +} + +func (d *decoder) decodeBool(name string, o *hcl.Object, result reflect.Value) error { + switch o.Type { + case hcl.ValueTypeBool: + result.Set(reflect.ValueOf(o.Value.(bool))) + default: + return fmt.Errorf("%s: unknown type %v", name, o.Type) + } + + return nil +} + +func (d *decoder) decodeFloat(name string, o *hcl.Object, result reflect.Value) error { + switch o.Type { + case hcl.ValueTypeFloat: + result.Set(reflect.ValueOf(o.Value.(float64))) + default: + return fmt.Errorf("%s: unknown type %v", name, o.Type) + } + + return nil +} + +func (d *decoder) decodeInt(name string, o *hcl.Object, result reflect.Value) error { + switch o.Type { + case hcl.ValueTypeInt: + result.Set(reflect.ValueOf(o.Value.(int))) + case hcl.ValueTypeString: + v, err := strconv.ParseInt(o.Value.(string), 0, 0) + if err != nil { + return err + } + + result.SetInt(int64(v)) + default: + return fmt.Errorf("%s: unknown type %v", name, o.Type) + } + + return nil +} + +func (d *decoder) decodeInterface(name string, o *hcl.Object, result reflect.Value) error { + var set reflect.Value + redecode := true + + switch o.Type { + case hcl.ValueTypeObject: + // If we're at the root or we're directly within a slice, then we + // decode objects into map[string]interface{}, otherwise we decode + // them into lists. + if len(d.stack) == 0 || d.stack[len(d.stack)-1] == reflect.Slice { + var temp map[string]interface{} + tempVal := reflect.ValueOf(temp) + result := reflect.MakeMap( + reflect.MapOf( + reflect.TypeOf(""), + tempVal.Type().Elem())) + + set = result + } else { + var temp []map[string]interface{} + tempVal := reflect.ValueOf(temp) + result := reflect.MakeSlice( + reflect.SliceOf(tempVal.Type().Elem()), 0, int(o.Len())) + set = result + } + case hcl.ValueTypeList: + var temp []interface{} + tempVal := reflect.ValueOf(temp) + result := reflect.MakeSlice( + reflect.SliceOf(tempVal.Type().Elem()), 0, 0) + set = result + case hcl.ValueTypeBool: + var result bool + set = reflect.Indirect(reflect.New(reflect.TypeOf(result))) + case hcl.ValueTypeFloat: + var result float64 + set = reflect.Indirect(reflect.New(reflect.TypeOf(result))) + case hcl.ValueTypeInt: + var result int + set = reflect.Indirect(reflect.New(reflect.TypeOf(result))) + case hcl.ValueTypeString: + set = reflect.Indirect(reflect.New(reflect.TypeOf(""))) + case hcl.ValueTypeNil: + return nil + default: + return fmt.Errorf( + "%s: cannot decode into interface: %T", + name, o) + } + + // Set the result to what its supposed to be, then reset + // result so we don't reflect into this method anymore. + result.Set(set) + + if redecode { + // Revisit the node so that we can use the newly instantiated + // thing and populate it. + if err := d.decode(name, o, result); err != nil { + return err + } + } + + return nil +} + +func (d *decoder) decodeMap(name string, o *hcl.Object, result reflect.Value) error { + if o.Type != hcl.ValueTypeObject { + return fmt.Errorf("%s: not an object type for map (%v)", name, o.Type) + } + + // If we have an interface, then we can address the interface, + // but not the slice itself, so get the element but set the interface + set := result + if result.Kind() == reflect.Interface { + result = result.Elem() + } + + resultType := result.Type() + resultElemType := resultType.Elem() + resultKeyType := resultType.Key() + if resultKeyType.Kind() != reflect.String { + return fmt.Errorf( + "%s: map must have string keys", name) + } + + // Make a map if it is nil + resultMap := result + if result.IsNil() { + resultMap = reflect.MakeMap( + reflect.MapOf(resultKeyType, resultElemType)) + } + + // Go through each element and decode it. + for _, o := range o.Elem(false) { + if o.Value == nil { + continue + } + + for _, o := range o.Elem(true) { + // Make the field name + fieldName := fmt.Sprintf("%s.%s", name, o.Key) + + // Get the key/value as reflection values + key := reflect.ValueOf(o.Key) + val := reflect.Indirect(reflect.New(resultElemType)) + + // If we have a pre-existing value in the map, use that + oldVal := resultMap.MapIndex(key) + if oldVal.IsValid() { + val.Set(oldVal) + } + + // Decode! + if err := d.decode(fieldName, o, val); err != nil { + return err + } + + // Set the value on the map + resultMap.SetMapIndex(key, val) + } + } + + // Set the final map if we can + set.Set(resultMap) + return nil +} + +func (d *decoder) decodePtr(name string, o *hcl.Object, result reflect.Value) error { + // Create an element of the concrete (non pointer) type and decode + // into that. Then set the value of the pointer to this type. + switch o.Type { + case hcl.ValueTypeNil: + // NIL + default: + resultType := result.Type() + resultElemType := resultType.Elem() + val := reflect.New(resultElemType) + if err := d.decode(name, o, reflect.Indirect(val)); err != nil { + return err + } + + result.Set(val) + } + return nil +} + +func (d *decoder) decodeSlice(name string, o *hcl.Object, result reflect.Value) error { + // If we have an interface, then we can address the interface, + // but not the slice itself, so get the element but set the interface + set := result + if result.Kind() == reflect.Interface { + result = result.Elem() + } + + // Create the slice if it isn't nil + resultType := result.Type() + resultElemType := resultType.Elem() + if result.IsNil() { + resultSliceType := reflect.SliceOf(resultElemType) + result = reflect.MakeSlice( + resultSliceType, 0, 0) + } + + // Determine how we're doing this + expand := true + switch o.Type { + case hcl.ValueTypeObject: + expand = false + default: + // Array or anything else: we expand values and take it all + } + + i := 0 + for _, o := range o.Elem(expand) { + fieldName := fmt.Sprintf("%s[%d]", name, i) + + // Decode + val := reflect.Indirect(reflect.New(resultElemType)) + if err := d.decode(fieldName, o, val); err != nil { + return err + } + + // Append it onto the slice + result = reflect.Append(result, val) + + i += 1 + } + + set.Set(result) + return nil +} + +func (d *decoder) decodeString(name string, o *hcl.Object, result reflect.Value) error { + switch o.Type { + case hcl.ValueTypeInt: + result.Set(reflect.ValueOf( + strconv.FormatInt(int64(o.Value.(int)), 10)).Convert(result.Type())) + case hcl.ValueTypeString: + result.Set(reflect.ValueOf(o.Value.(string)).Convert(result.Type())) + default: + return fmt.Errorf("%s: unknown type to string: %v", name, o.Type) + } + + return nil +} + +func (d *decoder) decodeStruct(name string, o *hcl.Object, result reflect.Value) error { + if o.Type != hcl.ValueTypeObject { + return fmt.Errorf("%s: not an object type for struct (%v)", name, o.Type) + } + + // This slice will keep track of all the structs we'll be decoding. + // There can be more than one struct if there are embedded structs + // that are squashed. + structs := make([]reflect.Value, 1, 5) + structs[0] = result + + // Compile the list of all the fields that we're going to be decoding + // from all the structs. + fields := make(map[*reflect.StructField]reflect.Value) + for len(structs) > 0 { + structVal := structs[0] + structs = structs[1:] + + structType := structVal.Type() + for i := 0; i < structType.NumField(); i++ { + fieldType := structType.Field(i) + + if fieldType.Anonymous { + fieldKind := fieldType.Type.Kind() + if fieldKind != reflect.Struct { + return fmt.Errorf( + "%s: unsupported type to struct: %s", + fieldType.Name, fieldKind) + } + + // We have an embedded field. We "squash" the fields down + // if specified in the tag. + squash := false + tagParts := strings.Split(fieldType.Tag.Get(tagName), ",") + for _, tag := range tagParts[1:] { + if tag == "squash" { + squash = true + break + } + } + + if squash { + structs = append( + structs, result.FieldByName(fieldType.Name)) + continue + } + } + + // Normal struct field, store it away + fields[&fieldType] = structVal.Field(i) + } + } + + usedKeys := make(map[string]struct{}) + decodedFields := make([]string, 0, len(fields)) + decodedFieldsVal := make([]reflect.Value, 0) + unusedKeysVal := make([]reflect.Value, 0) + for fieldType, field := range fields { + if !field.IsValid() { + // This should never happen + panic("field is not valid") + } + + // If we can't set the field, then it is unexported or something, + // and we just continue onwards. + if !field.CanSet() { + continue + } + + fieldName := fieldType.Name + + // This is whether or not we expand the object into its children + // later. + expand := false + + tagValue := fieldType.Tag.Get(tagName) + tagParts := strings.SplitN(tagValue, ",", 2) + if len(tagParts) >= 2 { + switch tagParts[1] { + case "expand": + expand = true + case "decodedFields": + decodedFieldsVal = append(decodedFieldsVal, field) + continue + case "key": + field.SetString(o.Key) + continue + case "unusedKeys": + unusedKeysVal = append(unusedKeysVal, field) + continue + } + } + + if tagParts[0] != "" { + fieldName = tagParts[0] + } + + // Find the element matching this name + obj := o.Get(fieldName, true) + if obj == nil { + continue + } + + // Track the used key + usedKeys[fieldName] = struct{}{} + + // Create the field name and decode. We range over the elements + // because we actually want the value. + fieldName = fmt.Sprintf("%s.%s", name, fieldName) + for _, obj := range obj.Elem(expand) { + if err := d.decode(fieldName, obj, field); err != nil { + return err + } + } + + decodedFields = append(decodedFields, fieldType.Name) + } + + if len(decodedFieldsVal) > 0 { + // Sort it so that it is deterministic + sort.Strings(decodedFields) + + for _, v := range decodedFieldsVal { + v.Set(reflect.ValueOf(decodedFields)) + } + } + + // If we want to know what keys are unused, compile that + if len(unusedKeysVal) > 0 { + /* + unusedKeys := make([]string, 0, int(obj.Len())-len(usedKeys)) + + for _, elem := range obj.Elem { + k := elem.Key() + if _, ok := usedKeys[k]; !ok { + unusedKeys = append(unusedKeys, k) + } + } + + if len(unusedKeys) == 0 { + unusedKeys = nil + } + + for _, v := range unusedKeysVal { + v.Set(reflect.ValueOf(unusedKeys)) + } + */ + } + + return nil +} diff --git a/vendor/github.com/yudai/hcl/decoder_test.go b/vendor/github.com/yudai/hcl/decoder_test.go new file mode 100644 index 0000000..a71163b --- /dev/null +++ b/vendor/github.com/yudai/hcl/decoder_test.go @@ -0,0 +1,481 @@ +package hcl + +import ( + "io/ioutil" + "path/filepath" + "reflect" + "testing" +) + +func TestDecode_interface(t *testing.T) { + cases := []struct { + File string + Err bool + Out interface{} + }{ + { + "basic.hcl", + false, + map[string]interface{}{ + "foo": "bar", + "bar": "${file(\"bing/bong.txt\")}", + }, + }, + { + "basic_squish.hcl", + false, + map[string]interface{}{ + "foo": "bar", + "bar": "${file(\"bing/bong.txt\")}", + "foo-bar": "baz", + }, + }, + { + "empty.hcl", + false, + map[string]interface{}{ + "resource": []map[string]interface{}{ + map[string]interface{}{ + "foo": []map[string]interface{}{ + map[string]interface{}{}, + }, + }, + }, + }, + }, + { + "escape.hcl", + false, + map[string]interface{}{ + "foo": "bar\"baz\\n", + }, + }, + { + "float.hcl", + false, + map[string]interface{}{ + "a": 1.02, + }, + }, + { + "multiline_bad.hcl", + false, + map[string]interface{}{"foo": "bar\nbaz\n"}, + }, + { + "multiline.json", + false, + map[string]interface{}{"foo": "bar\nbaz"}, + }, + { + "scientific.json", + false, + map[string]interface{}{ + "a": 1e-10, + "b": 1e+10, + "c": 1e10, + "d": 1.2e-10, + "e": 1.2e+10, + "f": 1.2e10, + }, + }, + { + "scientific.hcl", + false, + map[string]interface{}{ + "a": 1e-10, + "b": 1e+10, + "c": 1e10, + "d": 1.2e-10, + "e": 1.2e+10, + "f": 1.2e10, + }, + }, + { + "terraform_heroku.hcl", + false, + map[string]interface{}{ + "name": "terraform-test-app", + "config_vars": []map[string]interface{}{ + map[string]interface{}{ + "FOO": "bar", + }, + }, + }, + }, + { + "structure_multi.hcl", + false, + map[string]interface{}{ + "foo": []map[string]interface{}{ + map[string]interface{}{ + "baz": []map[string]interface{}{ + map[string]interface{}{"key": 7}, + }, + }, + map[string]interface{}{ + "bar": []map[string]interface{}{ + map[string]interface{}{"key": 12}, + }, + }, + }, + }, + }, + { + "structure_multi.json", + false, + map[string]interface{}{ + "foo": []map[string]interface{}{ + map[string]interface{}{ + "baz": []map[string]interface{}{ + map[string]interface{}{"key": 7}, + }, + "bar": []map[string]interface{}{ + map[string]interface{}{"key": 12}, + }, + }, + }, + }, + }, + { + "structure_list.hcl", + false, + map[string]interface{}{ + "foo": []map[string]interface{}{ + map[string]interface{}{ + "key": 7, + }, + map[string]interface{}{ + "key": 12, + }, + }, + }, + }, + { + "structure_list.json", + false, + map[string]interface{}{ + "foo": []interface{}{ + map[string]interface{}{ + "key": 7, + }, + map[string]interface{}{ + "key": 12, + }, + }, + }, + }, + { + "structure_list_deep.json", + false, + map[string]interface{}{ + "bar": []map[string]interface{}{ + map[string]interface{}{ + "foo": []map[string]interface{}{ + map[string]interface{}{ + "name": "terraform_example", + "ingress": []interface{}{ + map[string]interface{}{ + "from_port": 22, + }, + map[string]interface{}{ + "from_port": 80, + }, + }, + }, + }, + }, + }, + }, + }, + + { + "nested_block_comment.hcl", + false, + map[string]interface{}{ + "bar": "value", + }, + }, + + { + "unterminated_block_comment.hcl", + true, + nil, + }, + } + + for _, tc := range cases { + d, err := ioutil.ReadFile(filepath.Join(fixtureDir, tc.File)) + if err != nil { + t.Fatalf("err: %s", err) + } + + var out interface{} + err = Decode(&out, string(d)) + if (err != nil) != tc.Err { + t.Fatalf("Input: %s\n\nError: %s", tc.File, err) + } + + if !reflect.DeepEqual(out, tc.Out) { + t.Fatalf("Input: %s\n\nActual: %#v\n\nExpected: %#v", tc.File, out, tc.Out) + } + } +} + +func TestDecode_equal(t *testing.T) { + cases := []struct { + One, Two string + }{ + { + "basic.hcl", + "basic.json", + }, + { + "float.hcl", + "float.json", + }, + /* + { + "structure.hcl", + "structure.json", + }, + */ + { + "structure.hcl", + "structure_flat.json", + }, + { + "terraform_heroku.hcl", + "terraform_heroku.json", + }, + } + + for _, tc := range cases { + p1 := filepath.Join(fixtureDir, tc.One) + p2 := filepath.Join(fixtureDir, tc.Two) + + d1, err := ioutil.ReadFile(p1) + if err != nil { + t.Fatalf("err: %s", err) + } + + d2, err := ioutil.ReadFile(p2) + if err != nil { + t.Fatalf("err: %s", err) + } + + var i1, i2 interface{} + err = Decode(&i1, string(d1)) + if err != nil { + t.Fatalf("err: %s", err) + } + + err = Decode(&i2, string(d2)) + if err != nil { + t.Fatalf("err: %s", err) + } + + if !reflect.DeepEqual(i1, i2) { + t.Fatalf( + "%s != %s\n\n%#v\n\n%#v", + tc.One, tc.Two, + i1, i2) + } + } +} + +func TestDecode_flatMap(t *testing.T) { + var val map[string]map[string]string + + err := Decode(&val, testReadFile(t, "structure_flatmap.hcl")) + if err != nil { + t.Fatalf("err: %s", err) + } + + expected := map[string]map[string]string{ + "foo": map[string]string{ + "foo": "bar", + "key": "7", + }, + } + + if !reflect.DeepEqual(val, expected) { + t.Fatalf("Actual: %#v\n\nExpected: %#v", val, expected) + } +} + +func TestDecode_structure(t *testing.T) { + type V struct { + Key int + Foo string + } + + var actual V + + err := Decode(&actual, testReadFile(t, "flat.hcl")) + if err != nil { + t.Fatalf("err: %s", err) + } + + expected := V{ + Key: 7, + Foo: "bar", + } + + if !reflect.DeepEqual(actual, expected) { + t.Fatalf("Actual: %#v\n\nExpected: %#v", actual, expected) + } +} + +func TestDecode_structurePtr(t *testing.T) { + type V struct { + Key int + Foo string + } + + var actual *V + + err := Decode(&actual, testReadFile(t, "flat.hcl")) + if err != nil { + t.Fatalf("err: %s", err) + } + + expected := &V{ + Key: 7, + Foo: "bar", + } + + if !reflect.DeepEqual(actual, expected) { + t.Fatalf("Actual: %#v\n\nExpected: %#v", actual, expected) + } +} + +func TestDecode_structureArray(t *testing.T) { + // This test is extracted from a failure in Consul (consul.io), + // hence the interesting structure naming. + + type KeyPolicyType string + + type KeyPolicy struct { + Prefix string `hcl:",key"` + Policy KeyPolicyType + } + + type Policy struct { + Keys []KeyPolicy `hcl:"key,expand"` + } + + expected := Policy{ + Keys: []KeyPolicy{ + KeyPolicy{ + Prefix: "", + Policy: "read", + }, + KeyPolicy{ + Prefix: "foo/", + Policy: "write", + }, + KeyPolicy{ + Prefix: "foo/bar/", + Policy: "read", + }, + KeyPolicy{ + Prefix: "foo/bar/baz", + Policy: "deny", + }, + }, + } + + files := []string{ + "decode_policy.hcl", + "decode_policy.json", + } + + for _, f := range files { + var actual Policy + + err := Decode(&actual, testReadFile(t, f)) + if err != nil { + t.Fatalf("err: %s", err) + } + + if !reflect.DeepEqual(actual, expected) { + t.Fatalf("Input: %s\n\nActual: %#v\n\nExpected: %#v", f, actual, expected) + } + } +} + +func TestDecode_structureMap(t *testing.T) { + // This test is extracted from a failure in Terraform (terraform.io), + // hence the interesting structure naming. + + type hclVariable struct { + Default interface{} + Description string + Fields []string `hcl:",decodedFields"` + } + + type rawConfig struct { + Variable map[string]hclVariable + } + + expected := rawConfig{ + Variable: map[string]hclVariable{ + "foo": hclVariable{ + Default: "bar", + Description: "bar", + Fields: []string{"Default", "Description"}, + }, + + "amis": hclVariable{ + Default: []map[string]interface{}{ + map[string]interface{}{ + "east": "foo", + }, + }, + Fields: []string{"Default"}, + }, + }, + } + + files := []string{ + "decode_tf_variable.hcl", + "decode_tf_variable.json", + } + + for _, f := range files { + var actual rawConfig + + err := Decode(&actual, testReadFile(t, f)) + if err != nil { + t.Fatalf("Input: %s\n\nerr: %s", f, err) + } + + if !reflect.DeepEqual(actual, expected) { + t.Fatalf("Input: %s\n\nActual: %#v\n\nExpected: %#v", f, actual, expected) + } + } +} + +func TestDecode_interfaceNonPointer(t *testing.T) { + var value interface{} + err := Decode(value, testReadFile(t, "basic_int_string.hcl")) + if err == nil { + t.Fatal("should error") + } +} + +func TestDecode_intString(t *testing.T) { + var value struct { + Count int + } + + err := Decode(&value, testReadFile(t, "basic_int_string.hcl")) + if err != nil { + t.Fatalf("err: %s", err) + } + + if value.Count != 3 { + t.Fatalf("bad: %#v", value.Count) + } +} diff --git a/vendor/github.com/yudai/hcl/hcl.go b/vendor/github.com/yudai/hcl/hcl.go new file mode 100644 index 0000000..14bd9ba --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl.go @@ -0,0 +1,11 @@ +// hcl is a package for decoding HCL into usable Go structures. +// +// hcl input can come in either pure HCL format or JSON format. +// It can be parsed into an AST, and then decoded into a structure, +// or it can be decoded directly from a string into a structure. +// +// If you choose to parse HCL into a raw AST, the benefit is that you +// can write custom visitor implementations to implement custom +// semantic checks. By default, HCL does not perform any semantic +// checks. +package hcl diff --git a/vendor/github.com/yudai/hcl/hcl/hcl_test.go b/vendor/github.com/yudai/hcl/hcl/hcl_test.go new file mode 100644 index 0000000..dfefd28 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/hcl_test.go @@ -0,0 +1,4 @@ +package hcl + +// This is the directory where our test fixtures are. +const fixtureDir = "./test-fixtures" diff --git a/vendor/github.com/yudai/hcl/hcl/lex.go b/vendor/github.com/yudai/hcl/hcl/lex.go new file mode 100644 index 0000000..0ef4f2c --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/lex.go @@ -0,0 +1,447 @@ +package hcl + +import ( + "bytes" + "fmt" + "strconv" + "unicode" + "unicode/utf8" +) + +//go:generate go tool yacc -p "hcl" parse.y + +// The parser expects the lexer to return 0 on EOF. +const lexEOF = 0 + +// The parser uses the type Lex as a lexer. It must provide +// the methods Lex(*SymType) int and Error(string). +type hclLex struct { + Input string + + lastNumber bool + pos int + width int + col, line int + lastCol, lastLine int + err error +} + +// The parser calls this method to get each new token. +func (x *hclLex) Lex(yylval *hclSymType) int { + for { + c := x.next() + if c == lexEOF { + return lexEOF + } + + // Ignore all whitespace except a newline which we handle + // specially later. + if unicode.IsSpace(c) { + x.lastNumber = false + continue + } + + // Consume all comments + switch c { + case '#': + fallthrough + case '/': + // Starting comment + if !x.consumeComment(c) { + return lexEOF + } + continue + } + + // If it is a number, lex the number + if c >= '0' && c <= '9' { + x.lastNumber = true + x.backup() + return x.lexNumber(yylval) + } + + // This is a hacky way to find 'e' and lex it, but it works. + if x.lastNumber { + switch c { + case 'e': + fallthrough + case 'E': + switch x.next() { + case '+': + return EPLUS + case '-': + return EMINUS + default: + x.backup() + return EPLUS + } + } + } + x.lastNumber = false + + switch c { + case '.': + return PERIOD + case '-': + return MINUS + case ',': + return COMMA + case '=': + return EQUAL + case '[': + return LEFTBRACKET + case ']': + return RIGHTBRACKET + case '{': + return LEFTBRACE + case '}': + return RIGHTBRACE + case '"': + return x.lexString(yylval) + case '<': + return x.lexHeredoc(yylval) + default: + x.backup() + return x.lexId(yylval) + } + } +} + +func (x *hclLex) consumeComment(c rune) bool { + single := c == '#' + if !single { + c = x.next() + if c != '/' && c != '*' { + x.backup() + x.createErr(fmt.Sprintf("comment expected, got '%c'", c)) + return false + } + + single = c == '/' + } + + nested := 1 + for { + c = x.next() + if c == lexEOF { + x.backup() + if single { + // Single line comments can end with an EOF + return true + } + + // Multi-line comments must end with a */ + x.createErr(fmt.Sprintf("end of multi-line comment expected, got EOF")) + return false + } + + // Single line comments continue until a '\n' + if single { + if c == '\n' { + return true + } + + continue + } + + // Multi-line comments continue until a '*/' + switch c { + case '/': + c = x.next() + if c == '*' { + nested++ + } else { + x.backup() + } + case '*': + c = x.next() + if c == '/' { + return true + } else { + x.backup() + } + default: + // Continue + } + } +} + +// lexId lexes an identifier +func (x *hclLex) lexId(yylval *hclSymType) int { + var b bytes.Buffer + first := true + for { + c := x.next() + if c == lexEOF { + break + } + + if !unicode.IsDigit(c) && !unicode.IsLetter(c) && + c != '_' && c != '-' && c != '.' { + x.backup() + + if first { + x.createErr("Invalid identifier") + return lexEOF + } + + break + } + + first = false + if _, err := b.WriteRune(c); err != nil { + return lexEOF + } + } + + yylval.str = b.String() + + switch yylval.str { + case "true": + yylval.b = true + return BOOL + case "false": + yylval.b = false + return BOOL + case "null": + return NULL + } + + return IDENTIFIER +} + +// lexHeredoc extracts a string from the input in heredoc format +func (x *hclLex) lexHeredoc(yylval *hclSymType) int { + if x.next() != '<' { + x.createErr("Heredoc must start with <<") + return lexEOF + } + + // Now determine the marker + var buf bytes.Buffer + for { + c := x.next() + if c == lexEOF { + return lexEOF + } + + // Newline signals the end of the marker + if c == '\n' { + break + } + + if _, err := buf.WriteRune(c); err != nil { + return lexEOF + } + } + + marker := buf.String() + if marker == "" { + x.createErr("Heredoc must have a marker, e.g. < 0 { + for _, c := range cs { + if _, err := buf.WriteRune(c); err != nil { + return lexEOF + } + } + } + } + + if c == lexEOF { + return lexEOF + } + + // If we hit a newline, then reset to check + if c == '\n' { + check = true + } + + if _, err := buf.WriteRune(c); err != nil { + return lexEOF + } + } + + yylval.str = buf.String() + return STRING +} + +// lexNumber lexes out a number +func (x *hclLex) lexNumber(yylval *hclSymType) int { + var b bytes.Buffer + gotPeriod := false + for { + c := x.next() + if c == lexEOF { + break + } + + if c == '.' { + if gotPeriod { + x.backup() + break + } + + gotPeriod = true + } else if c < '0' || c > '9' { + x.backup() + break + } + + if _, err := b.WriteRune(c); err != nil { + x.createErr(fmt.Sprintf("Internal error: %s", err)) + return lexEOF + } + } + + if !gotPeriod { + v, err := strconv.ParseInt(b.String(), 0, 0) + if err != nil { + x.createErr(fmt.Sprintf("Expected number: %s", err)) + return lexEOF + } + + yylval.num = int(v) + return NUMBER + } + + f, err := strconv.ParseFloat(b.String(), 64) + if err != nil { + x.createErr(fmt.Sprintf("Expected float: %s", err)) + return lexEOF + } + + yylval.f = float64(f) + return FLOAT +} + +// lexString extracts a string from the input +func (x *hclLex) lexString(yylval *hclSymType) int { + braces := 0 + + var b bytes.Buffer + for { + c := x.next() + if c == lexEOF { + break + } + + // String end + if c == '"' && braces == 0 { + break + } + + // If we hit a newline, then its an error + if c == '\n' { + x.createErr(fmt.Sprintf("Newline before string closed")) + return lexEOF + } + + // If we're escaping a quote, then escape the quote + if c == '\\' { + n := x.next() + switch n { + case '"': + c = n + case 'n': + c = '\n' + case '\\': + c = n + default: + x.backup() + } + } + + // If we're starting into variable, mark it + if braces == 0 && c == '$' && x.peek() == '{' { + braces += 1 + + if _, err := b.WriteRune(c); err != nil { + return lexEOF + } + c = x.next() + } else if braces > 0 && c == '{' { + braces += 1 + } + if braces > 0 && c == '}' { + braces -= 1 + } + + if _, err := b.WriteRune(c); err != nil { + return lexEOF + } + } + + yylval.str = b.String() + return STRING +} + +// Return the next rune for the lexer. +func (x *hclLex) next() rune { + if int(x.pos) >= len(x.Input) { + x.width = 0 + return lexEOF + } + + r, w := utf8.DecodeRuneInString(x.Input[x.pos:]) + x.width = w + x.pos += x.width + + x.col += 1 + if x.line == 0 { + x.line = 1 + } + if r == '\n' { + x.line += 1 + x.col = 0 + } + + return r +} + +// peek returns but does not consume the next rune in the input +func (x *hclLex) peek() rune { + r := x.next() + x.backup() + return r +} + +// backup steps back one rune. Can only be called once per next. +func (x *hclLex) backup() { + x.col -= 1 + x.pos -= x.width +} + +// createErr records the given error +func (x *hclLex) createErr(msg string) { + x.err = fmt.Errorf("Line %d, column %d: %s", x.line, x.col, msg) +} + +// The parser calls this method on a parse error. +func (x *hclLex) Error(s string) { + x.createErr(s) +} diff --git a/vendor/github.com/yudai/hcl/hcl/lex_test.go b/vendor/github.com/yudai/hcl/hcl/lex_test.go new file mode 100644 index 0000000..876a459 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/lex_test.go @@ -0,0 +1,113 @@ +package hcl + +import ( + "io/ioutil" + "path/filepath" + "reflect" + "testing" +) + +func TestLex(t *testing.T) { + cases := []struct { + Input string + Output []int + }{ + { + "comment.hcl", + []int{IDENTIFIER, EQUAL, STRING, lexEOF}, + }, + { + "comment_single.hcl", + []int{lexEOF}, + }, + { + "complex_key.hcl", + []int{IDENTIFIER, EQUAL, STRING, lexEOF}, + }, + { + "multiple.hcl", + []int{ + IDENTIFIER, EQUAL, STRING, + IDENTIFIER, EQUAL, NUMBER, + lexEOF, + }, + }, + { + "list.hcl", + []int{ + IDENTIFIER, EQUAL, LEFTBRACKET, + NUMBER, COMMA, NUMBER, COMMA, STRING, COMMA, BOOL, + RIGHTBRACKET, lexEOF, + }, + }, + { + "old.hcl", + []int{IDENTIFIER, EQUAL, LEFTBRACE, STRING, lexEOF}, + }, + { + "structure_basic.hcl", + []int{ + IDENTIFIER, LEFTBRACE, + IDENTIFIER, EQUAL, NUMBER, + STRING, EQUAL, NUMBER, + STRING, EQUAL, NUMBER, + RIGHTBRACE, lexEOF, + }, + }, + { + "structure.hcl", + []int{ + IDENTIFIER, IDENTIFIER, STRING, LEFTBRACE, + IDENTIFIER, EQUAL, NUMBER, + IDENTIFIER, EQUAL, STRING, + RIGHTBRACE, lexEOF, + }, + }, + { + "array_comment.hcl", + []int{ + IDENTIFIER, EQUAL, LEFTBRACKET, + STRING, COMMA, + STRING, COMMA, + RIGHTBRACKET, lexEOF, + }, + }, + { + "null.hcl", + []int{ + IDENTIFIER, EQUAL, NULL, + IDENTIFIER, EQUAL, LEFTBRACKET, NUMBER, COMMA, NULL, COMMA, NUMBER, RIGHTBRACKET, + IDENTIFIER, LEFTBRACE, IDENTIFIER, EQUAL, NULL, RIGHTBRACE, + lexEOF, + }, + }, + } + + for _, tc := range cases { + d, err := ioutil.ReadFile(filepath.Join(fixtureDir, tc.Input)) + if err != nil { + t.Fatalf("err: %s", err) + } + + l := &hclLex{Input: string(d)} + var actual []int + for { + token := l.Lex(new(hclSymType)) + actual = append(actual, token) + + if token == lexEOF { + break + } + + if len(actual) > 500 { + t.Fatalf("Input:%s\n\nExausted.", tc.Input) + } + } + + if !reflect.DeepEqual(actual, tc.Output) { + t.Fatalf( + "Input: %s\n\nBad: %#v\n\nExpected: %#v", + tc.Input, actual, tc.Output) + } + } +} diff --git a/vendor/github.com/yudai/hcl/hcl/object.go b/vendor/github.com/yudai/hcl/hcl/object.go new file mode 100644 index 0000000..e7b493a --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/object.go @@ -0,0 +1,128 @@ +package hcl + +import ( + "fmt" + "strings" +) + +//go:generate stringer -type=ValueType + +// ValueType is an enum represnting the type of a value in +// a LiteralNode. +type ValueType byte + +const ( + ValueTypeUnknown ValueType = iota + ValueTypeFloat + ValueTypeInt + ValueTypeString + ValueTypeBool + ValueTypeNil + ValueTypeList + ValueTypeObject +) + +// Object represents any element of HCL: an object itself, a list, +// a literal, etc. +type Object struct { + Key string + Type ValueType + Value interface{} + Next *Object +} + +// GoString is an implementation of the GoStringer interface. +func (o *Object) GoString() string { + return fmt.Sprintf("*%#v", *o) +} + +// Get gets all the objects that match the given key. +// +// It returns the resulting objects as a single Object structure with +// the linked list populated. +func (o *Object) Get(k string, insensitive bool) *Object { + if o.Type != ValueTypeObject { + return nil + } + + for _, o := range o.Elem(true) { + if o.Key != k { + if !insensitive || !strings.EqualFold(o.Key, k) { + continue + } + } + + return o + } + + return nil +} + +// Elem returns all the elements that are part of this object. +func (o *Object) Elem(expand bool) []*Object { + if !expand { + result := make([]*Object, 0, 1) + current := o + for current != nil { + obj := *current + obj.Next = nil + result = append(result, &obj) + + current = current.Next + } + + return result + } + + if o.Value == nil { + return nil + } + + switch o.Type { + case ValueTypeList: + return o.Value.([]*Object) + case ValueTypeObject: + result := make([]*Object, 0, 5) + for _, obj := range o.Elem(false) { + result = append(result, obj.Value.([]*Object)...) + } + return result + default: + return []*Object{o} + } +} + +// Len returns the number of objects in this object structure. +func (o *Object) Len() (i int) { + current := o + for current != nil { + i += 1 + current = current.Next + } + + return +} + +// ObjectList is a list of objects. +type ObjectList []*Object + +// Flat returns a flattened list structure of the objects. +func (l ObjectList) Flat() []*Object { + m := make(map[string]*Object) + result := make([]*Object, 0, len(l)) + for _, obj := range l { + prev, ok := m[obj.Key] + if !ok { + m[obj.Key] = obj + result = append(result, obj) + continue + } + + for prev.Next != nil { + prev = prev.Next + } + prev.Next = obj + } + + return result +} diff --git a/vendor/github.com/yudai/hcl/hcl/parse.go b/vendor/github.com/yudai/hcl/hcl/parse.go new file mode 100644 index 0000000..21bd2a4 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/parse.go @@ -0,0 +1,39 @@ +package hcl + +import ( + "sync" + + "github.com/hashicorp/go-multierror" +) + +// hclErrors are the errors built up from parsing. These should not +// be accessed directly. +var hclErrors []error +var hclLock sync.Mutex +var hclResult *Object + +// Parse parses the given string and returns the result. +func Parse(v string) (*Object, error) { + hclLock.Lock() + defer hclLock.Unlock() + hclErrors = nil + hclResult = nil + + // Parse + lex := &hclLex{Input: v} + hclParse(lex) + + // If we have an error in the lexer itself, return it + if lex.err != nil { + return nil, lex.err + } + + // Build up the errors + var err error + if len(hclErrors) > 0 { + err = &multierror.Error{Errors: hclErrors} + hclResult = nil + } + + return hclResult, err +} diff --git a/vendor/github.com/yudai/hcl/hcl/parse.y b/vendor/github.com/yudai/hcl/hcl/parse.y new file mode 100644 index 0000000..1568f30 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/parse.y @@ -0,0 +1,281 @@ +// This is the yacc input for creating the parser for HCL. + +%{ +package hcl + +import ( + "fmt" + "strconv" +) + +%} + +%union { + b bool + f float64 + num int + str string + obj *Object + objlist []*Object +} + +%type float +%type int +%type list listitems objectlist +%type block number object objectitem +%type listitem +%type blockId exp objectkey + +%token BOOL +%token FLOAT +%token NUMBER +%token COMMA IDENTIFIER EQUAL NEWLINE STRING MINUS +%token LEFTBRACE RIGHTBRACE LEFTBRACKET RIGHTBRACKET PERIOD +%token EPLUS EMINUS +%token NULL + +%% + +top: + { + hclResult = &Object{Type: ValueTypeObject} + } +| objectlist + { + hclResult = &Object{ + Type: ValueTypeObject, + Value: ObjectList($1).Flat(), + } + } + +objectlist: + objectitem + { + $$ = []*Object{$1} + } +| objectlist objectitem + { + $$ = append($1, $2) + } + +object: + LEFTBRACE objectlist RIGHTBRACE + { + $$ = &Object{ + Type: ValueTypeObject, + Value: ObjectList($2).Flat(), + } + } +| LEFTBRACE RIGHTBRACE + { + $$ = &Object{ + Type: ValueTypeObject, + } + } + +objectkey: + IDENTIFIER + { + $$ = $1 + } +| STRING + { + $$ = $1 + } + +objectitem: + objectkey EQUAL number + { + $$ = $3 + $$.Key = $1 + } +| objectkey EQUAL BOOL + { + $$ = &Object{ + Key: $1, + Type: ValueTypeBool, + Value: $3, + } + } +| objectkey EQUAL NULL + { + $$ = &Object{ + Key: $1, + Type: ValueTypeNil, + } + } +| objectkey EQUAL STRING + { + $$ = &Object{ + Key: $1, + Type: ValueTypeString, + Value: $3, + } + } +| objectkey EQUAL object + { + $3.Key = $1 + $$ = $3 + } +| objectkey EQUAL list + { + $$ = &Object{ + Key: $1, + Type: ValueTypeList, + Value: $3, + } + } +| block + { + $$ = $1 + } + +block: + blockId object + { + $2.Key = $1 + $$ = $2 + } +| blockId block + { + $$ = &Object{ + Key: $1, + Type: ValueTypeObject, + Value: []*Object{$2}, + } + } + +blockId: + IDENTIFIER + { + $$ = $1 + } +| STRING + { + $$ = $1 + } + +list: + LEFTBRACKET listitems RIGHTBRACKET + { + $$ = $2 + } +| LEFTBRACKET listitems COMMA RIGHTBRACKET + { + $$ = $2 + } +| LEFTBRACKET RIGHTBRACKET + { + $$ = nil + } + +listitems: + listitem + { + $$ = []*Object{$1} + } +| listitems COMMA listitem + { + $$ = append($1, $3) + } + +listitem: + number + { + $$ = $1 + } +| STRING + { + $$ = &Object{ + Type: ValueTypeString, + Value: $1, + } + } +| BOOL + { + $$ = &Object{ + Type: ValueTypeBool, + Value: $1, + } + } +| NULL + { + $$ = &Object{ + Type: ValueTypeNil, + } + } + + +number: + int + { + $$ = &Object{ + Type: ValueTypeInt, + Value: $1, + } + } +| float + { + $$ = &Object{ + Type: ValueTypeFloat, + Value: $1, + } + } +| int exp + { + fs := fmt.Sprintf("%d%s", $1, $2) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + $$ = &Object{ + Type: ValueTypeFloat, + Value: f, + } + } +| float exp + { + fs := fmt.Sprintf("%f%s", $1, $2) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + $$ = &Object{ + Type: ValueTypeFloat, + Value: f, + } + } + +int: + MINUS int + { + $$ = $2 * -1 + } +| NUMBER + { + $$ = $1 + } + +float: + MINUS float + { + $$ = $2 * -1 + } +| FLOAT + { + $$ = $1 + } + +exp: + EPLUS NUMBER + { + $$ = "e" + strconv.FormatInt(int64($2), 10) + } +| EMINUS NUMBER + { + $$ = "e-" + strconv.FormatInt(int64($2), 10) + } + +%% diff --git a/vendor/github.com/yudai/hcl/hcl/parse_test.go b/vendor/github.com/yudai/hcl/hcl/parse_test.go new file mode 100644 index 0000000..81f94be --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/parse_test.go @@ -0,0 +1,83 @@ +package hcl + +import ( + "io/ioutil" + "path/filepath" + "testing" +) + +func TestParse(t *testing.T) { + cases := []struct { + Name string + Err bool + }{ + { + "assign_colon.hcl", + true, + }, + { + "comment.hcl", + false, + }, + { + "comment_single.hcl", + false, + }, + { + "empty.hcl", + false, + }, + { + "list_comma.hcl", + false, + }, + { + "multiple.hcl", + false, + }, + { + "structure.hcl", + false, + }, + { + "structure_basic.hcl", + false, + }, + { + "structure_empty.hcl", + false, + }, + { + "complex.hcl", + false, + }, + { + "assign_deep.hcl", + true, + }, + { + "types.hcl", + false, + }, + { + "array_comment.hcl", + false, + }, + { + "null.hcl", + false, + }, + } + + for _, tc := range cases { + d, err := ioutil.ReadFile(filepath.Join(fixtureDir, tc.Name)) + if err != nil { + t.Fatalf("err: %s", err) + } + + _, err = Parse(string(d)) + if (err != nil) != tc.Err { + t.Fatalf("Input: %s\n\nError: %s", tc.Name, err) + } + } +} diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/array_comment.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/array_comment.hcl new file mode 100644 index 0000000..78c2675 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/array_comment.hcl @@ -0,0 +1,4 @@ +foo = [ + "1", + "2", # comment +] diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_colon.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_colon.hcl new file mode 100644 index 0000000..eb5a99a --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_colon.hcl @@ -0,0 +1,6 @@ +resource = [{ + "foo": { + "bar": {}, + "baz": [1, 2, "foo"], + } +}] diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_deep.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_deep.hcl new file mode 100644 index 0000000..dd3151c --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/assign_deep.hcl @@ -0,0 +1,5 @@ +resource = [{ + foo = [{ + bar = {} + }] +}] diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/comment.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/comment.hcl new file mode 100644 index 0000000..1ff7f29 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/comment.hcl @@ -0,0 +1,15 @@ +// Foo + +/* Bar */ + +/* +/* +Baz +*/ + +# Another + +# Multiple +# Lines + +foo = "bar" diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/comment_single.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/comment_single.hcl new file mode 100644 index 0000000..fec5601 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/comment_single.hcl @@ -0,0 +1 @@ +# Hello diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/complex.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/complex.hcl new file mode 100644 index 0000000..cccb5b0 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/complex.hcl @@ -0,0 +1,42 @@ +// This comes from Terraform, as a test +variable "foo" { + default = "bar" + description = "bar" +} + +provider "aws" { + access_key = "foo" + secret_key = "bar" +} + +provider "do" { + api_key = "${var.foo}" +} + +resource "aws_security_group" "firewall" { + count = 5 +} + +resource aws_instance "web" { + ami = "${var.foo}" + security_groups = [ + "foo", + "${aws_security_group.firewall.foo}" + ] + + network_interface { + device_index = 0 + description = "Main network interface" + } +} + +resource "aws_instance" "db" { + security_groups = "${aws_security_group.firewall.*.id}" + VPC = "foo" + + depends_on = ["aws_instance.web"] +} + +output "web_ip" { + value = "${aws_instance.web.private_ip}" +} diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/complex_key.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/complex_key.hcl new file mode 100644 index 0000000..0007aaf --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/complex_key.hcl @@ -0,0 +1 @@ +foo.bar = "baz" diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/empty.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/empty.hcl new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/list.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/list.hcl new file mode 100644 index 0000000..7e159b3 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/list.hcl @@ -0,0 +1 @@ +foo = [1, 2, "foo", true] diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/list_comma.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/list_comma.hcl new file mode 100644 index 0000000..50f4218 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/list_comma.hcl @@ -0,0 +1 @@ +foo = [1, 2, "foo",] diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/multiple.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/multiple.hcl new file mode 100644 index 0000000..029c54b --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/multiple.hcl @@ -0,0 +1,2 @@ +foo = "bar" +key = 7 diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/null.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/null.hcl new file mode 100644 index 0000000..97797ea --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/null.hcl @@ -0,0 +1,5 @@ +foo = null +bar = [1, null, 3] +baz { + foo = null +} diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/old.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/old.hcl new file mode 100644 index 0000000..e9f77ca --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/old.hcl @@ -0,0 +1,3 @@ +default = { + "eu-west-1": "ami-b1cf19c6", +} diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure.hcl new file mode 100644 index 0000000..92592fb --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure.hcl @@ -0,0 +1,5 @@ +// This is a test structure for the lexer +foo bar "baz" { + key = 7 + foo = "bar" +} diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_basic.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_basic.hcl new file mode 100644 index 0000000..7229a1f --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_basic.hcl @@ -0,0 +1,5 @@ +foo { + value = 7 + "value" = 8 + "complex::value" = 9 +} diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_empty.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_empty.hcl new file mode 100644 index 0000000..4d156dd --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/structure_empty.hcl @@ -0,0 +1 @@ +resource "foo" "bar" {} diff --git a/vendor/github.com/yudai/hcl/hcl/test-fixtures/types.hcl b/vendor/github.com/yudai/hcl/hcl/test-fixtures/types.hcl new file mode 100644 index 0000000..98ea882 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/test-fixtures/types.hcl @@ -0,0 +1,8 @@ +foo = "bar" +bar = 7 +baz = [1,2,3] +foo = -12 +bar = 3.14159 +foo = true +bar = false +baz = null diff --git a/vendor/github.com/yudai/hcl/hcl/valuetype_string.go b/vendor/github.com/yudai/hcl/hcl/valuetype_string.go new file mode 100644 index 0000000..83b3904 --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/valuetype_string.go @@ -0,0 +1,16 @@ +// generated by stringer -type=ValueType; DO NOT EDIT + +package hcl + +import "fmt" + +const _ValueType_name = "ValueTypeUnknownValueTypeFloatValueTypeIntValueTypeStringValueTypeBoolValueTypeNilValueTypeListValueTypeObject" + +var _ValueType_index = [...]uint8{0, 16, 30, 42, 57, 70, 82, 95, 110} + +func (i ValueType) String() string { + if i >= ValueType(len(_ValueType_index)-1) { + return fmt.Sprintf("ValueType(%d)", i) + } + return _ValueType_name[_ValueType_index[i]:_ValueType_index[i+1]] +} diff --git a/vendor/github.com/yudai/hcl/hcl/y.go b/vendor/github.com/yudai/hcl/hcl/y.go new file mode 100644 index 0000000..7f5988b --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl/y.go @@ -0,0 +1,790 @@ +//line parse.y:4 +package hcl + +import __yyfmt__ "fmt" + +//line parse.y:4 +import ( + "fmt" + "strconv" +) + +//line parse.y:13 +type hclSymType struct { + yys int + b bool + f float64 + num int + str string + obj *Object + objlist []*Object +} + +const BOOL = 57346 +const FLOAT = 57347 +const NUMBER = 57348 +const COMMA = 57349 +const IDENTIFIER = 57350 +const EQUAL = 57351 +const NEWLINE = 57352 +const STRING = 57353 +const MINUS = 57354 +const LEFTBRACE = 57355 +const RIGHTBRACE = 57356 +const LEFTBRACKET = 57357 +const RIGHTBRACKET = 57358 +const PERIOD = 57359 +const EPLUS = 57360 +const EMINUS = 57361 +const NULL = 57362 + +var hclToknames = [...]string{ + "$end", + "error", + "$unk", + "BOOL", + "FLOAT", + "NUMBER", + "COMMA", + "IDENTIFIER", + "EQUAL", + "NEWLINE", + "STRING", + "MINUS", + "LEFTBRACE", + "RIGHTBRACE", + "LEFTBRACKET", + "RIGHTBRACKET", + "PERIOD", + "EPLUS", + "EMINUS", + "NULL", +} +var hclStatenames = [...]string{} + +const hclEofCode = 1 +const hclErrCode = 2 +const hclMaxDepth = 200 + +//line parse.y:281 + +//line yacctab:1 +var hclExca = [...]int{ + -1, 1, + 1, -1, + -2, 0, + -1, 6, + 9, 7, + -2, 18, + -1, 7, + 9, 8, + -2, 19, +} + +const hclNprod = 39 +const hclPrivate = 57344 + +var hclTokenNames []string +var hclStates []string + +const hclLast = 69 + +var hclAct = [...]int{ + + 36, 3, 22, 30, 9, 17, 27, 26, 31, 32, + 45, 23, 19, 25, 13, 10, 24, 39, 27, 26, + 6, 18, 47, 7, 38, 25, 43, 33, 41, 48, + 9, 46, 44, 40, 39, 27, 26, 42, 5, 1, + 14, 38, 25, 15, 2, 13, 35, 12, 49, 6, + 40, 4, 7, 27, 26, 29, 11, 37, 28, 6, + 25, 8, 7, 34, 21, 0, 0, 20, 16, +} +var hclPact = [...]int{ + + 51, -1000, 51, -1000, 6, -1000, -1000, -1000, 32, -1000, + 1, -1000, -1000, 41, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -10, -10, 30, 48, -1000, -1000, 12, -1000, + -1000, 26, 4, -1000, 15, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 13, -1000, -1000, +} +var hclPgo = [...]int{ + + 0, 11, 2, 64, 63, 44, 38, 57, 56, 1, + 0, 61, 3, 51, 39, +} +var hclR1 = [...]int{ + + 0, 14, 14, 5, 5, 8, 8, 13, 13, 9, + 9, 9, 9, 9, 9, 9, 6, 6, 11, 11, + 3, 3, 3, 4, 4, 10, 10, 10, 10, 7, + 7, 7, 7, 2, 2, 1, 1, 12, 12, +} +var hclR2 = [...]int{ + + 0, 0, 1, 1, 2, 3, 2, 1, 1, 3, + 3, 3, 3, 3, 3, 1, 2, 2, 1, 1, + 3, 4, 2, 1, 3, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 1, 2, 1, 2, 2, +} +var hclChk = [...]int{ + + -1000, -14, -5, -9, -13, -6, 8, 11, -11, -9, + 9, -8, -6, 13, 8, 11, -7, 4, 20, 11, + -8, -3, -2, -1, 15, 12, 6, 5, -5, 14, + -12, 18, 19, -12, -4, 16, -10, -7, 11, 4, + 20, -2, -1, 14, 6, 6, 16, 7, 16, -10, +} +var hclDef = [...]int{ + + 1, -2, 2, 3, 0, 15, -2, -2, 0, 4, + 0, 16, 17, 0, 18, 19, 9, 10, 11, 12, + 13, 14, 29, 30, 0, 0, 34, 36, 0, 6, + 31, 0, 0, 32, 0, 22, 23, 25, 26, 27, + 28, 33, 35, 5, 37, 38, 20, 0, 21, 24, +} +var hclTok1 = [...]int{ + + 1, +} +var hclTok2 = [...]int{ + + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, +} +var hclTok3 = [...]int{ + 0, +} + +var hclErrorMessages = [...]struct { + state int + token int + msg string +}{} + +//line yaccpar:1 + +/* parser for yacc output */ + +var ( + hclDebug = 0 + hclErrorVerbose = false +) + +type hclLexer interface { + Lex(lval *hclSymType) int + Error(s string) +} + +type hclParser interface { + Parse(hclLexer) int + Lookahead() int +} + +type hclParserImpl struct { + lookahead func() int +} + +func (p *hclParserImpl) Lookahead() int { + return p.lookahead() +} + +func hclNewParser() hclParser { + p := &hclParserImpl{ + lookahead: func() int { return -1 }, + } + return p +} + +const hclFlag = -1000 + +func hclTokname(c int) string { + if c >= 1 && c-1 < len(hclToknames) { + if hclToknames[c-1] != "" { + return hclToknames[c-1] + } + } + return __yyfmt__.Sprintf("tok-%v", c) +} + +func hclStatname(s int) string { + if s >= 0 && s < len(hclStatenames) { + if hclStatenames[s] != "" { + return hclStatenames[s] + } + } + return __yyfmt__.Sprintf("state-%v", s) +} + +func hclErrorMessage(state, lookAhead int) string { + const TOKSTART = 4 + + if !hclErrorVerbose { + return "syntax error" + } + + for _, e := range hclErrorMessages { + if e.state == state && e.token == lookAhead { + return "syntax error: " + e.msg + } + } + + res := "syntax error: unexpected " + hclTokname(lookAhead) + + // To match Bison, suggest at most four expected tokens. + expected := make([]int, 0, 4) + + // Look for shiftable tokens. + base := hclPact[state] + for tok := TOKSTART; tok-1 < len(hclToknames); tok++ { + if n := base + tok; n >= 0 && n < hclLast && hclChk[hclAct[n]] == tok { + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + } + + if hclDef[state] == -2 { + i := 0 + for hclExca[i] != -1 || hclExca[i+1] != state { + i += 2 + } + + // Look for tokens that we accept or reduce. + for i += 2; hclExca[i] >= 0; i += 2 { + tok := hclExca[i] + if tok < TOKSTART || hclExca[i+1] == 0 { + continue + } + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + + // If the default action is to accept or reduce, give up. + if hclExca[i+1] != 0 { + return res + } + } + + for i, tok := range expected { + if i == 0 { + res += ", expecting " + } else { + res += " or " + } + res += hclTokname(tok) + } + return res +} + +func hcllex1(lex hclLexer, lval *hclSymType) (char, token int) { + token = 0 + char = lex.Lex(lval) + if char <= 0 { + token = hclTok1[0] + goto out + } + if char < len(hclTok1) { + token = hclTok1[char] + goto out + } + if char >= hclPrivate { + if char < hclPrivate+len(hclTok2) { + token = hclTok2[char-hclPrivate] + goto out + } + } + for i := 0; i < len(hclTok3); i += 2 { + token = hclTok3[i+0] + if token == char { + token = hclTok3[i+1] + goto out + } + } + +out: + if token == 0 { + token = hclTok2[1] /* unknown char */ + } + if hclDebug >= 3 { + __yyfmt__.Printf("lex %s(%d)\n", hclTokname(token), uint(char)) + } + return char, token +} + +func hclParse(hcllex hclLexer) int { + return hclNewParser().Parse(hcllex) +} + +func (hclrcvr *hclParserImpl) Parse(hcllex hclLexer) int { + var hcln int + var hcllval hclSymType + var hclVAL hclSymType + var hclDollar []hclSymType + _ = hclDollar // silence set and not used + hclS := make([]hclSymType, hclMaxDepth) + + Nerrs := 0 /* number of errors */ + Errflag := 0 /* error recovery flag */ + hclstate := 0 + hclchar := -1 + hcltoken := -1 // hclchar translated into internal numbering + hclrcvr.lookahead = func() int { return hclchar } + defer func() { + // Make sure we report no lookahead when not parsing. + hclstate = -1 + hclchar = -1 + hcltoken = -1 + }() + hclp := -1 + goto hclstack + +ret0: + return 0 + +ret1: + return 1 + +hclstack: + /* put a state and value onto the stack */ + if hclDebug >= 4 { + __yyfmt__.Printf("char %v in %v\n", hclTokname(hcltoken), hclStatname(hclstate)) + } + + hclp++ + if hclp >= len(hclS) { + nyys := make([]hclSymType, len(hclS)*2) + copy(nyys, hclS) + hclS = nyys + } + hclS[hclp] = hclVAL + hclS[hclp].yys = hclstate + +hclnewstate: + hcln = hclPact[hclstate] + if hcln <= hclFlag { + goto hcldefault /* simple state */ + } + if hclchar < 0 { + hclchar, hcltoken = hcllex1(hcllex, &hcllval) + } + hcln += hcltoken + if hcln < 0 || hcln >= hclLast { + goto hcldefault + } + hcln = hclAct[hcln] + if hclChk[hcln] == hcltoken { /* valid shift */ + hclchar = -1 + hcltoken = -1 + hclVAL = hcllval + hclstate = hcln + if Errflag > 0 { + Errflag-- + } + goto hclstack + } + +hcldefault: + /* default state action */ + hcln = hclDef[hclstate] + if hcln == -2 { + if hclchar < 0 { + hclchar, hcltoken = hcllex1(hcllex, &hcllval) + } + + /* look through exception table */ + xi := 0 + for { + if hclExca[xi+0] == -1 && hclExca[xi+1] == hclstate { + break + } + xi += 2 + } + for xi += 2; ; xi += 2 { + hcln = hclExca[xi+0] + if hcln < 0 || hcln == hcltoken { + break + } + } + hcln = hclExca[xi+1] + if hcln < 0 { + goto ret0 + } + } + if hcln == 0 { + /* error ... attempt to resume parsing */ + switch Errflag { + case 0: /* brand new error */ + hcllex.Error(hclErrorMessage(hclstate, hcltoken)) + Nerrs++ + if hclDebug >= 1 { + __yyfmt__.Printf("%s", hclStatname(hclstate)) + __yyfmt__.Printf(" saw %s\n", hclTokname(hcltoken)) + } + fallthrough + + case 1, 2: /* incompletely recovered error ... try again */ + Errflag = 3 + + /* find a state where "error" is a legal shift action */ + for hclp >= 0 { + hcln = hclPact[hclS[hclp].yys] + hclErrCode + if hcln >= 0 && hcln < hclLast { + hclstate = hclAct[hcln] /* simulate a shift of "error" */ + if hclChk[hclstate] == hclErrCode { + goto hclstack + } + } + + /* the current p has no shift on "error", pop stack */ + if hclDebug >= 2 { + __yyfmt__.Printf("error recovery pops state %d\n", hclS[hclp].yys) + } + hclp-- + } + /* there is no state on the stack with an error shift ... abort */ + goto ret1 + + case 3: /* no shift yet; clobber input char */ + if hclDebug >= 2 { + __yyfmt__.Printf("error recovery discards %s\n", hclTokname(hcltoken)) + } + if hcltoken == hclEofCode { + goto ret1 + } + hclchar = -1 + hcltoken = -1 + goto hclnewstate /* try again in the same state */ + } + } + + /* reduction by production hcln */ + if hclDebug >= 2 { + __yyfmt__.Printf("reduce %v in:\n\t%v\n", hcln, hclStatname(hclstate)) + } + + hclnt := hcln + hclpt := hclp + _ = hclpt // guard against "declared and not used" + + hclp -= hclR2[hcln] + // hclp is now the index of $0. Perform the default action. Iff the + // reduced production is ε, $1 is possibly out of range. + if hclp+1 >= len(hclS) { + nyys := make([]hclSymType, len(hclS)*2) + copy(nyys, hclS) + hclS = nyys + } + hclVAL = hclS[hclp+1] + + /* consult goto table to find next state */ + hcln = hclR1[hcln] + hclg := hclPgo[hcln] + hclj := hclg + hclS[hclp].yys + 1 + + if hclj >= hclLast { + hclstate = hclAct[hclg] + } else { + hclstate = hclAct[hclj] + if hclChk[hclstate] != -hcln { + hclstate = hclAct[hclg] + } + } + // dummy call; replaced with literal code + switch hclnt { + + case 1: + hclDollar = hclS[hclpt-0 : hclpt+1] + //line parse.y:40 + { + hclResult = &Object{Type: ValueTypeObject} + } + case 2: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:44 + { + hclResult = &Object{ + Type: ValueTypeObject, + Value: ObjectList(hclDollar[1].objlist).Flat(), + } + } + case 3: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:53 + { + hclVAL.objlist = []*Object{hclDollar[1].obj} + } + case 4: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:57 + { + hclVAL.objlist = append(hclDollar[1].objlist, hclDollar[2].obj) + } + case 5: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:63 + { + hclVAL.obj = &Object{ + Type: ValueTypeObject, + Value: ObjectList(hclDollar[2].objlist).Flat(), + } + } + case 6: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:70 + { + hclVAL.obj = &Object{ + Type: ValueTypeObject, + } + } + case 7: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:78 + { + hclVAL.str = hclDollar[1].str + } + case 8: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:82 + { + hclVAL.str = hclDollar[1].str + } + case 9: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:88 + { + hclVAL.obj = hclDollar[3].obj + hclVAL.obj.Key = hclDollar[1].str + } + case 10: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:93 + { + hclVAL.obj = &Object{ + Key: hclDollar[1].str, + Type: ValueTypeBool, + Value: hclDollar[3].b, + } + } + case 11: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:101 + { + hclVAL.obj = &Object{ + Key: hclDollar[1].str, + Type: ValueTypeNil, + } + } + case 12: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:108 + { + hclVAL.obj = &Object{ + Key: hclDollar[1].str, + Type: ValueTypeString, + Value: hclDollar[3].str, + } + } + case 13: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:116 + { + hclDollar[3].obj.Key = hclDollar[1].str + hclVAL.obj = hclDollar[3].obj + } + case 14: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:121 + { + hclVAL.obj = &Object{ + Key: hclDollar[1].str, + Type: ValueTypeList, + Value: hclDollar[3].objlist, + } + } + case 15: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:129 + { + hclVAL.obj = hclDollar[1].obj + } + case 16: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:135 + { + hclDollar[2].obj.Key = hclDollar[1].str + hclVAL.obj = hclDollar[2].obj + } + case 17: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:140 + { + hclVAL.obj = &Object{ + Key: hclDollar[1].str, + Type: ValueTypeObject, + Value: []*Object{hclDollar[2].obj}, + } + } + case 18: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:150 + { + hclVAL.str = hclDollar[1].str + } + case 19: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:154 + { + hclVAL.str = hclDollar[1].str + } + case 20: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:160 + { + hclVAL.objlist = hclDollar[2].objlist + } + case 21: + hclDollar = hclS[hclpt-4 : hclpt+1] + //line parse.y:164 + { + hclVAL.objlist = hclDollar[2].objlist + } + case 22: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:168 + { + hclVAL.objlist = nil + } + case 23: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:174 + { + hclVAL.objlist = []*Object{hclDollar[1].obj} + } + case 24: + hclDollar = hclS[hclpt-3 : hclpt+1] + //line parse.y:178 + { + hclVAL.objlist = append(hclDollar[1].objlist, hclDollar[3].obj) + } + case 25: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:184 + { + hclVAL.obj = hclDollar[1].obj + } + case 26: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:188 + { + hclVAL.obj = &Object{ + Type: ValueTypeString, + Value: hclDollar[1].str, + } + } + case 27: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:195 + { + hclVAL.obj = &Object{ + Type: ValueTypeBool, + Value: hclDollar[1].b, + } + } + case 28: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:202 + { + hclVAL.obj = &Object{ + Type: ValueTypeNil, + } + } + case 29: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:211 + { + hclVAL.obj = &Object{ + Type: ValueTypeInt, + Value: hclDollar[1].num, + } + } + case 30: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:218 + { + hclVAL.obj = &Object{ + Type: ValueTypeFloat, + Value: hclDollar[1].f, + } + } + case 31: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:225 + { + fs := fmt.Sprintf("%d%s", hclDollar[1].num, hclDollar[2].str) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + hclVAL.obj = &Object{ + Type: ValueTypeFloat, + Value: f, + } + } + case 32: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:238 + { + fs := fmt.Sprintf("%f%s", hclDollar[1].f, hclDollar[2].str) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + hclVAL.obj = &Object{ + Type: ValueTypeFloat, + Value: f, + } + } + case 33: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:253 + { + hclVAL.num = hclDollar[2].num * -1 + } + case 34: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:257 + { + hclVAL.num = hclDollar[1].num + } + case 35: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:263 + { + hclVAL.f = hclDollar[2].f * -1 + } + case 36: + hclDollar = hclS[hclpt-1 : hclpt+1] + //line parse.y:267 + { + hclVAL.f = hclDollar[1].f + } + case 37: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:273 + { + hclVAL.str = "e" + strconv.FormatInt(int64(hclDollar[2].num), 10) + } + case 38: + hclDollar = hclS[hclpt-2 : hclpt+1] + //line parse.y:277 + { + hclVAL.str = "e-" + strconv.FormatInt(int64(hclDollar[2].num), 10) + } + } + goto hclstack /* stack new state and value */ +} diff --git a/vendor/github.com/yudai/hcl/hcl_test.go b/vendor/github.com/yudai/hcl/hcl_test.go new file mode 100644 index 0000000..31dff7c --- /dev/null +++ b/vendor/github.com/yudai/hcl/hcl_test.go @@ -0,0 +1,19 @@ +package hcl + +import ( + "io/ioutil" + "path/filepath" + "testing" +) + +// This is the directory where our test fixtures are. +const fixtureDir = "./test-fixtures" + +func testReadFile(t *testing.T, n string) string { + d, err := ioutil.ReadFile(filepath.Join(fixtureDir, n)) + if err != nil { + t.Fatalf("err: %s", err) + } + + return string(d) +} diff --git a/vendor/github.com/yudai/hcl/json/json_test.go b/vendor/github.com/yudai/hcl/json/json_test.go new file mode 100644 index 0000000..418582b --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/json_test.go @@ -0,0 +1,4 @@ +package json + +// This is the directory where our test fixtures are. +const fixtureDir = "./test-fixtures" diff --git a/vendor/github.com/yudai/hcl/json/lex.go b/vendor/github.com/yudai/hcl/json/lex.go new file mode 100644 index 0000000..0b07e36 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/lex.go @@ -0,0 +1,256 @@ +package json + +import ( + "bytes" + "fmt" + "strconv" + "unicode" + "unicode/utf8" +) + +//go:generate go tool yacc -p "json" parse.y + +// This marks the end of the lexer +const lexEOF = 0 + +// The parser uses the type Lex as a lexer. It must provide +// the methods Lex(*SymType) int and Error(string). +type jsonLex struct { + Input string + + pos int + width int + col, line int + err error +} + +// The parser calls this method to get each new token. +func (x *jsonLex) Lex(yylval *jsonSymType) int { + for { + c := x.next() + if c == lexEOF { + return lexEOF + } + + // Ignore all whitespace except a newline which we handle + // specially later. + if unicode.IsSpace(c) { + continue + } + + // If it is a number, lex the number + if c >= '0' && c <= '9' { + x.backup() + return x.lexNumber(yylval) + } + + switch c { + case 'e': + fallthrough + case 'E': + switch x.next() { + case '+': + return EPLUS + case '-': + return EMINUS + default: + x.backup() + return EPLUS + } + case '.': + return PERIOD + case '-': + return MINUS + case ':': + return COLON + case ',': + return COMMA + case '[': + return LEFTBRACKET + case ']': + return RIGHTBRACKET + case '{': + return LEFTBRACE + case '}': + return RIGHTBRACE + case '"': + return x.lexString(yylval) + default: + x.backup() + return x.lexId(yylval) + } + } +} + +// lexId lexes an identifier +func (x *jsonLex) lexId(yylval *jsonSymType) int { + var b bytes.Buffer + first := true + for { + c := x.next() + if c == lexEOF { + break + } + + if !unicode.IsDigit(c) && !unicode.IsLetter(c) && c != '_' && c != '-' { + x.backup() + + if first { + x.createErr("Invalid identifier") + return lexEOF + } + + break + } + + first = false + if _, err := b.WriteRune(c); err != nil { + return lexEOF + } + } + + switch v := b.String(); v { + case "true": + return TRUE + case "false": + return FALSE + case "null": + return NULL + default: + x.createErr(fmt.Sprintf("Invalid identifier: %s", v)) + return lexEOF + } +} + +// lexNumber lexes out a number +func (x *jsonLex) lexNumber(yylval *jsonSymType) int { + var b bytes.Buffer + gotPeriod := false + for { + c := x.next() + if c == lexEOF { + break + } + + if c == '.' { + if gotPeriod { + x.backup() + break + } + + gotPeriod = true + } else if c < '0' || c > '9' { + x.backup() + break + } + + if _, err := b.WriteRune(c); err != nil { + x.createErr(fmt.Sprintf("Internal error: %s", err)) + return lexEOF + } + } + + if !gotPeriod { + v, err := strconv.ParseInt(b.String(), 0, 0) + if err != nil { + x.createErr(fmt.Sprintf("Expected number: %s", err)) + return lexEOF + } + + yylval.num = int(v) + return NUMBER + } + + f, err := strconv.ParseFloat(b.String(), 64) + if err != nil { + x.createErr(fmt.Sprintf("Expected float: %s", err)) + return lexEOF + } + + yylval.f = float64(f) + return FLOAT +} + +// lexString extracts a string from the input +func (x *jsonLex) lexString(yylval *jsonSymType) int { + var b bytes.Buffer + for { + c := x.next() + if c == lexEOF { + break + } + + // String end + if c == '"' { + break + } + + // If we're escaping a quote, then escape the quote + if c == '\\' { + n := x.next() + switch n { + case '"': + c = n + case 'n': + c = '\n' + case '\\': + c = n + default: + x.backup() + } + } + + if _, err := b.WriteRune(c); err != nil { + return lexEOF + } + } + + yylval.str = b.String() + return STRING +} + +// Return the next rune for the lexer. +func (x *jsonLex) next() rune { + if int(x.pos) >= len(x.Input) { + x.width = 0 + return lexEOF + } + + r, w := utf8.DecodeRuneInString(x.Input[x.pos:]) + x.width = w + x.pos += x.width + + x.col += 1 + if x.line == 0 { + x.line = 1 + } + if r == '\n' { + x.line += 1 + x.col = 0 + } + + return r +} + +// peek returns but does not consume the next rune in the input +func (x *jsonLex) peek() rune { + r := x.next() + x.backup() + return r +} + +// backup steps back one rune. Can only be called once per next. +func (x *jsonLex) backup() { + x.col -= 1 + x.pos -= x.width +} + +// createErr records the given error +func (x *jsonLex) createErr(msg string) { + x.err = fmt.Errorf("Line %d, column %d: %s", x.line, x.col, msg) +} + +// The parser calls this method on a parse error. +func (x *jsonLex) Error(s string) { + x.createErr(s) +} diff --git a/vendor/github.com/yudai/hcl/json/lex_test.go b/vendor/github.com/yudai/hcl/json/lex_test.go new file mode 100644 index 0000000..f573fba --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/lex_test.go @@ -0,0 +1,78 @@ +package json + +import ( + "io/ioutil" + "path/filepath" + "reflect" + "testing" +) + +func TestLexJson(t *testing.T) { + cases := []struct { + Input string + Output []int + }{ + { + "basic.json", + []int{ + LEFTBRACE, + STRING, COLON, STRING, + RIGHTBRACE, + lexEOF, + }, + }, + { + "array.json", + []int{ + LEFTBRACE, + STRING, COLON, LEFTBRACKET, + NUMBER, COMMA, NUMBER, COMMA, STRING, + RIGHTBRACKET, COMMA, + STRING, COLON, STRING, + RIGHTBRACE, + lexEOF, + }, + }, + { + "object.json", + []int{ + LEFTBRACE, + STRING, COLON, LEFTBRACE, + STRING, COLON, LEFTBRACKET, + NUMBER, COMMA, NUMBER, + RIGHTBRACKET, + RIGHTBRACE, + RIGHTBRACE, + lexEOF, + }, + }, + } + + for _, tc := range cases { + d, err := ioutil.ReadFile(filepath.Join(fixtureDir, tc.Input)) + if err != nil { + t.Fatalf("err: %s", err) + } + + l := &jsonLex{Input: string(d)} + var actual []int + for { + token := l.Lex(new(jsonSymType)) + actual = append(actual, token) + + if token == lexEOF { + break + } + + if len(actual) > 500 { + t.Fatalf("Input:%s\n\nExausted.", tc.Input) + } + } + + if !reflect.DeepEqual(actual, tc.Output) { + t.Fatalf( + "Input: %s\n\nBad: %#v\n\nExpected: %#v", + tc.Input, actual, tc.Output) + } + } +} diff --git a/vendor/github.com/yudai/hcl/json/parse.go b/vendor/github.com/yudai/hcl/json/parse.go new file mode 100644 index 0000000..599ea15 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/parse.go @@ -0,0 +1,40 @@ +package json + +import ( + "sync" + + "github.com/yudai/hcl/hcl" + "github.com/hashicorp/go-multierror" +) + +// jsonErrors are the errors built up from parsing. These should not +// be accessed directly. +var jsonErrors []error +var jsonLock sync.Mutex +var jsonResult *hcl.Object + +// Parse parses the given string and returns the result. +func Parse(v string) (*hcl.Object, error) { + jsonLock.Lock() + defer jsonLock.Unlock() + jsonErrors = nil + jsonResult = nil + + // Parse + lex := &jsonLex{Input: v} + jsonParse(lex) + + // If we have an error in the lexer itself, return it + if lex.err != nil { + return nil, lex.err + } + + // Build up the errors + var err error + if len(jsonErrors) > 0 { + err = &multierror.Error{Errors: jsonErrors} + jsonResult = nil + } + + return jsonResult, err +} diff --git a/vendor/github.com/yudai/hcl/json/parse.y b/vendor/github.com/yudai/hcl/json/parse.y new file mode 100644 index 0000000..237e4ae --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/parse.y @@ -0,0 +1,210 @@ +// This is the yacc input for creating the parser for HCL JSON. + +%{ +package json + +import ( + "fmt" + "strconv" + + "github.com/hashicorp/hcl/hcl" +) + +%} + +%union { + f float64 + num int + str string + obj *hcl.Object + objlist []*hcl.Object +} + +%type float +%type int +%type number object pair value +%type array elements members +%type exp + +%token FLOAT +%token NUMBER +%token COLON COMMA IDENTIFIER EQUAL NEWLINE STRING +%token LEFTBRACE RIGHTBRACE LEFTBRACKET RIGHTBRACKET +%token TRUE FALSE NULL MINUS PERIOD EPLUS EMINUS + +%% + +top: + object + { + jsonResult = $1 + } + +object: + LEFTBRACE members RIGHTBRACE + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeObject, + Value: hcl.ObjectList($2).Flat(), + } + } +| LEFTBRACE RIGHTBRACE + { + $$ = &hcl.Object{Type: hcl.ValueTypeObject} + } + +members: + pair + { + $$ = []*hcl.Object{$1} + } +| members COMMA pair + { + $$ = append($1, $3) + } + +pair: + STRING COLON value + { + $3.Key = $1 + $$ = $3 + } + +value: + STRING + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeString, + Value: $1, + } + } +| number + { + $$ = $1 + } +| object + { + $$ = $1 + } +| array + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeList, + Value: $1, + } + } +| TRUE + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeBool, + Value: true, + } + } +| FALSE + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeBool, + Value: false, + } + } +| NULL + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeNil, + Value: nil, + } + } + +array: + LEFTBRACKET RIGHTBRACKET + { + $$ = nil + } +| LEFTBRACKET elements RIGHTBRACKET + { + $$ = $2 + } + +elements: + value + { + $$ = []*hcl.Object{$1} + } +| elements COMMA value + { + $$ = append($1, $3) + } + +number: + int + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeInt, + Value: $1, + } + } +| float + { + $$ = &hcl.Object{ + Type: hcl.ValueTypeFloat, + Value: $1, + } + } +| int exp + { + fs := fmt.Sprintf("%d%s", $1, $2) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + $$ = &hcl.Object{ + Type: hcl.ValueTypeFloat, + Value: f, + } + } +| float exp + { + fs := fmt.Sprintf("%f%s", $1, $2) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + $$ = &hcl.Object{ + Type: hcl.ValueTypeFloat, + Value: f, + } + } + +int: + MINUS int + { + $$ = $2 * -1 + } +| NUMBER + { + $$ = $1 + } + +float: + MINUS float + { + $$ = $2 * -1 + } +| FLOAT + { + $$ = $1 + } + +exp: + EPLUS NUMBER + { + $$ = "e" + strconv.FormatInt(int64($2), 10) + } +| EMINUS NUMBER + { + $$ = "e-" + strconv.FormatInt(int64($2), 10) + } + +%% diff --git a/vendor/github.com/yudai/hcl/json/parse_test.go b/vendor/github.com/yudai/hcl/json/parse_test.go new file mode 100644 index 0000000..806acb9 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/parse_test.go @@ -0,0 +1,43 @@ +package json + +import ( + "io/ioutil" + "path/filepath" + "testing" +) + +func TestParse(t *testing.T) { + cases := []struct { + Name string + Err bool + }{ + { + "basic.json", + false, + }, + { + "object.json", + false, + }, + { + "array.json", + false, + }, + { + "types.json", + false, + }, + } + + for _, tc := range cases { + d, err := ioutil.ReadFile(filepath.Join(fixtureDir, tc.Name)) + if err != nil { + t.Fatalf("err: %s", err) + } + + _, err = Parse(string(d)) + if (err != nil) != tc.Err { + t.Fatalf("Input: %s\n\nError: %s", tc.Name, err) + } + } +} diff --git a/vendor/github.com/yudai/hcl/json/test-fixtures/array.json b/vendor/github.com/yudai/hcl/json/test-fixtures/array.json new file mode 100644 index 0000000..e320f17 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/test-fixtures/array.json @@ -0,0 +1,4 @@ +{ + "foo": [1, 2, "bar"], + "bar": "baz" +} diff --git a/vendor/github.com/yudai/hcl/json/test-fixtures/basic.json b/vendor/github.com/yudai/hcl/json/test-fixtures/basic.json new file mode 100644 index 0000000..b54bde9 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/test-fixtures/basic.json @@ -0,0 +1,3 @@ +{ + "foo": "bar" +} diff --git a/vendor/github.com/yudai/hcl/json/test-fixtures/object.json b/vendor/github.com/yudai/hcl/json/test-fixtures/object.json new file mode 100644 index 0000000..72168a3 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/test-fixtures/object.json @@ -0,0 +1,5 @@ +{ + "foo": { + "bar": [1,2] + } +} diff --git a/vendor/github.com/yudai/hcl/json/test-fixtures/types.json b/vendor/github.com/yudai/hcl/json/test-fixtures/types.json new file mode 100644 index 0000000..9a142a6 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/test-fixtures/types.json @@ -0,0 +1,10 @@ +{ + "foo": "bar", + "bar": 7, + "baz": [1,2,3], + "foo": -12, + "bar": 3.14159, + "foo": true, + "bar": false, + "foo": null +} diff --git a/vendor/github.com/yudai/hcl/json/y.go b/vendor/github.com/yudai/hcl/json/y.go new file mode 100644 index 0000000..edc4438 --- /dev/null +++ b/vendor/github.com/yudai/hcl/json/y.go @@ -0,0 +1,699 @@ +//line parse.y:3 +package json + +import __yyfmt__ "fmt" + +//line parse.y:5 +import ( + "fmt" + "strconv" + + "github.com/yudai/hcl/hcl" +) + +//line parse.y:15 +type jsonSymType struct { + yys int + f float64 + num int + str string + obj *hcl.Object + objlist []*hcl.Object +} + +const FLOAT = 57346 +const NUMBER = 57347 +const COLON = 57348 +const COMMA = 57349 +const IDENTIFIER = 57350 +const EQUAL = 57351 +const NEWLINE = 57352 +const STRING = 57353 +const LEFTBRACE = 57354 +const RIGHTBRACE = 57355 +const LEFTBRACKET = 57356 +const RIGHTBRACKET = 57357 +const TRUE = 57358 +const FALSE = 57359 +const NULL = 57360 +const MINUS = 57361 +const PERIOD = 57362 +const EPLUS = 57363 +const EMINUS = 57364 + +var jsonToknames = [...]string{ + "$end", + "error", + "$unk", + "FLOAT", + "NUMBER", + "COLON", + "COMMA", + "IDENTIFIER", + "EQUAL", + "NEWLINE", + "STRING", + "LEFTBRACE", + "RIGHTBRACE", + "LEFTBRACKET", + "RIGHTBRACKET", + "TRUE", + "FALSE", + "NULL", + "MINUS", + "PERIOD", + "EPLUS", + "EMINUS", +} +var jsonStatenames = [...]string{} + +const jsonEofCode = 1 +const jsonErrCode = 2 +const jsonMaxDepth = 200 + +//line parse.y:210 + +//line yacctab:1 +var jsonExca = [...]int{ + -1, 1, + 1, -1, + -2, 0, +} + +const jsonNprod = 28 +const jsonPrivate = 57344 + +var jsonTokenNames []string +var jsonStates []string + +const jsonLast = 53 + +var jsonAct = [...]int{ + + 12, 25, 24, 3, 20, 27, 28, 7, 13, 3, + 21, 22, 30, 17, 18, 19, 23, 25, 24, 26, + 25, 24, 36, 32, 13, 3, 10, 22, 33, 17, + 18, 19, 23, 35, 34, 23, 38, 9, 7, 39, + 5, 29, 6, 8, 37, 15, 2, 1, 4, 31, + 16, 14, 11, +} +var jsonPact = [...]int{ + + -9, -1000, -1000, 27, 30, -1000, -1000, 20, -1000, -4, + 13, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -16, -16, -3, 16, -1000, -1000, -1000, 28, 17, -1000, + -1000, 29, -1000, -1000, -1000, -1000, -1000, -1000, 13, -1000, +} +var jsonPgo = [...]int{ + + 0, 10, 4, 51, 45, 42, 0, 50, 49, 48, + 19, 47, +} +var jsonR1 = [...]int{ + + 0, 11, 4, 4, 9, 9, 5, 6, 6, 6, + 6, 6, 6, 6, 7, 7, 8, 8, 3, 3, + 3, 3, 2, 2, 1, 1, 10, 10, +} +var jsonR2 = [...]int{ + + 0, 1, 3, 2, 1, 3, 3, 1, 1, 1, + 1, 1, 1, 1, 2, 3, 1, 3, 1, 1, + 2, 2, 2, 1, 2, 1, 2, 2, +} +var jsonChk = [...]int{ + + -1000, -11, -4, 12, -9, 13, -5, 11, 13, 7, + 6, -5, -6, 11, -3, -4, -7, 16, 17, 18, + -2, -1, 14, 19, 5, 4, -10, 21, 22, -10, + 15, -8, -6, -2, -1, 5, 5, 15, 7, -6, +} +var jsonDef = [...]int{ + + 0, -2, 1, 0, 0, 3, 4, 0, 2, 0, + 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 18, 19, 0, 0, 23, 25, 20, 0, 0, 21, + 14, 0, 16, 22, 24, 26, 27, 15, 0, 17, +} +var jsonTok1 = [...]int{ + + 1, +} +var jsonTok2 = [...]int{ + + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, +} +var jsonTok3 = [...]int{ + 0, +} + +var jsonErrorMessages = [...]struct { + state int + token int + msg string +}{} + +//line yaccpar:1 + +/* parser for yacc output */ + +var ( + jsonDebug = 0 + jsonErrorVerbose = false +) + +type jsonLexer interface { + Lex(lval *jsonSymType) int + Error(s string) +} + +type jsonParser interface { + Parse(jsonLexer) int + Lookahead() int +} + +type jsonParserImpl struct { + lookahead func() int +} + +func (p *jsonParserImpl) Lookahead() int { + return p.lookahead() +} + +func jsonNewParser() jsonParser { + p := &jsonParserImpl{ + lookahead: func() int { return -1 }, + } + return p +} + +const jsonFlag = -1000 + +func jsonTokname(c int) string { + if c >= 1 && c-1 < len(jsonToknames) { + if jsonToknames[c-1] != "" { + return jsonToknames[c-1] + } + } + return __yyfmt__.Sprintf("tok-%v", c) +} + +func jsonStatname(s int) string { + if s >= 0 && s < len(jsonStatenames) { + if jsonStatenames[s] != "" { + return jsonStatenames[s] + } + } + return __yyfmt__.Sprintf("state-%v", s) +} + +func jsonErrorMessage(state, lookAhead int) string { + const TOKSTART = 4 + + if !jsonErrorVerbose { + return "syntax error" + } + + for _, e := range jsonErrorMessages { + if e.state == state && e.token == lookAhead { + return "syntax error: " + e.msg + } + } + + res := "syntax error: unexpected " + jsonTokname(lookAhead) + + // To match Bison, suggest at most four expected tokens. + expected := make([]int, 0, 4) + + // Look for shiftable tokens. + base := jsonPact[state] + for tok := TOKSTART; tok-1 < len(jsonToknames); tok++ { + if n := base + tok; n >= 0 && n < jsonLast && jsonChk[jsonAct[n]] == tok { + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + } + + if jsonDef[state] == -2 { + i := 0 + for jsonExca[i] != -1 || jsonExca[i+1] != state { + i += 2 + } + + // Look for tokens that we accept or reduce. + for i += 2; jsonExca[i] >= 0; i += 2 { + tok := jsonExca[i] + if tok < TOKSTART || jsonExca[i+1] == 0 { + continue + } + if len(expected) == cap(expected) { + return res + } + expected = append(expected, tok) + } + + // If the default action is to accept or reduce, give up. + if jsonExca[i+1] != 0 { + return res + } + } + + for i, tok := range expected { + if i == 0 { + res += ", expecting " + } else { + res += " or " + } + res += jsonTokname(tok) + } + return res +} + +func jsonlex1(lex jsonLexer, lval *jsonSymType) (char, token int) { + token = 0 + char = lex.Lex(lval) + if char <= 0 { + token = jsonTok1[0] + goto out + } + if char < len(jsonTok1) { + token = jsonTok1[char] + goto out + } + if char >= jsonPrivate { + if char < jsonPrivate+len(jsonTok2) { + token = jsonTok2[char-jsonPrivate] + goto out + } + } + for i := 0; i < len(jsonTok3); i += 2 { + token = jsonTok3[i+0] + if token == char { + token = jsonTok3[i+1] + goto out + } + } + +out: + if token == 0 { + token = jsonTok2[1] /* unknown char */ + } + if jsonDebug >= 3 { + __yyfmt__.Printf("lex %s(%d)\n", jsonTokname(token), uint(char)) + } + return char, token +} + +func jsonParse(jsonlex jsonLexer) int { + return jsonNewParser().Parse(jsonlex) +} + +func (jsonrcvr *jsonParserImpl) Parse(jsonlex jsonLexer) int { + var jsonn int + var jsonlval jsonSymType + var jsonVAL jsonSymType + var jsonDollar []jsonSymType + _ = jsonDollar // silence set and not used + jsonS := make([]jsonSymType, jsonMaxDepth) + + Nerrs := 0 /* number of errors */ + Errflag := 0 /* error recovery flag */ + jsonstate := 0 + jsonchar := -1 + jsontoken := -1 // jsonchar translated into internal numbering + jsonrcvr.lookahead = func() int { return jsonchar } + defer func() { + // Make sure we report no lookahead when not parsing. + jsonstate = -1 + jsonchar = -1 + jsontoken = -1 + }() + jsonp := -1 + goto jsonstack + +ret0: + return 0 + +ret1: + return 1 + +jsonstack: + /* put a state and value onto the stack */ + if jsonDebug >= 4 { + __yyfmt__.Printf("char %v in %v\n", jsonTokname(jsontoken), jsonStatname(jsonstate)) + } + + jsonp++ + if jsonp >= len(jsonS) { + nyys := make([]jsonSymType, len(jsonS)*2) + copy(nyys, jsonS) + jsonS = nyys + } + jsonS[jsonp] = jsonVAL + jsonS[jsonp].yys = jsonstate + +jsonnewstate: + jsonn = jsonPact[jsonstate] + if jsonn <= jsonFlag { + goto jsondefault /* simple state */ + } + if jsonchar < 0 { + jsonchar, jsontoken = jsonlex1(jsonlex, &jsonlval) + } + jsonn += jsontoken + if jsonn < 0 || jsonn >= jsonLast { + goto jsondefault + } + jsonn = jsonAct[jsonn] + if jsonChk[jsonn] == jsontoken { /* valid shift */ + jsonchar = -1 + jsontoken = -1 + jsonVAL = jsonlval + jsonstate = jsonn + if Errflag > 0 { + Errflag-- + } + goto jsonstack + } + +jsondefault: + /* default state action */ + jsonn = jsonDef[jsonstate] + if jsonn == -2 { + if jsonchar < 0 { + jsonchar, jsontoken = jsonlex1(jsonlex, &jsonlval) + } + + /* look through exception table */ + xi := 0 + for { + if jsonExca[xi+0] == -1 && jsonExca[xi+1] == jsonstate { + break + } + xi += 2 + } + for xi += 2; ; xi += 2 { + jsonn = jsonExca[xi+0] + if jsonn < 0 || jsonn == jsontoken { + break + } + } + jsonn = jsonExca[xi+1] + if jsonn < 0 { + goto ret0 + } + } + if jsonn == 0 { + /* error ... attempt to resume parsing */ + switch Errflag { + case 0: /* brand new error */ + jsonlex.Error(jsonErrorMessage(jsonstate, jsontoken)) + Nerrs++ + if jsonDebug >= 1 { + __yyfmt__.Printf("%s", jsonStatname(jsonstate)) + __yyfmt__.Printf(" saw %s\n", jsonTokname(jsontoken)) + } + fallthrough + + case 1, 2: /* incompletely recovered error ... try again */ + Errflag = 3 + + /* find a state where "error" is a legal shift action */ + for jsonp >= 0 { + jsonn = jsonPact[jsonS[jsonp].yys] + jsonErrCode + if jsonn >= 0 && jsonn < jsonLast { + jsonstate = jsonAct[jsonn] /* simulate a shift of "error" */ + if jsonChk[jsonstate] == jsonErrCode { + goto jsonstack + } + } + + /* the current p has no shift on "error", pop stack */ + if jsonDebug >= 2 { + __yyfmt__.Printf("error recovery pops state %d\n", jsonS[jsonp].yys) + } + jsonp-- + } + /* there is no state on the stack with an error shift ... abort */ + goto ret1 + + case 3: /* no shift yet; clobber input char */ + if jsonDebug >= 2 { + __yyfmt__.Printf("error recovery discards %s\n", jsonTokname(jsontoken)) + } + if jsontoken == jsonEofCode { + goto ret1 + } + jsonchar = -1 + jsontoken = -1 + goto jsonnewstate /* try again in the same state */ + } + } + + /* reduction by production jsonn */ + if jsonDebug >= 2 { + __yyfmt__.Printf("reduce %v in:\n\t%v\n", jsonn, jsonStatname(jsonstate)) + } + + jsonnt := jsonn + jsonpt := jsonp + _ = jsonpt // guard against "declared and not used" + + jsonp -= jsonR2[jsonn] + // jsonp is now the index of $0. Perform the default action. Iff the + // reduced production is ε, $1 is possibly out of range. + if jsonp+1 >= len(jsonS) { + nyys := make([]jsonSymType, len(jsonS)*2) + copy(nyys, jsonS) + jsonS = nyys + } + jsonVAL = jsonS[jsonp+1] + + /* consult goto table to find next state */ + jsonn = jsonR1[jsonn] + jsong := jsonPgo[jsonn] + jsonj := jsong + jsonS[jsonp].yys + 1 + + if jsonj >= jsonLast { + jsonstate = jsonAct[jsong] + } else { + jsonstate = jsonAct[jsonj] + if jsonChk[jsonstate] != -jsonn { + jsonstate = jsonAct[jsong] + } + } + // dummy call; replaced with literal code + switch jsonnt { + + case 1: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:39 + { + jsonResult = jsonDollar[1].obj + } + case 2: + jsonDollar = jsonS[jsonpt-3 : jsonpt+1] + //line parse.y:45 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeObject, + Value: hcl.ObjectList(jsonDollar[2].objlist).Flat(), + } + } + case 3: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:52 + { + jsonVAL.obj = &hcl.Object{Type: hcl.ValueTypeObject} + } + case 4: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:58 + { + jsonVAL.objlist = []*hcl.Object{jsonDollar[1].obj} + } + case 5: + jsonDollar = jsonS[jsonpt-3 : jsonpt+1] + //line parse.y:62 + { + jsonVAL.objlist = append(jsonDollar[1].objlist, jsonDollar[3].obj) + } + case 6: + jsonDollar = jsonS[jsonpt-3 : jsonpt+1] + //line parse.y:68 + { + jsonDollar[3].obj.Key = jsonDollar[1].str + jsonVAL.obj = jsonDollar[3].obj + } + case 7: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:75 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeString, + Value: jsonDollar[1].str, + } + } + case 8: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:82 + { + jsonVAL.obj = jsonDollar[1].obj + } + case 9: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:86 + { + jsonVAL.obj = jsonDollar[1].obj + } + case 10: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:90 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeList, + Value: jsonDollar[1].objlist, + } + } + case 11: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:97 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeBool, + Value: true, + } + } + case 12: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:104 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeBool, + Value: false, + } + } + case 13: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:111 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeNil, + Value: nil, + } + } + case 14: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:120 + { + jsonVAL.objlist = nil + } + case 15: + jsonDollar = jsonS[jsonpt-3 : jsonpt+1] + //line parse.y:124 + { + jsonVAL.objlist = jsonDollar[2].objlist + } + case 16: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:130 + { + jsonVAL.objlist = []*hcl.Object{jsonDollar[1].obj} + } + case 17: + jsonDollar = jsonS[jsonpt-3 : jsonpt+1] + //line parse.y:134 + { + jsonVAL.objlist = append(jsonDollar[1].objlist, jsonDollar[3].obj) + } + case 18: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:140 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeInt, + Value: jsonDollar[1].num, + } + } + case 19: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:147 + { + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeFloat, + Value: jsonDollar[1].f, + } + } + case 20: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:154 + { + fs := fmt.Sprintf("%d%s", jsonDollar[1].num, jsonDollar[2].str) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeFloat, + Value: f, + } + } + case 21: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:167 + { + fs := fmt.Sprintf("%f%s", jsonDollar[1].f, jsonDollar[2].str) + f, err := strconv.ParseFloat(fs, 64) + if err != nil { + panic(err) + } + + jsonVAL.obj = &hcl.Object{ + Type: hcl.ValueTypeFloat, + Value: f, + } + } + case 22: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:182 + { + jsonVAL.num = jsonDollar[2].num * -1 + } + case 23: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:186 + { + jsonVAL.num = jsonDollar[1].num + } + case 24: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:192 + { + jsonVAL.f = jsonDollar[2].f * -1 + } + case 25: + jsonDollar = jsonS[jsonpt-1 : jsonpt+1] + //line parse.y:196 + { + jsonVAL.f = jsonDollar[1].f + } + case 26: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:202 + { + jsonVAL.str = "e" + strconv.FormatInt(int64(jsonDollar[2].num), 10) + } + case 27: + jsonDollar = jsonS[jsonpt-2 : jsonpt+1] + //line parse.y:206 + { + jsonVAL.str = "e-" + strconv.FormatInt(int64(jsonDollar[2].num), 10) + } + } + goto jsonstack /* stack new state and value */ +} diff --git a/vendor/github.com/yudai/hcl/lex.go b/vendor/github.com/yudai/hcl/lex.go new file mode 100644 index 0000000..2e38ecb --- /dev/null +++ b/vendor/github.com/yudai/hcl/lex.go @@ -0,0 +1,31 @@ +package hcl + +import ( + "unicode" +) + +type lexModeValue byte + +const ( + lexModeUnknown lexModeValue = iota + lexModeHcl + lexModeJson +) + +// lexMode returns whether we're going to be parsing in JSON +// mode or HCL mode. +func lexMode(v string) lexModeValue { + for _, r := range v { + if unicode.IsSpace(r) { + continue + } + + if r == '{' { + return lexModeJson + } else { + return lexModeHcl + } + } + + return lexModeHcl +} diff --git a/vendor/github.com/yudai/hcl/lex_test.go b/vendor/github.com/yudai/hcl/lex_test.go new file mode 100644 index 0000000..f7ee378 --- /dev/null +++ b/vendor/github.com/yudai/hcl/lex_test.go @@ -0,0 +1,37 @@ +package hcl + +import ( + "testing" +) + +func TestLexMode(t *testing.T) { + cases := []struct { + Input string + Mode lexModeValue + }{ + { + "", + lexModeHcl, + }, + { + "foo", + lexModeHcl, + }, + { + "{}", + lexModeJson, + }, + { + " {}", + lexModeJson, + }, + } + + for i, tc := range cases { + actual := lexMode(tc.Input) + + if actual != tc.Mode { + t.Fatalf("%d: %#v", i, actual) + } + } +} diff --git a/vendor/github.com/yudai/hcl/parse.go b/vendor/github.com/yudai/hcl/parse.go new file mode 100644 index 0000000..4b76d74 --- /dev/null +++ b/vendor/github.com/yudai/hcl/parse.go @@ -0,0 +1,22 @@ +package hcl + +import ( + "fmt" + + "github.com/yudai/hcl/hcl" + "github.com/yudai/hcl/json" +) + +// Parse parses the given input and returns the root object. +// +// The input format can be either HCL or JSON. +func Parse(input string) (*hcl.Object, error) { + switch lexMode(input) { + case lexModeHcl: + return hcl.Parse(input) + case lexModeJson: + return json.Parse(input) + } + + return nil, fmt.Errorf("unknown config format") +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/basic.hcl b/vendor/github.com/yudai/hcl/test-fixtures/basic.hcl new file mode 100644 index 0000000..9499944 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/basic.hcl @@ -0,0 +1,2 @@ +foo = "bar" +bar = "${file("bing/bong.txt")}" diff --git a/vendor/github.com/yudai/hcl/test-fixtures/basic.json b/vendor/github.com/yudai/hcl/test-fixtures/basic.json new file mode 100644 index 0000000..7bdddc8 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/basic.json @@ -0,0 +1,4 @@ +{ + "foo": "bar", + "bar": "${file(\"bing/bong.txt\")}" +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/basic_int_string.hcl b/vendor/github.com/yudai/hcl/test-fixtures/basic_int_string.hcl new file mode 100644 index 0000000..4e415da --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/basic_int_string.hcl @@ -0,0 +1 @@ +count = "3" diff --git a/vendor/github.com/yudai/hcl/test-fixtures/basic_squish.hcl b/vendor/github.com/yudai/hcl/test-fixtures/basic_squish.hcl new file mode 100644 index 0000000..363697b --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/basic_squish.hcl @@ -0,0 +1,3 @@ +foo="bar" +bar="${file("bing/bong.txt")}" +foo-bar="baz" diff --git a/vendor/github.com/yudai/hcl/test-fixtures/decode_policy.hcl b/vendor/github.com/yudai/hcl/test-fixtures/decode_policy.hcl new file mode 100644 index 0000000..5b185cc --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/decode_policy.hcl @@ -0,0 +1,15 @@ +key "" { + policy = "read" +} + +key "foo/" { + policy = "write" +} + +key "foo/bar/" { + policy = "read" +} + +key "foo/bar/baz" { + policy = "deny" +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/decode_policy.json b/vendor/github.com/yudai/hcl/test-fixtures/decode_policy.json new file mode 100644 index 0000000..151864e --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/decode_policy.json @@ -0,0 +1,19 @@ +{ + "key": { + "": { + "policy": "read" + }, + + "foo/": { + "policy": "write" + }, + + "foo/bar/": { + "policy": "read" + }, + + "foo/bar/baz": { + "policy": "deny" + } + } +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.hcl b/vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.hcl new file mode 100644 index 0000000..52dcaa1 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.hcl @@ -0,0 +1,10 @@ +variable "foo" { + default = "bar" + description = "bar" +} + +variable "amis" { + default = { + east = "foo" + } +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.json b/vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.json new file mode 100644 index 0000000..49f921e --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/decode_tf_variable.json @@ -0,0 +1,14 @@ +{ + "variable": { + "foo": { + "default": "bar", + "description": "bar" + }, + + "amis": { + "default": { + "east": "foo" + } + } + } +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/empty.hcl b/vendor/github.com/yudai/hcl/test-fixtures/empty.hcl new file mode 100644 index 0000000..5be1b23 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/empty.hcl @@ -0,0 +1 @@ +resource "foo" {} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/escape.hcl b/vendor/github.com/yudai/hcl/test-fixtures/escape.hcl new file mode 100644 index 0000000..ead1b8b --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/escape.hcl @@ -0,0 +1 @@ +foo = "bar\"baz\\n" diff --git a/vendor/github.com/yudai/hcl/test-fixtures/flat.hcl b/vendor/github.com/yudai/hcl/test-fixtures/flat.hcl new file mode 100644 index 0000000..9bca551 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/flat.hcl @@ -0,0 +1,2 @@ +foo = "bar" +Key = 7 diff --git a/vendor/github.com/yudai/hcl/test-fixtures/float.hcl b/vendor/github.com/yudai/hcl/test-fixtures/float.hcl new file mode 100644 index 0000000..eed44e5 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/float.hcl @@ -0,0 +1 @@ +a = 1.02 diff --git a/vendor/github.com/yudai/hcl/test-fixtures/float.json b/vendor/github.com/yudai/hcl/test-fixtures/float.json new file mode 100644 index 0000000..a9d1ab4 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/float.json @@ -0,0 +1,3 @@ +{ + "a": 1.02 +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/multiline.json b/vendor/github.com/yudai/hcl/test-fixtures/multiline.json new file mode 100644 index 0000000..93f7cc5 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/multiline.json @@ -0,0 +1,3 @@ +{ + "foo": "bar\nbaz" +} diff --git a/vendor/github.com/yudai/hcl/test-fixtures/multiline_bad.hcl b/vendor/github.com/yudai/hcl/test-fixtures/multiline_bad.hcl new file mode 100644 index 0000000..f883bd7 --- /dev/null +++ b/vendor/github.com/yudai/hcl/test-fixtures/multiline_bad.hcl @@ -0,0 +1,4 @@ +foo = < 0 && len(parser.tokens) == cap(parser.tokens) { + if parser.tokens_head != len(parser.tokens) { + copy(parser.tokens, parser.tokens[parser.tokens_head:]) + } + parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] + parser.tokens_head = 0 + } + parser.tokens = append(parser.tokens, *token) + if pos < 0 { + return + } + copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) + parser.tokens[parser.tokens_head+pos] = *token +} + +// Create a new parser object. +func yaml_parser_initialize(parser *yaml_parser_t) bool { + *parser = yaml_parser_t{ + raw_buffer: make([]byte, 0, input_raw_buffer_size), + buffer: make([]byte, 0, input_buffer_size), + } + return true +} + +// Destroy a parser object. +func yaml_parser_delete(parser *yaml_parser_t) { + *parser = yaml_parser_t{} +} + +// String read handler. +func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + if parser.input_pos == len(parser.input) { + return 0, io.EOF + } + n = copy(buffer, parser.input[parser.input_pos:]) + parser.input_pos += n + return n, nil +} + +// File read handler. +func yaml_file_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + return parser.input_file.Read(buffer) +} + +// Set a string input. +func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_string_read_handler + parser.input = input + parser.input_pos = 0 +} + +// Set a file input. +func yaml_parser_set_input_file(parser *yaml_parser_t, file *os.File) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_file_read_handler + parser.input_file = file +} + +// Set the source encoding. +func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { + if parser.encoding != yaml_ANY_ENCODING { + panic("must set the encoding only once") + } + parser.encoding = encoding +} + +// Create a new emitter object. +func yaml_emitter_initialize(emitter *yaml_emitter_t) bool { + *emitter = yaml_emitter_t{ + buffer: make([]byte, output_buffer_size), + raw_buffer: make([]byte, 0, output_raw_buffer_size), + states: make([]yaml_emitter_state_t, 0, initial_stack_size), + events: make([]yaml_event_t, 0, initial_queue_size), + } + return true +} + +// Destroy an emitter object. +func yaml_emitter_delete(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{} +} + +// String write handler. +func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + *emitter.output_buffer = append(*emitter.output_buffer, buffer...) + return nil +} + +// File write handler. +func yaml_file_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + _, err := emitter.output_file.Write(buffer) + return err +} + +// Set a string output. +func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_string_write_handler + emitter.output_buffer = output_buffer +} + +// Set a file output. +func yaml_emitter_set_output_file(emitter *yaml_emitter_t, file io.Writer) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_file_write_handler + emitter.output_file = file +} + +// Set the output encoding. +func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { + if emitter.encoding != yaml_ANY_ENCODING { + panic("must set the output encoding only once") + } + emitter.encoding = encoding +} + +// Set the canonical output style. +func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { + emitter.canonical = canonical +} + +//// Set the indentation increment. +func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { + if indent < 2 || indent > 9 { + indent = 2 + } + emitter.best_indent = indent +} + +// Set the preferred line width. +func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { + if width < 0 { + width = -1 + } + emitter.best_width = width +} + +// Set if unescaped non-ASCII characters are allowed. +func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { + emitter.unicode = unicode +} + +// Set the preferred line break character. +func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { + emitter.line_break = line_break +} + +///* +// * Destroy a token object. +// */ +// +//YAML_DECLARE(void) +//yaml_token_delete(yaml_token_t *token) +//{ +// assert(token); // Non-NULL token object expected. +// +// switch (token.type) +// { +// case YAML_TAG_DIRECTIVE_TOKEN: +// yaml_free(token.data.tag_directive.handle); +// yaml_free(token.data.tag_directive.prefix); +// break; +// +// case YAML_ALIAS_TOKEN: +// yaml_free(token.data.alias.value); +// break; +// +// case YAML_ANCHOR_TOKEN: +// yaml_free(token.data.anchor.value); +// break; +// +// case YAML_TAG_TOKEN: +// yaml_free(token.data.tag.handle); +// yaml_free(token.data.tag.suffix); +// break; +// +// case YAML_SCALAR_TOKEN: +// yaml_free(token.data.scalar.value); +// break; +// +// default: +// break; +// } +// +// memset(token, 0, sizeof(yaml_token_t)); +//} +// +///* +// * Check if a string is a valid UTF-8 sequence. +// * +// * Check 'reader.c' for more details on UTF-8 encoding. +// */ +// +//static int +//yaml_check_utf8(yaml_char_t *start, size_t length) +//{ +// yaml_char_t *end = start+length; +// yaml_char_t *pointer = start; +// +// while (pointer < end) { +// unsigned char octet; +// unsigned int width; +// unsigned int value; +// size_t k; +// +// octet = pointer[0]; +// width = (octet & 0x80) == 0x00 ? 1 : +// (octet & 0xE0) == 0xC0 ? 2 : +// (octet & 0xF0) == 0xE0 ? 3 : +// (octet & 0xF8) == 0xF0 ? 4 : 0; +// value = (octet & 0x80) == 0x00 ? octet & 0x7F : +// (octet & 0xE0) == 0xC0 ? octet & 0x1F : +// (octet & 0xF0) == 0xE0 ? octet & 0x0F : +// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; +// if (!width) return 0; +// if (pointer+width > end) return 0; +// for (k = 1; k < width; k ++) { +// octet = pointer[k]; +// if ((octet & 0xC0) != 0x80) return 0; +// value = (value << 6) + (octet & 0x3F); +// } +// if (!((width == 1) || +// (width == 2 && value >= 0x80) || +// (width == 3 && value >= 0x800) || +// (width == 4 && value >= 0x10000))) return 0; +// +// pointer += width; +// } +// +// return 1; +//} +// + +// Create STREAM-START. +func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) bool { + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + encoding: encoding, + } + return true +} + +// Create STREAM-END. +func yaml_stream_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + } + return true +} + +// Create DOCUMENT-START. +func yaml_document_start_event_initialize(event *yaml_event_t, version_directive *yaml_version_directive_t, + tag_directives []yaml_tag_directive_t, implicit bool) bool { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: implicit, + } + return true +} + +// Create DOCUMENT-END. +func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) bool { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + implicit: implicit, + } + return true +} + +///* +// * Create ALIAS. +// */ +// +//YAML_DECLARE(int) +//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t) +//{ +// mark yaml_mark_t = { 0, 0, 0 } +// anchor_copy *yaml_char_t = NULL +// +// assert(event) // Non-NULL event object is expected. +// assert(anchor) // Non-NULL anchor is expected. +// +// if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0 +// +// anchor_copy = yaml_strdup(anchor) +// if (!anchor_copy) +// return 0 +// +// ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark) +// +// return 1 +//} + +// Create SCALAR. +func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + anchor: anchor, + tag: tag, + value: value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-START. +func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-END. +func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + } + return true +} + +// Create MAPPING-START. +func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) bool { + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } + return true +} + +// Create MAPPING-END. +func yaml_mapping_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + } + return true +} + +// Destroy an event object. +func yaml_event_delete(event *yaml_event_t) { + *event = yaml_event_t{} +} + +///* +// * Create a document object. +// */ +// +//YAML_DECLARE(int) +//yaml_document_initialize(document *yaml_document_t, +// version_directive *yaml_version_directive_t, +// tag_directives_start *yaml_tag_directive_t, +// tag_directives_end *yaml_tag_directive_t, +// start_implicit int, end_implicit int) +//{ +// struct { +// error yaml_error_type_t +// } context +// struct { +// start *yaml_node_t +// end *yaml_node_t +// top *yaml_node_t +// } nodes = { NULL, NULL, NULL } +// version_directive_copy *yaml_version_directive_t = NULL +// struct { +// start *yaml_tag_directive_t +// end *yaml_tag_directive_t +// top *yaml_tag_directive_t +// } tag_directives_copy = { NULL, NULL, NULL } +// value yaml_tag_directive_t = { NULL, NULL } +// mark yaml_mark_t = { 0, 0, 0 } +// +// assert(document) // Non-NULL document object is expected. +// assert((tag_directives_start && tag_directives_end) || +// (tag_directives_start == tag_directives_end)) +// // Valid tag directives are expected. +// +// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error +// +// if (version_directive) { +// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) +// if (!version_directive_copy) goto error +// version_directive_copy.major = version_directive.major +// version_directive_copy.minor = version_directive.minor +// } +// +// if (tag_directives_start != tag_directives_end) { +// tag_directive *yaml_tag_directive_t +// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) +// goto error +// for (tag_directive = tag_directives_start +// tag_directive != tag_directives_end; tag_directive ++) { +// assert(tag_directive.handle) +// assert(tag_directive.prefix) +// if (!yaml_check_utf8(tag_directive.handle, +// strlen((char *)tag_directive.handle))) +// goto error +// if (!yaml_check_utf8(tag_directive.prefix, +// strlen((char *)tag_directive.prefix))) +// goto error +// value.handle = yaml_strdup(tag_directive.handle) +// value.prefix = yaml_strdup(tag_directive.prefix) +// if (!value.handle || !value.prefix) goto error +// if (!PUSH(&context, tag_directives_copy, value)) +// goto error +// value.handle = NULL +// value.prefix = NULL +// } +// } +// +// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, +// tag_directives_copy.start, tag_directives_copy.top, +// start_implicit, end_implicit, mark, mark) +// +// return 1 +// +//error: +// STACK_DEL(&context, nodes) +// yaml_free(version_directive_copy) +// while (!STACK_EMPTY(&context, tag_directives_copy)) { +// value yaml_tag_directive_t = POP(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// } +// STACK_DEL(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// +// return 0 +//} +// +///* +// * Destroy a document object. +// */ +// +//YAML_DECLARE(void) +//yaml_document_delete(document *yaml_document_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// tag_directive *yaml_tag_directive_t +// +// context.error = YAML_NO_ERROR // Eliminate a compliler warning. +// +// assert(document) // Non-NULL document object is expected. +// +// while (!STACK_EMPTY(&context, document.nodes)) { +// node yaml_node_t = POP(&context, document.nodes) +// yaml_free(node.tag) +// switch (node.type) { +// case YAML_SCALAR_NODE: +// yaml_free(node.data.scalar.value) +// break +// case YAML_SEQUENCE_NODE: +// STACK_DEL(&context, node.data.sequence.items) +// break +// case YAML_MAPPING_NODE: +// STACK_DEL(&context, node.data.mapping.pairs) +// break +// default: +// assert(0) // Should not happen. +// } +// } +// STACK_DEL(&context, document.nodes) +// +// yaml_free(document.version_directive) +// for (tag_directive = document.tag_directives.start +// tag_directive != document.tag_directives.end +// tag_directive++) { +// yaml_free(tag_directive.handle) +// yaml_free(tag_directive.prefix) +// } +// yaml_free(document.tag_directives.start) +// +// memset(document, 0, sizeof(yaml_document_t)) +//} +// +///** +// * Get a document node. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_node(document *yaml_document_t, index int) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (index > 0 && document.nodes.start + index <= document.nodes.top) { +// return document.nodes.start + index - 1 +// } +// return NULL +//} +// +///** +// * Get the root object. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_root_node(document *yaml_document_t) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (document.nodes.top != document.nodes.start) { +// return document.nodes.start +// } +// return NULL +//} +// +///* +// * Add a scalar node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_scalar(document *yaml_document_t, +// tag *yaml_char_t, value *yaml_char_t, length int, +// style yaml_scalar_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// value_copy *yaml_char_t = NULL +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// assert(value) // Non-NULL value is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (length < 0) { +// length = strlen((char *)value) +// } +// +// if (!yaml_check_utf8(value, length)) goto error +// value_copy = yaml_malloc(length+1) +// if (!value_copy) goto error +// memcpy(value_copy, value, length) +// value_copy[length] = '\0' +// +// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// yaml_free(tag_copy) +// yaml_free(value_copy) +// +// return 0 +//} +// +///* +// * Add a sequence node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_sequence(document *yaml_document_t, +// tag *yaml_char_t, style yaml_sequence_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_item_t +// end *yaml_node_item_t +// top *yaml_node_item_t +// } items = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error +// +// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, items) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Add a mapping node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_mapping(document *yaml_document_t, +// tag *yaml_char_t, style yaml_mapping_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_pair_t +// end *yaml_node_pair_t +// top *yaml_node_pair_t +// } pairs = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error +// +// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, pairs) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Append an item to a sequence node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_sequence_item(document *yaml_document_t, +// sequence int, item int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// assert(document) // Non-NULL document is required. +// assert(sequence > 0 +// && document.nodes.start + sequence <= document.nodes.top) +// // Valid sequence id is required. +// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) +// // A sequence node is required. +// assert(item > 0 && document.nodes.start + item <= document.nodes.top) +// // Valid item id is required. +// +// if (!PUSH(&context, +// document.nodes.start[sequence-1].data.sequence.items, item)) +// return 0 +// +// return 1 +//} +// +///* +// * Append a pair of a key and a value to a mapping node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_mapping_pair(document *yaml_document_t, +// mapping int, key int, value int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// pair yaml_node_pair_t +// +// assert(document) // Non-NULL document is required. +// assert(mapping > 0 +// && document.nodes.start + mapping <= document.nodes.top) +// // Valid mapping id is required. +// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) +// // A mapping node is required. +// assert(key > 0 && document.nodes.start + key <= document.nodes.top) +// // Valid key id is required. +// assert(value > 0 && document.nodes.start + value <= document.nodes.top) +// // Valid value id is required. +// +// pair.key = key +// pair.value = value +// +// if (!PUSH(&context, +// document.nodes.start[mapping-1].data.mapping.pairs, pair)) +// return 0 +// +// return 1 +//} +// +// diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go new file mode 100644 index 0000000..e85eb2e --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/decode.go @@ -0,0 +1,685 @@ +package yaml + +import ( + "encoding" + "encoding/base64" + "fmt" + "math" + "reflect" + "strconv" + "time" +) + +const ( + documentNode = 1 << iota + mappingNode + sequenceNode + scalarNode + aliasNode +) + +type node struct { + kind int + line, column int + tag string + value string + implicit bool + children []*node + anchors map[string]*node +} + +// ---------------------------------------------------------------------------- +// Parser, produces a node tree out of a libyaml event stream. + +type parser struct { + parser yaml_parser_t + event yaml_event_t + doc *node +} + +func newParser(b []byte) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("failed to initialize YAML emitter") + } + + if len(b) == 0 { + b = []byte{'\n'} + } + + yaml_parser_set_input_string(&p.parser, b) + + p.skip() + if p.event.typ != yaml_STREAM_START_EVENT { + panic("expected stream start event, got " + strconv.Itoa(int(p.event.typ))) + } + p.skip() + return &p +} + +func (p *parser) destroy() { + if p.event.typ != yaml_NO_EVENT { + yaml_event_delete(&p.event) + } + yaml_parser_delete(&p.parser) +} + +func (p *parser) skip() { + if p.event.typ != yaml_NO_EVENT { + if p.event.typ == yaml_STREAM_END_EVENT { + failf("attempted to go past the end of stream; corrupted value?") + } + yaml_event_delete(&p.event) + } + if !yaml_parser_parse(&p.parser, &p.event) { + p.fail() + } +} + +func (p *parser) fail() { + var where string + var line int + if p.parser.problem_mark.line != 0 { + line = p.parser.problem_mark.line + } else if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + } + if line != 0 { + where = "line " + strconv.Itoa(line) + ": " + } + var msg string + if len(p.parser.problem) > 0 { + msg = p.parser.problem + } else { + msg = "unknown problem parsing YAML content" + } + failf("%s%s", where, msg) +} + +func (p *parser) anchor(n *node, anchor []byte) { + if anchor != nil { + p.doc.anchors[string(anchor)] = n + } +} + +func (p *parser) parse() *node { + switch p.event.typ { + case yaml_SCALAR_EVENT: + return p.scalar() + case yaml_ALIAS_EVENT: + return p.alias() + case yaml_MAPPING_START_EVENT: + return p.mapping() + case yaml_SEQUENCE_START_EVENT: + return p.sequence() + case yaml_DOCUMENT_START_EVENT: + return p.document() + case yaml_STREAM_END_EVENT: + // Happens when attempting to decode an empty buffer. + return nil + default: + panic("attempted to parse unknown event: " + strconv.Itoa(int(p.event.typ))) + } +} + +func (p *parser) node(kind int) *node { + return &node{ + kind: kind, + line: p.event.start_mark.line, + column: p.event.start_mark.column, + } +} + +func (p *parser) document() *node { + n := p.node(documentNode) + n.anchors = make(map[string]*node) + p.doc = n + p.skip() + n.children = append(n.children, p.parse()) + if p.event.typ != yaml_DOCUMENT_END_EVENT { + panic("expected end of document event but got " + strconv.Itoa(int(p.event.typ))) + } + p.skip() + return n +} + +func (p *parser) alias() *node { + n := p.node(aliasNode) + n.value = string(p.event.anchor) + p.skip() + return n +} + +func (p *parser) scalar() *node { + n := p.node(scalarNode) + n.value = string(p.event.value) + n.tag = string(p.event.tag) + n.implicit = p.event.implicit + p.anchor(n, p.event.anchor) + p.skip() + return n +} + +func (p *parser) sequence() *node { + n := p.node(sequenceNode) + p.anchor(n, p.event.anchor) + p.skip() + for p.event.typ != yaml_SEQUENCE_END_EVENT { + n.children = append(n.children, p.parse()) + } + p.skip() + return n +} + +func (p *parser) mapping() *node { + n := p.node(mappingNode) + p.anchor(n, p.event.anchor) + p.skip() + for p.event.typ != yaml_MAPPING_END_EVENT { + n.children = append(n.children, p.parse(), p.parse()) + } + p.skip() + return n +} + +// ---------------------------------------------------------------------------- +// Decoder, unmarshals a node into a provided value. + +type decoder struct { + doc *node + aliases map[string]bool + mapType reflect.Type + terrors []string + strict bool +} + +var ( + mapItemType = reflect.TypeOf(MapItem{}) + durationType = reflect.TypeOf(time.Duration(0)) + defaultMapType = reflect.TypeOf(map[interface{}]interface{}{}) + ifaceType = defaultMapType.Elem() +) + +func newDecoder(strict bool) *decoder { + d := &decoder{mapType: defaultMapType, strict: strict} + d.aliases = make(map[string]bool) + return d +} + +func (d *decoder) terror(n *node, tag string, out reflect.Value) { + if n.tag != "" { + tag = n.tag + } + value := n.value + if tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG { + if len(value) > 10 { + value = " `" + value[:7] + "...`" + } else { + value = " `" + value + "`" + } + } + d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.line+1, shortTag(tag), value, out.Type())) +} + +func (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) { + terrlen := len(d.terrors) + err := u.UnmarshalYAML(func(v interface{}) (err error) { + defer handleErr(&err) + d.unmarshal(n, reflect.ValueOf(v)) + if len(d.terrors) > terrlen { + issues := d.terrors[terrlen:] + d.terrors = d.terrors[:terrlen] + return &TypeError{issues} + } + return nil + }) + if e, ok := err.(*TypeError); ok { + d.terrors = append(d.terrors, e.Errors...) + return false + } + if err != nil { + fail(err) + } + return true +} + +// d.prepare initializes and dereferences pointers and calls UnmarshalYAML +// if a value is found to implement it. +// It returns the initialized and dereferenced out value, whether +// unmarshalling was already done by UnmarshalYAML, and if so whether +// its types unmarshalled appropriately. +// +// If n holds a null value, prepare returns before doing anything. +func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { + if n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == "" && (n.value == "null" || n.value == "~" || n.value == "" && n.implicit) { + return out, false, false + } + again := true + for again { + again = false + if out.Kind() == reflect.Ptr { + if out.IsNil() { + out.Set(reflect.New(out.Type().Elem())) + } + out = out.Elem() + again = true + } + if out.CanAddr() { + if u, ok := out.Addr().Interface().(Unmarshaler); ok { + good = d.callUnmarshaler(n, u) + return out, true, good + } + } + } + return out, false, false +} + +func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) { + switch n.kind { + case documentNode: + return d.document(n, out) + case aliasNode: + return d.alias(n, out) + } + out, unmarshaled, good := d.prepare(n, out) + if unmarshaled { + return good + } + switch n.kind { + case scalarNode: + good = d.scalar(n, out) + case mappingNode: + good = d.mapping(n, out) + case sequenceNode: + good = d.sequence(n, out) + default: + panic("internal error: unknown node kind: " + strconv.Itoa(n.kind)) + } + return good +} + +func (d *decoder) document(n *node, out reflect.Value) (good bool) { + if len(n.children) == 1 { + d.doc = n + d.unmarshal(n.children[0], out) + return true + } + return false +} + +func (d *decoder) alias(n *node, out reflect.Value) (good bool) { + an, ok := d.doc.anchors[n.value] + if !ok { + failf("unknown anchor '%s' referenced", n.value) + } + if d.aliases[n.value] { + failf("anchor '%s' value contains itself", n.value) + } + d.aliases[n.value] = true + good = d.unmarshal(an, out) + delete(d.aliases, n.value) + return good +} + +var zeroValue reflect.Value + +func resetMap(out reflect.Value) { + for _, k := range out.MapKeys() { + out.SetMapIndex(k, zeroValue) + } +} + +func (d *decoder) scalar(n *node, out reflect.Value) (good bool) { + var tag string + var resolved interface{} + if n.tag == "" && !n.implicit { + tag = yaml_STR_TAG + resolved = n.value + } else { + tag, resolved = resolve(n.tag, n.value) + if tag == yaml_BINARY_TAG { + data, err := base64.StdEncoding.DecodeString(resolved.(string)) + if err != nil { + failf("!!binary value contains invalid base64 data") + } + resolved = string(data) + } + } + if resolved == nil { + if out.Kind() == reflect.Map && !out.CanAddr() { + resetMap(out) + } else { + out.Set(reflect.Zero(out.Type())) + } + return true + } + if s, ok := resolved.(string); ok && out.CanAddr() { + if u, ok := out.Addr().Interface().(encoding.TextUnmarshaler); ok { + err := u.UnmarshalText([]byte(s)) + if err != nil { + fail(err) + } + return true + } + } + switch out.Kind() { + case reflect.String: + if tag == yaml_BINARY_TAG { + out.SetString(resolved.(string)) + good = true + } else if resolved != nil { + out.SetString(n.value) + good = true + } + case reflect.Interface: + if resolved == nil { + out.Set(reflect.Zero(out.Type())) + } else { + out.Set(reflect.ValueOf(resolved)) + } + good = true + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + switch resolved := resolved.(type) { + case int: + if !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + good = true + } + case int64: + if !out.OverflowInt(resolved) { + out.SetInt(resolved) + good = true + } + case uint64: + if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + good = true + } + case float64: + if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + good = true + } + case string: + if out.Type() == durationType { + d, err := time.ParseDuration(resolved) + if err == nil { + out.SetInt(int64(d)) + good = true + } + } + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + switch resolved := resolved.(type) { + case int: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + good = true + } + case int64: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + good = true + } + case uint64: + if !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + good = true + } + case float64: + if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + good = true + } + } + case reflect.Bool: + switch resolved := resolved.(type) { + case bool: + out.SetBool(resolved) + good = true + } + case reflect.Float32, reflect.Float64: + switch resolved := resolved.(type) { + case int: + out.SetFloat(float64(resolved)) + good = true + case int64: + out.SetFloat(float64(resolved)) + good = true + case uint64: + out.SetFloat(float64(resolved)) + good = true + case float64: + out.SetFloat(resolved) + good = true + } + case reflect.Ptr: + if out.Type().Elem() == reflect.TypeOf(resolved) { + // TODO DOes this make sense? When is out a Ptr except when decoding a nil value? + elem := reflect.New(out.Type().Elem()) + elem.Elem().Set(reflect.ValueOf(resolved)) + out.Set(elem) + good = true + } + } + if !good { + d.terror(n, tag, out) + } + return good +} + +func settableValueOf(i interface{}) reflect.Value { + v := reflect.ValueOf(i) + sv := reflect.New(v.Type()).Elem() + sv.Set(v) + return sv +} + +func (d *decoder) sequence(n *node, out reflect.Value) (good bool) { + l := len(n.children) + + var iface reflect.Value + switch out.Kind() { + case reflect.Slice: + out.Set(reflect.MakeSlice(out.Type(), l, l)) + case reflect.Interface: + // No type hints. Will have to use a generic sequence. + iface = out + out = settableValueOf(make([]interface{}, l)) + default: + d.terror(n, yaml_SEQ_TAG, out) + return false + } + et := out.Type().Elem() + + j := 0 + for i := 0; i < l; i++ { + e := reflect.New(et).Elem() + if ok := d.unmarshal(n.children[i], e); ok { + out.Index(j).Set(e) + j++ + } + } + out.Set(out.Slice(0, j)) + if iface.IsValid() { + iface.Set(out) + } + return true +} + +func (d *decoder) mapping(n *node, out reflect.Value) (good bool) { + switch out.Kind() { + case reflect.Struct: + return d.mappingStruct(n, out) + case reflect.Slice: + return d.mappingSlice(n, out) + case reflect.Map: + // okay + case reflect.Interface: + if d.mapType.Kind() == reflect.Map { + iface := out + out = reflect.MakeMap(d.mapType) + iface.Set(out) + } else { + slicev := reflect.New(d.mapType).Elem() + if !d.mappingSlice(n, slicev) { + return false + } + out.Set(slicev) + return true + } + default: + d.terror(n, yaml_MAP_TAG, out) + return false + } + outt := out.Type() + kt := outt.Key() + et := outt.Elem() + + mapType := d.mapType + if outt.Key() == ifaceType && outt.Elem() == ifaceType { + d.mapType = outt + } + + if out.IsNil() { + out.Set(reflect.MakeMap(outt)) + } + l := len(n.children) + for i := 0; i < l; i += 2 { + if isMerge(n.children[i]) { + d.merge(n.children[i+1], out) + continue + } + k := reflect.New(kt).Elem() + if d.unmarshal(n.children[i], k) { + kkind := k.Kind() + if kkind == reflect.Interface { + kkind = k.Elem().Kind() + } + if kkind == reflect.Map || kkind == reflect.Slice { + failf("invalid map key: %#v", k.Interface()) + } + e := reflect.New(et).Elem() + if d.unmarshal(n.children[i+1], e) { + out.SetMapIndex(k, e) + } + } + } + d.mapType = mapType + return true +} + +func (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) { + outt := out.Type() + if outt.Elem() != mapItemType { + d.terror(n, yaml_MAP_TAG, out) + return false + } + + mapType := d.mapType + d.mapType = outt + + var slice []MapItem + var l = len(n.children) + for i := 0; i < l; i += 2 { + if isMerge(n.children[i]) { + d.merge(n.children[i+1], out) + continue + } + item := MapItem{} + k := reflect.ValueOf(&item.Key).Elem() + if d.unmarshal(n.children[i], k) { + v := reflect.ValueOf(&item.Value).Elem() + if d.unmarshal(n.children[i+1], v) { + slice = append(slice, item) + } + } + } + out.Set(reflect.ValueOf(slice)) + d.mapType = mapType + return true +} + +func (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) { + sinfo, err := getStructInfo(out.Type()) + if err != nil { + panic(err) + } + name := settableValueOf("") + l := len(n.children) + + var inlineMap reflect.Value + var elemType reflect.Type + if sinfo.InlineMap != -1 { + inlineMap = out.Field(sinfo.InlineMap) + inlineMap.Set(reflect.New(inlineMap.Type()).Elem()) + elemType = inlineMap.Type().Elem() + } + + for i := 0; i < l; i += 2 { + ni := n.children[i] + if isMerge(ni) { + d.merge(n.children[i+1], out) + continue + } + if !d.unmarshal(ni, name) { + continue + } + if info, ok := sinfo.FieldsMap[name.String()]; ok { + var field reflect.Value + if info.Inline == nil { + field = out.Field(info.Num) + } else { + field = out.FieldByIndex(info.Inline) + } + d.unmarshal(n.children[i+1], field) + } else if sinfo.InlineMap != -1 { + if inlineMap.IsNil() { + inlineMap.Set(reflect.MakeMap(inlineMap.Type())) + } + value := reflect.New(elemType).Elem() + d.unmarshal(n.children[i+1], value) + inlineMap.SetMapIndex(name, value) + } else if d.strict { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in struct %s", ni.line+1, name.String(), out.Type())) + } + } + return true +} + +func failWantMap() { + failf("map merge requires map or sequence of maps as the value") +} + +func (d *decoder) merge(n *node, out reflect.Value) { + switch n.kind { + case mappingNode: + d.unmarshal(n, out) + case aliasNode: + an, ok := d.doc.anchors[n.value] + if ok && an.kind != mappingNode { + failWantMap() + } + d.unmarshal(n, out) + case sequenceNode: + // Step backwards as earlier nodes take precedence. + for i := len(n.children) - 1; i >= 0; i-- { + ni := n.children[i] + if ni.kind == aliasNode { + an, ok := d.doc.anchors[ni.value] + if ok && an.kind != mappingNode { + failWantMap() + } + } else if ni.kind != mappingNode { + failWantMap() + } + d.unmarshal(ni, out) + } + default: + failWantMap() + } +} + +func isMerge(n *node) bool { + return n.kind == scalarNode && n.value == "<<" && (n.implicit == true || n.tag == yaml_MERGE_TAG) +} diff --git a/vendor/gopkg.in/yaml.v2/decode_test.go b/vendor/gopkg.in/yaml.v2/decode_test.go new file mode 100644 index 0000000..e5366c2 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/decode_test.go @@ -0,0 +1,1032 @@ +package yaml_test + +import ( + "errors" + . "gopkg.in/check.v1" + "gopkg.in/yaml.v2" + "math" + "net" + "reflect" + "strings" + "time" +) + +var unmarshalIntTest = 123 + +var unmarshalTests = []struct { + data string + value interface{} +}{ + { + "", + &struct{}{}, + }, { + "{}", &struct{}{}, + }, { + "v: hi", + map[string]string{"v": "hi"}, + }, { + "v: hi", map[string]interface{}{"v": "hi"}, + }, { + "v: true", + map[string]string{"v": "true"}, + }, { + "v: true", + map[string]interface{}{"v": true}, + }, { + "v: 10", + map[string]interface{}{"v": 10}, + }, { + "v: 0b10", + map[string]interface{}{"v": 2}, + }, { + "v: 0xA", + map[string]interface{}{"v": 10}, + }, { + "v: 4294967296", + map[string]int64{"v": 4294967296}, + }, { + "v: 0.1", + map[string]interface{}{"v": 0.1}, + }, { + "v: .1", + map[string]interface{}{"v": 0.1}, + }, { + "v: .Inf", + map[string]interface{}{"v": math.Inf(+1)}, + }, { + "v: -.Inf", + map[string]interface{}{"v": math.Inf(-1)}, + }, { + "v: -10", + map[string]interface{}{"v": -10}, + }, { + "v: -.1", + map[string]interface{}{"v": -0.1}, + }, + + // Simple values. + { + "123", + &unmarshalIntTest, + }, + + // Floats from spec + { + "canonical: 6.8523e+5", + map[string]interface{}{"canonical": 6.8523e+5}, + }, { + "expo: 685.230_15e+03", + map[string]interface{}{"expo": 685.23015e+03}, + }, { + "fixed: 685_230.15", + map[string]interface{}{"fixed": 685230.15}, + }, { + "neginf: -.inf", + map[string]interface{}{"neginf": math.Inf(-1)}, + }, { + "fixed: 685_230.15", + map[string]float64{"fixed": 685230.15}, + }, + //{"sexa: 190:20:30.15", map[string]interface{}{"sexa": 0}}, // Unsupported + //{"notanum: .NaN", map[string]interface{}{"notanum": math.NaN()}}, // Equality of NaN fails. + + // Bools from spec + { + "canonical: y", + map[string]interface{}{"canonical": true}, + }, { + "answer: NO", + map[string]interface{}{"answer": false}, + }, { + "logical: True", + map[string]interface{}{"logical": true}, + }, { + "option: on", + map[string]interface{}{"option": true}, + }, { + "option: on", + map[string]bool{"option": true}, + }, + // Ints from spec + { + "canonical: 685230", + map[string]interface{}{"canonical": 685230}, + }, { + "decimal: +685_230", + map[string]interface{}{"decimal": 685230}, + }, { + "octal: 02472256", + map[string]interface{}{"octal": 685230}, + }, { + "hexa: 0x_0A_74_AE", + map[string]interface{}{"hexa": 685230}, + }, { + "bin: 0b1010_0111_0100_1010_1110", + map[string]interface{}{"bin": 685230}, + }, { + "bin: -0b101010", + map[string]interface{}{"bin": -42}, + }, { + "decimal: +685_230", + map[string]int{"decimal": 685230}, + }, + + //{"sexa: 190:20:30", map[string]interface{}{"sexa": 0}}, // Unsupported + + // Nulls from spec + { + "empty:", + map[string]interface{}{"empty": nil}, + }, { + "canonical: ~", + map[string]interface{}{"canonical": nil}, + }, { + "english: null", + map[string]interface{}{"english": nil}, + }, { + "~: null key", + map[interface{}]string{nil: "null key"}, + }, { + "empty:", + map[string]*bool{"empty": nil}, + }, + + // Flow sequence + { + "seq: [A,B]", + map[string]interface{}{"seq": []interface{}{"A", "B"}}, + }, { + "seq: [A,B,C,]", + map[string][]string{"seq": []string{"A", "B", "C"}}, + }, { + "seq: [A,1,C]", + map[string][]string{"seq": []string{"A", "1", "C"}}, + }, { + "seq: [A,1,C]", + map[string][]int{"seq": []int{1}}, + }, { + "seq: [A,1,C]", + map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, + }, + // Block sequence + { + "seq:\n - A\n - B", + map[string]interface{}{"seq": []interface{}{"A", "B"}}, + }, { + "seq:\n - A\n - B\n - C", + map[string][]string{"seq": []string{"A", "B", "C"}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string][]string{"seq": []string{"A", "1", "C"}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string][]int{"seq": []int{1}}, + }, { + "seq:\n - A\n - 1\n - C", + map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, + }, + + // Literal block scalar + { + "scalar: | # Comment\n\n literal\n\n \ttext\n\n", + map[string]string{"scalar": "\nliteral\n\n\ttext\n"}, + }, + + // Folded block scalar + { + "scalar: > # Comment\n\n folded\n line\n \n next\n line\n * one\n * two\n\n last\n line\n\n", + map[string]string{"scalar": "\nfolded line\nnext line\n * one\n * two\n\nlast line\n"}, + }, + + // Map inside interface with no type hints. + { + "a: {b: c}", + map[interface{}]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, + }, + + // Structs and type conversions. + { + "hello: world", + &struct{ Hello string }{"world"}, + }, { + "a: {b: c}", + &struct{ A struct{ B string } }{struct{ B string }{"c"}}, + }, { + "a: {b: c}", + &struct{ A *struct{ B string } }{&struct{ B string }{"c"}}, + }, { + "a: {b: c}", + &struct{ A map[string]string }{map[string]string{"b": "c"}}, + }, { + "a: {b: c}", + &struct{ A *map[string]string }{&map[string]string{"b": "c"}}, + }, { + "a:", + &struct{ A map[string]string }{}, + }, { + "a: 1", + &struct{ A int }{1}, + }, { + "a: 1", + &struct{ A float64 }{1}, + }, { + "a: 1.0", + &struct{ A int }{1}, + }, { + "a: 1.0", + &struct{ A uint }{1}, + }, { + "a: [1, 2]", + &struct{ A []int }{[]int{1, 2}}, + }, { + "a: 1", + &struct{ B int }{0}, + }, { + "a: 1", + &struct { + B int "a" + }{1}, + }, { + "a: y", + &struct{ A bool }{true}, + }, + + // Some cross type conversions + { + "v: 42", + map[string]uint{"v": 42}, + }, { + "v: -42", + map[string]uint{}, + }, { + "v: 4294967296", + map[string]uint64{"v": 4294967296}, + }, { + "v: -4294967296", + map[string]uint64{}, + }, + + // int + { + "int_max: 2147483647", + map[string]int{"int_max": math.MaxInt32}, + }, + { + "int_min: -2147483648", + map[string]int{"int_min": math.MinInt32}, + }, + { + "int_overflow: 9223372036854775808", // math.MaxInt64 + 1 + map[string]int{}, + }, + + // int64 + { + "int64_max: 9223372036854775807", + map[string]int64{"int64_max": math.MaxInt64}, + }, + { + "int64_max_base2: 0b111111111111111111111111111111111111111111111111111111111111111", + map[string]int64{"int64_max_base2": math.MaxInt64}, + }, + { + "int64_min: -9223372036854775808", + map[string]int64{"int64_min": math.MinInt64}, + }, + { + "int64_neg_base2: -0b111111111111111111111111111111111111111111111111111111111111111", + map[string]int64{"int64_neg_base2": -math.MaxInt64}, + }, + { + "int64_overflow: 9223372036854775808", // math.MaxInt64 + 1 + map[string]int64{}, + }, + + // uint + { + "uint_min: 0", + map[string]uint{"uint_min": 0}, + }, + { + "uint_max: 4294967295", + map[string]uint{"uint_max": math.MaxUint32}, + }, + { + "uint_underflow: -1", + map[string]uint{}, + }, + + // uint64 + { + "uint64_min: 0", + map[string]uint{"uint64_min": 0}, + }, + { + "uint64_max: 18446744073709551615", + map[string]uint64{"uint64_max": math.MaxUint64}, + }, + { + "uint64_max_base2: 0b1111111111111111111111111111111111111111111111111111111111111111", + map[string]uint64{"uint64_max_base2": math.MaxUint64}, + }, + { + "uint64_maxint64: 9223372036854775807", + map[string]uint64{"uint64_maxint64": math.MaxInt64}, + }, + { + "uint64_underflow: -1", + map[string]uint64{}, + }, + + // float32 + { + "float32_max: 3.40282346638528859811704183484516925440e+38", + map[string]float32{"float32_max": math.MaxFloat32}, + }, + { + "float32_nonzero: 1.401298464324817070923729583289916131280e-45", + map[string]float32{"float32_nonzero": math.SmallestNonzeroFloat32}, + }, + { + "float32_maxuint64: 18446744073709551615", + map[string]float32{"float32_maxuint64": float32(math.MaxUint64)}, + }, + { + "float32_maxuint64+1: 18446744073709551616", + map[string]float32{"float32_maxuint64+1": float32(math.MaxUint64 + 1)}, + }, + + // float64 + { + "float64_max: 1.797693134862315708145274237317043567981e+308", + map[string]float64{"float64_max": math.MaxFloat64}, + }, + { + "float64_nonzero: 4.940656458412465441765687928682213723651e-324", + map[string]float64{"float64_nonzero": math.SmallestNonzeroFloat64}, + }, + { + "float64_maxuint64: 18446744073709551615", + map[string]float64{"float64_maxuint64": float64(math.MaxUint64)}, + }, + { + "float64_maxuint64+1: 18446744073709551616", + map[string]float64{"float64_maxuint64+1": float64(math.MaxUint64 + 1)}, + }, + + // Overflow cases. + { + "v: 4294967297", + map[string]int32{}, + }, { + "v: 128", + map[string]int8{}, + }, + + // Quoted values. + { + "'1': '\"2\"'", + map[interface{}]interface{}{"1": "\"2\""}, + }, { + "v:\n- A\n- 'B\n\n C'\n", + map[string][]string{"v": []string{"A", "B\nC"}}, + }, + + // Explicit tags. + { + "v: !!float '1.1'", + map[string]interface{}{"v": 1.1}, + }, { + "v: !!null ''", + map[string]interface{}{"v": nil}, + }, { + "%TAG !y! tag:yaml.org,2002:\n---\nv: !y!int '1'", + map[string]interface{}{"v": 1}, + }, + + // Non-specific tag (Issue #75) + { + "v: ! test", + map[string]interface{}{"v": "test"}, + }, + + // Anchors and aliases. + { + "a: &x 1\nb: &y 2\nc: *x\nd: *y\n", + &struct{ A, B, C, D int }{1, 2, 1, 2}, + }, { + "a: &a {c: 1}\nb: *a", + &struct { + A, B struct { + C int + } + }{struct{ C int }{1}, struct{ C int }{1}}, + }, { + "a: &a [1, 2]\nb: *a", + &struct{ B []int }{[]int{1, 2}}, + }, { + "b: *a\na: &a {c: 1}", + &struct { + A, B struct { + C int + } + }{struct{ C int }{1}, struct{ C int }{1}}, + }, + + // Bug #1133337 + { + "foo: ''", + map[string]*string{"foo": new(string)}, + }, { + "foo: null", + map[string]*string{"foo": nil}, + }, { + "foo: null", + map[string]string{"foo": ""}, + }, { + "foo: null", + map[string]interface{}{"foo": nil}, + }, + + // Support for ~ + { + "foo: ~", + map[string]*string{"foo": nil}, + }, { + "foo: ~", + map[string]string{"foo": ""}, + }, { + "foo: ~", + map[string]interface{}{"foo": nil}, + }, + + // Ignored field + { + "a: 1\nb: 2\n", + &struct { + A int + B int "-" + }{1, 0}, + }, + + // Bug #1191981 + { + "" + + "%YAML 1.1\n" + + "--- !!str\n" + + `"Generic line break (no glyph)\n\` + "\n" + + ` Generic line break (glyphed)\n\` + "\n" + + ` Line separator\u2028\` + "\n" + + ` Paragraph separator\u2029"` + "\n", + "" + + "Generic line break (no glyph)\n" + + "Generic line break (glyphed)\n" + + "Line separator\u2028Paragraph separator\u2029", + }, + + // Struct inlining + { + "a: 1\nb: 2\nc: 3\n", + &struct { + A int + C inlineB `yaml:",inline"` + }{1, inlineB{2, inlineC{3}}}, + }, + + // Map inlining + { + "a: 1\nb: 2\nc: 3\n", + &struct { + A int + C map[string]int `yaml:",inline"` + }{1, map[string]int{"b": 2, "c": 3}}, + }, + + // bug 1243827 + { + "a: -b_c", + map[string]interface{}{"a": "-b_c"}, + }, + { + "a: +b_c", + map[string]interface{}{"a": "+b_c"}, + }, + { + "a: 50cent_of_dollar", + map[string]interface{}{"a": "50cent_of_dollar"}, + }, + + // Duration + { + "a: 3s", + map[string]time.Duration{"a": 3 * time.Second}, + }, + + // Issue #24. + { + "a: ", + map[string]string{"a": ""}, + }, + + // Base 60 floats are obsolete and unsupported. + { + "a: 1:1\n", + map[string]string{"a": "1:1"}, + }, + + // Binary data. + { + "a: !!binary gIGC\n", + map[string]string{"a": "\x80\x81\x82"}, + }, { + "a: !!binary |\n " + strings.Repeat("kJCQ", 17) + "kJ\n CQ\n", + map[string]string{"a": strings.Repeat("\x90", 54)}, + }, { + "a: !!binary |\n " + strings.Repeat("A", 70) + "\n ==\n", + map[string]string{"a": strings.Repeat("\x00", 52)}, + }, + + // Ordered maps. + { + "{b: 2, a: 1, d: 4, c: 3, sub: {e: 5}}", + &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}}, + }, + + // Issue #39. + { + "a:\n b:\n c: d\n", + map[string]struct{ B interface{} }{"a": {map[interface{}]interface{}{"c": "d"}}}, + }, + + // Custom map type. + { + "a: {b: c}", + M{"a": M{"b": "c"}}, + }, + + // Support encoding.TextUnmarshaler. + { + "a: 1.2.3.4\n", + map[string]net.IP{"a": net.IPv4(1, 2, 3, 4)}, + }, + { + "a: 2015-02-24T18:19:39Z\n", + map[string]time.Time{"a": time.Unix(1424801979, 0).In(time.UTC)}, + }, + + // Encode empty lists as zero-length slices. + { + "a: []", + &struct{ A []int }{[]int{}}, + }, + + // UTF-16-LE + { + "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n\x00", + M{"ñoño": "very yes"}, + }, + // UTF-16-LE with surrogate. + { + "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \x00=\xd8\xd4\xdf\n\x00", + M{"ñoño": "very yes 🟔"}, + }, + + // UTF-16-BE + { + "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n", + M{"ñoño": "very yes"}, + }, + // UTF-16-BE with surrogate. + { + "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \xd8=\xdf\xd4\x00\n", + M{"ñoño": "very yes 🟔"}, + }, + + // YAML Float regex shouldn't match this + { + "a: 123456e1\n", + M{"a": "123456e1"}, + }, { + "a: 123456E1\n", + M{"a": "123456E1"}, + }, +} + +type M map[interface{}]interface{} + +type inlineB struct { + B int + inlineC `yaml:",inline"` +} + +type inlineC struct { + C int +} + +func (s *S) TestUnmarshal(c *C) { + for i, item := range unmarshalTests { + c.Logf("test %d: %q", i, item.data) + t := reflect.ValueOf(item.value).Type() + var value interface{} + switch t.Kind() { + case reflect.Map: + value = reflect.MakeMap(t).Interface() + case reflect.String: + value = reflect.New(t).Interface() + case reflect.Ptr: + value = reflect.New(t.Elem()).Interface() + default: + c.Fatalf("missing case for %s", t) + } + err := yaml.Unmarshal([]byte(item.data), value) + if _, ok := err.(*yaml.TypeError); !ok { + c.Assert(err, IsNil) + } + if t.Kind() == reflect.String { + c.Assert(*value.(*string), Equals, item.value) + } else { + c.Assert(value, DeepEquals, item.value) + } + } +} + +func (s *S) TestUnmarshalNaN(c *C) { + value := map[string]interface{}{} + err := yaml.Unmarshal([]byte("notanum: .NaN"), &value) + c.Assert(err, IsNil) + c.Assert(math.IsNaN(value["notanum"].(float64)), Equals, true) +} + +var unmarshalErrorTests = []struct { + data, error string +}{ + {"v: !!float 'error'", "yaml: cannot decode !!str `error` as a !!float"}, + {"v: [A,", "yaml: line 1: did not find expected node content"}, + {"v:\n- [A,", "yaml: line 2: did not find expected node content"}, + {"a: *b\n", "yaml: unknown anchor 'b' referenced"}, + {"a: &a\n b: *a\n", "yaml: anchor 'a' value contains itself"}, + {"value: -", "yaml: block sequence entries are not allowed in this context"}, + {"a: !!binary ==", "yaml: !!binary value contains invalid base64 data"}, + {"{[.]}", `yaml: invalid map key: \[\]interface \{\}\{"\."\}`}, + {"{{.}}", `yaml: invalid map key: map\[interface\ \{\}\]interface \{\}\{".":interface \{\}\(nil\)\}`}, + {"%TAG !%79! tag:yaml.org,2002:\n---\nv: !%79!int '1'", "yaml: did not find expected whitespace"}, +} + +func (s *S) TestUnmarshalErrors(c *C) { + for _, item := range unmarshalErrorTests { + var value interface{} + err := yaml.Unmarshal([]byte(item.data), &value) + c.Assert(err, ErrorMatches, item.error, Commentf("Partial unmarshal: %#v", value)) + } +} + +var unmarshalerTests = []struct { + data, tag string + value interface{} +}{ + {"_: {hi: there}", "!!map", map[interface{}]interface{}{"hi": "there"}}, + {"_: [1,A]", "!!seq", []interface{}{1, "A"}}, + {"_: 10", "!!int", 10}, + {"_: null", "!!null", nil}, + {`_: BAR!`, "!!str", "BAR!"}, + {`_: "BAR!"`, "!!str", "BAR!"}, + {"_: !!foo 'BAR!'", "!!foo", "BAR!"}, + {`_: ""`, "!!str", ""}, +} + +var unmarshalerResult = map[int]error{} + +type unmarshalerType struct { + value interface{} +} + +func (o *unmarshalerType) UnmarshalYAML(unmarshal func(v interface{}) error) error { + if err := unmarshal(&o.value); err != nil { + return err + } + if i, ok := o.value.(int); ok { + if result, ok := unmarshalerResult[i]; ok { + return result + } + } + return nil +} + +type unmarshalerPointer struct { + Field *unmarshalerType "_" +} + +type unmarshalerValue struct { + Field unmarshalerType "_" +} + +func (s *S) TestUnmarshalerPointerField(c *C) { + for _, item := range unmarshalerTests { + obj := &unmarshalerPointer{} + err := yaml.Unmarshal([]byte(item.data), obj) + c.Assert(err, IsNil) + if item.value == nil { + c.Assert(obj.Field, IsNil) + } else { + c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value)) + c.Assert(obj.Field.value, DeepEquals, item.value) + } + } +} + +func (s *S) TestUnmarshalerValueField(c *C) { + for _, item := range unmarshalerTests { + obj := &unmarshalerValue{} + err := yaml.Unmarshal([]byte(item.data), obj) + c.Assert(err, IsNil) + c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value)) + c.Assert(obj.Field.value, DeepEquals, item.value) + } +} + +func (s *S) TestUnmarshalerWholeDocument(c *C) { + obj := &unmarshalerType{} + err := yaml.Unmarshal([]byte(unmarshalerTests[0].data), obj) + c.Assert(err, IsNil) + value, ok := obj.value.(map[interface{}]interface{}) + c.Assert(ok, Equals, true, Commentf("value: %#v", obj.value)) + c.Assert(value["_"], DeepEquals, unmarshalerTests[0].value) +} + +func (s *S) TestUnmarshalerTypeError(c *C) { + unmarshalerResult[2] = &yaml.TypeError{[]string{"foo"}} + unmarshalerResult[4] = &yaml.TypeError{[]string{"bar"}} + defer func() { + delete(unmarshalerResult, 2) + delete(unmarshalerResult, 4) + }() + + type T struct { + Before int + After int + M map[string]*unmarshalerType + } + var v T + data := `{before: A, m: {abc: 1, def: 2, ghi: 3, jkl: 4}, after: B}` + err := yaml.Unmarshal([]byte(data), &v) + c.Assert(err, ErrorMatches, ""+ + "yaml: unmarshal errors:\n"+ + " line 1: cannot unmarshal !!str `A` into int\n"+ + " foo\n"+ + " bar\n"+ + " line 1: cannot unmarshal !!str `B` into int") + c.Assert(v.M["abc"], NotNil) + c.Assert(v.M["def"], IsNil) + c.Assert(v.M["ghi"], NotNil) + c.Assert(v.M["jkl"], IsNil) + + c.Assert(v.M["abc"].value, Equals, 1) + c.Assert(v.M["ghi"].value, Equals, 3) +} + +type proxyTypeError struct{} + +func (v *proxyTypeError) UnmarshalYAML(unmarshal func(interface{}) error) error { + var s string + var a int32 + var b int64 + if err := unmarshal(&s); err != nil { + panic(err) + } + if s == "a" { + if err := unmarshal(&b); err == nil { + panic("should have failed") + } + return unmarshal(&a) + } + if err := unmarshal(&a); err == nil { + panic("should have failed") + } + return unmarshal(&b) +} + +func (s *S) TestUnmarshalerTypeErrorProxying(c *C) { + type T struct { + Before int + After int + M map[string]*proxyTypeError + } + var v T + data := `{before: A, m: {abc: a, def: b}, after: B}` + err := yaml.Unmarshal([]byte(data), &v) + c.Assert(err, ErrorMatches, ""+ + "yaml: unmarshal errors:\n"+ + " line 1: cannot unmarshal !!str `A` into int\n"+ + " line 1: cannot unmarshal !!str `a` into int32\n"+ + " line 1: cannot unmarshal !!str `b` into int64\n"+ + " line 1: cannot unmarshal !!str `B` into int") +} + +type failingUnmarshaler struct{} + +var failingErr = errors.New("failingErr") + +func (ft *failingUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error { + return failingErr +} + +func (s *S) TestUnmarshalerError(c *C) { + err := yaml.Unmarshal([]byte("a: b"), &failingUnmarshaler{}) + c.Assert(err, Equals, failingErr) +} + +type sliceUnmarshaler []int + +func (su *sliceUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error { + var slice []int + err := unmarshal(&slice) + if err == nil { + *su = slice + return nil + } + + var intVal int + err = unmarshal(&intVal) + if err == nil { + *su = []int{intVal} + return nil + } + + return err +} + +func (s *S) TestUnmarshalerRetry(c *C) { + var su sliceUnmarshaler + err := yaml.Unmarshal([]byte("[1, 2, 3]"), &su) + c.Assert(err, IsNil) + c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1, 2, 3})) + + err = yaml.Unmarshal([]byte("1"), &su) + c.Assert(err, IsNil) + c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1})) +} + +// From http://yaml.org/type/merge.html +var mergeTests = ` +anchors: + list: + - &CENTER { "x": 1, "y": 2 } + - &LEFT { "x": 0, "y": 2 } + - &BIG { "r": 10 } + - &SMALL { "r": 1 } + +# All the following maps are equal: + +plain: + # Explicit keys + "x": 1 + "y": 2 + "r": 10 + label: center/big + +mergeOne: + # Merge one map + << : *CENTER + "r": 10 + label: center/big + +mergeMultiple: + # Merge multiple maps + << : [ *CENTER, *BIG ] + label: center/big + +override: + # Override + << : [ *BIG, *LEFT, *SMALL ] + "x": 1 + label: center/big + +shortTag: + # Explicit short merge tag + !!merge "<<" : [ *CENTER, *BIG ] + label: center/big + +longTag: + # Explicit merge long tag + ! "<<" : [ *CENTER, *BIG ] + label: center/big + +inlineMap: + # Inlined map + << : {"x": 1, "y": 2, "r": 10} + label: center/big + +inlineSequenceMap: + # Inlined map in sequence + << : [ *CENTER, {"r": 10} ] + label: center/big +` + +func (s *S) TestMerge(c *C) { + var want = map[interface{}]interface{}{ + "x": 1, + "y": 2, + "r": 10, + "label": "center/big", + } + + var m map[interface{}]interface{} + err := yaml.Unmarshal([]byte(mergeTests), &m) + c.Assert(err, IsNil) + for name, test := range m { + if name == "anchors" { + continue + } + c.Assert(test, DeepEquals, want, Commentf("test %q failed", name)) + } +} + +func (s *S) TestMergeStruct(c *C) { + type Data struct { + X, Y, R int + Label string + } + want := Data{1, 2, 10, "center/big"} + + var m map[string]Data + err := yaml.Unmarshal([]byte(mergeTests), &m) + c.Assert(err, IsNil) + for name, test := range m { + if name == "anchors" { + continue + } + c.Assert(test, Equals, want, Commentf("test %q failed", name)) + } +} + +var unmarshalNullTests = []func() interface{}{ + func() interface{} { var v interface{}; v = "v"; return &v }, + func() interface{} { var s = "s"; return &s }, + func() interface{} { var s = "s"; sptr := &s; return &sptr }, + func() interface{} { var i = 1; return &i }, + func() interface{} { var i = 1; iptr := &i; return &iptr }, + func() interface{} { m := map[string]int{"s": 1}; return &m }, + func() interface{} { m := map[string]int{"s": 1}; return m }, +} + +func (s *S) TestUnmarshalNull(c *C) { + for _, test := range unmarshalNullTests { + item := test() + zero := reflect.Zero(reflect.TypeOf(item).Elem()).Interface() + err := yaml.Unmarshal([]byte("null"), item) + c.Assert(err, IsNil) + if reflect.TypeOf(item).Kind() == reflect.Map { + c.Assert(reflect.ValueOf(item).Interface(), DeepEquals, reflect.MakeMap(reflect.TypeOf(item)).Interface()) + } else { + c.Assert(reflect.ValueOf(item).Elem().Interface(), DeepEquals, zero) + } + } +} + +func (s *S) TestUnmarshalSliceOnPreset(c *C) { + // Issue #48. + v := struct{ A []int }{[]int{1}} + yaml.Unmarshal([]byte("a: [2]"), &v) + c.Assert(v.A, DeepEquals, []int{2}) +} + +func (s *S) TestUnmarshalStrict(c *C) { + v := struct{ A, B int }{} + + err := yaml.UnmarshalStrict([]byte("a: 1\nb: 2"), &v) + c.Check(err, IsNil) + err = yaml.Unmarshal([]byte("a: 1\nb: 2\nc: 3"), &v) + c.Check(err, IsNil) + err = yaml.UnmarshalStrict([]byte("a: 1\nb: 2\nc: 3"), &v) + c.Check(err, ErrorMatches, "yaml: unmarshal errors:\n line 3: field c not found in struct struct { A int; B int }") +} + +//var data []byte +//func init() { +// var err error +// data, err = ioutil.ReadFile("/tmp/file.yaml") +// if err != nil { +// panic(err) +// } +//} +// +//func (s *S) BenchmarkUnmarshal(c *C) { +// var err error +// for i := 0; i < c.N; i++ { +// var v map[string]interface{} +// err = yaml.Unmarshal(data, &v) +// } +// if err != nil { +// panic(err) +// } +//} +// +//func (s *S) BenchmarkMarshal(c *C) { +// var v map[string]interface{} +// yaml.Unmarshal(data, &v) +// c.ResetTimer() +// for i := 0; i < c.N; i++ { +// yaml.Marshal(&v) +// } +//} diff --git a/vendor/gopkg.in/yaml.v2/emitterc.go b/vendor/gopkg.in/yaml.v2/emitterc.go new file mode 100644 index 0000000..dcaf502 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/emitterc.go @@ -0,0 +1,1684 @@ +package yaml + +import ( + "bytes" +) + +// Flush the buffer if needed. +func flush(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) { + return yaml_emitter_flush(emitter) + } + return true +} + +// Put a character to the output buffer. +func put(emitter *yaml_emitter_t, value byte) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + emitter.buffer[emitter.buffer_pos] = value + emitter.buffer_pos++ + emitter.column++ + return true +} + +// Put a line break to the output buffer. +func put_break(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + switch emitter.line_break { + case yaml_CR_BREAK: + emitter.buffer[emitter.buffer_pos] = '\r' + emitter.buffer_pos += 1 + case yaml_LN_BREAK: + emitter.buffer[emitter.buffer_pos] = '\n' + emitter.buffer_pos += 1 + case yaml_CRLN_BREAK: + emitter.buffer[emitter.buffer_pos+0] = '\r' + emitter.buffer[emitter.buffer_pos+1] = '\n' + emitter.buffer_pos += 2 + default: + panic("unknown line break setting") + } + emitter.column = 0 + emitter.line++ + return true +} + +// Copy a character from a string into buffer. +func write(emitter *yaml_emitter_t, s []byte, i *int) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + p := emitter.buffer_pos + w := width(s[*i]) + switch w { + case 4: + emitter.buffer[p+3] = s[*i+3] + fallthrough + case 3: + emitter.buffer[p+2] = s[*i+2] + fallthrough + case 2: + emitter.buffer[p+1] = s[*i+1] + fallthrough + case 1: + emitter.buffer[p+0] = s[*i+0] + default: + panic("unknown character width") + } + emitter.column++ + emitter.buffer_pos += w + *i += w + return true +} + +// Write a whole string into buffer. +func write_all(emitter *yaml_emitter_t, s []byte) bool { + for i := 0; i < len(s); { + if !write(emitter, s, &i) { + return false + } + } + return true +} + +// Copy a line break character from a string into buffer. +func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { + if s[*i] == '\n' { + if !put_break(emitter) { + return false + } + *i++ + } else { + if !write(emitter, s, i) { + return false + } + emitter.column = 0 + emitter.line++ + } + return true +} + +// Set an emitter error and return false. +func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_EMITTER_ERROR + emitter.problem = problem + return false +} + +// Emit an event. +func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.events = append(emitter.events, *event) + for !yaml_emitter_need_more_events(emitter) { + event := &emitter.events[emitter.events_head] + if !yaml_emitter_analyze_event(emitter, event) { + return false + } + if !yaml_emitter_state_machine(emitter, event) { + return false + } + yaml_event_delete(event) + emitter.events_head++ + } + return true +} + +// Check if we need to accumulate more events before emitting. +// +// We accumulate extra +// - 1 event for DOCUMENT-START +// - 2 events for SEQUENCE-START +// - 3 events for MAPPING-START +// +func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { + if emitter.events_head == len(emitter.events) { + return true + } + var accumulate int + switch emitter.events[emitter.events_head].typ { + case yaml_DOCUMENT_START_EVENT: + accumulate = 1 + break + case yaml_SEQUENCE_START_EVENT: + accumulate = 2 + break + case yaml_MAPPING_START_EVENT: + accumulate = 3 + break + default: + return false + } + if len(emitter.events)-emitter.events_head > accumulate { + return false + } + var level int + for i := emitter.events_head; i < len(emitter.events); i++ { + switch emitter.events[i].typ { + case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: + level++ + case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: + level-- + } + if level == 0 { + return false + } + } + return true +} + +// Append a directive to the directives stack. +func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { + for i := 0; i < len(emitter.tag_directives); i++ { + if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") + } + } + + // [Go] Do we actually need to copy this given garbage collection + // and the lack of deallocating destructors? + tag_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(tag_copy.handle, value.handle) + copy(tag_copy.prefix, value.prefix) + emitter.tag_directives = append(emitter.tag_directives, tag_copy) + return true +} + +// Increase the indentation level. +func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { + emitter.indents = append(emitter.indents, emitter.indent) + if emitter.indent < 0 { + if flow { + emitter.indent = emitter.best_indent + } else { + emitter.indent = 0 + } + } else if !indentless { + emitter.indent += emitter.best_indent + } + return true +} + +// State dispatcher. +func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { + switch emitter.state { + default: + case yaml_EMIT_STREAM_START_STATE: + return yaml_emitter_emit_stream_start(emitter, event) + + case yaml_EMIT_FIRST_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, true) + + case yaml_EMIT_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, false) + + case yaml_EMIT_DOCUMENT_CONTENT_STATE: + return yaml_emitter_emit_document_content(emitter, event) + + case yaml_EMIT_DOCUMENT_END_STATE: + return yaml_emitter_emit_document_end(emitter, event) + + case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, true) + + case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false) + + case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, true) + + case yaml_EMIT_FLOW_MAPPING_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false) + + case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, true) + + case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, false) + + case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, true) + + case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, false) + + case yaml_EMIT_END_STATE: + return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") + } + panic("invalid emitter state") +} + +// Expect STREAM-START. +func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_STREAM_START_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") + } + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = event.encoding + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = yaml_UTF8_ENCODING + } + } + if emitter.best_indent < 2 || emitter.best_indent > 9 { + emitter.best_indent = 2 + } + if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { + emitter.best_width = 80 + } + if emitter.best_width < 0 { + emitter.best_width = 1<<31 - 1 + } + if emitter.line_break == yaml_ANY_BREAK { + emitter.line_break = yaml_LN_BREAK + } + + emitter.indent = -1 + emitter.line = 0 + emitter.column = 0 + emitter.whitespace = true + emitter.indention = true + + if emitter.encoding != yaml_UTF8_ENCODING { + if !yaml_emitter_write_bom(emitter) { + return false + } + } + emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE + return true +} + +// Expect DOCUMENT-START or STREAM-END. +func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + + if event.typ == yaml_DOCUMENT_START_EVENT { + + if event.version_directive != nil { + if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { + return false + } + } + + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { + return false + } + if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { + return false + } + } + + for i := 0; i < len(default_tag_directives); i++ { + tag_directive := &default_tag_directives[i] + if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { + return false + } + } + + implicit := event.implicit + if !first || emitter.canonical { + implicit = false + } + + if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if event.version_directive != nil { + implicit = false + if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if len(event.tag_directives) > 0 { + implicit = false + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { + return false + } + if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if yaml_emitter_check_empty_document(emitter) { + implicit = false + } + if !implicit { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { + return false + } + if emitter.canonical { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE + return true + } + + if event.typ == yaml_STREAM_END_EVENT { + if emitter.open_ended { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_END_STATE + return true + } + + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") +} + +// Expect the root node. +func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) + return yaml_emitter_emit_node(emitter, event, true, false, false, false) +} + +// Expect DOCUMENT-END. +func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_DOCUMENT_END_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !event.implicit { + // [Go] Allocate the slice elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_DOCUMENT_START_STATE + emitter.tag_directives = emitter.tag_directives[:0] + return true +} + +// Expect a flow item node. +func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_SEQUENCE_END_EVENT { + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.canonical && !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + + return true + } + + if !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) + return yaml_emitter_emit_node(emitter, event, false, true, false, false) +} + +// Expect a flow key node. +func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_MAPPING_END_EVENT { + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.canonical && !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + + if !first { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a flow value node. +func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { + return false + } + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a block item node. +func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) { + return false + } + } + if event.typ == yaml_SEQUENCE_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) + return yaml_emitter_emit_node(emitter, event, false, true, false, false) +} + +// Expect a block key node. +func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, false) { + return false + } + } + if event.typ == yaml_MAPPING_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a block value node. +func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { + return false + } + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a node. +func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, + root bool, sequence bool, mapping bool, simple_key bool) bool { + + emitter.root_context = root + emitter.sequence_context = sequence + emitter.mapping_context = mapping + emitter.simple_key_context = simple_key + + switch event.typ { + case yaml_ALIAS_EVENT: + return yaml_emitter_emit_alias(emitter, event) + case yaml_SCALAR_EVENT: + return yaml_emitter_emit_scalar(emitter, event) + case yaml_SEQUENCE_START_EVENT: + return yaml_emitter_emit_sequence_start(emitter, event) + case yaml_MAPPING_START_EVENT: + return yaml_emitter_emit_mapping_start(emitter, event) + default: + return yaml_emitter_set_emitter_error(emitter, + "expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS") + } +} + +// Expect ALIAS. +func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SCALAR. +func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_select_scalar_style(emitter, event) { + return false + } + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + if !yaml_emitter_process_scalar(emitter) { + return false + } + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SEQUENCE-START. +func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || + yaml_emitter_check_empty_sequence(emitter) { + emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE + } + return true +} + +// Expect MAPPING-START. +func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || + yaml_emitter_check_empty_mapping(emitter) { + emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE + } + return true +} + +// Check if the document content is an empty scalar. +func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { + return false // [Go] Huh? +} + +// Check if the next events represent an empty sequence. +func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT +} + +// Check if the next events represent an empty mapping. +func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT +} + +// Check if the next node can be expressed as a simple key. +func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { + length := 0 + switch emitter.events[emitter.events_head].typ { + case yaml_ALIAS_EVENT: + length += len(emitter.anchor_data.anchor) + case yaml_SCALAR_EVENT: + if emitter.scalar_data.multiline { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + + len(emitter.scalar_data.value) + case yaml_SEQUENCE_START_EVENT: + if !yaml_emitter_check_empty_sequence(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + case yaml_MAPPING_START_EVENT: + if !yaml_emitter_check_empty_mapping(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + default: + return false + } + return length <= 128 +} + +// Determine an acceptable scalar style. +func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 + if no_tag && !event.implicit && !event.quoted_implicit { + return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") + } + + style := event.scalar_style() + if style == yaml_ANY_SCALAR_STYLE { + style = yaml_PLAIN_SCALAR_STYLE + } + if emitter.canonical { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + if emitter.simple_key_context && emitter.scalar_data.multiline { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + if style == yaml_PLAIN_SCALAR_STYLE { + if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || + emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if no_tag && !event.implicit { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { + if !emitter.scalar_data.single_quoted_allowed { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { + if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + + if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { + emitter.tag_data.handle = []byte{'!'} + } + emitter.scalar_data.style = style + return true +} + +// Write an achor. +func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { + if emitter.anchor_data.anchor == nil { + return true + } + c := []byte{'&'} + if emitter.anchor_data.alias { + c[0] = '*' + } + if !yaml_emitter_write_indicator(emitter, c, true, false, false) { + return false + } + return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) +} + +// Write a tag. +func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { + if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { + return true + } + if len(emitter.tag_data.handle) > 0 { + if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { + return false + } + if len(emitter.tag_data.suffix) > 0 { + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + } + } else { + // [Go] Allocate these slices elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { + return false + } + } + return true +} + +// Write a scalar. +func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { + switch emitter.scalar_data.style { + case yaml_PLAIN_SCALAR_STYLE: + return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_SINGLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_DOUBLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_LITERAL_SCALAR_STYLE: + return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) + + case yaml_FOLDED_SCALAR_STYLE: + return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) + } + panic("unknown scalar style") +} + +// Check if a %YAML directive is valid. +func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { + if version_directive.major != 1 || version_directive.minor != 1 { + return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") + } + return true +} + +// Check if a %TAG directive is valid. +func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { + handle := tag_directive.handle + prefix := tag_directive.prefix + if len(handle) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") + } + if handle[0] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") + } + if handle[len(handle)-1] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") + } + for i := 1; i < len(handle)-1; i += width(handle[i]) { + if !is_alpha(handle, i) { + return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") + } + } + if len(prefix) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") + } + return true +} + +// Check if an anchor is valid. +func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { + if len(anchor) == 0 { + problem := "anchor value must not be empty" + if alias { + problem = "alias value must not be empty" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + for i := 0; i < len(anchor); i += width(anchor[i]) { + if !is_alpha(anchor, i) { + problem := "anchor value must contain alphanumerical characters only" + if alias { + problem = "alias value must contain alphanumerical characters only" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + } + emitter.anchor_data.anchor = anchor + emitter.anchor_data.alias = alias + return true +} + +// Check if a tag is valid. +func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { + if len(tag) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") + } + for i := 0; i < len(emitter.tag_directives); i++ { + tag_directive := &emitter.tag_directives[i] + if bytes.HasPrefix(tag, tag_directive.prefix) { + emitter.tag_data.handle = tag_directive.handle + emitter.tag_data.suffix = tag[len(tag_directive.prefix):] + return true + } + } + emitter.tag_data.suffix = tag + return true +} + +// Check if a scalar is valid. +func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { + var ( + block_indicators = false + flow_indicators = false + line_breaks = false + special_characters = false + + leading_space = false + leading_break = false + trailing_space = false + trailing_break = false + break_space = false + space_break = false + + preceded_by_whitespace = false + followed_by_whitespace = false + previous_space = false + previous_break = false + ) + + emitter.scalar_data.value = value + + if len(value) == 0 { + emitter.scalar_data.multiline = false + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = false + return true + } + + if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { + block_indicators = true + flow_indicators = true + } + + preceded_by_whitespace = true + for i, w := 0, 0; i < len(value); i += w { + w = width(value[i]) + followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) + + if i == 0 { + switch value[i] { + case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': + flow_indicators = true + block_indicators = true + case '?', ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '-': + if followed_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } else { + switch value[i] { + case ',', '?', '[', ']', '{', '}': + flow_indicators = true + case ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '#': + if preceded_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } + + if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { + special_characters = true + } + if is_space(value, i) { + if i == 0 { + leading_space = true + } + if i+width(value[i]) == len(value) { + trailing_space = true + } + if previous_break { + break_space = true + } + previous_space = true + previous_break = false + } else if is_break(value, i) { + line_breaks = true + if i == 0 { + leading_break = true + } + if i+width(value[i]) == len(value) { + trailing_break = true + } + if previous_space { + space_break = true + } + previous_space = false + previous_break = true + } else { + previous_space = false + previous_break = false + } + + // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. + preceded_by_whitespace = is_blankz(value, i) + } + + emitter.scalar_data.multiline = line_breaks + emitter.scalar_data.flow_plain_allowed = true + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = true + + if leading_space || leading_break || trailing_space || trailing_break { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if trailing_space { + emitter.scalar_data.block_allowed = false + } + if break_space { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || special_characters { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + emitter.scalar_data.block_allowed = false + } + if line_breaks { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if flow_indicators { + emitter.scalar_data.flow_plain_allowed = false + } + if block_indicators { + emitter.scalar_data.block_plain_allowed = false + } + return true +} + +// Check if the event data is valid. +func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + emitter.anchor_data.anchor = nil + emitter.tag_data.handle = nil + emitter.tag_data.suffix = nil + emitter.scalar_data.value = nil + + switch event.typ { + case yaml_ALIAS_EVENT: + if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { + return false + } + + case yaml_SCALAR_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + if !yaml_emitter_analyze_scalar(emitter, event.value) { + return false + } + + case yaml_SEQUENCE_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + + case yaml_MAPPING_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + } + return true +} + +// Write the BOM character. +func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { + if !flush(emitter) { + return false + } + pos := emitter.buffer_pos + emitter.buffer[pos+0] = '\xEF' + emitter.buffer[pos+1] = '\xBB' + emitter.buffer[pos+2] = '\xBF' + emitter.buffer_pos += 3 + return true +} + +func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { + indent := emitter.indent + if indent < 0 { + indent = 0 + } + if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { + if !put_break(emitter) { + return false + } + } + for emitter.column < indent { + if !put(emitter, ' ') { + return false + } + } + emitter.whitespace = true + emitter.indention = true + return true +} + +func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, indicator) { + return false + } + emitter.whitespace = is_whitespace + emitter.indention = (emitter.indention && is_indention) + emitter.open_ended = false + return true +} + +func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + for i := 0; i < len(value); { + var must_write bool + switch value[i] { + case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': + must_write = true + default: + must_write = is_alpha(value, i) + } + if must_write { + if !write(emitter, value, &i) { + return false + } + } else { + w := width(value[i]) + for k := 0; k < w; k++ { + octet := value[i] + i++ + if !put(emitter, '%') { + return false + } + + c := octet >> 4 + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + + c = octet & 0x0f + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + } + } + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + + emitter.whitespace = false + emitter.indention = false + if emitter.root_context { + emitter.open_ended = true + } + + return true +} + +func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { + return false + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if value[i] == '\'' { + if !put(emitter, '\'') { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + spaces := false + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { + return false + } + + for i := 0; i < len(value); { + if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || + is_bom(value, i) || is_break(value, i) || + value[i] == '"' || value[i] == '\\' { + + octet := value[i] + + var w int + var v rune + switch { + case octet&0x80 == 0x00: + w, v = 1, rune(octet&0x7F) + case octet&0xE0 == 0xC0: + w, v = 2, rune(octet&0x1F) + case octet&0xF0 == 0xE0: + w, v = 3, rune(octet&0x0F) + case octet&0xF8 == 0xF0: + w, v = 4, rune(octet&0x07) + } + for k := 1; k < w; k++ { + octet = value[i+k] + v = (v << 6) + (rune(octet) & 0x3F) + } + i += w + + if !put(emitter, '\\') { + return false + } + + var ok bool + switch v { + case 0x00: + ok = put(emitter, '0') + case 0x07: + ok = put(emitter, 'a') + case 0x08: + ok = put(emitter, 'b') + case 0x09: + ok = put(emitter, 't') + case 0x0A: + ok = put(emitter, 'n') + case 0x0b: + ok = put(emitter, 'v') + case 0x0c: + ok = put(emitter, 'f') + case 0x0d: + ok = put(emitter, 'r') + case 0x1b: + ok = put(emitter, 'e') + case 0x22: + ok = put(emitter, '"') + case 0x5c: + ok = put(emitter, '\\') + case 0x85: + ok = put(emitter, 'N') + case 0xA0: + ok = put(emitter, '_') + case 0x2028: + ok = put(emitter, 'L') + case 0x2029: + ok = put(emitter, 'P') + default: + if v <= 0xFF { + ok = put(emitter, 'x') + w = 2 + } else if v <= 0xFFFF { + ok = put(emitter, 'u') + w = 4 + } else { + ok = put(emitter, 'U') + w = 8 + } + for k := (w - 1) * 4; ok && k >= 0; k -= 4 { + digit := byte((v >> uint(k)) & 0x0F) + if digit < 10 { + ok = put(emitter, digit+'0') + } else { + ok = put(emitter, digit+'A'-10) + } + } + } + if !ok { + return false + } + spaces = false + } else if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if is_space(value, i+1) { + if !put(emitter, '\\') { + return false + } + } + i += width(value[i]) + } else if !write(emitter, value, &i) { + return false + } + spaces = true + } else { + if !write(emitter, value, &i) { + return false + } + spaces = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { + if is_space(value, 0) || is_break(value, 0) { + indent_hint := []byte{'0' + byte(emitter.best_indent)} + if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { + return false + } + } + + emitter.open_ended = false + + var chomp_hint [1]byte + if len(value) == 0 { + chomp_hint[0] = '-' + } else { + i := len(value) - 1 + for value[i]&0xC0 == 0x80 { + i-- + } + if !is_break(value, i) { + chomp_hint[0] = '-' + } else if i == 0 { + chomp_hint[0] = '+' + emitter.open_ended = true + } else { + i-- + for value[i]&0xC0 == 0x80 { + i-- + } + if is_break(value, i) { + chomp_hint[0] = '+' + emitter.open_ended = true + } + } + } + if chomp_hint[0] != 0 { + if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { + return false + } + } + return true +} + +func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !put_break(emitter) { + return false + } + emitter.indention = true + emitter.whitespace = true + breaks := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + + return true +} + +func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + + if !put_break(emitter) { + return false + } + emitter.indention = true + emitter.whitespace = true + + breaks := true + leading_spaces := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !breaks && !leading_spaces && value[i] == '\n' { + k := 0 + for is_break(value, k) { + k += width(value[k]) + } + if !is_blankz(value, k) { + if !put_break(emitter) { + return false + } + } + } + if !write_break(emitter, value, &i) { + return false + } + emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + leading_spaces = is_blank(value, i) + } + if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + emitter.indention = false + breaks = false + } + } + return true +} diff --git a/vendor/gopkg.in/yaml.v2/encode.go b/vendor/gopkg.in/yaml.v2/encode.go new file mode 100644 index 0000000..84f8499 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/encode.go @@ -0,0 +1,306 @@ +package yaml + +import ( + "encoding" + "fmt" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + "time" +) + +type encoder struct { + emitter yaml_emitter_t + event yaml_event_t + out []byte + flow bool +} + +func newEncoder() (e *encoder) { + e = &encoder{} + e.must(yaml_emitter_initialize(&e.emitter)) + yaml_emitter_set_output_string(&e.emitter, &e.out) + yaml_emitter_set_unicode(&e.emitter, true) + e.must(yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING)) + e.emit() + e.must(yaml_document_start_event_initialize(&e.event, nil, nil, true)) + e.emit() + return e +} + +func (e *encoder) finish() { + e.must(yaml_document_end_event_initialize(&e.event, true)) + e.emit() + e.emitter.open_ended = false + e.must(yaml_stream_end_event_initialize(&e.event)) + e.emit() +} + +func (e *encoder) destroy() { + yaml_emitter_delete(&e.emitter) +} + +func (e *encoder) emit() { + // This will internally delete the e.event value. + if !yaml_emitter_emit(&e.emitter, &e.event) && e.event.typ != yaml_DOCUMENT_END_EVENT && e.event.typ != yaml_STREAM_END_EVENT { + e.must(false) + } +} + +func (e *encoder) must(ok bool) { + if !ok { + msg := e.emitter.problem + if msg == "" { + msg = "unknown problem generating YAML content" + } + failf("%s", msg) + } +} + +func (e *encoder) marshal(tag string, in reflect.Value) { + if !in.IsValid() { + e.nilv() + return + } + iface := in.Interface() + if m, ok := iface.(Marshaler); ok { + v, err := m.MarshalYAML() + if err != nil { + fail(err) + } + if v == nil { + e.nilv() + return + } + in = reflect.ValueOf(v) + } else if m, ok := iface.(encoding.TextMarshaler); ok { + text, err := m.MarshalText() + if err != nil { + fail(err) + } + in = reflect.ValueOf(string(text)) + } + switch in.Kind() { + case reflect.Interface: + if in.IsNil() { + e.nilv() + } else { + e.marshal(tag, in.Elem()) + } + case reflect.Map: + e.mapv(tag, in) + case reflect.Ptr: + if in.IsNil() { + e.nilv() + } else { + e.marshal(tag, in.Elem()) + } + case reflect.Struct: + e.structv(tag, in) + case reflect.Slice: + if in.Type().Elem() == mapItemType { + e.itemsv(tag, in) + } else { + e.slicev(tag, in) + } + case reflect.String: + e.stringv(tag, in) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if in.Type() == durationType { + e.stringv(tag, reflect.ValueOf(iface.(time.Duration).String())) + } else { + e.intv(tag, in) + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + e.uintv(tag, in) + case reflect.Float32, reflect.Float64: + e.floatv(tag, in) + case reflect.Bool: + e.boolv(tag, in) + default: + panic("cannot marshal type: " + in.Type().String()) + } +} + +func (e *encoder) mapv(tag string, in reflect.Value) { + e.mappingv(tag, func() { + keys := keyList(in.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + e.marshal("", k) + e.marshal("", in.MapIndex(k)) + } + }) +} + +func (e *encoder) itemsv(tag string, in reflect.Value) { + e.mappingv(tag, func() { + slice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem) + for _, item := range slice { + e.marshal("", reflect.ValueOf(item.Key)) + e.marshal("", reflect.ValueOf(item.Value)) + } + }) +} + +func (e *encoder) structv(tag string, in reflect.Value) { + sinfo, err := getStructInfo(in.Type()) + if err != nil { + panic(err) + } + e.mappingv(tag, func() { + for _, info := range sinfo.FieldsList { + var value reflect.Value + if info.Inline == nil { + value = in.Field(info.Num) + } else { + value = in.FieldByIndex(info.Inline) + } + if info.OmitEmpty && isZero(value) { + continue + } + e.marshal("", reflect.ValueOf(info.Key)) + e.flow = info.Flow + e.marshal("", value) + } + if sinfo.InlineMap >= 0 { + m := in.Field(sinfo.InlineMap) + if m.Len() > 0 { + e.flow = false + keys := keyList(m.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + if _, found := sinfo.FieldsMap[k.String()]; found { + panic(fmt.Sprintf("Can't have key %q in inlined map; conflicts with struct field", k.String())) + } + e.marshal("", k) + e.flow = false + e.marshal("", m.MapIndex(k)) + } + } + } + }) +} + +func (e *encoder) mappingv(tag string, f func()) { + implicit := tag == "" + style := yaml_BLOCK_MAPPING_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_MAPPING_STYLE + } + e.must(yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) + e.emit() + f() + e.must(yaml_mapping_end_event_initialize(&e.event)) + e.emit() +} + +func (e *encoder) slicev(tag string, in reflect.Value) { + implicit := tag == "" + style := yaml_BLOCK_SEQUENCE_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) + e.emit() + n := in.Len() + for i := 0; i < n; i++ { + e.marshal("", in.Index(i)) + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.emit() +} + +// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1. +// +// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported +// in YAML 1.2 and by this package, but these should be marshalled quoted for +// the time being for compatibility with other parsers. +func isBase60Float(s string) (result bool) { + // Fast path. + if s == "" { + return false + } + c := s[0] + if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 { + return false + } + // Do the full match. + return base60float.MatchString(s) +} + +// From http://yaml.org/type/float.html, except the regular expression there +// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. +var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) + +func (e *encoder) stringv(tag string, in reflect.Value) { + var style yaml_scalar_style_t + s := in.String() + rtag, rs := resolve("", s) + if rtag == yaml_BINARY_TAG { + if tag == "" || tag == yaml_STR_TAG { + tag = rtag + s = rs.(string) + } else if tag == yaml_BINARY_TAG { + failf("explicitly tagged !!binary data must be base64-encoded") + } else { + failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) + } + } + if tag == "" && (rtag != yaml_STR_TAG || isBase60Float(s)) { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } else if strings.Contains(s, "\n") { + style = yaml_LITERAL_SCALAR_STYLE + } else { + style = yaml_PLAIN_SCALAR_STYLE + } + e.emitScalar(s, "", tag, style) +} + +func (e *encoder) boolv(tag string, in reflect.Value) { + var s string + if in.Bool() { + s = "true" + } else { + s = "false" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) intv(tag string, in reflect.Value) { + s := strconv.FormatInt(in.Int(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) uintv(tag string, in reflect.Value) { + s := strconv.FormatUint(in.Uint(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) floatv(tag string, in reflect.Value) { + // FIXME: Handle 64 bits here. + s := strconv.FormatFloat(float64(in.Float()), 'g', -1, 32) + switch s { + case "+Inf": + s = ".inf" + case "-Inf": + s = "-.inf" + case "NaN": + s = ".nan" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) nilv() { + e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE) +} + +func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) { + implicit := tag == "" + e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) + e.emit() +} diff --git a/vendor/gopkg.in/yaml.v2/encode_test.go b/vendor/gopkg.in/yaml.v2/encode_test.go new file mode 100644 index 0000000..84099bd --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/encode_test.go @@ -0,0 +1,501 @@ +package yaml_test + +import ( + "fmt" + "math" + "strconv" + "strings" + "time" + + . "gopkg.in/check.v1" + "gopkg.in/yaml.v2" + "net" + "os" +) + +var marshalIntTest = 123 + +var marshalTests = []struct { + value interface{} + data string +}{ + { + nil, + "null\n", + }, { + &struct{}{}, + "{}\n", + }, { + map[string]string{"v": "hi"}, + "v: hi\n", + }, { + map[string]interface{}{"v": "hi"}, + "v: hi\n", + }, { + map[string]string{"v": "true"}, + "v: \"true\"\n", + }, { + map[string]string{"v": "false"}, + "v: \"false\"\n", + }, { + map[string]interface{}{"v": true}, + "v: true\n", + }, { + map[string]interface{}{"v": false}, + "v: false\n", + }, { + map[string]interface{}{"v": 10}, + "v: 10\n", + }, { + map[string]interface{}{"v": -10}, + "v: -10\n", + }, { + map[string]uint{"v": 42}, + "v: 42\n", + }, { + map[string]interface{}{"v": int64(4294967296)}, + "v: 4294967296\n", + }, { + map[string]int64{"v": int64(4294967296)}, + "v: 4294967296\n", + }, { + map[string]uint64{"v": 4294967296}, + "v: 4294967296\n", + }, { + map[string]interface{}{"v": "10"}, + "v: \"10\"\n", + }, { + map[string]interface{}{"v": 0.1}, + "v: 0.1\n", + }, { + map[string]interface{}{"v": float64(0.1)}, + "v: 0.1\n", + }, { + map[string]interface{}{"v": -0.1}, + "v: -0.1\n", + }, { + map[string]interface{}{"v": math.Inf(+1)}, + "v: .inf\n", + }, { + map[string]interface{}{"v": math.Inf(-1)}, + "v: -.inf\n", + }, { + map[string]interface{}{"v": math.NaN()}, + "v: .nan\n", + }, { + map[string]interface{}{"v": nil}, + "v: null\n", + }, { + map[string]interface{}{"v": ""}, + "v: \"\"\n", + }, { + map[string][]string{"v": []string{"A", "B"}}, + "v:\n- A\n- B\n", + }, { + map[string][]string{"v": []string{"A", "B\nC"}}, + "v:\n- A\n- |-\n B\n C\n", + }, { + map[string][]interface{}{"v": []interface{}{"A", 1, map[string][]int{"B": []int{2, 3}}}}, + "v:\n- A\n- 1\n- B:\n - 2\n - 3\n", + }, { + map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, + "a:\n b: c\n", + }, { + map[string]interface{}{"a": "-"}, + "a: '-'\n", + }, + + // Simple values. + { + &marshalIntTest, + "123\n", + }, + + // Structures + { + &struct{ Hello string }{"world"}, + "hello: world\n", + }, { + &struct { + A struct { + B string + } + }{struct{ B string }{"c"}}, + "a:\n b: c\n", + }, { + &struct { + A *struct { + B string + } + }{&struct{ B string }{"c"}}, + "a:\n b: c\n", + }, { + &struct { + A *struct { + B string + } + }{}, + "a: null\n", + }, { + &struct{ A int }{1}, + "a: 1\n", + }, { + &struct{ A []int }{[]int{1, 2}}, + "a:\n- 1\n- 2\n", + }, { + &struct { + B int "a" + }{1}, + "a: 1\n", + }, { + &struct{ A bool }{true}, + "a: true\n", + }, + + // Conditional flag + { + &struct { + A int "a,omitempty" + B int "b,omitempty" + }{1, 0}, + "a: 1\n", + }, { + &struct { + A int "a,omitempty" + B int "b,omitempty" + }{0, 0}, + "{}\n", + }, { + &struct { + A *struct{ X, y int } "a,omitempty,flow" + }{&struct{ X, y int }{1, 2}}, + "a: {x: 1}\n", + }, { + &struct { + A *struct{ X, y int } "a,omitempty,flow" + }{nil}, + "{}\n", + }, { + &struct { + A *struct{ X, y int } "a,omitempty,flow" + }{&struct{ X, y int }{}}, + "a: {x: 0}\n", + }, { + &struct { + A struct{ X, y int } "a,omitempty,flow" + }{struct{ X, y int }{1, 2}}, + "a: {x: 1}\n", + }, { + &struct { + A struct{ X, y int } "a,omitempty,flow" + }{struct{ X, y int }{0, 1}}, + "{}\n", + }, { + &struct { + A float64 "a,omitempty" + B float64 "b,omitempty" + }{1, 0}, + "a: 1\n", + }, + + // Flow flag + { + &struct { + A []int "a,flow" + }{[]int{1, 2}}, + "a: [1, 2]\n", + }, { + &struct { + A map[string]string "a,flow" + }{map[string]string{"b": "c", "d": "e"}}, + "a: {b: c, d: e}\n", + }, { + &struct { + A struct { + B, D string + } "a,flow" + }{struct{ B, D string }{"c", "e"}}, + "a: {b: c, d: e}\n", + }, + + // Unexported field + { + &struct { + u int + A int + }{0, 1}, + "a: 1\n", + }, + + // Ignored field + { + &struct { + A int + B int "-" + }{1, 2}, + "a: 1\n", + }, + + // Struct inlining + { + &struct { + A int + C inlineB `yaml:",inline"` + }{1, inlineB{2, inlineC{3}}}, + "a: 1\nb: 2\nc: 3\n", + }, + + // Map inlining + { + &struct { + A int + C map[string]int `yaml:",inline"` + }{1, map[string]int{"b": 2, "c": 3}}, + "a: 1\nb: 2\nc: 3\n", + }, + + // Duration + { + map[string]time.Duration{"a": 3 * time.Second}, + "a: 3s\n", + }, + + // Issue #24: bug in map merging logic. + { + map[string]string{"a": ""}, + "a: \n", + }, + + // Issue #34: marshal unsupported base 60 floats quoted for compatibility + // with old YAML 1.1 parsers. + { + map[string]string{"a": "1:1"}, + "a: \"1:1\"\n", + }, + + // Binary data. + { + map[string]string{"a": "\x00"}, + "a: \"\\0\"\n", + }, { + map[string]string{"a": "\x80\x81\x82"}, + "a: !!binary gIGC\n", + }, { + map[string]string{"a": strings.Repeat("\x90", 54)}, + "a: !!binary |\n " + strings.Repeat("kJCQ", 17) + "kJ\n CQ\n", + }, + + // Ordered maps. + { + &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}}, + "b: 2\na: 1\nd: 4\nc: 3\nsub:\n e: 5\n", + }, + + // Encode unicode as utf-8 rather than in escaped form. + { + map[string]string{"a": "你好"}, + "a: 你好\n", + }, + + // Support encoding.TextMarshaler. + { + map[string]net.IP{"a": net.IPv4(1, 2, 3, 4)}, + "a: 1.2.3.4\n", + }, + { + map[string]time.Time{"a": time.Unix(1424801979, 0)}, + "a: 2015-02-24T18:19:39Z\n", + }, + + // Ensure strings containing ": " are quoted (reported as PR #43, but not reproducible). + { + map[string]string{"a": "b: c"}, + "a: 'b: c'\n", + }, + + // Containing hash mark ('#') in string should be quoted + { + map[string]string{"a": "Hello #comment"}, + "a: 'Hello #comment'\n", + }, + { + map[string]string{"a": "你好 #comment"}, + "a: '你好 #comment'\n", + }, +} + +func (s *S) TestMarshal(c *C) { + defer os.Setenv("TZ", os.Getenv("TZ")) + os.Setenv("TZ", "UTC") + for _, item := range marshalTests { + data, err := yaml.Marshal(item.value) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, item.data) + } +} + +var marshalErrorTests = []struct { + value interface{} + error string + panic string +}{{ + value: &struct { + B int + inlineB ",inline" + }{1, inlineB{2, inlineC{3}}}, + panic: `Duplicated key 'b' in struct struct \{ B int; .*`, +}, { + value: &struct { + A int + B map[string]int ",inline" + }{1, map[string]int{"a": 2}}, + panic: `Can't have key "a" in inlined map; conflicts with struct field`, +}} + +func (s *S) TestMarshalErrors(c *C) { + for _, item := range marshalErrorTests { + if item.panic != "" { + c.Assert(func() { yaml.Marshal(item.value) }, PanicMatches, item.panic) + } else { + _, err := yaml.Marshal(item.value) + c.Assert(err, ErrorMatches, item.error) + } + } +} + +func (s *S) TestMarshalTypeCache(c *C) { + var data []byte + var err error + func() { + type T struct{ A int } + data, err = yaml.Marshal(&T{}) + c.Assert(err, IsNil) + }() + func() { + type T struct{ B int } + data, err = yaml.Marshal(&T{}) + c.Assert(err, IsNil) + }() + c.Assert(string(data), Equals, "b: 0\n") +} + +var marshalerTests = []struct { + data string + value interface{} +}{ + {"_:\n hi: there\n", map[interface{}]interface{}{"hi": "there"}}, + {"_:\n- 1\n- A\n", []interface{}{1, "A"}}, + {"_: 10\n", 10}, + {"_: null\n", nil}, + {"_: BAR!\n", "BAR!"}, +} + +type marshalerType struct { + value interface{} +} + +func (o marshalerType) MarshalText() ([]byte, error) { + panic("MarshalText called on type with MarshalYAML") +} + +func (o marshalerType) MarshalYAML() (interface{}, error) { + return o.value, nil +} + +type marshalerValue struct { + Field marshalerType "_" +} + +func (s *S) TestMarshaler(c *C) { + for _, item := range marshalerTests { + obj := &marshalerValue{} + obj.Field.value = item.value + data, err := yaml.Marshal(obj) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, string(item.data)) + } +} + +func (s *S) TestMarshalerWholeDocument(c *C) { + obj := &marshalerType{} + obj.value = map[string]string{"hello": "world!"} + data, err := yaml.Marshal(obj) + c.Assert(err, IsNil) + c.Assert(string(data), Equals, "hello: world!\n") +} + +type failingMarshaler struct{} + +func (ft *failingMarshaler) MarshalYAML() (interface{}, error) { + return nil, failingErr +} + +func (s *S) TestMarshalerError(c *C) { + _, err := yaml.Marshal(&failingMarshaler{}) + c.Assert(err, Equals, failingErr) +} + +func (s *S) TestSortedOutput(c *C) { + order := []interface{}{ + false, + true, + 1, + uint(1), + 1.0, + 1.1, + 1.2, + 2, + uint(2), + 2.0, + 2.1, + "", + ".1", + ".2", + ".a", + "1", + "2", + "a!10", + "a/2", + "a/10", + "a~10", + "ab/1", + "b/1", + "b/01", + "b/2", + "b/02", + "b/3", + "b/03", + "b1", + "b01", + "b3", + "c2.10", + "c10.2", + "d1", + "d12", + "d12a", + } + m := make(map[interface{}]int) + for _, k := range order { + m[k] = 1 + } + data, err := yaml.Marshal(m) + c.Assert(err, IsNil) + out := "\n" + string(data) + last := 0 + for i, k := range order { + repr := fmt.Sprint(k) + if s, ok := k.(string); ok { + if _, err = strconv.ParseFloat(repr, 32); s == "" || err == nil { + repr = `"` + repr + `"` + } + } + index := strings.Index(out, "\n"+repr+":") + if index == -1 { + c.Fatalf("%#v is not in the output: %#v", k, out) + } + if index < last { + c.Fatalf("%#v was generated before %#v: %q", k, order[i-1], out) + } + last = index + } +} diff --git a/vendor/gopkg.in/yaml.v2/example_embedded_test.go b/vendor/gopkg.in/yaml.v2/example_embedded_test.go new file mode 100644 index 0000000..171c093 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/example_embedded_test.go @@ -0,0 +1,41 @@ +package yaml_test + +import ( + "fmt" + "log" + + "gopkg.in/yaml.v2" +) + +// An example showing how to unmarshal embedded +// structs from YAML. + +type StructA struct { + A string `yaml:"a"` +} + +type StructB struct { + // Embedded structs are not treated as embedded in YAML by default. To do that, + // add the ",inline" annotation below + StructA `yaml:",inline"` + B string `yaml:"b"` +} + +var data = ` +a: a string from struct A +b: a string from struct B +` + +func ExampleUnmarshal_embedded() { + var b StructB + + err := yaml.Unmarshal([]byte(data), &b) + if err != nil { + log.Fatalf("cannot unmarshal data: %v", err) + } + fmt.Println(b.A) + fmt.Println(b.B) + // Output: + // a string from struct A + // a string from struct B +} diff --git a/vendor/gopkg.in/yaml.v2/parserc.go b/vendor/gopkg.in/yaml.v2/parserc.go new file mode 100644 index 0000000..81d05df --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/parserc.go @@ -0,0 +1,1095 @@ +package yaml + +import ( + "bytes" +) + +// The parser implements the following grammar: +// +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// implicit_document ::= block_node DOCUMENT-END* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// block_node_or_indentless_sequence ::= +// ALIAS +// | properties (block_content | indentless_block_sequence)? +// | block_content +// | indentless_block_sequence +// block_node ::= ALIAS +// | properties block_content? +// | block_content +// flow_node ::= ALIAS +// | properties flow_content? +// | flow_content +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// block_content ::= block_collection | flow_collection | SCALAR +// flow_content ::= flow_collection | SCALAR +// block_collection ::= block_sequence | block_mapping +// flow_collection ::= flow_sequence | flow_mapping +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// block_mapping ::= BLOCK-MAPPING_START +// ((KEY block_node_or_indentless_sequence?)? +// (VALUE block_node_or_indentless_sequence?)?)* +// BLOCK-END +// flow_sequence ::= FLOW-SEQUENCE-START +// (flow_sequence_entry FLOW-ENTRY)* +// flow_sequence_entry? +// FLOW-SEQUENCE-END +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// flow_mapping ::= FLOW-MAPPING-START +// (flow_mapping_entry FLOW-ENTRY)* +// flow_mapping_entry? +// FLOW-MAPPING-END +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + +// Peek the next token in the token queue. +func peek_token(parser *yaml_parser_t) *yaml_token_t { + if parser.token_available || yaml_parser_fetch_more_tokens(parser) { + return &parser.tokens[parser.tokens_head] + } + return nil +} + +// Remove the next token from the queue (must be called after peek_token). +func skip_token(parser *yaml_parser_t) { + parser.token_available = false + parser.tokens_parsed++ + parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN + parser.tokens_head++ +} + +// Get the next event. +func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { + // Erase the event object. + *event = yaml_event_t{} + + // No events after the end of the stream or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { + return true + } + + // Generate the next event. + return yaml_parser_state_machine(parser, event) +} + +// Set parser error. +func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +// State dispatcher. +func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { + //trace("yaml_parser_state_machine", "state:", parser.state.String()) + + switch parser.state { + case yaml_PARSE_STREAM_START_STATE: + return yaml_parser_parse_stream_start(parser, event) + + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, true) + + case yaml_PARSE_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, false) + + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return yaml_parser_parse_document_content(parser, event) + + case yaml_PARSE_DOCUMENT_END_STATE: + return yaml_parser_parse_document_end(parser, event) + + case yaml_PARSE_BLOCK_NODE_STATE: + return yaml_parser_parse_node(parser, event, true, false) + + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return yaml_parser_parse_node(parser, event, true, true) + + case yaml_PARSE_FLOW_NODE_STATE: + return yaml_parser_parse_node(parser, event, false, false) + + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, true) + + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, false) + + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_indentless_sequence_entry(parser, event) + + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, true) + + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, false) + + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return yaml_parser_parse_block_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, true) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, false) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) + + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, true) + + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, true) + + default: + panic("invalid parser state") + } +} + +// Parse the production: +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// ************ +func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_STREAM_START_TOKEN { + return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark) + } + parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + encoding: token.encoding, + } + skip_token(parser) + return true +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// * +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// ************************* +func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { + + token := peek_token(parser) + if token == nil { + return false + } + + // Parse extra document end indicators. + if !implicit { + for token.typ == yaml_DOCUMENT_END_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && + token.typ != yaml_TAG_DIRECTIVE_TOKEN && + token.typ != yaml_DOCUMENT_START_TOKEN && + token.typ != yaml_STREAM_END_TOKEN { + // Parse an implicit document. + if !yaml_parser_process_directives(parser, nil, nil) { + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_BLOCK_NODE_STATE + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + } else if token.typ != yaml_STREAM_END_TOKEN { + // Parse an explicit document. + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + start_mark := token.start_mark + if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { + return false + } + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_DOCUMENT_START_TOKEN { + yaml_parser_set_parser_error(parser, + "did not find expected ", token.start_mark) + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE + end_mark := token.end_mark + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: false, + } + skip_token(parser) + + } else { + // Parse the stream end. + parser.state = yaml_PARSE_END_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + } + + return true +} + +// Parse the productions: +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// *********** +// +func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || + token.typ == yaml_TAG_DIRECTIVE_TOKEN || + token.typ == yaml_DOCUMENT_START_TOKEN || + token.typ == yaml_DOCUMENT_END_TOKEN || + token.typ == yaml_STREAM_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + return yaml_parser_process_empty_scalar(parser, event, + token.start_mark) + } + return yaml_parser_parse_node(parser, event, true, false) +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// ************* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// +func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + start_mark := token.start_mark + end_mark := token.start_mark + + implicit := true + if token.typ == yaml_DOCUMENT_END_TOKEN { + end_mark = token.end_mark + skip_token(parser) + implicit = false + } + + parser.tag_directives = parser.tag_directives[:0] + + parser.state = yaml_PARSE_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + start_mark: start_mark, + end_mark: end_mark, + implicit: implicit, + } + return true +} + +// Parse the productions: +// block_node_or_indentless_sequence ::= +// ALIAS +// ***** +// | properties (block_content | indentless_block_sequence)? +// ********** * +// | block_content | indentless_block_sequence +// * +// block_node ::= ALIAS +// ***** +// | properties block_content? +// ********** * +// | block_content +// * +// flow_node ::= ALIAS +// ***** +// | properties flow_content? +// ********** * +// | flow_content +// * +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// ************************* +// block_content ::= block_collection | flow_collection | SCALAR +// ****** +// flow_content ::= flow_collection | SCALAR +// ****** +func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { + //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_ALIAS_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + anchor: token.value, + } + skip_token(parser) + return true + } + + start_mark := token.start_mark + end_mark := token.start_mark + + var tag_token bool + var tag_handle, tag_suffix, anchor []byte + var tag_mark yaml_mark_t + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + start_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } else if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + start_mark = token.start_mark + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + var tag []byte + if tag_token { + if len(tag_handle) == 0 { + tag = tag_suffix + tag_suffix = nil + } else { + for i := range parser.tag_directives { + if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { + tag = append([]byte(nil), parser.tag_directives[i].prefix...) + tag = append(tag, tag_suffix...) + break + } + } + if len(tag) == 0 { + yaml_parser_set_parser_error_context(parser, + "while parsing a node", start_mark, + "found undefined tag handle", tag_mark) + return false + } + } + } + + implicit := len(tag) == 0 + if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + return true + } + if token.typ == yaml_SCALAR_TOKEN { + var plain_implicit, quoted_implicit bool + end_mark = token.end_mark + if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { + plain_implicit = true + } else if len(tag) == 0 { + quoted_implicit = true + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + value: token.value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(token.style), + } + skip_token(parser) + return true + } + if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { + // [Go] Some of the events below can be merged as they differ only on style. + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), + } + return true + } + if token.typ == yaml_FLOW_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + return true + } + if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + return true + } + if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), + } + return true + } + if len(anchor) > 0 || len(tag) > 0 { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + quoted_implicit: false, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true + } + + context := "while parsing a flow node" + if block { + context = "while parsing a block node" + } + yaml_parser_set_parser_error_context(parser, context, start_mark, + "did not find expected node content", token.start_mark) + return false +} + +// Parse the productions: +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// ******************** *********** * ********* +// +func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } else { + parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } + if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block collection", context_mark, + "did not find expected '-' indicator", token.start_mark) +} + +// Parse the productions: +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// *********** * +func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && + token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? + } + return true +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// ******************* +// ((KEY block_node_or_indentless_sequence?)? +// *** * +// (VALUE block_node_or_indentless_sequence?)?)* +// +// BLOCK-END +// ********* +// +func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_KEY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } else { + parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } else if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block mapping", context_mark, + "did not find expected key", token.start_mark) +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// +// ((KEY block_node_or_indentless_sequence?)? +// +// (VALUE block_node_or_indentless_sequence?)?)* +// ***** * +// BLOCK-END +// +// +func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence ::= FLOW-SEQUENCE-START +// ******************* +// (flow_sequence_entry FLOW-ENTRY)* +// * ********** +// flow_sequence_entry? +// * +// FLOW-SEQUENCE-END +// ***************** +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow sequence", context_mark, + "did not find expected ',' or ']'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + implicit: true, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + skip_token(parser) + return true + } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + skip_token(parser) + return true +} + +// +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// *** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + mark := token.end_mark + skip_token(parser) + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// ***** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? + } + return true +} + +// Parse the productions: +// flow_mapping ::= FLOW-MAPPING-START +// ****************** +// (flow_mapping_entry FLOW-ENTRY)* +// * ********** +// flow_mapping_entry? +// ****************** +// FLOW-MAPPING-END +// **************** +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * *** * +// +func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow mapping", context_mark, + "did not find expected ',' or '}'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } else { + parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + return true +} + +// Parse the productions: +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * ***** * +// +func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { + token := peek_token(parser) + if token == nil { + return false + } + if empty { + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Generate an empty scalar event. +func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: mark, + end_mark: mark, + value: nil, // Empty + implicit: true, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true +} + +var default_tag_directives = []yaml_tag_directive_t{ + {[]byte("!"), []byte("!")}, + {[]byte("!!"), []byte("tag:yaml.org,2002:")}, +} + +// Parse directives. +func yaml_parser_process_directives(parser *yaml_parser_t, + version_directive_ref **yaml_version_directive_t, + tag_directives_ref *[]yaml_tag_directive_t) bool { + + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + + token := peek_token(parser) + if token == nil { + return false + } + + for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { + if version_directive != nil { + yaml_parser_set_parser_error(parser, + "found duplicate %YAML directive", token.start_mark) + return false + } + if token.major != 1 || token.minor != 1 { + yaml_parser_set_parser_error(parser, + "found incompatible YAML document", token.start_mark) + return false + } + version_directive = &yaml_version_directive_t{ + major: token.major, + minor: token.minor, + } + } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { + value := yaml_tag_directive_t{ + handle: token.value, + prefix: token.prefix, + } + if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { + return false + } + tag_directives = append(tag_directives, value) + } + + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + + for i := range default_tag_directives { + if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { + return false + } + } + + if version_directive_ref != nil { + *version_directive_ref = version_directive + } + if tag_directives_ref != nil { + *tag_directives_ref = tag_directives + } + return true +} + +// Append a tag directive to the directives stack. +func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { + for i := range parser.tag_directives { + if bytes.Equal(value.handle, parser.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) + } + } + + // [Go] I suspect the copy is unnecessary. This was likely done + // because there was no way to track ownership of the data. + value_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(value_copy.handle, value.handle) + copy(value_copy.prefix, value.prefix) + parser.tag_directives = append(parser.tag_directives, value_copy) + return true +} diff --git a/vendor/gopkg.in/yaml.v2/readerc.go b/vendor/gopkg.in/yaml.v2/readerc.go new file mode 100644 index 0000000..f450791 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/readerc.go @@ -0,0 +1,394 @@ +package yaml + +import ( + "io" +) + +// Set the reader error and return 0. +func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { + parser.error = yaml_READER_ERROR + parser.problem = problem + parser.problem_offset = offset + parser.problem_value = value + return false +} + +// Byte order marks. +const ( + bom_UTF8 = "\xef\xbb\xbf" + bom_UTF16LE = "\xff\xfe" + bom_UTF16BE = "\xfe\xff" +) + +// Determine the input stream encoding by checking the BOM symbol. If no BOM is +// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. +func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { + // Ensure that we had enough bytes in the raw buffer. + for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { + if !yaml_parser_update_raw_buffer(parser) { + return false + } + } + + // Determine the encoding. + buf := parser.raw_buffer + pos := parser.raw_buffer_pos + avail := len(buf) - pos + if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { + parser.encoding = yaml_UTF16LE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { + parser.encoding = yaml_UTF16BE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { + parser.encoding = yaml_UTF8_ENCODING + parser.raw_buffer_pos += 3 + parser.offset += 3 + } else { + parser.encoding = yaml_UTF8_ENCODING + } + return true +} + +// Update the raw buffer. +func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { + size_read := 0 + + // Return if the raw buffer is full. + if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { + return true + } + + // Return on EOF. + if parser.eof { + return true + } + + // Move the remaining bytes in the raw buffer to the beginning. + if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { + copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) + } + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] + parser.raw_buffer_pos = 0 + + // Call the read handler to fill the buffer. + size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] + if err == io.EOF { + parser.eof = true + } else if err != nil { + return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) + } + return true +} + +// Ensure that the buffer contains at least `length` characters. +// Return true on success, false on failure. +// +// The length is supposed to be significantly less that the buffer size. +func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { + if parser.read_handler == nil { + panic("read handler must be set") + } + + // If the EOF flag is set and the raw buffer is empty, do nothing. + if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { + return true + } + + // Return if the buffer contains enough characters. + if parser.unread >= length { + return true + } + + // Determine the input encoding if it is not known yet. + if parser.encoding == yaml_ANY_ENCODING { + if !yaml_parser_determine_encoding(parser) { + return false + } + } + + // Move the unread characters to the beginning of the buffer. + buffer_len := len(parser.buffer) + if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { + copy(parser.buffer, parser.buffer[parser.buffer_pos:]) + buffer_len -= parser.buffer_pos + parser.buffer_pos = 0 + } else if parser.buffer_pos == buffer_len { + buffer_len = 0 + parser.buffer_pos = 0 + } + + // Open the whole buffer for writing, and cut it before returning. + parser.buffer = parser.buffer[:cap(parser.buffer)] + + // Fill the buffer until it has enough characters. + first := true + for parser.unread < length { + + // Fill the raw buffer if necessary. + if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { + if !yaml_parser_update_raw_buffer(parser) { + parser.buffer = parser.buffer[:buffer_len] + return false + } + } + first = false + + // Decode the raw buffer. + inner: + for parser.raw_buffer_pos != len(parser.raw_buffer) { + var value rune + var width int + + raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos + + // Decode the next character. + switch parser.encoding { + case yaml_UTF8_ENCODING: + // Decode a UTF-8 character. Check RFC 3629 + // (http://www.ietf.org/rfc/rfc3629.txt) for more details. + // + // The following table (taken from the RFC) is used for + // decoding. + // + // Char. number range | UTF-8 octet sequence + // (hexadecimal) | (binary) + // --------------------+------------------------------------ + // 0000 0000-0000 007F | 0xxxxxxx + // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx + // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx + // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + // + // Additionally, the characters in the range 0xD800-0xDFFF + // are prohibited as they are reserved for use with UTF-16 + // surrogate pairs. + + // Determine the length of the UTF-8 sequence. + octet := parser.raw_buffer[parser.raw_buffer_pos] + switch { + case octet&0x80 == 0x00: + width = 1 + case octet&0xE0 == 0xC0: + width = 2 + case octet&0xF0 == 0xE0: + width = 3 + case octet&0xF8 == 0xF0: + width = 4 + default: + // The leading octet is invalid. + return yaml_parser_set_reader_error(parser, + "invalid leading UTF-8 octet", + parser.offset, int(octet)) + } + + // Check if the raw buffer contains an incomplete character. + if width > raw_unread { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-8 octet sequence", + parser.offset, -1) + } + break inner + } + + // Decode the leading octet. + switch { + case octet&0x80 == 0x00: + value = rune(octet & 0x7F) + case octet&0xE0 == 0xC0: + value = rune(octet & 0x1F) + case octet&0xF0 == 0xE0: + value = rune(octet & 0x0F) + case octet&0xF8 == 0xF0: + value = rune(octet & 0x07) + default: + value = 0 + } + + // Check and decode the trailing octets. + for k := 1; k < width; k++ { + octet = parser.raw_buffer[parser.raw_buffer_pos+k] + + // Check if the octet is valid. + if (octet & 0xC0) != 0x80 { + return yaml_parser_set_reader_error(parser, + "invalid trailing UTF-8 octet", + parser.offset+k, int(octet)) + } + + // Decode the octet. + value = (value << 6) + rune(octet&0x3F) + } + + // Check the length of the sequence against the value. + switch { + case width == 1: + case width == 2 && value >= 0x80: + case width == 3 && value >= 0x800: + case width == 4 && value >= 0x10000: + default: + return yaml_parser_set_reader_error(parser, + "invalid length of a UTF-8 sequence", + parser.offset, -1) + } + + // Check the range of the value. + if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { + return yaml_parser_set_reader_error(parser, + "invalid Unicode character", + parser.offset, int(value)) + } + + case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: + var low, high int + if parser.encoding == yaml_UTF16LE_ENCODING { + low, high = 0, 1 + } else { + low, high = 1, 0 + } + + // The UTF-16 encoding is not as simple as one might + // naively think. Check RFC 2781 + // (http://www.ietf.org/rfc/rfc2781.txt). + // + // Normally, two subsequent bytes describe a Unicode + // character. However a special technique (called a + // surrogate pair) is used for specifying character + // values larger than 0xFFFF. + // + // A surrogate pair consists of two pseudo-characters: + // high surrogate area (0xD800-0xDBFF) + // low surrogate area (0xDC00-0xDFFF) + // + // The following formulas are used for decoding + // and encoding characters using surrogate pairs: + // + // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) + // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) + // W1 = 110110yyyyyyyyyy + // W2 = 110111xxxxxxxxxx + // + // where U is the character value, W1 is the high surrogate + // area, W2 is the low surrogate area. + + // Check for incomplete UTF-16 character. + if raw_unread < 2 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 character", + parser.offset, -1) + } + break inner + } + + // Get the character. + value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) + + // Check for unexpected low surrogate area. + if value&0xFC00 == 0xDC00 { + return yaml_parser_set_reader_error(parser, + "unexpected low surrogate area", + parser.offset, int(value)) + } + + // Check for a high surrogate area. + if value&0xFC00 == 0xD800 { + width = 4 + + // Check for incomplete surrogate pair. + if raw_unread < 4 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 surrogate pair", + parser.offset, -1) + } + break inner + } + + // Get the next character. + value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) + + // Check for a low surrogate area. + if value2&0xFC00 != 0xDC00 { + return yaml_parser_set_reader_error(parser, + "expected low surrogate area", + parser.offset+2, int(value2)) + } + + // Generate the value of the surrogate pair. + value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) + } else { + width = 2 + } + + default: + panic("impossible") + } + + // Check if the character is in the allowed range: + // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) + // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) + // | [#x10000-#x10FFFF] (32 bit) + switch { + case value == 0x09: + case value == 0x0A: + case value == 0x0D: + case value >= 0x20 && value <= 0x7E: + case value == 0x85: + case value >= 0xA0 && value <= 0xD7FF: + case value >= 0xE000 && value <= 0xFFFD: + case value >= 0x10000 && value <= 0x10FFFF: + default: + return yaml_parser_set_reader_error(parser, + "control characters are not allowed", + parser.offset, int(value)) + } + + // Move the raw pointers. + parser.raw_buffer_pos += width + parser.offset += width + + // Finally put the character into the buffer. + if value <= 0x7F { + // 0000 0000-0000 007F . 0xxxxxxx + parser.buffer[buffer_len+0] = byte(value) + buffer_len += 1 + } else if value <= 0x7FF { + // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) + parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) + buffer_len += 2 + } else if value <= 0xFFFF { + // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) + buffer_len += 3 + } else { + // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) + buffer_len += 4 + } + + parser.unread++ + } + + // On EOF, put NUL into the buffer and return. + if parser.eof { + parser.buffer[buffer_len] = 0 + buffer_len++ + parser.unread++ + break + } + } + parser.buffer = parser.buffer[:buffer_len] + return true +} diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go new file mode 100644 index 0000000..232313c --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/resolve.go @@ -0,0 +1,208 @@ +package yaml + +import ( + "encoding/base64" + "math" + "regexp" + "strconv" + "strings" + "unicode/utf8" +) + +type resolveMapItem struct { + value interface{} + tag string +} + +var resolveTable = make([]byte, 256) +var resolveMap = make(map[string]resolveMapItem) + +func init() { + t := resolveTable + t[int('+')] = 'S' // Sign + t[int('-')] = 'S' + for _, c := range "0123456789" { + t[int(c)] = 'D' // Digit + } + for _, c := range "yYnNtTfFoO~" { + t[int(c)] = 'M' // In map + } + t[int('.')] = '.' // Float (potentially in map) + + var resolveMapList = []struct { + v interface{} + tag string + l []string + }{ + {true, yaml_BOOL_TAG, []string{"y", "Y", "yes", "Yes", "YES"}}, + {true, yaml_BOOL_TAG, []string{"true", "True", "TRUE"}}, + {true, yaml_BOOL_TAG, []string{"on", "On", "ON"}}, + {false, yaml_BOOL_TAG, []string{"n", "N", "no", "No", "NO"}}, + {false, yaml_BOOL_TAG, []string{"false", "False", "FALSE"}}, + {false, yaml_BOOL_TAG, []string{"off", "Off", "OFF"}}, + {nil, yaml_NULL_TAG, []string{"", "~", "null", "Null", "NULL"}}, + {math.NaN(), yaml_FLOAT_TAG, []string{".nan", ".NaN", ".NAN"}}, + {math.Inf(+1), yaml_FLOAT_TAG, []string{".inf", ".Inf", ".INF"}}, + {math.Inf(+1), yaml_FLOAT_TAG, []string{"+.inf", "+.Inf", "+.INF"}}, + {math.Inf(-1), yaml_FLOAT_TAG, []string{"-.inf", "-.Inf", "-.INF"}}, + {"<<", yaml_MERGE_TAG, []string{"<<"}}, + } + + m := resolveMap + for _, item := range resolveMapList { + for _, s := range item.l { + m[s] = resolveMapItem{item.v, item.tag} + } + } +} + +const longTagPrefix = "tag:yaml.org,2002:" + +func shortTag(tag string) string { + // TODO This can easily be made faster and produce less garbage. + if strings.HasPrefix(tag, longTagPrefix) { + return "!!" + tag[len(longTagPrefix):] + } + return tag +} + +func longTag(tag string) string { + if strings.HasPrefix(tag, "!!") { + return longTagPrefix + tag[2:] + } + return tag +} + +func resolvableTag(tag string) bool { + switch tag { + case "", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG: + return true + } + return false +} + +var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) + +func resolve(tag string, in string) (rtag string, out interface{}) { + if !resolvableTag(tag) { + return tag, in + } + + defer func() { + switch tag { + case "", rtag, yaml_STR_TAG, yaml_BINARY_TAG: + return + } + failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag)) + }() + + // Any data is accepted as a !!str or !!binary. + // Otherwise, the prefix is enough of a hint about what it might be. + hint := byte('N') + if in != "" { + hint = resolveTable[in[0]] + } + if hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG { + // Handle things we can lookup in a map. + if item, ok := resolveMap[in]; ok { + return item.tag, item.value + } + + // Base 60 floats are a bad idea, were dropped in YAML 1.2, and + // are purposefully unsupported here. They're still quoted on + // the way out for compatibility with other parser, though. + + switch hint { + case 'M': + // We've already checked the map above. + + case '.': + // Not in the map, so maybe a normal float. + floatv, err := strconv.ParseFloat(in, 64) + if err == nil { + return yaml_FLOAT_TAG, floatv + } + + case 'D', 'S': + // Int, float, or timestamp. + plain := strings.Replace(in, "_", "", -1) + intv, err := strconv.ParseInt(plain, 0, 64) + if err == nil { + if intv == int64(int(intv)) { + return yaml_INT_TAG, int(intv) + } else { + return yaml_INT_TAG, intv + } + } + uintv, err := strconv.ParseUint(plain, 0, 64) + if err == nil { + return yaml_INT_TAG, uintv + } + if yamlStyleFloat.MatchString(plain) { + floatv, err := strconv.ParseFloat(plain, 64) + if err == nil { + return yaml_FLOAT_TAG, floatv + } + } + if strings.HasPrefix(plain, "0b") { + intv, err := strconv.ParseInt(plain[2:], 2, 64) + if err == nil { + if intv == int64(int(intv)) { + return yaml_INT_TAG, int(intv) + } else { + return yaml_INT_TAG, intv + } + } + uintv, err := strconv.ParseUint(plain[2:], 2, 64) + if err == nil { + return yaml_INT_TAG, uintv + } + } else if strings.HasPrefix(plain, "-0b") { + intv, err := strconv.ParseInt(plain[3:], 2, 64) + if err == nil { + if intv == int64(int(intv)) { + return yaml_INT_TAG, -int(intv) + } else { + return yaml_INT_TAG, -intv + } + } + } + // XXX Handle timestamps here. + + default: + panic("resolveTable item not yet handled: " + string(rune(hint)) + " (with " + in + ")") + } + } + if tag == yaml_BINARY_TAG { + return yaml_BINARY_TAG, in + } + if utf8.ValidString(in) { + return yaml_STR_TAG, in + } + return yaml_BINARY_TAG, encodeBase64(in) +} + +// encodeBase64 encodes s as base64 that is broken up into multiple lines +// as appropriate for the resulting length. +func encodeBase64(s string) string { + const lineLen = 70 + encLen := base64.StdEncoding.EncodedLen(len(s)) + lines := encLen/lineLen + 1 + buf := make([]byte, encLen*2+lines) + in := buf[0:encLen] + out := buf[encLen:] + base64.StdEncoding.Encode(in, []byte(s)) + k := 0 + for i := 0; i < len(in); i += lineLen { + j := i + lineLen + if j > len(in) { + j = len(in) + } + k += copy(out[k:], in[i:j]) + if lines > 1 { + out[k] = '\n' + k++ + } + } + return string(out[:k]) +} diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/gopkg.in/yaml.v2/scannerc.go new file mode 100644 index 0000000..0744844 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/scannerc.go @@ -0,0 +1,2711 @@ +package yaml + +import ( + "bytes" + "fmt" +) + +// Introduction +// ************ +// +// The following notes assume that you are familiar with the YAML specification +// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in +// some cases we are less restrictive that it requires. +// +// The process of transforming a YAML stream into a sequence of events is +// divided on two steps: Scanning and Parsing. +// +// The Scanner transforms the input stream into a sequence of tokens, while the +// parser transform the sequence of tokens produced by the Scanner into a +// sequence of parsing events. +// +// The Scanner is rather clever and complicated. The Parser, on the contrary, +// is a straightforward implementation of a recursive-descendant parser (or, +// LL(1) parser, as it is usually called). +// +// Actually there are two issues of Scanning that might be called "clever", the +// rest is quite straightforward. The issues are "block collection start" and +// "simple keys". Both issues are explained below in details. +// +// Here the Scanning step is explained and implemented. We start with the list +// of all the tokens produced by the Scanner together with short descriptions. +// +// Now, tokens: +// +// STREAM-START(encoding) # The stream start. +// STREAM-END # The stream end. +// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. +// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. +// DOCUMENT-START # '---' +// DOCUMENT-END # '...' +// BLOCK-SEQUENCE-START # Indentation increase denoting a block +// BLOCK-MAPPING-START # sequence or a block mapping. +// BLOCK-END # Indentation decrease. +// FLOW-SEQUENCE-START # '[' +// FLOW-SEQUENCE-END # ']' +// BLOCK-SEQUENCE-START # '{' +// BLOCK-SEQUENCE-END # '}' +// BLOCK-ENTRY # '-' +// FLOW-ENTRY # ',' +// KEY # '?' or nothing (simple keys). +// VALUE # ':' +// ALIAS(anchor) # '*anchor' +// ANCHOR(anchor) # '&anchor' +// TAG(handle,suffix) # '!handle!suffix' +// SCALAR(value,style) # A scalar. +// +// The following two tokens are "virtual" tokens denoting the beginning and the +// end of the stream: +// +// STREAM-START(encoding) +// STREAM-END +// +// We pass the information about the input stream encoding with the +// STREAM-START token. +// +// The next two tokens are responsible for tags: +// +// VERSION-DIRECTIVE(major,minor) +// TAG-DIRECTIVE(handle,prefix) +// +// Example: +// +// %YAML 1.1 +// %TAG ! !foo +// %TAG !yaml! tag:yaml.org,2002: +// --- +// +// The correspoding sequence of tokens: +// +// STREAM-START(utf-8) +// VERSION-DIRECTIVE(1,1) +// TAG-DIRECTIVE("!","!foo") +// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") +// DOCUMENT-START +// STREAM-END +// +// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole +// line. +// +// The document start and end indicators are represented by: +// +// DOCUMENT-START +// DOCUMENT-END +// +// Note that if a YAML stream contains an implicit document (without '---' +// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be +// produced. +// +// In the following examples, we present whole documents together with the +// produced tokens. +// +// 1. An implicit document: +// +// 'a scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// STREAM-END +// +// 2. An explicit document: +// +// --- +// 'a scalar' +// ... +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// SCALAR("a scalar",single-quoted) +// DOCUMENT-END +// STREAM-END +// +// 3. Several documents in a stream: +// +// 'a scalar' +// --- +// 'another scalar' +// --- +// 'yet another scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// DOCUMENT-START +// SCALAR("another scalar",single-quoted) +// DOCUMENT-START +// SCALAR("yet another scalar",single-quoted) +// STREAM-END +// +// We have already introduced the SCALAR token above. The following tokens are +// used to describe aliases, anchors, tag, and scalars: +// +// ALIAS(anchor) +// ANCHOR(anchor) +// TAG(handle,suffix) +// SCALAR(value,style) +// +// The following series of examples illustrate the usage of these tokens: +// +// 1. A recursive sequence: +// +// &A [ *A ] +// +// Tokens: +// +// STREAM-START(utf-8) +// ANCHOR("A") +// FLOW-SEQUENCE-START +// ALIAS("A") +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A tagged scalar: +// +// !!float "3.14" # A good approximation. +// +// Tokens: +// +// STREAM-START(utf-8) +// TAG("!!","float") +// SCALAR("3.14",double-quoted) +// STREAM-END +// +// 3. Various scalar styles: +// +// --- # Implicit empty plain scalars do not produce tokens. +// --- a plain scalar +// --- 'a single-quoted scalar' +// --- "a double-quoted scalar" +// --- |- +// a literal scalar +// --- >- +// a folded +// scalar +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// DOCUMENT-START +// SCALAR("a plain scalar",plain) +// DOCUMENT-START +// SCALAR("a single-quoted scalar",single-quoted) +// DOCUMENT-START +// SCALAR("a double-quoted scalar",double-quoted) +// DOCUMENT-START +// SCALAR("a literal scalar",literal) +// DOCUMENT-START +// SCALAR("a folded scalar",folded) +// STREAM-END +// +// Now it's time to review collection-related tokens. We will start with +// flow collections: +// +// FLOW-SEQUENCE-START +// FLOW-SEQUENCE-END +// FLOW-MAPPING-START +// FLOW-MAPPING-END +// FLOW-ENTRY +// KEY +// VALUE +// +// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and +// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' +// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the +// indicators '?' and ':', which are used for denoting mapping keys and values, +// are represented by the KEY and VALUE tokens. +// +// The following examples show flow collections: +// +// 1. A flow sequence: +// +// [item 1, item 2, item 3] +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-SEQUENCE-START +// SCALAR("item 1",plain) +// FLOW-ENTRY +// SCALAR("item 2",plain) +// FLOW-ENTRY +// SCALAR("item 3",plain) +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A flow mapping: +// +// { +// a simple key: a value, # Note that the KEY token is produced. +// ? a complex key: another value, +// } +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// FLOW-ENTRY +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// FLOW-ENTRY +// FLOW-MAPPING-END +// STREAM-END +// +// A simple key is a key which is not denoted by the '?' indicator. Note that +// the Scanner still produce the KEY token whenever it encounters a simple key. +// +// For scanning block collections, the following tokens are used (note that we +// repeat KEY and VALUE here): +// +// BLOCK-SEQUENCE-START +// BLOCK-MAPPING-START +// BLOCK-END +// BLOCK-ENTRY +// KEY +// VALUE +// +// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation +// increase that precedes a block collection (cf. the INDENT token in Python). +// The token BLOCK-END denote indentation decrease that ends a block collection +// (cf. the DEDENT token in Python). However YAML has some syntax pecularities +// that makes detections of these tokens more complex. +// +// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators +// '-', '?', and ':' correspondingly. +// +// The following examples show how the tokens BLOCK-SEQUENCE-START, +// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: +// +// 1. Block sequences: +// +// - item 1 +// - item 2 +// - +// - item 3.1 +// - item 3.2 +// - +// key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 3.1",plain) +// BLOCK-ENTRY +// SCALAR("item 3.2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Block mappings: +// +// a simple key: a value # The KEY token is produced here. +// ? a complex key +// : another value +// a mapping: +// key 1: value 1 +// key 2: value 2 +// a sequence: +// - item 1 +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// KEY +// SCALAR("a mapping",plain) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML does not always require to start a new block collection from a new +// line. If the current line contains only '-', '?', and ':' indicators, a new +// block collection may start at the current line. The following examples +// illustrate this case: +// +// 1. Collections in a sequence: +// +// - - item 1 +// - item 2 +// - key 1: value 1 +// key 2: value 2 +// - ? complex key +// : complex value +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("complex key") +// VALUE +// SCALAR("complex value") +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Collections in a mapping: +// +// ? a sequence +// : - item 1 +// - item 2 +// ? a mapping +// : key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// KEY +// SCALAR("a mapping",plain) +// VALUE +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML also permits non-indented sequences if they are included into a block +// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: +// +// key: +// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key",plain) +// VALUE +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// + +// Ensure that the buffer contains the required number of characters. +// Return true on success, false on failure (reader error or memory error). +func cache(parser *yaml_parser_t, length int) bool { + // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) + return parser.unread >= length || yaml_parser_update_buffer(parser, length) +} + +// Advance the buffer pointer. +func skip(parser *yaml_parser_t) { + parser.mark.index++ + parser.mark.column++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) +} + +func skip_line(parser *yaml_parser_t) { + if is_crlf(parser.buffer, parser.buffer_pos) { + parser.mark.index += 2 + parser.mark.column = 0 + parser.mark.line++ + parser.unread -= 2 + parser.buffer_pos += 2 + } else if is_break(parser.buffer, parser.buffer_pos) { + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) + } +} + +// Copy a character to a string buffer and advance pointers. +func read(parser *yaml_parser_t, s []byte) []byte { + w := width(parser.buffer[parser.buffer_pos]) + if w == 0 { + panic("invalid character sequence") + } + if len(s) == 0 { + s = make([]byte, 0, 32) + } + if w == 1 && len(s)+w <= cap(s) { + s = s[:len(s)+1] + s[len(s)-1] = parser.buffer[parser.buffer_pos] + parser.buffer_pos++ + } else { + s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) + parser.buffer_pos += w + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + return s +} + +// Copy a line break character to a string buffer and advance pointers. +func read_line(parser *yaml_parser_t, s []byte) []byte { + buf := parser.buffer + pos := parser.buffer_pos + switch { + case buf[pos] == '\r' && buf[pos+1] == '\n': + // CR LF . LF + s = append(s, '\n') + parser.buffer_pos += 2 + parser.mark.index++ + parser.unread-- + case buf[pos] == '\r' || buf[pos] == '\n': + // CR|LF . LF + s = append(s, '\n') + parser.buffer_pos += 1 + case buf[pos] == '\xC2' && buf[pos+1] == '\x85': + // NEL . LF + s = append(s, '\n') + parser.buffer_pos += 2 + case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): + // LS|PS . LS|PS + s = append(s, buf[parser.buffer_pos:pos+3]...) + parser.buffer_pos += 3 + default: + return s + } + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + return s +} + +// Get the next token. +func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { + // Erase the token object. + *token = yaml_token_t{} // [Go] Is this necessary? + + // No tokens after STREAM-END or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR { + return true + } + + // Ensure that the tokens queue contains enough tokens. + if !parser.token_available { + if !yaml_parser_fetch_more_tokens(parser) { + return false + } + } + + // Fetch the next token from the queue. + *token = parser.tokens[parser.tokens_head] + parser.tokens_head++ + parser.tokens_parsed++ + parser.token_available = false + + if token.typ == yaml_STREAM_END_TOKEN { + parser.stream_end_produced = true + } + return true +} + +// Set the scanner error and return false. +func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { + parser.error = yaml_SCANNER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = parser.mark + return false +} + +func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { + context := "while parsing a tag" + if directive { + context = "while parsing a %TAG directive" + } + return yaml_parser_set_scanner_error(parser, context, context_mark, problem) +} + +func trace(args ...interface{}) func() { + pargs := append([]interface{}{"+++"}, args...) + fmt.Println(pargs...) + pargs = append([]interface{}{"---"}, args...) + return func() { fmt.Println(pargs...) } +} + +// Ensure that the tokens queue contains at least one token which can be +// returned to the Parser. +func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { + // While we need more tokens to fetch, do it. + for { + // Check if we really need to fetch more tokens. + need_more_tokens := false + + if parser.tokens_head == len(parser.tokens) { + // Queue is empty. + need_more_tokens = true + } else { + // Check if any potential simple key may occupy the head position. + if !yaml_parser_stale_simple_keys(parser) { + return false + } + + for i := range parser.simple_keys { + simple_key := &parser.simple_keys[i] + if simple_key.possible && simple_key.token_number == parser.tokens_parsed { + need_more_tokens = true + break + } + } + } + + // We are finished. + if !need_more_tokens { + break + } + // Fetch the next token. + if !yaml_parser_fetch_next_token(parser) { + return false + } + } + + parser.token_available = true + return true +} + +// The dispatcher for token fetchers. +func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool { + // Ensure that the buffer is initialized. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we just started scanning. Fetch STREAM-START then. + if !parser.stream_start_produced { + return yaml_parser_fetch_stream_start(parser) + } + + // Eat whitespaces and comments until we reach the next token. + if !yaml_parser_scan_to_next_token(parser) { + return false + } + + // Remove obsolete potential simple keys. + if !yaml_parser_stale_simple_keys(parser) { + return false + } + + // Check the indentation level against the current column. + if !yaml_parser_unroll_indent(parser, parser.mark.column) { + return false + } + + // Ensure that the buffer contains at least 4 characters. 4 is the length + // of the longest indicators ('--- ' and '... '). + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + // Is it the end of the stream? + if is_z(parser.buffer, parser.buffer_pos) { + return yaml_parser_fetch_stream_end(parser) + } + + // Is it a directive? + if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { + return yaml_parser_fetch_directive(parser) + } + + buf := parser.buffer + pos := parser.buffer_pos + + // Is it the document start indicator? + if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) + } + + // Is it the document end indicator? + if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) + } + + // Is it the flow sequence start indicator? + if buf[pos] == '[' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) + } + + // Is it the flow mapping start indicator? + if parser.buffer[parser.buffer_pos] == '{' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) + } + + // Is it the flow sequence end indicator? + if parser.buffer[parser.buffer_pos] == ']' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_SEQUENCE_END_TOKEN) + } + + // Is it the flow mapping end indicator? + if parser.buffer[parser.buffer_pos] == '}' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_MAPPING_END_TOKEN) + } + + // Is it the flow entry indicator? + if parser.buffer[parser.buffer_pos] == ',' { + return yaml_parser_fetch_flow_entry(parser) + } + + // Is it the block entry indicator? + if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { + return yaml_parser_fetch_block_entry(parser) + } + + // Is it the key indicator? + if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_key(parser) + } + + // Is it the value indicator? + if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_value(parser) + } + + // Is it an alias? + if parser.buffer[parser.buffer_pos] == '*' { + return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) + } + + // Is it an anchor? + if parser.buffer[parser.buffer_pos] == '&' { + return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) + } + + // Is it a tag? + if parser.buffer[parser.buffer_pos] == '!' { + return yaml_parser_fetch_tag(parser) + } + + // Is it a literal scalar? + if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, true) + } + + // Is it a folded scalar? + if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, false) + } + + // Is it a single-quoted scalar? + if parser.buffer[parser.buffer_pos] == '\'' { + return yaml_parser_fetch_flow_scalar(parser, true) + } + + // Is it a double-quoted scalar? + if parser.buffer[parser.buffer_pos] == '"' { + return yaml_parser_fetch_flow_scalar(parser, false) + } + + // Is it a plain scalar? + // + // A plain scalar may start with any non-blank characters except + // + // '-', '?', ':', ',', '[', ']', '{', '}', + // '#', '&', '*', '!', '|', '>', '\'', '\"', + // '%', '@', '`'. + // + // In the block context (and, for the '-' indicator, in the flow context + // too), it may also start with the characters + // + // '-', '?', ':' + // + // if it is followed by a non-space character. + // + // The last rule is more restrictive than the specification requires. + // [Go] Make this logic more reasonable. + //switch parser.buffer[parser.buffer_pos] { + //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': + //} + if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || + parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || + parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || + (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level == 0 && + (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && + !is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_plain_scalar(parser) + } + + // If we don't determine the token type so far, it is an error. + return yaml_parser_set_scanner_error(parser, + "while scanning for the next token", parser.mark, + "found character that cannot start any token") +} + +// Check the list of potential simple keys and remove the positions that +// cannot contain simple keys anymore. +func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool { + // Check for a potential simple key for each flow level. + for i := range parser.simple_keys { + simple_key := &parser.simple_keys[i] + + // The specification requires that a simple key + // + // - is limited to a single line, + // - is shorter than 1024 characters. + if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) { + + // Check if the potential simple key to be removed is required. + if simple_key.required { + return yaml_parser_set_scanner_error(parser, + "while scanning a simple key", simple_key.mark, + "could not find expected ':'") + } + simple_key.possible = false + } + } + return true +} + +// Check if a simple key may start at the current position and add it if +// needed. +func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { + // A simple key is required at the current position if the scanner is in + // the block context and the current column coincides with the indentation + // level. + + required := parser.flow_level == 0 && parser.indent == parser.mark.column + + // A simple key is required only when it is the first token in the current + // line. Therefore it is always allowed. But we add a check anyway. + if required && !parser.simple_key_allowed { + panic("should not happen") + } + + // + // If the current position may start a simple key, save it. + // + if parser.simple_key_allowed { + simple_key := yaml_simple_key_t{ + possible: true, + required: required, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + } + simple_key.mark = parser.mark + + if !yaml_parser_remove_simple_key(parser) { + return false + } + parser.simple_keys[len(parser.simple_keys)-1] = simple_key + } + return true +} + +// Remove a potential simple key at the current flow level. +func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { + i := len(parser.simple_keys) - 1 + if parser.simple_keys[i].possible { + // If the key is required, it is an error. + if parser.simple_keys[i].required { + return yaml_parser_set_scanner_error(parser, + "while scanning a simple key", parser.simple_keys[i].mark, + "could not find expected ':'") + } + } + // Remove the key from the stack. + parser.simple_keys[i].possible = false + return true +} + +// Increase the flow level and resize the simple key list if needed. +func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { + // Reset the simple key on the next level. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + + // Increase the flow level. + parser.flow_level++ + return true +} + +// Decrease the flow level. +func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { + if parser.flow_level > 0 { + parser.flow_level-- + parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1] + } + return true +} + +// Push the current indentation level to the stack and set the new level +// the current column is greater than the indentation level. In this case, +// append or insert the specified token into the token queue. +func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + if parser.indent < column { + // Push the current indentation level to the stack and set the new + // indentation level. + parser.indents = append(parser.indents, parser.indent) + parser.indent = column + + // Create a token and insert it into the queue. + token := yaml_token_t{ + typ: typ, + start_mark: mark, + end_mark: mark, + } + if number > -1 { + number -= parser.tokens_parsed + } + yaml_insert_token(parser, number, &token) + } + return true +} + +// Pop indentation levels from the indents stack until the current level +// becomes less or equal to the column. For each indentation level, append +// the BLOCK-END token. +func yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + // Loop through the indentation levels in the stack. + for parser.indent > column { + // Create a token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_END_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + } + yaml_insert_token(parser, -1, &token) + + // Pop the indentation level. + parser.indent = parser.indents[len(parser.indents)-1] + parser.indents = parser.indents[:len(parser.indents)-1] + } + return true +} + +// Initialize the scanner and produce the STREAM-START token. +func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { + + // Set the initial indentation. + parser.indent = -1 + + // Initialize the simple key stack. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + + // A simple key is allowed at the beginning of the stream. + parser.simple_key_allowed = true + + // We have started. + parser.stream_start_produced = true + + // Create the STREAM-START token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_START_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + encoding: parser.encoding, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the STREAM-END token and shut down the scanner. +func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { + + // Force new line. + if parser.mark.column != 0 { + parser.mark.column = 0 + parser.mark.line++ + } + + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the STREAM-END token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_END_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. +func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. + token := yaml_token_t{} + if !yaml_parser_scan_directive(parser, &token) { + return false + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the DOCUMENT-START or DOCUMENT-END token. +func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Consume the token. + start_mark := parser.mark + + skip(parser) + skip(parser) + skip(parser) + + end_mark := parser.mark + + // Create the DOCUMENT-START or DOCUMENT-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. +func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // The indicators '[' and '{' may start a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // Increase the flow level. + if !yaml_parser_increase_flow_level(parser) { + return false + } + + // A simple key may follow the indicators '[' and '{'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. +func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset any potential simple key on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Decrease the flow level. + if !yaml_parser_decrease_flow_level(parser) { + return false + } + + // No simple keys after the indicators ']' and '}'. + parser.simple_key_allowed = false + + // Consume the token. + + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-ENTRY token. +func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after ','. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_FLOW_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the BLOCK-ENTRY token. +func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { + // Check if the scanner is in the block context. + if parser.flow_level == 0 { + // Check if we are allowed to start a new entry. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "block sequence entries are not allowed in this context") + } + // Add the BLOCK-SEQUENCE-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { + return false + } + } else { + // It is an error for the '-' indicator to occur in the flow context, + // but we let the Parser detect and report about it because the Parser + // is able to point to the context. + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '-'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the BLOCK-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the KEY token. +func yaml_parser_fetch_key(parser *yaml_parser_t) bool { + + // In the block context, additional checks are required. + if parser.flow_level == 0 { + // Check if we are allowed to start a new key (not nessesary simple). + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping keys are not allowed in this context") + } + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '?' in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the KEY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the VALUE token. +func yaml_parser_fetch_value(parser *yaml_parser_t) bool { + + simple_key := &parser.simple_keys[len(parser.simple_keys)-1] + + // Have we found a simple key? + if simple_key.possible { + // Create the KEY token and insert it into the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: simple_key.mark, + end_mark: simple_key.mark, + } + yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) + + // In the block context, we may need to add the BLOCK-MAPPING-START token. + if !yaml_parser_roll_indent(parser, simple_key.mark.column, + simple_key.token_number, + yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { + return false + } + + // Remove the simple key. + simple_key.possible = false + + // A simple key cannot follow another simple key. + parser.simple_key_allowed = false + + } else { + // The ':' indicator follows a complex key. + + // In the block context, extra checks are required. + if parser.flow_level == 0 { + + // Check if we are allowed to start a complex value. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping values are not allowed in this context") + } + + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Simple keys after ':' are allowed in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + } + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the VALUE token and append it to the queue. + token := yaml_token_t{ + typ: yaml_VALUE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the ALIAS or ANCHOR token. +func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // An anchor or an alias could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow an anchor or an alias. + parser.simple_key_allowed = false + + // Create the ALIAS or ANCHOR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_anchor(parser, &token, typ) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the TAG token. +func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { + // A tag could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a tag. + parser.simple_key_allowed = false + + // Create the TAG token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_tag(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. +func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { + // Remove any potential simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // A simple key may follow a block scalar. + parser.simple_key_allowed = true + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_block_scalar(parser, &token, literal) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. +func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_flow_scalar(parser, &token, single) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,plain) token. +func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_plain_scalar(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Eat whitespaces and comments until the next token is found. +func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { + + // Until the next token is not found. + for { + // Allow the BOM mark to start a line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { + skip(parser) + } + + // Eat whitespaces. + // Tabs are allowed: + // - in the flow context + // - in the block context, but not at the beginning of the line or + // after '-', '?', or ':' (complex value). + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Eat a comment until a line break. + if parser.buffer[parser.buffer_pos] == '#' { + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // If it is a line break, eat it. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + + // In the block context, a new line may start a simple key. + if parser.flow_level == 0 { + parser.simple_key_allowed = true + } + } else { + break // We have found a token. + } + } + + return true +} + +// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { + // Eat '%'. + start_mark := parser.mark + skip(parser) + + // Scan the directive name. + var name []byte + if !yaml_parser_scan_directive_name(parser, start_mark, &name) { + return false + } + + // Is it a YAML directive? + if bytes.Equal(name, []byte("YAML")) { + // Scan the VERSION directive value. + var major, minor int8 + if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { + return false + } + end_mark := parser.mark + + // Create a VERSION-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_VERSION_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + major: major, + minor: minor, + } + + // Is it a TAG directive? + } else if bytes.Equal(name, []byte("TAG")) { + // Scan the TAG directive value. + var handle, prefix []byte + if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { + return false + } + end_mark := parser.mark + + // Create a TAG-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_TAG_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + prefix: prefix, + } + + // Unknown directive. + } else { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unknown directive name") + return false + } + + // Eat the rest of the line including any comments. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + if parser.buffer[parser.buffer_pos] == '#' { + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + return true +} + +// Scan the directive name. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^ +// +func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { + // Consume the directive name. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + var s []byte + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the name is empty. + if len(s) == 0 { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "could not find expected directive name") + return false + } + + // Check for an blank character after the name. + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unexpected non-alphabetical character") + return false + } + *name = s + return true +} + +// Scan the value of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^ +func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the major version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { + return false + } + + // Eat '.'. + if parser.buffer[parser.buffer_pos] != '.' { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected digit or '.' character") + } + + skip(parser) + + // Consume the minor version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { + return false + } + return true +} + +const max_number_length = 2 + +// Scan the version number of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^ +// %YAML 1.1 # a comment \n +// ^ +func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { + + // Repeat while the next character is digit. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var value, length int8 + for is_digit(parser.buffer, parser.buffer_pos) { + // Check if the number is too long. + length++ + if length > max_number_length { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "found extremely long version number") + } + value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the number was present. + if length == 0 { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected version number") + } + *number = value + return true +} + +// Scan the value of a TAG-DIRECTIVE token. +// +// Scope: +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { + var handle_value, prefix_value []byte + + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a handle. + if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { + return false + } + + // Expect a whitespace. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blank(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace") + return false + } + + // Eat whitespaces. + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a prefix. + if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { + return false + } + + // Expect a whitespace or line break. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace or line break") + return false + } + + *handle = handle_value + *prefix = prefix_value + return true +} + +func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { + var s []byte + + // Eat the indicator character. + start_mark := parser.mark + skip(parser) + + // Consume the value. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + end_mark := parser.mark + + /* + * Check if length of the anchor is greater than 0 and it is followed by + * a whitespace character or one of the indicators: + * + * '?', ':', ',', ']', '}', '%', '@', '`'. + */ + + if len(s) == 0 || + !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || + parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '`') { + context := "while scanning an alias" + if typ == yaml_ANCHOR_TOKEN { + context = "while scanning an anchor" + } + yaml_parser_set_scanner_error(parser, context, start_mark, + "did not find expected alphabetic or numeric character") + return false + } + + // Create a token. + *token = yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + value: s, + } + + return true +} + +/* + * Scan a TAG token. + */ + +func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { + var handle, suffix []byte + + start_mark := parser.mark + + // Check if the tag is in the canonical form. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + if parser.buffer[parser.buffer_pos+1] == '<' { + // Keep the handle as '' + + // Eat '!<' + skip(parser) + skip(parser) + + // Consume the tag value. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + + // Check for '>' and eat it. + if parser.buffer[parser.buffer_pos] != '>' { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find the expected '>'") + return false + } + + skip(parser) + } else { + // The tag has either the '!suffix' or the '!handle!suffix' form. + + // First, try to scan a handle. + if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { + return false + } + + // Check if it is, indeed, handle. + if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { + // Scan the suffix now. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + } else { + // It wasn't a handle after all. Scan the rest of the tag. + if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { + return false + } + + // Set the handle to '!'. + handle = []byte{'!'} + + // A special case: the '!' tag. Set the handle to '' and the + // suffix to '!'. + if len(suffix) == 0 { + handle, suffix = suffix, handle + } + } + } + + // Check the character which ends the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find expected whitespace or line break") + return false + } + + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_TAG_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + suffix: suffix, + } + return true +} + +// Scan a tag handle. +func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { + // Check the initial '!' character. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] != '!' { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + + var s []byte + + // Copy the '!' character. + s = read(parser, s) + + // Copy all subsequent alphabetical and numerical characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the trailing character is '!' and copy it. + if parser.buffer[parser.buffer_pos] == '!' { + s = read(parser, s) + } else { + // It's either the '!' tag or not really a tag handle. If it's a %TAG + // directive, it's an error. If it's a tag token, it must be a part of URI. + if directive && string(s) != "!" { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + } + + *handle = s + return true +} + +// Scan a tag. +func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { + //size_t length = head ? strlen((char *)head) : 0 + var s []byte + hasTag := len(head) > 0 + + // Copy the head if needed. + // + // Note that we don't copy the leading '!' character. + if len(head) > 1 { + s = append(s, head[1:]...) + } + + // Scan the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // The set of characters that may appear in URI is as follows: + // + // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', + // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', + // '%'. + // [Go] Convert this into more reasonable logic. + for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || + parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || + parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || + parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || + parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || + parser.buffer[parser.buffer_pos] == '%' { + // Check if it is a URI-escape sequence. + if parser.buffer[parser.buffer_pos] == '%' { + if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { + return false + } + } else { + s = read(parser, s) + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + hasTag = true + } + + if !hasTag { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected tag URI") + return false + } + *uri = s + return true +} + +// Decode an URI-escape sequence corresponding to a single UTF-8 character. +func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { + + // Decode the required number of characters. + w := 1024 + for w > 0 { + // Check for a URI-escaped octet. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + + if !(parser.buffer[parser.buffer_pos] == '%' && + is_hex(parser.buffer, parser.buffer_pos+1) && + is_hex(parser.buffer, parser.buffer_pos+2)) { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find URI escaped octet") + } + + // Get the octet. + octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) + + // If it is the leading octet, determine the length of the UTF-8 sequence. + if w == 1024 { + w = width(octet) + if w == 0 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect leading UTF-8 octet") + } + } else { + // Check if the trailing octet is correct. + if octet&0xC0 != 0x80 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect trailing UTF-8 octet") + } + } + + // Copy the octet and move the pointers. + *s = append(*s, octet) + skip(parser) + skip(parser) + skip(parser) + w-- + } + return true +} + +// Scan a block scalar. +func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { + // Eat the indicator '|' or '>'. + start_mark := parser.mark + skip(parser) + + // Scan the additional block scalar indicators. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check for a chomping indicator. + var chomping, increment int + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + // Set the chomping method and eat the indicator. + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + + // Check for an indentation indicator. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_digit(parser.buffer, parser.buffer_pos) { + // Check that the indentation is greater than 0. + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + + // Get the indentation level and eat the indicator. + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + } + + } else if is_digit(parser.buffer, parser.buffer_pos) { + // Do the same as above, but in the opposite order. + + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + } + } + + // Eat whitespaces and comments to the end of the line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.buffer[parser.buffer_pos] == '#' { + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + end_mark := parser.mark + + // Set the indentation level if it was specified. + var indent int + if increment > 0 { + if parser.indent >= 0 { + indent = parser.indent + increment + } else { + indent = increment + } + } + + // Scan the leading line breaks and determine the indentation level if needed. + var s, leading_break, trailing_breaks []byte + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + + // Scan the block scalar content. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var leading_blank, trailing_blank bool + for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { + // We are at the beginning of a non-empty line. + + // Is it a trailing whitespace? + trailing_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Check if we need to fold the leading line break. + if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { + // Do we need to join the lines by space? + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } + } else { + s = append(s, leading_break...) + } + leading_break = leading_break[:0] + + // Append the remaining line breaks. + s = append(s, trailing_breaks...) + trailing_breaks = trailing_breaks[:0] + + // Is it a leading whitespace? + leading_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Consume the current line. + for !is_breakz(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + leading_break = read_line(parser, leading_break) + + // Eat the following indentation spaces and line breaks. + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + } + + // Chomp the tail. + if chomping != -1 { + s = append(s, leading_break...) + } + if chomping == 1 { + s = append(s, trailing_breaks...) + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_LITERAL_SCALAR_STYLE, + } + if !literal { + token.style = yaml_FOLDED_SCALAR_STYLE + } + return true +} + +// Scan indentation spaces and line breaks for a block scalar. Determine the +// indentation level if needed. +func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { + *end_mark = parser.mark + + // Eat the indentation spaces and line breaks. + max_indent := 0 + for { + // Eat the indentation spaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.mark.column > max_indent { + max_indent = parser.mark.column + } + + // Check for a tab character messing the indentation. + if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { + return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found a tab character where an indentation space is expected") + } + + // Have we found a non-empty line? + if !is_break(parser.buffer, parser.buffer_pos) { + break + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + // [Go] Should really be returning breaks instead. + *breaks = read_line(parser, *breaks) + *end_mark = parser.mark + } + + // Determine the indentation level if needed. + if *indent == 0 { + *indent = max_indent + if *indent < parser.indent+1 { + *indent = parser.indent + 1 + } + if *indent < 1 { + *indent = 1 + } + } + return true +} + +// Scan a quoted scalar. +func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { + // Eat the left quote. + start_mark := parser.mark + skip(parser) + + // Consume the content of the quoted scalar. + var s, leading_break, trailing_breaks, whitespaces []byte + for { + // Check that there are no document indicators at the beginning of the line. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected document indicator") + return false + } + + // Check for EOF. + if is_z(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected end of stream") + return false + } + + // Consume non-blank characters. + leading_blanks := false + for !is_blankz(parser.buffer, parser.buffer_pos) { + if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { + // Is is an escaped single quote. + s = append(s, '\'') + skip(parser) + skip(parser) + + } else if single && parser.buffer[parser.buffer_pos] == '\'' { + // It is a right single quote. + break + } else if !single && parser.buffer[parser.buffer_pos] == '"' { + // It is a right double quote. + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { + // It is an escaped line break. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + skip(parser) + skip_line(parser) + leading_blanks = true + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' { + // It is an escape sequence. + code_length := 0 + + // Check the escape character. + switch parser.buffer[parser.buffer_pos+1] { + case '0': + s = append(s, 0) + case 'a': + s = append(s, '\x07') + case 'b': + s = append(s, '\x08') + case 't', '\t': + s = append(s, '\x09') + case 'n': + s = append(s, '\x0A') + case 'v': + s = append(s, '\x0B') + case 'f': + s = append(s, '\x0C') + case 'r': + s = append(s, '\x0D') + case 'e': + s = append(s, '\x1B') + case ' ': + s = append(s, '\x20') + case '"': + s = append(s, '"') + case '\'': + s = append(s, '\'') + case '\\': + s = append(s, '\\') + case 'N': // NEL (#x85) + s = append(s, '\xC2') + s = append(s, '\x85') + case '_': // #xA0 + s = append(s, '\xC2') + s = append(s, '\xA0') + case 'L': // LS (#x2028) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA8') + case 'P': // PS (#x2029) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA9') + case 'x': + code_length = 2 + case 'u': + code_length = 4 + case 'U': + code_length = 8 + default: + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found unknown escape character") + return false + } + + skip(parser) + skip(parser) + + // Consume an arbitrary escape code. + if code_length > 0 { + var value int + + // Scan the character value. + if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { + return false + } + for k := 0; k < code_length; k++ { + if !is_hex(parser.buffer, parser.buffer_pos+k) { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "did not find expected hexdecimal number") + return false + } + value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) + } + + // Check the value and write the character. + if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found invalid Unicode character escape code") + return false + } + if value <= 0x7F { + s = append(s, byte(value)) + } else if value <= 0x7FF { + s = append(s, byte(0xC0+(value>>6))) + s = append(s, byte(0x80+(value&0x3F))) + } else if value <= 0xFFFF { + s = append(s, byte(0xE0+(value>>12))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } else { + s = append(s, byte(0xF0+(value>>18))) + s = append(s, byte(0x80+((value>>12)&0x3F))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } + + // Advance the pointer. + for k := 0; k < code_length; k++ { + skip(parser) + } + } + } else { + // It is a non-escaped non-blank character. + s = read(parser, s) + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + // Check if we are at the end of the scalar. + if single { + if parser.buffer[parser.buffer_pos] == '\'' { + break + } + } else { + if parser.buffer[parser.buffer_pos] == '"' { + break + } + } + + // Consume blank characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Join the whitespaces or fold line breaks. + if leading_blanks { + // Do we need to fold line breaks? + if len(leading_break) > 0 && leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Eat the right quote. + skip(parser) + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_SINGLE_QUOTED_SCALAR_STYLE, + } + if !single { + token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + return true +} + +// Scan a plain scalar. +func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { + + var s, leading_break, trailing_breaks, whitespaces []byte + var leading_blanks bool + var indent = parser.indent + 1 + + start_mark := parser.mark + end_mark := parser.mark + + // Consume the content of the plain scalar. + for { + // Check for a document indicator. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + break + } + + // Check for a comment. + if parser.buffer[parser.buffer_pos] == '#' { + break + } + + // Consume non-blank characters. + for !is_blankz(parser.buffer, parser.buffer_pos) { + + // Check for 'x:x' in the flow context. TODO: Fix the test "spec-08-13". + if parser.flow_level > 0 && + parser.buffer[parser.buffer_pos] == ':' && + !is_blankz(parser.buffer, parser.buffer_pos+1) { + yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", + start_mark, "found unexpected ':'") + return false + } + + // Check for indicators that may end a plain scalar. + if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level > 0 && + (parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == ':' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}')) { + break + } + + // Check if we need to join whitespaces and breaks. + if leading_blanks || len(whitespaces) > 0 { + if leading_blanks { + // Do we need to fold line breaks? + if leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + leading_blanks = false + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Copy the character. + s = read(parser, s) + + end_mark = parser.mark + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + // Is it the end? + if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { + break + } + + // Consume blank characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + + // Check for tab character that abuse indentation. + if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", + start_mark, "found a tab character that violate indentation") + return false + } + + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check indentation level. + if parser.flow_level == 0 && parser.mark.column < indent { + break + } + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_PLAIN_SCALAR_STYLE, + } + + // Note that we change the 'simple_key_allowed' flag. + if leading_blanks { + parser.simple_key_allowed = true + } + return true +} diff --git a/vendor/gopkg.in/yaml.v2/sorter.go b/vendor/gopkg.in/yaml.v2/sorter.go new file mode 100644 index 0000000..5958822 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/sorter.go @@ -0,0 +1,104 @@ +package yaml + +import ( + "reflect" + "unicode" +) + +type keyList []reflect.Value + +func (l keyList) Len() int { return len(l) } +func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l keyList) Less(i, j int) bool { + a := l[i] + b := l[j] + ak := a.Kind() + bk := b.Kind() + for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { + a = a.Elem() + ak = a.Kind() + } + for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { + b = b.Elem() + bk = b.Kind() + } + af, aok := keyFloat(a) + bf, bok := keyFloat(b) + if aok && bok { + if af != bf { + return af < bf + } + if ak != bk { + return ak < bk + } + return numLess(a, b) + } + if ak != reflect.String || bk != reflect.String { + return ak < bk + } + ar, br := []rune(a.String()), []rune(b.String()) + for i := 0; i < len(ar) && i < len(br); i++ { + if ar[i] == br[i] { + continue + } + al := unicode.IsLetter(ar[i]) + bl := unicode.IsLetter(br[i]) + if al && bl { + return ar[i] < br[i] + } + if al || bl { + return bl + } + var ai, bi int + var an, bn int64 + for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { + an = an*10 + int64(ar[ai]-'0') + } + for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { + bn = bn*10 + int64(br[bi]-'0') + } + if an != bn { + return an < bn + } + if ai != bi { + return ai < bi + } + return ar[i] < br[i] + } + return len(ar) < len(br) +} + +// keyFloat returns a float value for v if it is a number/bool +// and whether it is a number/bool or not. +func keyFloat(v reflect.Value) (f float64, ok bool) { + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return float64(v.Int()), true + case reflect.Float32, reflect.Float64: + return v.Float(), true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return float64(v.Uint()), true + case reflect.Bool: + if v.Bool() { + return 1, true + } + return 0, true + } + return 0, false +} + +// numLess returns whether a < b. +// a and b must necessarily have the same kind. +func numLess(a, b reflect.Value) bool { + switch a.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return a.Int() < b.Int() + case reflect.Float32, reflect.Float64: + return a.Float() < b.Float() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return a.Uint() < b.Uint() + case reflect.Bool: + return !a.Bool() && b.Bool() + } + panic("not a number") +} diff --git a/vendor/gopkg.in/yaml.v2/suite_test.go b/vendor/gopkg.in/yaml.v2/suite_test.go new file mode 100644 index 0000000..c5cf1ed --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/suite_test.go @@ -0,0 +1,12 @@ +package yaml_test + +import ( + . "gopkg.in/check.v1" + "testing" +) + +func Test(t *testing.T) { TestingT(t) } + +type S struct{} + +var _ = Suite(&S{}) diff --git a/vendor/gopkg.in/yaml.v2/writerc.go b/vendor/gopkg.in/yaml.v2/writerc.go new file mode 100644 index 0000000..190362f --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/writerc.go @@ -0,0 +1,89 @@ +package yaml + +// Set the writer error and return false. +func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_WRITER_ERROR + emitter.problem = problem + return false +} + +// Flush the output buffer. +func yaml_emitter_flush(emitter *yaml_emitter_t) bool { + if emitter.write_handler == nil { + panic("write handler not set") + } + + // Check if the buffer is empty. + if emitter.buffer_pos == 0 { + return true + } + + // If the output encoding is UTF-8, we don't need to recode the buffer. + if emitter.encoding == yaml_UTF8_ENCODING { + if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { + return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) + } + emitter.buffer_pos = 0 + return true + } + + // Recode the buffer into the raw buffer. + var low, high int + if emitter.encoding == yaml_UTF16LE_ENCODING { + low, high = 0, 1 + } else { + high, low = 1, 0 + } + + pos := 0 + for pos < emitter.buffer_pos { + // See the "reader.c" code for more details on UTF-8 encoding. Note + // that we assume that the buffer contains a valid UTF-8 sequence. + + // Read the next UTF-8 character. + octet := emitter.buffer[pos] + + var w int + var value rune + switch { + case octet&0x80 == 0x00: + w, value = 1, rune(octet&0x7F) + case octet&0xE0 == 0xC0: + w, value = 2, rune(octet&0x1F) + case octet&0xF0 == 0xE0: + w, value = 3, rune(octet&0x0F) + case octet&0xF8 == 0xF0: + w, value = 4, rune(octet&0x07) + } + for k := 1; k < w; k++ { + octet = emitter.buffer[pos+k] + value = (value << 6) + (rune(octet) & 0x3F) + } + pos += w + + // Write the character. + if value < 0x10000 { + var b [2]byte + b[high] = byte(value >> 8) + b[low] = byte(value & 0xFF) + emitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1]) + } else { + // Write the character using a surrogate pair (check "reader.c"). + var b [4]byte + value -= 0x10000 + b[high] = byte(0xD8 + (value >> 18)) + b[low] = byte((value >> 10) & 0xFF) + b[high+2] = byte(0xDC + ((value >> 8) & 0xFF)) + b[low+2] = byte(value & 0xFF) + emitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1], b[2], b[3]) + } + } + + // Write the raw buffer. + if err := emitter.write_handler(emitter, emitter.raw_buffer); err != nil { + return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) + } + emitter.buffer_pos = 0 + emitter.raw_buffer = emitter.raw_buffer[:0] + return true +} diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go new file mode 100644 index 0000000..5e3c2da --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/yaml.go @@ -0,0 +1,357 @@ +// Package yaml implements YAML support for the Go language. +// +// Source code and other details for the project are available at GitHub: +// +// https://github.com/go-yaml/yaml +// +package yaml + +import ( + "errors" + "fmt" + "reflect" + "strings" + "sync" +) + +// MapSlice encodes and decodes as a YAML map. +// The order of keys is preserved when encoding and decoding. +type MapSlice []MapItem + +// MapItem is an item in a MapSlice. +type MapItem struct { + Key, Value interface{} +} + +// The Unmarshaler interface may be implemented by types to customize their +// behavior when being unmarshaled from a YAML document. The UnmarshalYAML +// method receives a function that may be called to unmarshal the original +// YAML value into a field or variable. It is safe to call the unmarshal +// function parameter more than once if necessary. +type Unmarshaler interface { + UnmarshalYAML(unmarshal func(interface{}) error) error +} + +// The Marshaler interface may be implemented by types to customize their +// behavior when being marshaled into a YAML document. The returned value +// is marshaled in place of the original value implementing Marshaler. +// +// If an error is returned by MarshalYAML, the marshaling procedure stops +// and returns with the provided error. +type Marshaler interface { + MarshalYAML() (interface{}, error) +} + +// Unmarshal decodes the first document found within the in byte slice +// and assigns decoded values into the out value. +// +// Maps and pointers (to a struct, string, int, etc) are accepted as out +// values. If an internal pointer within a struct is not initialized, +// the yaml package will initialize it if necessary for unmarshalling +// the provided data. The out parameter must not be nil. +// +// The type of the decoded values should be compatible with the respective +// values in out. If one or more values cannot be decoded due to a type +// mismatches, decoding continues partially until the end of the YAML +// content, and a *yaml.TypeError is returned with details for all +// missed values. +// +// Struct fields are only unmarshalled if they are exported (have an +// upper case first letter), and are unmarshalled using the field name +// lowercased as the default key. Custom keys may be defined via the +// "yaml" name in the field tag: the content preceding the first comma +// is used as the key, and the following comma-separated options are +// used to tweak the marshalling process (see Marshal). +// Conflicting names result in a runtime error. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// var t T +// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t) +// +// See the documentation of Marshal for the format of tags and a list of +// supported tag options. +// +func Unmarshal(in []byte, out interface{}) (err error) { + return unmarshal(in, out, false) +} + +// UnmarshalStrict is like Unmarshal except that any fields that are found +// in the data that do not have corresponding struct members will result in +// an error. +func UnmarshalStrict(in []byte, out interface{}) (err error) { + return unmarshal(in, out, true) +} + +func unmarshal(in []byte, out interface{}, strict bool) (err error) { + defer handleErr(&err) + d := newDecoder(strict) + p := newParser(in) + defer p.destroy() + node := p.parse() + if node != nil { + v := reflect.ValueOf(out) + if v.Kind() == reflect.Ptr && !v.IsNil() { + v = v.Elem() + } + d.unmarshal(node, v) + } + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +// Marshal serializes the value provided into a YAML document. The structure +// of the generated document will reflect the structure of the value itself. +// Maps and pointers (to struct, string, int, etc) are accepted as the in value. +// +// Struct fields are only unmarshalled if they are exported (have an upper case +// first letter), and are unmarshalled using the field name lowercased as the +// default key. Custom keys may be defined via the "yaml" name in the field +// tag: the content preceding the first comma is used as the key, and the +// following comma-separated options are used to tweak the marshalling process. +// Conflicting names result in a runtime error. +// +// The field tag format accepted is: +// +// `(...) yaml:"[][,[,]]" (...)` +// +// The following flags are currently supported: +// +// omitempty Only include the field if it's not set to the zero +// value for the type or to empty slices or maps. +// Does not apply to zero valued structs. +// +// flow Marshal using a flow style (useful for structs, +// sequences and maps). +// +// inline Inline the field, which must be a struct or a map, +// causing all of its fields or keys to be processed as if +// they were part of the outer struct. For maps, keys must +// not conflict with the yaml keys of other struct fields. +// +// In addition, if the key is "-", the field is ignored. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n" +// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" +// +func Marshal(in interface{}) (out []byte, err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshal("", reflect.ValueOf(in)) + e.finish() + out = e.out + return +} + +func handleErr(err *error) { + if v := recover(); v != nil { + if e, ok := v.(yamlError); ok { + *err = e.err + } else { + panic(v) + } + } +} + +type yamlError struct { + err error +} + +func fail(err error) { + panic(yamlError{err}) +} + +func failf(format string, args ...interface{}) { + panic(yamlError{fmt.Errorf("yaml: "+format, args...)}) +} + +// A TypeError is returned by Unmarshal when one or more fields in +// the YAML document cannot be properly decoded into the requested +// types. When this error is returned, the value is still +// unmarshaled partially. +type TypeError struct { + Errors []string +} + +func (e *TypeError) Error() string { + return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n ")) +} + +// -------------------------------------------------------------------------- +// Maintain a mapping of keys to structure field indexes + +// The code in this section was copied from mgo/bson. + +// structInfo holds details for the serialization of fields of +// a given struct. +type structInfo struct { + FieldsMap map[string]fieldInfo + FieldsList []fieldInfo + + // InlineMap is the number of the field in the struct that + // contains an ,inline map, or -1 if there's none. + InlineMap int +} + +type fieldInfo struct { + Key string + Num int + OmitEmpty bool + Flow bool + + // Inline holds the field index if the field is part of an inlined struct. + Inline []int +} + +var structMap = make(map[reflect.Type]*structInfo) +var fieldMapMutex sync.RWMutex + +func getStructInfo(st reflect.Type) (*structInfo, error) { + fieldMapMutex.RLock() + sinfo, found := structMap[st] + fieldMapMutex.RUnlock() + if found { + return sinfo, nil + } + + n := st.NumField() + fieldsMap := make(map[string]fieldInfo) + fieldsList := make([]fieldInfo, 0, n) + inlineMap := -1 + for i := 0; i != n; i++ { + field := st.Field(i) + if field.PkgPath != "" && !field.Anonymous { + continue // Private field + } + + info := fieldInfo{Num: i} + + tag := field.Tag.Get("yaml") + if tag == "" && strings.Index(string(field.Tag), ":") < 0 { + tag = string(field.Tag) + } + if tag == "-" { + continue + } + + inline := false + fields := strings.Split(tag, ",") + if len(fields) > 1 { + for _, flag := range fields[1:] { + switch flag { + case "omitempty": + info.OmitEmpty = true + case "flow": + info.Flow = true + case "inline": + inline = true + default: + return nil, errors.New(fmt.Sprintf("Unsupported flag %q in tag %q of type %s", flag, tag, st)) + } + } + tag = fields[0] + } + + if inline { + switch field.Type.Kind() { + case reflect.Map: + if inlineMap >= 0 { + return nil, errors.New("Multiple ,inline maps in struct " + st.String()) + } + if field.Type.Key() != reflect.TypeOf("") { + return nil, errors.New("Option ,inline needs a map with string keys in struct " + st.String()) + } + inlineMap = info.Num + case reflect.Struct: + sinfo, err := getStructInfo(field.Type) + if err != nil { + return nil, err + } + for _, finfo := range sinfo.FieldsList { + if _, found := fieldsMap[finfo.Key]; found { + msg := "Duplicated key '" + finfo.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + if finfo.Inline == nil { + finfo.Inline = []int{i, finfo.Num} + } else { + finfo.Inline = append([]int{i}, finfo.Inline...) + } + fieldsMap[finfo.Key] = finfo + fieldsList = append(fieldsList, finfo) + } + default: + //return nil, errors.New("Option ,inline needs a struct value or map field") + return nil, errors.New("Option ,inline needs a struct value field") + } + continue + } + + if tag != "" { + info.Key = tag + } else { + info.Key = strings.ToLower(field.Name) + } + + if _, found = fieldsMap[info.Key]; found { + msg := "Duplicated key '" + info.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + + fieldsList = append(fieldsList, info) + fieldsMap[info.Key] = info + } + + sinfo = &structInfo{fieldsMap, fieldsList, inlineMap} + + fieldMapMutex.Lock() + structMap[st] = sinfo + fieldMapMutex.Unlock() + return sinfo, nil +} + +func isZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.String: + return len(v.String()) == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + case reflect.Slice: + return v.Len() == 0 + case reflect.Map: + return v.Len() == 0 + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Struct: + vt := v.Type() + for i := v.NumField() - 1; i >= 0; i-- { + if vt.Field(i).PkgPath != "" { + continue // Private field + } + if !isZero(v.Field(i)) { + return false + } + } + return true + } + return false +} diff --git a/vendor/gopkg.in/yaml.v2/yamlh.go b/vendor/gopkg.in/yaml.v2/yamlh.go new file mode 100644 index 0000000..3caeca0 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/yamlh.go @@ -0,0 +1,716 @@ +package yaml + +import ( + "io" +) + +// The version directive data. +type yaml_version_directive_t struct { + major int8 // The major version number. + minor int8 // The minor version number. +} + +// The tag directive data. +type yaml_tag_directive_t struct { + handle []byte // The tag handle. + prefix []byte // The tag prefix. +} + +type yaml_encoding_t int + +// The stream encoding. +const ( + // Let the parser choose the encoding. + yaml_ANY_ENCODING yaml_encoding_t = iota + + yaml_UTF8_ENCODING // The default UTF-8 encoding. + yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. + yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. +) + +type yaml_break_t int + +// Line break types. +const ( + // Let the parser choose the break type. + yaml_ANY_BREAK yaml_break_t = iota + + yaml_CR_BREAK // Use CR for line breaks (Mac style). + yaml_LN_BREAK // Use LN for line breaks (Unix style). + yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). +) + +type yaml_error_type_t int + +// Many bad things could happen with the parser and emitter. +const ( + // No error is produced. + yaml_NO_ERROR yaml_error_type_t = iota + + yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. + yaml_READER_ERROR // Cannot read or decode the input stream. + yaml_SCANNER_ERROR // Cannot scan the input stream. + yaml_PARSER_ERROR // Cannot parse the input stream. + yaml_COMPOSER_ERROR // Cannot compose a YAML document. + yaml_WRITER_ERROR // Cannot write to the output stream. + yaml_EMITTER_ERROR // Cannot emit a YAML stream. +) + +// The pointer position. +type yaml_mark_t struct { + index int // The position index. + line int // The position line. + column int // The position column. +} + +// Node Styles + +type yaml_style_t int8 + +type yaml_scalar_style_t yaml_style_t + +// Scalar styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota + + yaml_PLAIN_SCALAR_STYLE // The plain scalar style. + yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. + yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. + yaml_LITERAL_SCALAR_STYLE // The literal scalar style. + yaml_FOLDED_SCALAR_STYLE // The folded scalar style. +) + +type yaml_sequence_style_t yaml_style_t + +// Sequence styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota + + yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. + yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. +) + +type yaml_mapping_style_t yaml_style_t + +// Mapping styles. +const ( + // Let the emitter choose the style. + yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota + + yaml_BLOCK_MAPPING_STYLE // The block mapping style. + yaml_FLOW_MAPPING_STYLE // The flow mapping style. +) + +// Tokens + +type yaml_token_type_t int + +// Token types. +const ( + // An empty token. + yaml_NO_TOKEN yaml_token_type_t = iota + + yaml_STREAM_START_TOKEN // A STREAM-START token. + yaml_STREAM_END_TOKEN // A STREAM-END token. + + yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. + yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. + yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. + yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. + + yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. + yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. + yaml_BLOCK_END_TOKEN // A BLOCK-END token. + + yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. + yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. + yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. + yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. + + yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. + yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. + yaml_KEY_TOKEN // A KEY token. + yaml_VALUE_TOKEN // A VALUE token. + + yaml_ALIAS_TOKEN // An ALIAS token. + yaml_ANCHOR_TOKEN // An ANCHOR token. + yaml_TAG_TOKEN // A TAG token. + yaml_SCALAR_TOKEN // A SCALAR token. +) + +func (tt yaml_token_type_t) String() string { + switch tt { + case yaml_NO_TOKEN: + return "yaml_NO_TOKEN" + case yaml_STREAM_START_TOKEN: + return "yaml_STREAM_START_TOKEN" + case yaml_STREAM_END_TOKEN: + return "yaml_STREAM_END_TOKEN" + case yaml_VERSION_DIRECTIVE_TOKEN: + return "yaml_VERSION_DIRECTIVE_TOKEN" + case yaml_TAG_DIRECTIVE_TOKEN: + return "yaml_TAG_DIRECTIVE_TOKEN" + case yaml_DOCUMENT_START_TOKEN: + return "yaml_DOCUMENT_START_TOKEN" + case yaml_DOCUMENT_END_TOKEN: + return "yaml_DOCUMENT_END_TOKEN" + case yaml_BLOCK_SEQUENCE_START_TOKEN: + return "yaml_BLOCK_SEQUENCE_START_TOKEN" + case yaml_BLOCK_MAPPING_START_TOKEN: + return "yaml_BLOCK_MAPPING_START_TOKEN" + case yaml_BLOCK_END_TOKEN: + return "yaml_BLOCK_END_TOKEN" + case yaml_FLOW_SEQUENCE_START_TOKEN: + return "yaml_FLOW_SEQUENCE_START_TOKEN" + case yaml_FLOW_SEQUENCE_END_TOKEN: + return "yaml_FLOW_SEQUENCE_END_TOKEN" + case yaml_FLOW_MAPPING_START_TOKEN: + return "yaml_FLOW_MAPPING_START_TOKEN" + case yaml_FLOW_MAPPING_END_TOKEN: + return "yaml_FLOW_MAPPING_END_TOKEN" + case yaml_BLOCK_ENTRY_TOKEN: + return "yaml_BLOCK_ENTRY_TOKEN" + case yaml_FLOW_ENTRY_TOKEN: + return "yaml_FLOW_ENTRY_TOKEN" + case yaml_KEY_TOKEN: + return "yaml_KEY_TOKEN" + case yaml_VALUE_TOKEN: + return "yaml_VALUE_TOKEN" + case yaml_ALIAS_TOKEN: + return "yaml_ALIAS_TOKEN" + case yaml_ANCHOR_TOKEN: + return "yaml_ANCHOR_TOKEN" + case yaml_TAG_TOKEN: + return "yaml_TAG_TOKEN" + case yaml_SCALAR_TOKEN: + return "yaml_SCALAR_TOKEN" + } + return "" +} + +// The token structure. +type yaml_token_t struct { + // The token type. + typ yaml_token_type_t + + // The start/end of the token. + start_mark, end_mark yaml_mark_t + + // The stream encoding (for yaml_STREAM_START_TOKEN). + encoding yaml_encoding_t + + // The alias/anchor/scalar value or tag/tag directive handle + // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). + value []byte + + // The tag suffix (for yaml_TAG_TOKEN). + suffix []byte + + // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). + prefix []byte + + // The scalar style (for yaml_SCALAR_TOKEN). + style yaml_scalar_style_t + + // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). + major, minor int8 +} + +// Events + +type yaml_event_type_t int8 + +// Event types. +const ( + // An empty event. + yaml_NO_EVENT yaml_event_type_t = iota + + yaml_STREAM_START_EVENT // A STREAM-START event. + yaml_STREAM_END_EVENT // A STREAM-END event. + yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. + yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. + yaml_ALIAS_EVENT // An ALIAS event. + yaml_SCALAR_EVENT // A SCALAR event. + yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. + yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. + yaml_MAPPING_START_EVENT // A MAPPING-START event. + yaml_MAPPING_END_EVENT // A MAPPING-END event. +) + +// The event structure. +type yaml_event_t struct { + + // The event type. + typ yaml_event_type_t + + // The start and end of the event. + start_mark, end_mark yaml_mark_t + + // The document encoding (for yaml_STREAM_START_EVENT). + encoding yaml_encoding_t + + // The version directive (for yaml_DOCUMENT_START_EVENT). + version_directive *yaml_version_directive_t + + // The list of tag directives (for yaml_DOCUMENT_START_EVENT). + tag_directives []yaml_tag_directive_t + + // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). + anchor []byte + + // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + tag []byte + + // The scalar value (for yaml_SCALAR_EVENT). + value []byte + + // Is the document start/end indicator implicit, or the tag optional? + // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). + implicit bool + + // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). + quoted_implicit bool + + // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + style yaml_style_t +} + +func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } +func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } +func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } + +// Nodes + +const ( + yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. + yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. + yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. + yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. + yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. + yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. + + yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. + yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. + + // Not in original libyaml. + yaml_BINARY_TAG = "tag:yaml.org,2002:binary" + yaml_MERGE_TAG = "tag:yaml.org,2002:merge" + + yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. + yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. + yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. +) + +type yaml_node_type_t int + +// Node types. +const ( + // An empty node. + yaml_NO_NODE yaml_node_type_t = iota + + yaml_SCALAR_NODE // A scalar node. + yaml_SEQUENCE_NODE // A sequence node. + yaml_MAPPING_NODE // A mapping node. +) + +// An element of a sequence node. +type yaml_node_item_t int + +// An element of a mapping node. +type yaml_node_pair_t struct { + key int // The key of the element. + value int // The value of the element. +} + +// The node structure. +type yaml_node_t struct { + typ yaml_node_type_t // The node type. + tag []byte // The node tag. + + // The node data. + + // The scalar parameters (for yaml_SCALAR_NODE). + scalar struct { + value []byte // The scalar value. + length int // The length of the scalar value. + style yaml_scalar_style_t // The scalar style. + } + + // The sequence parameters (for YAML_SEQUENCE_NODE). + sequence struct { + items_data []yaml_node_item_t // The stack of sequence items. + style yaml_sequence_style_t // The sequence style. + } + + // The mapping parameters (for yaml_MAPPING_NODE). + mapping struct { + pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). + pairs_start *yaml_node_pair_t // The beginning of the stack. + pairs_end *yaml_node_pair_t // The end of the stack. + pairs_top *yaml_node_pair_t // The top of the stack. + style yaml_mapping_style_t // The mapping style. + } + + start_mark yaml_mark_t // The beginning of the node. + end_mark yaml_mark_t // The end of the node. + +} + +// The document structure. +type yaml_document_t struct { + + // The document nodes. + nodes []yaml_node_t + + // The version directive. + version_directive *yaml_version_directive_t + + // The list of tag directives. + tag_directives_data []yaml_tag_directive_t + tag_directives_start int // The beginning of the tag directives list. + tag_directives_end int // The end of the tag directives list. + + start_implicit int // Is the document start indicator implicit? + end_implicit int // Is the document end indicator implicit? + + // The start/end of the document. + start_mark, end_mark yaml_mark_t +} + +// The prototype of a read handler. +// +// The read handler is called when the parser needs to read more bytes from the +// source. The handler should write not more than size bytes to the buffer. +// The number of written bytes should be set to the size_read variable. +// +// [in,out] data A pointer to an application data specified by +// yaml_parser_set_input(). +// [out] buffer The buffer to write the data from the source. +// [in] size The size of the buffer. +// [out] size_read The actual number of bytes read from the source. +// +// On success, the handler should return 1. If the handler failed, +// the returned value should be 0. On EOF, the handler should set the +// size_read to 0 and return 1. +type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) + +// This structure holds information about a potential simple key. +type yaml_simple_key_t struct { + possible bool // Is a simple key possible? + required bool // Is a simple key required? + token_number int // The number of the token. + mark yaml_mark_t // The position mark. +} + +// The states of the parser. +type yaml_parser_state_t int + +const ( + yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota + + yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. + yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. + yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. + yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. + yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. + yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. + yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. + yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. + yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. + yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. + yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. + yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. + yaml_PARSE_END_STATE // Expect nothing. +) + +func (ps yaml_parser_state_t) String() string { + switch ps { + case yaml_PARSE_STREAM_START_STATE: + return "yaml_PARSE_STREAM_START_STATE" + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_START_STATE: + return "yaml_PARSE_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return "yaml_PARSE_DOCUMENT_CONTENT_STATE" + case yaml_PARSE_DOCUMENT_END_STATE: + return "yaml_PARSE_DOCUMENT_END_STATE" + case yaml_PARSE_BLOCK_NODE_STATE: + return "yaml_PARSE_BLOCK_NODE_STATE" + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" + case yaml_PARSE_FLOW_NODE_STATE: + return "yaml_PARSE_FLOW_NODE_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" + case yaml_PARSE_END_STATE: + return "yaml_PARSE_END_STATE" + } + return "" +} + +// This structure holds aliases data. +type yaml_alias_data_t struct { + anchor []byte // The anchor. + index int // The node id. + mark yaml_mark_t // The anchor mark. +} + +// The parser structure. +// +// All members are internal. Manage the structure using the +// yaml_parser_ family of functions. +type yaml_parser_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + + problem string // Error description. + + // The byte about which the problem occurred. + problem_offset int + problem_value int + problem_mark yaml_mark_t + + // The error context. + context string + context_mark yaml_mark_t + + // Reader stuff + + read_handler yaml_read_handler_t // Read handler. + + input_file io.Reader // File input data. + input []byte // String input data. + input_pos int + + eof bool // EOF flag + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + unread int // The number of unread characters in the buffer. + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The input encoding. + + offset int // The offset of the current position (in bytes). + mark yaml_mark_t // The mark of the current position. + + // Scanner stuff + + stream_start_produced bool // Have we started to scan the input stream? + stream_end_produced bool // Have we reached the end of the input stream? + + flow_level int // The number of unclosed '[' and '{' indicators. + + tokens []yaml_token_t // The tokens queue. + tokens_head int // The head of the tokens queue. + tokens_parsed int // The number of tokens fetched from the queue. + token_available bool // Does the tokens queue contain a token ready for dequeueing. + + indent int // The current indentation level. + indents []int // The indentation levels stack. + + simple_key_allowed bool // May a simple key occur at the current position? + simple_keys []yaml_simple_key_t // The stack of simple keys. + + // Parser stuff + + state yaml_parser_state_t // The current parser state. + states []yaml_parser_state_t // The parser states stack. + marks []yaml_mark_t // The stack of marks. + tag_directives []yaml_tag_directive_t // The list of TAG directives. + + // Dumper stuff + + aliases []yaml_alias_data_t // The alias data. + + document *yaml_document_t // The currently parsed document. +} + +// Emitter Definitions + +// The prototype of a write handler. +// +// The write handler is called when the emitter needs to flush the accumulated +// characters to the output. The handler should write @a size bytes of the +// @a buffer to the output. +// +// @param[in,out] data A pointer to an application data specified by +// yaml_emitter_set_output(). +// @param[in] buffer The buffer with bytes to be written. +// @param[in] size The size of the buffer. +// +// @returns On success, the handler should return @c 1. If the handler failed, +// the returned value should be @c 0. +// +type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error + +type yaml_emitter_state_t int + +// The emitter states. +const ( + // Expect STREAM-START. + yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota + + yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. + yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. + yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. + yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. + yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. + yaml_EMIT_END_STATE // Expect nothing. +) + +// The emitter structure. +// +// All members are internal. Manage the structure using the @c yaml_emitter_ +// family of functions. +type yaml_emitter_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + problem string // Error description. + + // Writer stuff + + write_handler yaml_write_handler_t // Write handler. + + output_buffer *[]byte // String output data. + output_file io.Writer // File output data. + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The stream encoding. + + // Emitter stuff + + canonical bool // If the output is in the canonical style? + best_indent int // The number of indentation spaces. + best_width int // The preferred width of the output lines. + unicode bool // Allow unescaped non-ASCII characters? + line_break yaml_break_t // The preferred line break. + + state yaml_emitter_state_t // The current emitter state. + states []yaml_emitter_state_t // The stack of states. + + events []yaml_event_t // The event queue. + events_head int // The head of the event queue. + + indents []int // The stack of indentation levels. + + tag_directives []yaml_tag_directive_t // The list of tag directives. + + indent int // The current indentation level. + + flow_level int // The current flow level. + + root_context bool // Is it the document root context? + sequence_context bool // Is it a sequence context? + mapping_context bool // Is it a mapping context? + simple_key_context bool // Is it a simple mapping key context? + + line int // The current line. + column int // The current column. + whitespace bool // If the last character was a whitespace? + indention bool // If the last character was an indentation character (' ', '-', '?', ':')? + open_ended bool // If an explicit document end is required? + + // Anchor analysis. + anchor_data struct { + anchor []byte // The anchor value. + alias bool // Is it an alias? + } + + // Tag analysis. + tag_data struct { + handle []byte // The tag handle. + suffix []byte // The tag suffix. + } + + // Scalar analysis. + scalar_data struct { + value []byte // The scalar value. + multiline bool // Does the scalar contain line breaks? + flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? + block_plain_allowed bool // Can the scalar be expressed in the block plain style? + single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? + block_allowed bool // Can the scalar be expressed in the literal or folded styles? + style yaml_scalar_style_t // The output style. + } + + // Dumper stuff + + opened bool // If the stream was already opened? + closed bool // If the stream was already closed? + + // The information associated with the document nodes. + anchors *struct { + references int // The number of references. + anchor int // The anchor id. + serialized bool // If the node has been emitted? + } + + last_anchor_id int // The last assigned anchor id. + + document *yaml_document_t // The currently emitted document. +} diff --git a/vendor/gopkg.in/yaml.v2/yamlprivateh.go b/vendor/gopkg.in/yaml.v2/yamlprivateh.go new file mode 100644 index 0000000..8110ce3 --- /dev/null +++ b/vendor/gopkg.in/yaml.v2/yamlprivateh.go @@ -0,0 +1,173 @@ +package yaml + +const ( + // The size of the input raw buffer. + input_raw_buffer_size = 512 + + // The size of the input buffer. + // It should be possible to decode the whole raw buffer. + input_buffer_size = input_raw_buffer_size * 3 + + // The size of the output buffer. + output_buffer_size = 128 + + // The size of the output raw buffer. + // It should be possible to encode the whole output buffer. + output_raw_buffer_size = (output_buffer_size*2 + 2) + + // The size of other stacks and queues. + initial_stack_size = 16 + initial_queue_size = 16 + initial_string_size = 16 +) + +// Check if the character at the specified position is an alphabetical +// character, a digit, '_', or '-'. +func is_alpha(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' +} + +// Check if the character at the specified position is a digit. +func is_digit(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' +} + +// Get the value of a digit. +func as_digit(b []byte, i int) int { + return int(b[i]) - '0' +} + +// Check if the character at the specified position is a hex-digit. +func is_hex(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' +} + +// Get the value of a hex-digit. +func as_hex(b []byte, i int) int { + bi := b[i] + if bi >= 'A' && bi <= 'F' { + return int(bi) - 'A' + 10 + } + if bi >= 'a' && bi <= 'f' { + return int(bi) - 'a' + 10 + } + return int(bi) - '0' +} + +// Check if the character is ASCII. +func is_ascii(b []byte, i int) bool { + return b[i] <= 0x7F +} + +// Check if the character at the start of the buffer can be printed unescaped. +func is_printable(b []byte, i int) bool { + return ((b[i] == 0x0A) || // . == #x0A + (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E + (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF + (b[i] > 0xC2 && b[i] < 0xED) || + (b[i] == 0xED && b[i+1] < 0xA0) || + (b[i] == 0xEE) || + (b[i] == 0xEF && // #xE000 <= . <= #xFFFD + !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF + !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) +} + +// Check if the character at the specified position is NUL. +func is_z(b []byte, i int) bool { + return b[i] == 0x00 +} + +// Check if the beginning of the buffer is a BOM. +func is_bom(b []byte, i int) bool { + return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF +} + +// Check if the character at the specified position is space. +func is_space(b []byte, i int) bool { + return b[i] == ' ' +} + +// Check if the character at the specified position is tab. +func is_tab(b []byte, i int) bool { + return b[i] == '\t' +} + +// Check if the character at the specified position is blank (space or tab). +func is_blank(b []byte, i int) bool { + //return is_space(b, i) || is_tab(b, i) + return b[i] == ' ' || b[i] == '\t' +} + +// Check if the character at the specified position is a line break. +func is_break(b []byte, i int) bool { + return (b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) +} + +func is_crlf(b []byte, i int) bool { + return b[i] == '\r' && b[i+1] == '\n' +} + +// Check if the character is a line break or NUL. +func is_breakz(b []byte, i int) bool { + //return is_break(b, i) || is_z(b, i) + return ( // is_break: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + // is_z: + b[i] == 0) +} + +// Check if the character is a line break, space, or NUL. +func is_spacez(b []byte, i int) bool { + //return is_space(b, i) || is_breakz(b, i) + return ( // is_space: + b[i] == ' ' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Check if the character is a line break, space, tab, or NUL. +func is_blankz(b []byte, i int) bool { + //return is_blank(b, i) || is_breakz(b, i) + return ( // is_blank: + b[i] == ' ' || b[i] == '\t' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Determine the width of the character. +func width(b byte) int { + // Don't replace these by a switch without first + // confirming that it is being inlined. + if b&0x80 == 0x00 { + return 1 + } + if b&0xE0 == 0xC0 { + return 2 + } + if b&0xF0 == 0xE0 { + return 3 + } + if b&0xF8 == 0xF0 { + return 4 + } + return 0 + +}

    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%0DZ`>WqSRz|B` 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 zΒ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

  • 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�GRT9P)mVcU_^-m3F>&>>$nTaH)*< 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