add vendor
This commit is contained in:
vendor
cloud.google.com
go
code.gitea.io
sdk
gitea
LICENSEadmin_cron.goadmin_org.goadmin_repo.goadmin_user.goattachment.goclient.godoc.gofork.gogit_blob.gogit_hook.gohelper.gohook.goissue.goissue_comment.goissue_label.goissue_milestone.goissue_reaction.goissue_stopwatch.goissue_subscription.goissue_tracked_time.golist_options.gonotifications.gooauth2.goorg.goorg_member.goorg_team.gopull.gopull_review.gorelease.gorepo.gorepo_branch.gorepo_branch_protection.gorepo_collaborator.gorepo_commit.gorepo_file.gorepo_key.gorepo_migrate.gorepo_refs.gorepo_stars.gorepo_tag.gorepo_team.gorepo_template.gorepo_topics.gorepo_transfer.gorepo_tree.gorepo_watch.gosettings.gostatus.gouser.gouser_app.gouser_email.gouser_follow.gouser_gpgkey.gouser_key.gouser_search.gouser_settings.goversion.go
github.com
Masterminds
goutils
.travis.ymlCHANGELOG.mdLICENSE.txtREADME.mdappveyor.ymlcryptorandomstringutils.gorandomstringutils.gostringutils.gowordutils.go
semver
.travis.ymlCHANGELOG.mdLICENSE.txtMakefileREADME.mdappveyor.ymlcollection.goconstraints.godoc.goversion.goversion_fuzz.go
sprig
agext
apparentlymart
go-cidr
go-textseg
armon
aws
aws-sdk-go
LICENSE.txtNOTICE.txtjsonvalue.gopayload.go
aws
awserr
awsutil
client
config.gocontext_1_5.gocontext_1_9.gocontext_background_1_5.gocontext_background_1_7.gocontext_sleep.goconvert_types.gocorehandlers
credentials
chain_provider.gocredentials.go
ec2rolecreds
endpointcreds
env_provider.goexample.iniprocesscreds
shared_credentials_provider.gostatic_provider.gostscreds
csm
defaults
doc.goec2metadata
endpoints
errors.gojsonvalue.gologger.gorequest
connection_reset_error.gohandlers.gohttp_request.gooffset_reader.gorequest.gorequest_1_7.gorequest_1_8.gorequest_context.gorequest_context_1_6.gorequest_pagination.goretryer.gotimeout_read_closer.govalidation.gowaiter.go
session
cabundle_transport.gocabundle_transport_1_5.gocabundle_transport_1_6.gocredentials.godoc.goenv_config.gosession.goshared_config.go
signer
types.gourl.gourl_1_7.goversion.gointernal
ini
ast.gocomma_token.gocomment_token.godoc.goempty_token.goexpression.gofuzz.goini.goini_lexer.goini_parser.goliteral_tokens.gonewline_token.gonumber_helper.goop_tokens.goparse_error.goparse_stack.gosep_tokens.goskipper.gostatement.govalue_util.govisitor.gowalker.gows_token.go
s3err
sdkio
sdkmath
sdkrand
sdkuri
shareddefaults
private
protocol
eventstream
host.gohost_prefix.goidempotency.gojson
jsonutil
query
rest
restxml
timestamp.gounmarshal.goxml
service
bgentry
go-netrc
speakeasy
davecgh
fatih
golang
protobuf
google
go-cmp
LICENSE
cmp
uuid
googleapis
hashicorp
errwrap
go-checkpoint
go-cleanhttp
go-getter
.travis.ymlLICENSEREADME.mdappveyor.ymlchecksum.goclient.goclient_mode.goclient_option.goclient_option_progress.gocommon.gocopy_dir.godecompress.godecompress_bzip2.godecompress_gzip.godecompress_tar.godecompress_tbz2.godecompress_testing.godecompress_tgz.godecompress_txz.godecompress_xz.godecompress_zip.godetect.godetect_bitbucket.godetect_file.godetect_gcs.godetect_git.godetect_github.godetect_s3.godetect_ssh.gofolder_storage.goget.goget_base.goget_file.goget_file_copy.goget_file_unix.goget_file_windows.goget_gcs.goget_git.goget_hg.goget_http.goget_mock.goget_s3.go
helper
netrc.gosource.gostorage.gogo-hclog
.gitignoreLICENSEREADME.mdcontext.goglobal.gointlogger.gologger.gonulllogger.gostacktrace.gostdlog.gowriter.go
go-multierror
go-plugin
.gitignoreLICENSEREADME.mdclient.godiscover.goerror.gogrpc_broker.gogrpc_client.gogrpc_controller.gogrpc_server.go
internal
log_entry.gomtls.gomux_broker.goplugin.goprocess.goprocess_posix.goprocess_windows.goprotocol.gorpc_client.gorpc_server.goserver.goserver_mux.gostream.gotesting.gogo-safetemp
go-uuid
go-version
golang-lru
hc-install
.go-version.goreleaser.ymlLICENSEREADME.md
checkpoint
errors
fs
installer.gointernal
build
httpclient
pubkey
releasesjson
src
validators
version
product
releases
src
hcl
.gitignore.travis.ymlLICENSEMakefileREADME.mdappveyor.ymldecoder.gohcl.go
hcl
json
lex.goparse.gov2
CHANGELOG.mdLICENSEREADME.mddiagnostic.godiagnostic_text.godidyoumean.godoc.goeval_context.goexpr_call.goexpr_list.goexpr_map.goexpr_unwrap.go
ext
dynblock
README.mdexpand_body.goexpand_spec.goexpr_wrap.goiteration.gopublic.goschema.gounknown_body.govariables.govariables_hcldec.go
typeexpr
gohcl
hcldec
hcled
hclparse
hclsyntax
diagnostics.godidyoumean.godoc.goexpression.goexpression_ops.goexpression_template.goexpression_vars.gofile.gogenerate.gokeywords.gonavigation.gonode.goparser.goparser_template.goparser_traversal.gopeeker.gopublic.goscan_string_lit.goscan_string_lit.rlscan_tokens.goscan_tokens.rlspec.mdstructure.gostructure_at_pos.gotoken.gotoken_type_string.gounicode2ragel.rbunicode_derived.rlvariables.gowalk.go
hclwrite
ast.goast_attribute.goast_block.goast_body.goast_expression.godoc.goformat.gogenerate.gonative_node_sorter.gonode.goparser.gopublic.gotokens.go
json
ast.godidyoumean.godoc.gonavigation.goparser.gopeeker.gopublic.goscanner.gospec.mdstructure.gotokentype_string.go
merged.goops.gopos.gopos_scanner.goschema.gospec.mdstatic_expr.gostructure.gostructure_at_pos.gotraversal.gotraversal_for_expr.gologutils
terraform-config-inspect
LICENSE
tfconfig
terraform-exec
LICENSE
internal
version
tfexec
apply.gocmd.gocmd_default.gocmd_linux.godestroy.godoc.goerrors.goexit_errors.gofmt.goforce_unlock.goget.gograph.goimport.goinit.gooptions.gooutput.goplan.goproviders_lock.goproviders_schema.gorefresh.goshow.gostate_mv.gostate_rm.gotaint.goterraform.gountaint.goupgrade012.goupgrade013.govalidate.goversion.goworkspace_delete.goworkspace_list.goworkspace_new.goworkspace_select.goworkspace_show.go
terraform-json
.gitignore.go-versionLICENSEMakefileREADME.mdaction.goconfig.goexpression.goplan.goschemas.gostate.gotfjson.govalidate.goversion.go
terraform-plugin-docs
terraform-plugin-sdk
LICENSE
acctest
helper
hashcode
logging
resource
error.gogrpc_test_provider.goid.gomap.goresource.gostate.gostate_shim.gotesting.gotesting_config.gotesting_import_state.gotesting_new.gotesting_new_config.gotesting_new_import_state.gowait.go
schema
README.mdbackend.gocore_schema.godata_source_resource_shim.goequal.gofield_reader.gofield_reader_config.gofield_reader_diff.gofield_reader_map.gofield_reader_multi.gofield_writer.gofield_writer_map.gogetsource_string.goprovider.goresource.goresource_data.goresource_data_get_source.goresource_diff.goresource_importer.goresource_timeout.goschema.goserialize.goset.goshims.gotesting.govaluetype.govaluetype_string.go
httpclient
internal
addrs
count_attr.godoc.gofor_each_attr.goinput_variable.goinstance_key.golocal_value.gomodule.gomodule_call.gomodule_instance.gooutput_value.goparse_ref.goparse_target.gopath_attr.goprovider_config.goprovider_type.goreferenceable.goresource.goresource_phase.goresourcemode_string.goself.gotargetable.goterraform_attr.go
command
configs
backend.gocompat_shim.goconfig.goconfig_build.go
configload
copy_dir.godoc.goinode.goinode_freebsd.goinode_windows.goloader.goloader_load.goloader_snapshot.gomodule_mgr.gotesting.go
configschema
coerce_value.godecoder_spec.godoc.goempty_value.goimplied_type.gointernal_validate.gonestingmode_string.gonone_required.goschema.govalidate_traversal.go
depends_on.godoc.gohcl2shim
module.gomodule_call.gomodule_merge.gomodule_merge_body.gonamed_values.goparser.goparser_config.goparser_config_dir.goparser_values.goprovider.goprovisioner.goprovisioneronfailure_string.goprovisionerwhen_string.goresource.gosynth_body.goutil.govariable_type_hint.govariabletypehint_string.goversion_constraint.godag
earlyconfig
flatmap
helper
httpclient
initwd
copy_dir.godoc.gofrom_module.gogetter.goinode.goinode_freebsd.goinode_windows.gomodule_install.gomodule_install_hooks.go
lang
modsdir
moduledeps
plans
action.goaction_string.gochanges.gochanges_src.gochanges_sync.godoc.godynamic_value.go
objchange
plan.goplugin
convert
discovery
providers
provisioners
registry
states
doc.goeachmode_string.goinstance_generation.goinstance_object.goinstance_object_src.gomodule.goobjectstatus_string.gooutput_value.goresource.gostate.gostate_deepcopy.gostate_equal.gostate_string.go
statefile
diagnostics.godoc.gofile.goread.goversion0.goversion1.goversion1_upgrade.goversion2.goversion2_upgrade.goversion3.goversion3_upgrade.goversion4.gowrite.go
sync.gotfdiags
config_traversals.gocontextual.godiagnostic.godiagnostic_base.godiagnostics.godoc.goerror.gohcl.gorpc_friendly.goseverity_string.gosimple_warning.gosource_range.gosourceless.go
tfplugin5
version
meta
plugin
client.gogrpc_provider.gogrpc_provisioner.goplugin.goresource_provider.goserve.goui_input.goui_output.go
terraform
context.gocontext_components.gocontext_graph_type.gocontext_import.gocontext_input.godiff.goedge_destroy.goeval.goeval_apply.goeval_check_prevent_destroy.goeval_context.goeval_context_builtin.goeval_context_mock.goeval_count.goeval_count_boundary.goeval_diff.goeval_error.goeval_filter.goeval_filter_operation.goeval_for_each.goeval_if.goeval_import_state.goeval_lang.goeval_local.goeval_noop.goeval_output.goeval_provider.goeval_provisioner.goeval_read_data.goeval_refresh.goeval_sequence.goeval_state.goeval_state_upgrade.goeval_validate.goeval_validate_selfref.goeval_variable.goevaltree_provider.goevaluate.goevaluate_valid.gofeatures.gograph.gograph_builder.gograph_builder_apply.gograph_builder_destroy_plan.gograph_builder_eval.gograph_builder_import.gograph_builder_plan.gograph_builder_refresh.gograph_builder_validate.gograph_dot.gograph_interface_subgraph.gograph_walk.gograph_walk_context.gograph_walk_operation.gographtype_string.gohook.gohook_mock.gohook_stop.goinstancetype.goinstancetype_string.gomodule_dependencies.gonode_count_boundary.gonode_data_destroy.gonode_data_refresh.gonode_local.gonode_module_removed.gonode_module_variable.gonode_output.gonode_output_orphan.gonode_provider.gonode_provider_abstract.gonode_provider_disabled.gonode_provider_eval.gonode_provisioner.gonode_resource_abstract.gonode_resource_apply.gonode_resource_apply_instance.gonode_resource_destroy.gonode_resource_destroy_deposed.gonode_resource_plan.gonode_resource_plan_destroy.gonode_resource_plan_instance.gonode_resource_plan_orphan.gonode_resource_refresh.gonode_resource_validate.gonode_root_variable.gopath.goplan.goprovider_mock.goprovisioner_mock.goresource.goresource_address.goresource_mode.goresource_mode_string.goresource_provider.goresource_provider_mock.goresource_provisioner.goresource_provisioner_mock.goschemas.gostate.gostate_filter.gostate_upgrade_v1_to_v2.gostate_upgrade_v2_to_v3.gostate_v1.gotesting.gotransform.gotransform_attach_config_provider.gotransform_attach_config_resource.gotransform_attach_schema.gotransform_attach_state.gotransform_config.gotransform_count_boundary.gotransform_destroy_cbd.gotransform_destroy_edge.gotransform_diff.gotransform_expand.gotransform_import_provider.gotransform_import_state.gotransform_local.gotransform_module_variable.gotransform_orphan_count.gotransform_orphan_output.gotransform_orphan_resource.gotransform_output.gotransform_provider.gotransform_provisioner.gotransform_reference.gotransform_removed_modules.gotransform_resource_count.gotransform_root.gotransform_state.gotransform_targets.gotransform_transitive_reduction.gotransform_variable.gotransform_vertex.goui_input.goui_input_mock.goui_input_prefix.goui_output.goui_output_callback.goui_output_mock.goui_output_provisioner.goutil.govaluesourcetype_string.govariables.goversion_required.gowalkoperation_string.go
terraform-plugin-test
terraform-svchost
yamux
huandu
xstrings
imdario
mergo
jmespath
go-jmespath
mattn
go-colorable
LICENSEREADME.mdcolorable_appengine.gocolorable_others.gocolorable_windows.gogo.test.shnoncolorable.go
go-isatty
mitchellh
cli
.travis.ymlLICENSEMakefileREADME.mdautocomplete.gocli.gocommand.gocommand_mock.gohelp.goui.goui_colored.goui_concurrent.goui_mock.goui_writer.go
colorstring
copystructure
go-homedir
go-testing-interface
go-wordwrap
mapstructure
reflectwalk
oklog
posener
complete
russross
blackfriday
spf13
afero
ulikunitz
xz
.gitignoreLICENSEREADME.mdTODO.mdbits.gocrc.goformat.gofox.xz
internal
lzma
bintree.gobitops.gobreader.gobuffer.gobytewriter.godecoder.godecoderdict.godirectcodec.godistcodec.goencoder.goencoderdict.gofox.lzmahashtable.goheader.goheader2.golengthcodec.goliteralcodec.gomatchalgorithm.gooperation.goprob.goproperties.gorangecodec.goreader.goreader2.gostate.gotreecodecs.gowriter.gowriter2.go
lzmafilter.gomake-docsreader.gowriter.govmihailenco
msgpack
v4
.golangci.yml.travis.ymlCHANGELOG.mdLICENSEMakefileREADME.mdappengine.go
codes
decode.godecode_map.godecode_number.godecode_query.godecode_slice.godecode_string.godecode_value.goencode.goencode_map.goencode_number.goencode_slice.goencode_value.goext.gointern.gomsgpack.gosafe.gotime.gotypes.gounsafe.gotagparser
zclconf
go-cty-yaml
.travis.ymlCHANGELOG.mdLICENSELICENSE.libyamlNOTICEapic.goconverter.gocty_funcs.godecode.goemitterc.goencode.goerror.goimplied_type.goparserc.goreaderc.goresolve.goscannerc.gowriterc.goyaml.goyamlh.goyamlprivateh.go
go-cty
LICENSE
cty
capsule.gocapsule_ops.gocollection.go
convert
compare_types.goconversion.goconversion_capsule.goconversion_collection.goconversion_dynamic.goconversion_object.goconversion_primitive.goconversion_tuple.godoc.gomismatch_msg.gopublic.gosort_types.gounify.go
doc.goelement_iterator.goerror.gofunction
argument.godoc.goerror.gofunction.go
gob.gostdlib
bool.gobytes.gocollection.goconversion.gocsv.godatetime.godoc.goformat.goformat_fsm.goformat_fsm.rlgeneral.gojson.gonumber.goregexp.gosequence.goset.gostring.gostring_replace.go
unpredictable.gogocty
helper.gojson.gojson
list_type.gomap_type.gomarks.gomsgpack
null.goobject_type.gopath.gopath_set.goprimitive_type.goset
set_helper.goset_internals.goset_type.gotuple_type.gotype.gotype_conform.gotypes_to_register.gounknown.gounknown_as_null.govalue.govalue_init.govalue_ops.gowalk.gogo.opencensus.io
.gitignore.travis.ymlAUTHORSCONTRIBUTING.mdGopkg.lockGopkg.tomlLICENSEMakefileREADME.mdappveyor.ymlopencensus.go
internal
metric
metricdata
metricproducer
plugin
ochttp
resource
stats
tag
trace
golang.org
x
crypto
AUTHORSCONTRIBUTORSLICENSEPATENTS
bcrypt
blowfish
cast5
openpgp
armor
canonical_text.goelgamal
errors
keys.gopacket
compressed.goconfig.goencrypted_key.goliteral.goocfb.goone_pass_signature.goopaque.gopacket.goprivate_key.gopublic_key.gopublic_key_v3.goreader.gosignature.gosignature_v3.gosymmetric_key_encrypted.gosymmetrically_encrypted.gouserattribute.gouserid.go
read.gos2k
write.gopbkdf2
scrypt
net
AUTHORSCONTRIBUTORSLICENSEPATENTS
context
http
httpguts
http2
.gitignoreDockerfileMakefileREADMEciphers.goclient_conn_pool.godatabuffer.goerrors.goflow.goframe.gogo111.gogotrack.goheadermap.go
hpack
http2.gonot_go111.gopipe.goserver.gotransport.gowrite.gowritesched.gowritesched_priority.gowritesched_random.goidna
idna10.0.0.goidna9.0.0.gopunycode.gotables10.0.0.gotables11.0.0.gotables12.0.0.gotables13.0.0.gotables9.0.0.gotrie.gotrieval.go
internal
timeseries
trace
oauth2
.travis.ymlAUTHORSCONTRIBUTING.mdCONTRIBUTORSLICENSEREADME.md
google
internal
jws
jwt
oauth2.gotoken.gotransport.gosys
AUTHORSCONTRIBUTORSLICENSEPATENTS
internal
unsafeheader
unix
.gitignoreREADME.mdaffinity_linux.goaliases.goasm_aix_ppc64.sasm_bsd_386.sasm_bsd_amd64.sasm_bsd_arm.sasm_bsd_arm64.sasm_linux_386.sasm_linux_amd64.sasm_linux_arm.sasm_linux_arm64.sasm_linux_mips64x.sasm_linux_mipsx.sasm_linux_ppc64x.sasm_linux_riscv64.sasm_linux_s390x.sasm_openbsd_mips64.sasm_solaris_amd64.sasm_zos_s390x.sbluetooth_linux.gocap_freebsd.goconstants.godev_aix_ppc.godev_aix_ppc64.godev_darwin.godev_dragonfly.godev_freebsd.godev_linux.godev_netbsd.godev_openbsd.godev_zos.godirent.goendian_big.goendian_little.goenv_unix.goepoll_zos.goerrors_freebsd_386.goerrors_freebsd_amd64.goerrors_freebsd_arm.goerrors_freebsd_arm64.gofcntl.gofcntl_darwin.gofcntl_linux_32bit.gofdset.gofstatfs_zos.gogccgo.gogccgo_c.cgccgo_linux_amd64.goifreq_linux.goioctl.goioctl_linux.goioctl_zos.gomkall.shmkerrors.shpagesize_unix.gopledge_openbsd.goptrace_darwin.goptrace_ios.gorace.gorace0.goreaddirent_getdents.goreaddirent_getdirentries.gosockcmsg_dragonfly.gosockcmsg_linux.gosockcmsg_unix.gosockcmsg_unix_other.gostr.gosyscall.gosyscall_aix.gosyscall_aix_ppc.gosyscall_aix_ppc64.gosyscall_bsd.gosyscall_darwin.1_12.gosyscall_darwin.1_13.gosyscall_darwin.gosyscall_darwin_amd64.gosyscall_darwin_arm64.gosyscall_darwin_libSystem.gosyscall_dragonfly.gosyscall_dragonfly_amd64.gosyscall_freebsd.gosyscall_freebsd_386.gosyscall_freebsd_amd64.gosyscall_freebsd_arm.gosyscall_freebsd_arm64.gosyscall_illumos.gosyscall_linux.gosyscall_linux_386.gosyscall_linux_amd64.gosyscall_linux_amd64_gc.gosyscall_linux_arm.gosyscall_linux_arm64.gosyscall_linux_gc.gosyscall_linux_gc_386.gosyscall_linux_gc_arm.gosyscall_linux_gccgo_386.gosyscall_linux_gccgo_arm.gosyscall_linux_mips64x.gosyscall_linux_mipsx.gosyscall_linux_ppc.gosyscall_linux_ppc64x.gosyscall_linux_riscv64.gosyscall_linux_s390x.gosyscall_linux_sparc64.gosyscall_netbsd.gosyscall_netbsd_386.gosyscall_netbsd_amd64.gosyscall_netbsd_arm.gosyscall_netbsd_arm64.gosyscall_openbsd.gosyscall_openbsd_386.gosyscall_openbsd_amd64.gosyscall_openbsd_arm.gosyscall_openbsd_arm64.gosyscall_openbsd_mips64.gosyscall_solaris.gosyscall_solaris_amd64.gosyscall_unix.gosyscall_unix_gc.gosyscall_unix_gc_ppc64x.gosyscall_zos_s390x.gotimestruct.gounveil_openbsd.goxattr_bsd.gozerrors_aix_ppc.gozerrors_aix_ppc64.gozerrors_darwin_amd64.gozerrors_darwin_arm64.gozerrors_dragonfly_amd64.gozerrors_freebsd_386.gozerrors_freebsd_amd64.gozerrors_freebsd_arm.gozerrors_freebsd_arm64.gozerrors_linux.gozerrors_linux_386.gozerrors_linux_amd64.gozerrors_linux_arm.gozerrors_linux_arm64.gozerrors_linux_mips.gozerrors_linux_mips64.gozerrors_linux_mips64le.gozerrors_linux_mipsle.gozerrors_linux_ppc.gozerrors_linux_ppc64.gozerrors_linux_ppc64le.gozerrors_linux_riscv64.gozerrors_linux_s390x.gozerrors_linux_sparc64.gozerrors_netbsd_386.gozerrors_netbsd_amd64.gozerrors_netbsd_arm.gozerrors_netbsd_arm64.gozerrors_openbsd_386.gozerrors_openbsd_amd64.gozerrors_openbsd_arm.gozerrors_openbsd_arm64.gozerrors_openbsd_mips64.gozerrors_solaris_amd64.gozerrors_zos_s390x.gozptrace_armnn_linux.gozptrace_linux_arm64.gozptrace_mipsnn_linux.gozptrace_mipsnnle_linux.gozptrace_x86_linux.gozsyscall_aix_ppc.gozsyscall_aix_ppc64.gozsyscall_aix_ppc64_gc.gozsyscall_aix_ppc64_gccgo.gozsyscall_darwin_amd64.1_13.gozsyscall_darwin_amd64.1_13.szsyscall_darwin_amd64.gozsyscall_darwin_amd64.szsyscall_darwin_arm64.1_13.gozsyscall_darwin_arm64.1_13.szsyscall_darwin_arm64.gozsyscall_darwin_arm64.szsyscall_dragonfly_amd64.gozsyscall_freebsd_386.gozsyscall_freebsd_amd64.gozsyscall_freebsd_arm.gozsyscall_freebsd_arm64.gozsyscall_illumos_amd64.gozsyscall_linux.gozsyscall_linux_386.gozsyscall_linux_amd64.gozsyscall_linux_arm.gozsyscall_linux_arm64.gozsyscall_linux_mips.gozsyscall_linux_mips64.gozsyscall_linux_mips64le.gozsyscall_linux_mipsle.gozsyscall_linux_ppc.gozsyscall_linux_ppc64.gozsyscall_linux_ppc64le.gozsyscall_linux_riscv64.gozsyscall_linux_s390x.gozsyscall_linux_sparc64.gozsyscall_netbsd_386.gozsyscall_netbsd_amd64.gozsyscall_netbsd_arm.gozsyscall_netbsd_arm64.gozsyscall_openbsd_386.gozsyscall_openbsd_amd64.gozsyscall_openbsd_arm.gozsyscall_openbsd_arm64.gozsyscall_openbsd_mips64.gozsyscall_solaris_amd64.gozsyscall_zos_s390x.gozsysctl_openbsd_386.gozsysctl_openbsd_amd64.gozsysctl_openbsd_arm.gozsysctl_openbsd_arm64.gozsysctl_openbsd_mips64.gozsysnum_darwin_amd64.gozsysnum_darwin_arm64.gozsysnum_dragonfly_amd64.gozsysnum_freebsd_386.gozsysnum_freebsd_amd64.gozsysnum_freebsd_arm.gozsysnum_freebsd_arm64.gozsysnum_linux_386.gozsysnum_linux_amd64.gozsysnum_linux_arm.gozsysnum_linux_arm64.gozsysnum_linux_mips.gozsysnum_linux_mips64.gozsysnum_linux_mips64le.gozsysnum_linux_mipsle.gozsysnum_linux_ppc.gozsysnum_linux_ppc64.gozsysnum_linux_ppc64le.gozsysnum_linux_riscv64.gozsysnum_linux_s390x.gozsysnum_linux_sparc64.gozsysnum_netbsd_386.gozsysnum_netbsd_amd64.gozsysnum_netbsd_arm.gozsysnum_netbsd_arm64.gozsysnum_openbsd_386.gozsysnum_openbsd_amd64.gozsysnum_openbsd_arm.gozsysnum_openbsd_arm64.gozsysnum_openbsd_mips64.gozsysnum_zos_s390x.goztypes_aix_ppc.goztypes_aix_ppc64.goztypes_darwin_amd64.goztypes_darwin_arm64.goztypes_dragonfly_amd64.goztypes_freebsd_386.goztypes_freebsd_amd64.goztypes_freebsd_arm.goztypes_freebsd_arm64.goztypes_illumos_amd64.goztypes_linux.goztypes_linux_386.goztypes_linux_amd64.goztypes_linux_arm.goztypes_linux_arm64.goztypes_linux_mips.goztypes_linux_mips64.goztypes_linux_mips64le.goztypes_linux_mipsle.goztypes_linux_ppc.goztypes_linux_ppc64.goztypes_linux_ppc64le.goztypes_linux_riscv64.goztypes_linux_s390x.goztypes_linux_sparc64.goztypes_netbsd_386.goztypes_netbsd_amd64.goztypes_netbsd_arm.goztypes_netbsd_arm64.goztypes_openbsd_386.goztypes_openbsd_amd64.goztypes_openbsd_arm.goztypes_openbsd_arm64.goztypes_openbsd_mips64.goztypes_solaris_amd64.goztypes_zos_s390x.go
text
google.golang.org
api
appengine
.travis.ymlCONTRIBUTING.mdLICENSEREADME.mdappengine.goappengine_vm.go
datastore
errors.goidentity.gointernal
api.goapi_classic.goapi_common.goapp_id.go
namespace.gotimeout.gotravis_install.shtravis_test.shapp_identity
base
datastore
identity.goidentity_classic.goidentity_flex.goidentity_vm.gointernal.golog
main.gomain_common.gomain_vm.gometadata.gomodules
net.goregen.shremote_api
transaction.gourlfetch
urlfetch
genproto
grpc
.travis.ymlAUTHORSCODE-OF-CONDUCT.mdCONTRIBUTING.mdGOVERNANCE.mdLICENSEMAINTAINERS.mdMakefileREADME.mdcall.goclientconn.gocodec.gocodegen.shtrace.goversion.govet.sh
attributes
backoff.gobackoff
balancer.gobalancer
balancer_conn_wrappers.gobalancer_v1_wrapper.gobinarylog
grpc_binarylog_v1
codes
connectivity
credentials
dialoptions.godoc.goencoding
grpclog
health
install_gae.shinterceptor.gointernal
backoff
balancerload
binarylog
buffer
channelz
envconfig
grpcrand
grpcsync
internal.goresolver
syscall
transport
keepalive
metadata
naming
peer
picker_wrapper.gopickfirst.gopreloader.goproxy.goresolver
resolver_conn_wrapper.gorpc_util.goserver.goservice_config.goserviceconfig
stats
status
stream.gotap
test
bufconn
378
vendor/github.com/google/go-cmp/cmp/path.go
generated
vendored
Normal file
378
vendor/github.com/google/go-cmp/cmp/path.go
generated
vendored
Normal file
@ -0,0 +1,378 @@
|
||||
// Copyright 2017, The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmp
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"unicode"
|
||||
"unicode/utf8"
|
||||
|
||||
"github.com/google/go-cmp/cmp/internal/value"
|
||||
)
|
||||
|
||||
// Path is a list of PathSteps describing the sequence of operations to get
|
||||
// from some root type to the current position in the value tree.
|
||||
// The first Path element is always an operation-less PathStep that exists
|
||||
// simply to identify the initial type.
|
||||
//
|
||||
// When traversing structs with embedded structs, the embedded struct will
|
||||
// always be accessed as a field before traversing the fields of the
|
||||
// embedded struct themselves. That is, an exported field from the
|
||||
// embedded struct will never be accessed directly from the parent struct.
|
||||
type Path []PathStep
|
||||
|
||||
// PathStep is a union-type for specific operations to traverse
|
||||
// a value's tree structure. Users of this package never need to implement
|
||||
// these types as values of this type will be returned by this package.
|
||||
//
|
||||
// Implementations of this interface are
|
||||
// StructField, SliceIndex, MapIndex, Indirect, TypeAssertion, and Transform.
|
||||
type PathStep interface {
|
||||
String() string
|
||||
|
||||
// Type is the resulting type after performing the path step.
|
||||
Type() reflect.Type
|
||||
|
||||
// Values is the resulting values after performing the path step.
|
||||
// The type of each valid value is guaranteed to be identical to Type.
|
||||
//
|
||||
// In some cases, one or both may be invalid or have restrictions:
|
||||
// • For StructField, both are not interface-able if the current field
|
||||
// is unexported and the struct type is not explicitly permitted by
|
||||
// an Exporter to traverse unexported fields.
|
||||
// • For SliceIndex, one may be invalid if an element is missing from
|
||||
// either the x or y slice.
|
||||
// • For MapIndex, one may be invalid if an entry is missing from
|
||||
// either the x or y map.
|
||||
//
|
||||
// The provided values must not be mutated.
|
||||
Values() (vx, vy reflect.Value)
|
||||
}
|
||||
|
||||
var (
|
||||
_ PathStep = StructField{}
|
||||
_ PathStep = SliceIndex{}
|
||||
_ PathStep = MapIndex{}
|
||||
_ PathStep = Indirect{}
|
||||
_ PathStep = TypeAssertion{}
|
||||
_ PathStep = Transform{}
|
||||
)
|
||||
|
||||
func (pa *Path) push(s PathStep) {
|
||||
*pa = append(*pa, s)
|
||||
}
|
||||
|
||||
func (pa *Path) pop() {
|
||||
*pa = (*pa)[:len(*pa)-1]
|
||||
}
|
||||
|
||||
// Last returns the last PathStep in the Path.
|
||||
// If the path is empty, this returns a non-nil PathStep that reports a nil Type.
|
||||
func (pa Path) Last() PathStep {
|
||||
return pa.Index(-1)
|
||||
}
|
||||
|
||||
// Index returns the ith step in the Path and supports negative indexing.
|
||||
// A negative index starts counting from the tail of the Path such that -1
|
||||
// refers to the last step, -2 refers to the second-to-last step, and so on.
|
||||
// If index is invalid, this returns a non-nil PathStep that reports a nil Type.
|
||||
func (pa Path) Index(i int) PathStep {
|
||||
if i < 0 {
|
||||
i = len(pa) + i
|
||||
}
|
||||
if i < 0 || i >= len(pa) {
|
||||
return pathStep{}
|
||||
}
|
||||
return pa[i]
|
||||
}
|
||||
|
||||
// String returns the simplified path to a node.
|
||||
// The simplified path only contains struct field accesses.
|
||||
//
|
||||
// For example:
|
||||
// MyMap.MySlices.MyField
|
||||
func (pa Path) String() string {
|
||||
var ss []string
|
||||
for _, s := range pa {
|
||||
if _, ok := s.(StructField); ok {
|
||||
ss = append(ss, s.String())
|
||||
}
|
||||
}
|
||||
return strings.TrimPrefix(strings.Join(ss, ""), ".")
|
||||
}
|
||||
|
||||
// GoString returns the path to a specific node using Go syntax.
|
||||
//
|
||||
// For example:
|
||||
// (*root.MyMap["key"].(*mypkg.MyStruct).MySlices)[2][3].MyField
|
||||
func (pa Path) GoString() string {
|
||||
var ssPre, ssPost []string
|
||||
var numIndirect int
|
||||
for i, s := range pa {
|
||||
var nextStep PathStep
|
||||
if i+1 < len(pa) {
|
||||
nextStep = pa[i+1]
|
||||
}
|
||||
switch s := s.(type) {
|
||||
case Indirect:
|
||||
numIndirect++
|
||||
pPre, pPost := "(", ")"
|
||||
switch nextStep.(type) {
|
||||
case Indirect:
|
||||
continue // Next step is indirection, so let them batch up
|
||||
case StructField:
|
||||
numIndirect-- // Automatic indirection on struct fields
|
||||
case nil:
|
||||
pPre, pPost = "", "" // Last step; no need for parenthesis
|
||||
}
|
||||
if numIndirect > 0 {
|
||||
ssPre = append(ssPre, pPre+strings.Repeat("*", numIndirect))
|
||||
ssPost = append(ssPost, pPost)
|
||||
}
|
||||
numIndirect = 0
|
||||
continue
|
||||
case Transform:
|
||||
ssPre = append(ssPre, s.trans.name+"(")
|
||||
ssPost = append(ssPost, ")")
|
||||
continue
|
||||
}
|
||||
ssPost = append(ssPost, s.String())
|
||||
}
|
||||
for i, j := 0, len(ssPre)-1; i < j; i, j = i+1, j-1 {
|
||||
ssPre[i], ssPre[j] = ssPre[j], ssPre[i]
|
||||
}
|
||||
return strings.Join(ssPre, "") + strings.Join(ssPost, "")
|
||||
}
|
||||
|
||||
type pathStep struct {
|
||||
typ reflect.Type
|
||||
vx, vy reflect.Value
|
||||
}
|
||||
|
||||
func (ps pathStep) Type() reflect.Type { return ps.typ }
|
||||
func (ps pathStep) Values() (vx, vy reflect.Value) { return ps.vx, ps.vy }
|
||||
func (ps pathStep) String() string {
|
||||
if ps.typ == nil {
|
||||
return "<nil>"
|
||||
}
|
||||
s := ps.typ.String()
|
||||
if s == "" || strings.ContainsAny(s, "{}\n") {
|
||||
return "root" // Type too simple or complex to print
|
||||
}
|
||||
return fmt.Sprintf("{%s}", s)
|
||||
}
|
||||
|
||||
// StructField represents a struct field access on a field called Name.
|
||||
type StructField struct{ *structField }
|
||||
type structField struct {
|
||||
pathStep
|
||||
name string
|
||||
idx int
|
||||
|
||||
// These fields are used for forcibly accessing an unexported field.
|
||||
// pvx, pvy, and field are only valid if unexported is true.
|
||||
unexported bool
|
||||
mayForce bool // Forcibly allow visibility
|
||||
paddr bool // Was parent addressable?
|
||||
pvx, pvy reflect.Value // Parent values (always addressable)
|
||||
field reflect.StructField // Field information
|
||||
}
|
||||
|
||||
func (sf StructField) Type() reflect.Type { return sf.typ }
|
||||
func (sf StructField) Values() (vx, vy reflect.Value) {
|
||||
if !sf.unexported {
|
||||
return sf.vx, sf.vy // CanInterface reports true
|
||||
}
|
||||
|
||||
// Forcibly obtain read-write access to an unexported struct field.
|
||||
if sf.mayForce {
|
||||
vx = retrieveUnexportedField(sf.pvx, sf.field, sf.paddr)
|
||||
vy = retrieveUnexportedField(sf.pvy, sf.field, sf.paddr)
|
||||
return vx, vy // CanInterface reports true
|
||||
}
|
||||
return sf.vx, sf.vy // CanInterface reports false
|
||||
}
|
||||
func (sf StructField) String() string { return fmt.Sprintf(".%s", sf.name) }
|
||||
|
||||
// Name is the field name.
|
||||
func (sf StructField) Name() string { return sf.name }
|
||||
|
||||
// Index is the index of the field in the parent struct type.
|
||||
// See reflect.Type.Field.
|
||||
func (sf StructField) Index() int { return sf.idx }
|
||||
|
||||
// SliceIndex is an index operation on a slice or array at some index Key.
|
||||
type SliceIndex struct{ *sliceIndex }
|
||||
type sliceIndex struct {
|
||||
pathStep
|
||||
xkey, ykey int
|
||||
isSlice bool // False for reflect.Array
|
||||
}
|
||||
|
||||
func (si SliceIndex) Type() reflect.Type { return si.typ }
|
||||
func (si SliceIndex) Values() (vx, vy reflect.Value) { return si.vx, si.vy }
|
||||
func (si SliceIndex) String() string {
|
||||
switch {
|
||||
case si.xkey == si.ykey:
|
||||
return fmt.Sprintf("[%d]", si.xkey)
|
||||
case si.ykey == -1:
|
||||
// [5->?] means "I don't know where X[5] went"
|
||||
return fmt.Sprintf("[%d->?]", si.xkey)
|
||||
case si.xkey == -1:
|
||||
// [?->3] means "I don't know where Y[3] came from"
|
||||
return fmt.Sprintf("[?->%d]", si.ykey)
|
||||
default:
|
||||
// [5->3] means "X[5] moved to Y[3]"
|
||||
return fmt.Sprintf("[%d->%d]", si.xkey, si.ykey)
|
||||
}
|
||||
}
|
||||
|
||||
// Key is the index key; it may return -1 if in a split state
|
||||
func (si SliceIndex) Key() int {
|
||||
if si.xkey != si.ykey {
|
||||
return -1
|
||||
}
|
||||
return si.xkey
|
||||
}
|
||||
|
||||
// SplitKeys are the indexes for indexing into slices in the
|
||||
// x and y values, respectively. These indexes may differ due to the
|
||||
// insertion or removal of an element in one of the slices, causing
|
||||
// all of the indexes to be shifted. If an index is -1, then that
|
||||
// indicates that the element does not exist in the associated slice.
|
||||
//
|
||||
// Key is guaranteed to return -1 if and only if the indexes returned
|
||||
// by SplitKeys are not the same. SplitKeys will never return -1 for
|
||||
// both indexes.
|
||||
func (si SliceIndex) SplitKeys() (ix, iy int) { return si.xkey, si.ykey }
|
||||
|
||||
// MapIndex is an index operation on a map at some index Key.
|
||||
type MapIndex struct{ *mapIndex }
|
||||
type mapIndex struct {
|
||||
pathStep
|
||||
key reflect.Value
|
||||
}
|
||||
|
||||
func (mi MapIndex) Type() reflect.Type { return mi.typ }
|
||||
func (mi MapIndex) Values() (vx, vy reflect.Value) { return mi.vx, mi.vy }
|
||||
func (mi MapIndex) String() string { return fmt.Sprintf("[%#v]", mi.key) }
|
||||
|
||||
// Key is the value of the map key.
|
||||
func (mi MapIndex) Key() reflect.Value { return mi.key }
|
||||
|
||||
// Indirect represents pointer indirection on the parent type.
|
||||
type Indirect struct{ *indirect }
|
||||
type indirect struct {
|
||||
pathStep
|
||||
}
|
||||
|
||||
func (in Indirect) Type() reflect.Type { return in.typ }
|
||||
func (in Indirect) Values() (vx, vy reflect.Value) { return in.vx, in.vy }
|
||||
func (in Indirect) String() string { return "*" }
|
||||
|
||||
// TypeAssertion represents a type assertion on an interface.
|
||||
type TypeAssertion struct{ *typeAssertion }
|
||||
type typeAssertion struct {
|
||||
pathStep
|
||||
}
|
||||
|
||||
func (ta TypeAssertion) Type() reflect.Type { return ta.typ }
|
||||
func (ta TypeAssertion) Values() (vx, vy reflect.Value) { return ta.vx, ta.vy }
|
||||
func (ta TypeAssertion) String() string { return fmt.Sprintf(".(%v)", ta.typ) }
|
||||
|
||||
// Transform is a transformation from the parent type to the current type.
|
||||
type Transform struct{ *transform }
|
||||
type transform struct {
|
||||
pathStep
|
||||
trans *transformer
|
||||
}
|
||||
|
||||
func (tf Transform) Type() reflect.Type { return tf.typ }
|
||||
func (tf Transform) Values() (vx, vy reflect.Value) { return tf.vx, tf.vy }
|
||||
func (tf Transform) String() string { return fmt.Sprintf("%s()", tf.trans.name) }
|
||||
|
||||
// Name is the name of the Transformer.
|
||||
func (tf Transform) Name() string { return tf.trans.name }
|
||||
|
||||
// Func is the function pointer to the transformer function.
|
||||
func (tf Transform) Func() reflect.Value { return tf.trans.fnc }
|
||||
|
||||
// Option returns the originally constructed Transformer option.
|
||||
// The == operator can be used to detect the exact option used.
|
||||
func (tf Transform) Option() Option { return tf.trans }
|
||||
|
||||
// pointerPath represents a dual-stack of pointers encountered when
|
||||
// recursively traversing the x and y values. This data structure supports
|
||||
// detection of cycles and determining whether the cycles are equal.
|
||||
// In Go, cycles can occur via pointers, slices, and maps.
|
||||
//
|
||||
// The pointerPath uses a map to represent a stack; where descension into a
|
||||
// pointer pushes the address onto the stack, and ascension from a pointer
|
||||
// pops the address from the stack. Thus, when traversing into a pointer from
|
||||
// reflect.Ptr, reflect.Slice element, or reflect.Map, we can detect cycles
|
||||
// by checking whether the pointer has already been visited. The cycle detection
|
||||
// uses a separate stack for the x and y values.
|
||||
//
|
||||
// If a cycle is detected we need to determine whether the two pointers
|
||||
// should be considered equal. The definition of equality chosen by Equal
|
||||
// requires two graphs to have the same structure. To determine this, both the
|
||||
// x and y values must have a cycle where the previous pointers were also
|
||||
// encountered together as a pair.
|
||||
//
|
||||
// Semantically, this is equivalent to augmenting Indirect, SliceIndex, and
|
||||
// MapIndex with pointer information for the x and y values.
|
||||
// Suppose px and py are two pointers to compare, we then search the
|
||||
// Path for whether px was ever encountered in the Path history of x, and
|
||||
// similarly so with py. If either side has a cycle, the comparison is only
|
||||
// equal if both px and py have a cycle resulting from the same PathStep.
|
||||
//
|
||||
// Using a map as a stack is more performant as we can perform cycle detection
|
||||
// in O(1) instead of O(N) where N is len(Path).
|
||||
type pointerPath struct {
|
||||
// mx is keyed by x pointers, where the value is the associated y pointer.
|
||||
mx map[value.Pointer]value.Pointer
|
||||
// my is keyed by y pointers, where the value is the associated x pointer.
|
||||
my map[value.Pointer]value.Pointer
|
||||
}
|
||||
|
||||
func (p *pointerPath) Init() {
|
||||
p.mx = make(map[value.Pointer]value.Pointer)
|
||||
p.my = make(map[value.Pointer]value.Pointer)
|
||||
}
|
||||
|
||||
// Push indicates intent to descend into pointers vx and vy where
|
||||
// visited reports whether either has been seen before. If visited before,
|
||||
// equal reports whether both pointers were encountered together.
|
||||
// Pop must be called if and only if the pointers were never visited.
|
||||
//
|
||||
// The pointers vx and vy must be a reflect.Ptr, reflect.Slice, or reflect.Map
|
||||
// and be non-nil.
|
||||
func (p pointerPath) Push(vx, vy reflect.Value) (equal, visited bool) {
|
||||
px := value.PointerOf(vx)
|
||||
py := value.PointerOf(vy)
|
||||
_, ok1 := p.mx[px]
|
||||
_, ok2 := p.my[py]
|
||||
if ok1 || ok2 {
|
||||
equal = p.mx[px] == py && p.my[py] == px // Pointers paired together
|
||||
return equal, true
|
||||
}
|
||||
p.mx[px] = py
|
||||
p.my[py] = px
|
||||
return false, false
|
||||
}
|
||||
|
||||
// Pop ascends from pointers vx and vy.
|
||||
func (p pointerPath) Pop(vx, vy reflect.Value) {
|
||||
delete(p.mx, value.PointerOf(vx))
|
||||
delete(p.my, value.PointerOf(vy))
|
||||
}
|
||||
|
||||
// isExported reports whether the identifier is exported.
|
||||
func isExported(id string) bool {
|
||||
r, _ := utf8.DecodeRuneInString(id)
|
||||
return unicode.IsUpper(r)
|
||||
}
|
Reference in New Issue
Block a user