Go go mod
601
Gopkg.lock
generated
@ -1,601 +0,0 @@
|
||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
digest = "1:c7931499c1ea384e8ddb3d48cb60ecda4136eb84ca8db0b358c5781f5863b9d5"
|
||||
name = "cloud.google.com/go"
|
||||
packages = [
|
||||
"compute/metadata",
|
||||
"iam",
|
||||
"internal",
|
||||
"internal/optional",
|
||||
"internal/trace",
|
||||
"internal/version",
|
||||
"storage",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "0ebda48a7f143b1cce9eb37a8c1106ac762a3430"
|
||||
version = "v0.34.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:3ccf8ba7afe02fd470c4f07d6eea4d0e6875da3d129f95b925f2003ce5dd2024"
|
||||
name = "github.com/StackExchange/wmi"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "5d049714c4a64225c3c79a7cf7d02f7fb5b96338"
|
||||
version = "1.0.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:5494cf2a25198713bb2ada9824abccc5610230f6d35c79deec16258a9a92203b"
|
||||
name = "github.com/aws/aws-sdk-go"
|
||||
packages = [
|
||||
"aws",
|
||||
"aws/awserr",
|
||||
"aws/awsutil",
|
||||
"aws/client",
|
||||
"aws/client/metadata",
|
||||
"aws/corehandlers",
|
||||
"aws/credentials",
|
||||
"aws/credentials/ec2rolecreds",
|
||||
"aws/credentials/endpointcreds",
|
||||
"aws/credentials/processcreds",
|
||||
"aws/credentials/stscreds",
|
||||
"aws/csm",
|
||||
"aws/defaults",
|
||||
"aws/ec2metadata",
|
||||
"aws/endpoints",
|
||||
"aws/request",
|
||||
"aws/session",
|
||||
"aws/signer/v4",
|
||||
"internal/ini",
|
||||
"internal/s3err",
|
||||
"internal/sdkio",
|
||||
"internal/sdkrand",
|
||||
"internal/sdkuri",
|
||||
"internal/shareddefaults",
|
||||
"private/protocol",
|
||||
"private/protocol/eventstream",
|
||||
"private/protocol/eventstream/eventstreamapi",
|
||||
"private/protocol/query",
|
||||
"private/protocol/query/queryutil",
|
||||
"private/protocol/rest",
|
||||
"private/protocol/restxml",
|
||||
"private/protocol/xml/xmlutil",
|
||||
"service/s3",
|
||||
"service/sts",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "6d55516ad2946220d9e26804f224c1c215f293ea"
|
||||
version = "v1.16.17"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:707ebe952a8b3d00b343c01536c79c73771d100f63ec6babeaed5c79e2b8a8dd"
|
||||
name = "github.com/beorn7/perks"
|
||||
packages = ["quantile"]
|
||||
pruneopts = "NUT"
|
||||
revision = "3a771d992973f24aa725d07868b467d1ddfceafb"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:dded9e568aec57d91db79b0a7f2f091899c1260869daccb7eaa05e8ce81ffefd"
|
||||
name = "github.com/bugsnag/bugsnag-go"
|
||||
packages = [
|
||||
".",
|
||||
"device",
|
||||
"errors",
|
||||
"headers",
|
||||
"sessions",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "834d8fee64233ea79b0389ad7a5a438261788f66"
|
||||
version = "v1.4.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:1f5a99725a5e5d17691e5cc04d9ca729673528624c72d25ec1d7ec785836cea5"
|
||||
name = "github.com/bugsnag/panicwrap"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "4009b2b7c78d820cc4a2e42f035bb557ce4ae45b"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:65d39e3a7e262416eb6f855d213954282921a3506125ce88e59514ae396dd690"
|
||||
name = "github.com/certifi/gocertifi"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "deb3ae2ef2610fde3330947281941c562861188b"
|
||||
version = "2018.01.18"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec"
|
||||
name = "github.com/davecgh/go-spew"
|
||||
packages = ["spew"]
|
||||
pruneopts = "NUT"
|
||||
revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
|
||||
version = "v1.1.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:b96091e0b0ef04e3c2a4fbcce53d3866edc0ed4295f1264e122f8ca34175a11e"
|
||||
name = "github.com/getsentry/raven-go"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "f04e7487e9a6b9d9837d52743fb5f40576c56411"
|
||||
version = "v0.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:022649cb675f044f3b7b6ab58c528dad7b11eee526ecd792a1b04ee4b0c692da"
|
||||
name = "github.com/go-ole/go-ole"
|
||||
packages = [
|
||||
".",
|
||||
"oleutil",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "39dc8486bd0952279431257138bc428275b86797"
|
||||
version = "v1.2.2"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:bde9f189072512ba353f3641d4839cb4c9c7edf421e467f2c03f267b402bd16c"
|
||||
name = "github.com/gofrs/uuid"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "6b08a5c5172ba18946672b49749cde22873dd7c2"
|
||||
version = "v3.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:5ae5b54d7cd695bafa92bf426b7c3d046f907260ec0fcb4fe5c368d937597c00"
|
||||
name = "github.com/golang/protobuf"
|
||||
packages = [
|
||||
"proto",
|
||||
"protoc-gen-go/descriptor",
|
||||
"ptypes",
|
||||
"ptypes/any",
|
||||
"ptypes/duration",
|
||||
"ptypes/timestamp",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:56a1f3949ebb7fa22fa6b4e4ac0fe0f77cc4faee5b57413e6fa9199a8458faf1"
|
||||
name = "github.com/google/uuid"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "9b3b1e0f5f99ae461456d768e7d301a7acdaa2d8"
|
||||
version = "v1.1.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:fd4d1f4c2d75aee3833ee7d8ef11fcf42ddec3c63d1819548288c3d868d6eb14"
|
||||
name = "github.com/googleapis/gax-go"
|
||||
packages = [
|
||||
".",
|
||||
"v2",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "c8a15bac9b9fe955bd9f900272f9a306465d28cf"
|
||||
version = "v2.0.3"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:1d879fa52622c803ae26e4960efd41e299067885b19c9c536352f0d41bcf8c7e"
|
||||
name = "github.com/honeybadger-io/honeybadger-go"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "cff309ec4b9ffb7d7d9051d4cb18ebbd4b3e84f5"
|
||||
version = "v0.4.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:1f2aebae7e7c856562355ec0198d8ca2fa222fb05e5b1b66632a1fce39631885"
|
||||
name = "github.com/jmespath/go-jmespath"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "c2b33e84"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:263f9b0a0bcbfff9d5e7d9f2aa11f53995d98214fe0fb97e429e7a5f4534a0f9"
|
||||
name = "github.com/kardianos/osext"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "ae77be60afb1dcacde03767a8c37337fad28ac14"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:aaa8e0e7e35d92e21daed3f241832cee73d15ca1cd3302ba3843159a959a7eac"
|
||||
name = "github.com/klauspost/compress"
|
||||
packages = [
|
||||
"flate",
|
||||
"gzip",
|
||||
"zlib",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "30be6041bed523c18e269a700ebd9c2ea9328574"
|
||||
version = "v1.4.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:f44ca3e400a23dc9cf76a09d71891da95193c0c7da2008205f8f20154f49b22d"
|
||||
name = "github.com/klauspost/cpuid"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "e7e905edc00ea8827e58662220139109efea09db"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:a4e095309329d4548b915b87bb668c8d98f71e3e0af596060dd5eea054db342c"
|
||||
name = "github.com/mat/besticon"
|
||||
packages = ["ico"]
|
||||
pruneopts = "NUT"
|
||||
revision = "b665f81996e70f0df9962a349cf989c1a9996a87"
|
||||
version = "v3.9.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:91ee858ec7fc39208597251d5c4a1f2ef80524b51ed7e04eb1764f462d79dbe7"
|
||||
name = "github.com/matoous/go-nanoid"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "eab626deece6c9806cfbe2290859eb31a934edb0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:5985ef4caf91ece5d54817c11ea25f182697534f8ae6521eadcd628c142ac4b6"
|
||||
name = "github.com/matttproud/golang_protobuf_extensions"
|
||||
packages = ["pbutil"]
|
||||
pruneopts = "NUT"
|
||||
revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c"
|
||||
version = "v1.0.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:283a1684d33267d7c521bbbd578f521b535bfb1994dbbd1160a2c9bca82949d3"
|
||||
name = "github.com/newrelic/go-agent"
|
||||
packages = [
|
||||
".",
|
||||
"internal",
|
||||
"internal/cat",
|
||||
"internal/jsonx",
|
||||
"internal/logger",
|
||||
"internal/sysinfo",
|
||||
"internal/utilization",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "a138039206f5b43233e37885306a4dfbdd20e5ce"
|
||||
version = "v2.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:93b1d84c5fa6d1ea52f4114c37714cddd84d5b78f151b62bb101128dd51399bf"
|
||||
name = "github.com/pborman/uuid"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "adf5a7427709b9deb95d29d3fa8a2bf9cfd388f1"
|
||||
version = "v1.2"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:14715f705ff5dfe0ffd6571d7d201dd8e921030f8070321a79380d8ca4ec1a24"
|
||||
name = "github.com/pkg/errors"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4"
|
||||
version = "v0.8.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe"
|
||||
name = "github.com/pmezard/go-difflib"
|
||||
packages = ["difflib"]
|
||||
pruneopts = "NUT"
|
||||
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
|
||||
version = "v1.0.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:7c7cfeecd2b7147bcfec48a4bf622b4879e26aec145a9e373ce51d0c23b16f6b"
|
||||
name = "github.com/prometheus/client_golang"
|
||||
packages = [
|
||||
"prometheus",
|
||||
"prometheus/internal",
|
||||
"prometheus/promhttp",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "505eaef017263e299324067d40ca2c48f6a2cf50"
|
||||
version = "v0.9.2"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4"
|
||||
name = "github.com/prometheus/client_model"
|
||||
packages = ["go"]
|
||||
pruneopts = "NUT"
|
||||
revision = "f287a105a20ec685d797f65cd0ce8fbeaef42da1"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:4340e7fba4a17b3c5c8c874698eae0db8573668bfa541903bd6a654915d6b2bb"
|
||||
name = "github.com/prometheus/common"
|
||||
packages = [
|
||||
"expfmt",
|
||||
"internal/bitbucket.org/ww/goautoneg",
|
||||
"model",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "2998b132700a7d019ff618c06a234b47c1f3f681"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:21971c48d2d34cf633e1898e60bb968eb046a42010ebeb73c8733d7b610cbf59"
|
||||
name = "github.com/prometheus/procfs"
|
||||
packages = [
|
||||
".",
|
||||
"internal/util",
|
||||
"nfs",
|
||||
"xfs",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "b1a0a9a36d7453ba0f62578b99712f3a6c5f82d1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:b649932a02293e0b78dca76add8e6db43e405012e29d8662c14cdcb28ffc9f8b"
|
||||
name = "github.com/shirou/gopsutil"
|
||||
packages = [
|
||||
"internal/common",
|
||||
"load",
|
||||
"mem",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "ccc1c1016bc5d10e803189ee43417c50cdde7f1b"
|
||||
version = "v2.18.12"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:478d30bda4aa1674ff097066a5da483e660ab51915a7ba62aef73149915aa938"
|
||||
name = "github.com/stretchr/testify"
|
||||
packages = [
|
||||
"assert",
|
||||
"require",
|
||||
"suite",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "ffdc059bfe9ce6a4e144ba849dbedead332c6053"
|
||||
version = "v1.3.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:af354641f23332b1a8d5d361d11b5a9171589e412a67d499633706c611acc064"
|
||||
name = "github.com/valyala/bytebufferpool"
|
||||
packages = ["."]
|
||||
pruneopts = "NUT"
|
||||
revision = "e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7"
|
||||
version = "v1.0.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:db3a7fd81bc4907ff78c8d6748ba68583a18112f725cbc9bf3633cb495a870af"
|
||||
name = "github.com/valyala/fasthttp"
|
||||
packages = [
|
||||
".",
|
||||
"fasthttputil",
|
||||
"stackless",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "ed3793a1e1602989ba50bd20823e8521a4da84af"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:fe16cada1d1885b0092d869e39bdd96195d2c65c6f79830a291978f027db1fc6"
|
||||
name = "go.opencensus.io"
|
||||
packages = [
|
||||
".",
|
||||
"exemplar",
|
||||
"internal",
|
||||
"internal/tagencoding",
|
||||
"plugin/ochttp",
|
||||
"plugin/ochttp/propagation/b3",
|
||||
"stats",
|
||||
"stats/internal",
|
||||
"stats/view",
|
||||
"tag",
|
||||
"trace",
|
||||
"trace/internal",
|
||||
"trace/propagation",
|
||||
"trace/tracestate",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "b7bf3cdb64150a8c8c53b769fdeb2ba581bd4d4b"
|
||||
version = "v0.18.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:70fb374148272deb5d48b47ea8b05dc6bbe31861eb0218ede9b6c67a30b7142a"
|
||||
name = "golang.org/x/image"
|
||||
packages = [
|
||||
"bmp",
|
||||
"riff",
|
||||
"vp8",
|
||||
"vp8l",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "cd38e8056d9b27bb2f265effa37fb0ea6b8a7f0f"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:d4e37d487310720926343302a747f3f9e8f020e5fe961190c57ce437159a6e63"
|
||||
name = "golang.org/x/net"
|
||||
packages = [
|
||||
"context",
|
||||
"context/ctxhttp",
|
||||
"http/httpguts",
|
||||
"http2",
|
||||
"http2/hpack",
|
||||
"idna",
|
||||
"internal/timeseries",
|
||||
"trace",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "915654e7eabcea33ae277abbecf52f0d8b7a9fdc"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:5364323a31838682c280a6bae0efe47991de96b9cbfeef4f27b3ca2353eb7ff8"
|
||||
name = "golang.org/x/oauth2"
|
||||
packages = [
|
||||
".",
|
||||
"google",
|
||||
"internal",
|
||||
"jws",
|
||||
"jwt",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "fd3eaa146cbb5c89ce187c275fb79bd3a36a5ffc"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:b521f10a2d8fa85c04a8ef4e62f2d1e14d303599a55d64dabf9f5a02f84d35eb"
|
||||
name = "golang.org/x/sync"
|
||||
packages = ["errgroup"]
|
||||
pruneopts = "NUT"
|
||||
revision = "37e7f081c4d4c64e13b10787722085407fe5d15f"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:a387cb801e1eacd9a2369522ea11d73077dcb6b7d9525d73c56d12754a0e8afc"
|
||||
name = "golang.org/x/sys"
|
||||
packages = [
|
||||
"unix",
|
||||
"windows",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "48ac38b7c8cbedd50b1613c0fccacfc7d88dfcdf"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:e7071ed636b5422cc51c0e3a6cebc229d6c9fffc528814b519a980641422d619"
|
||||
name = "golang.org/x/text"
|
||||
packages = [
|
||||
"collate",
|
||||
"collate/build",
|
||||
"internal/colltab",
|
||||
"internal/gen",
|
||||
"internal/tag",
|
||||
"internal/triegen",
|
||||
"internal/ucd",
|
||||
"language",
|
||||
"secure/bidirule",
|
||||
"transform",
|
||||
"unicode/bidi",
|
||||
"unicode/cldr",
|
||||
"unicode/norm",
|
||||
"unicode/rangetable",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
|
||||
version = "v0.3.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:23d9fc277640dc6c36702437a57f0ee033b9f7c9f05a7a425abc7df28f6dd259"
|
||||
name = "google.golang.org/api"
|
||||
packages = [
|
||||
"gensupport",
|
||||
"googleapi",
|
||||
"googleapi/internal/uritemplates",
|
||||
"googleapi/transport",
|
||||
"internal",
|
||||
"iterator",
|
||||
"option",
|
||||
"storage/v1",
|
||||
"transport/http",
|
||||
"transport/http/internal/propagation",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "19e022d8cf43ce81f046bae8cc18c5397cc7732f"
|
||||
version = "v0.1.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:d395d49d784dd3a11938a3e85091b6570664aa90ff2767a626565c6c130fa7e9"
|
||||
name = "google.golang.org/appengine"
|
||||
packages = [
|
||||
".",
|
||||
"internal",
|
||||
"internal/app_identity",
|
||||
"internal/base",
|
||||
"internal/datastore",
|
||||
"internal/log",
|
||||
"internal/modules",
|
||||
"internal/remote_api",
|
||||
"internal/urlfetch",
|
||||
"urlfetch",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1"
|
||||
version = "v1.4.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:a7d48ca460ca1b4f6ccd8c95502443afa05df88aee84de7dbeb667a8754e8fa6"
|
||||
name = "google.golang.org/genproto"
|
||||
packages = [
|
||||
"googleapis/api/annotations",
|
||||
"googleapis/iam/v1",
|
||||
"googleapis/rpc/code",
|
||||
"googleapis/rpc/status",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "6909d8a4a91b6d3fd1c4580b6e35816be4706fef"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:638e6e596d67d0a0c8aeb76ebdcf73561b701ea43f21963b1db231d96ed7db68"
|
||||
name = "google.golang.org/grpc"
|
||||
packages = [
|
||||
".",
|
||||
"balancer",
|
||||
"balancer/base",
|
||||
"balancer/roundrobin",
|
||||
"binarylog/grpc_binarylog_v1",
|
||||
"codes",
|
||||
"connectivity",
|
||||
"credentials",
|
||||
"credentials/internal",
|
||||
"encoding",
|
||||
"encoding/proto",
|
||||
"grpclog",
|
||||
"internal",
|
||||
"internal/backoff",
|
||||
"internal/binarylog",
|
||||
"internal/channelz",
|
||||
"internal/envconfig",
|
||||
"internal/grpcrand",
|
||||
"internal/grpcsync",
|
||||
"internal/syscall",
|
||||
"internal/transport",
|
||||
"keepalive",
|
||||
"metadata",
|
||||
"naming",
|
||||
"peer",
|
||||
"resolver",
|
||||
"resolver/dns",
|
||||
"resolver/passthrough",
|
||||
"stats",
|
||||
"status",
|
||||
"tap",
|
||||
]
|
||||
pruneopts = "NUT"
|
||||
revision = "df014850f6dee74ba2fc94874043a9f3f75fbfd8"
|
||||
version = "v1.17.0"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
input-imports = [
|
||||
"cloud.google.com/go/storage",
|
||||
"github.com/aws/aws-sdk-go/aws",
|
||||
"github.com/aws/aws-sdk-go/aws/session",
|
||||
"github.com/aws/aws-sdk-go/service/s3",
|
||||
"github.com/bugsnag/bugsnag-go",
|
||||
"github.com/getsentry/raven-go",
|
||||
"github.com/honeybadger-io/honeybadger-go",
|
||||
"github.com/mat/besticon/ico",
|
||||
"github.com/matoous/go-nanoid",
|
||||
"github.com/newrelic/go-agent",
|
||||
"github.com/prometheus/client_golang/prometheus",
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp",
|
||||
"github.com/stretchr/testify/assert",
|
||||
"github.com/stretchr/testify/require",
|
||||
"github.com/stretchr/testify/suite",
|
||||
"github.com/valyala/fasthttp",
|
||||
"golang.org/x/image/riff",
|
||||
"golang.org/x/image/vp8",
|
||||
"golang.org/x/image/vp8l",
|
||||
"golang.org/x/sync/errgroup",
|
||||
"google.golang.org/api/option",
|
||||
]
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
47
Gopkg.toml
@ -1,47 +0,0 @@
|
||||
# Gopkg.toml example
|
||||
#
|
||||
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
|
||||
# for detailed Gopkg.toml documentation.
|
||||
#
|
||||
# required = ["github.com/user/thing/cmd/thing"]
|
||||
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project"
|
||||
# version = "1.0.0"
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project2"
|
||||
# branch = "dev"
|
||||
# source = "github.com/myfork/project2"
|
||||
#
|
||||
# [[override]]
|
||||
# name = "github.com/x/y"
|
||||
# version = "2.4.0"
|
||||
#
|
||||
# [prune]
|
||||
# non-go = false
|
||||
# go-tests = true
|
||||
# unused-packages = true
|
||||
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/aws/aws-sdk-go"
|
||||
version = "1.15.47"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/matoous/go-nanoid"
|
||||
|
||||
[prune]
|
||||
go-tests = true
|
||||
unused-packages = true
|
||||
non-go = true
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/getsentry/raven-go"
|
||||
version = "0.2.0"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/valyala/fasthttp"
|
||||
version = "1.2.0"
|
44
go.mod
Normal file
@ -0,0 +1,44 @@
|
||||
module github.com/imgproxy/imgproxy
|
||||
|
||||
go 1.12
|
||||
|
||||
require (
|
||||
cloud.google.com/go v0.34.0
|
||||
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect
|
||||
github.com/aws/aws-sdk-go v1.16.17
|
||||
github.com/bitly/go-simplejson v0.5.0 // indirect
|
||||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
|
||||
github.com/bugsnag/bugsnag-go v1.4.0
|
||||
github.com/bugsnag/panicwrap v1.2.0 // indirect
|
||||
github.com/certifi/gocertifi v0.0.0-20180118203423-deb3ae2ef261 // indirect
|
||||
github.com/getsentry/raven-go v0.2.0
|
||||
github.com/go-ole/go-ole v1.2.2 // indirect
|
||||
github.com/gofrs/uuid v3.2.0+incompatible // indirect
|
||||
github.com/google/martian v2.1.0+incompatible // indirect
|
||||
github.com/google/uuid v1.1.0 // indirect
|
||||
github.com/googleapis/gax-go v0.0.0-20181219185031-c8a15bac9b9f // indirect
|
||||
github.com/honeybadger-io/honeybadger-go v0.4.0
|
||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 // indirect
|
||||
github.com/klauspost/compress v1.4.1 // indirect
|
||||
github.com/klauspost/cpuid v1.2.0 // indirect
|
||||
github.com/kr/pretty v0.1.0 // indirect
|
||||
github.com/mat/besticon v3.9.0+incompatible
|
||||
github.com/matoous/go-nanoid v0.0.0-20181114085210-eab626deece6
|
||||
github.com/newrelic/go-agent v2.2.0+incompatible
|
||||
github.com/pborman/uuid v0.0.0-20180906182336-adf5a7427709 // indirect
|
||||
github.com/pkg/errors v0.8.1 // indirect
|
||||
github.com/prometheus/client_golang v0.9.2
|
||||
github.com/prometheus/client_model v0.0.0-20190109181635-f287a105a20e // indirect
|
||||
github.com/prometheus/common v0.1.0 // indirect
|
||||
github.com/prometheus/procfs v0.0.0-20190104112138-b1a0a9a36d74 // indirect
|
||||
github.com/shirou/gopsutil v2.18.12+incompatible // indirect
|
||||
github.com/stretchr/testify v1.3.0
|
||||
github.com/valyala/fasthttp v1.2.0
|
||||
golang.org/x/image v0.0.0-20181116024801-cd38e8056d9b
|
||||
golang.org/x/net v0.0.0-20190110200230-915654e7eabc // indirect
|
||||
golang.org/x/oauth2 v0.0.0-20190110195249-fd3eaa146cbb // indirect
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4
|
||||
golang.org/x/sys v0.0.0-20190109145017-48ac38b7c8cb // indirect
|
||||
google.golang.org/api v0.1.0
|
||||
google.golang.org/genproto v0.0.0-20190110221437-6909d8a4a91b // indirect
|
||||
)
|
176
go.sum
Normal file
@ -0,0 +1,176 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
|
||||
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8=
|
||||
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/aws/aws-sdk-go v1.16.17 h1:hHRKZhoB4qEY17aGNp71UxQFyYpx6WZXGMUzx9y/A4w=
|
||||
github.com/aws/aws-sdk-go v1.16.17/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
|
||||
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
|
||||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
|
||||
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
|
||||
github.com/bugsnag/bugsnag-go v1.4.0 h1:CLCt5wO6/P0GelBEMRrlF52XveQMnnXHoCoxGZ+8a5g=
|
||||
github.com/bugsnag/bugsnag-go v1.4.0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
|
||||
github.com/bugsnag/panicwrap v1.2.0 h1:OzrKrRvXis8qEvOkfcxNcYbOd2O7xXS2nnKMEMABFQA=
|
||||
github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
|
||||
github.com/certifi/gocertifi v0.0.0-20180118203423-deb3ae2ef261 h1:6/yVvBsKeAw05IUj4AzvrxaCnDjN4nUqKjW9+w5wixg=
|
||||
github.com/certifi/gocertifi v0.0.0-20180118203423-deb3ae2ef261/go.mod h1:GJKEexRPVJrBSOjoqN5VNOIKJ5Q3RViH6eu3puDRwx4=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/getsentry/raven-go v0.2.0 h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs=
|
||||
github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-ole/go-ole v1.2.2 h1:QNWhweRd9D5Py2rRVboZ2L4SEoW/dyraWJCc8bgS8kE=
|
||||
github.com/go-ole/go-ole v1.2.2/go.mod h1:pnvuG7BrDMZ8ifMurTQmxwhQM/odqm9sSqNe5BUI7v4=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE=
|
||||
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/google/uuid v1.1.0 h1:Jf4mxPC/ziBnoPIdpQdPJ9OeiomAUHLvxmPRSPH9m4s=
|
||||
github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/gax-go v0.0.0-20181219185031-c8a15bac9b9f h1:UagDZv2cTLFNxuFiG5WvbbxtKTwbLWec8QUnFNqS6Ho=
|
||||
github.com/googleapis/gax-go v0.0.0-20181219185031-c8a15bac9b9f/go.mod h1:5VvnLYVimBt+hOVlFtJDkYQHVmk4K27qHHioZjPbYAI=
|
||||
github.com/googleapis/gax-go/v2 v2.0.2 h1:/rNgUniLy2vDXiK2xyJOcirGpC3G99dtK1NWx26WZ8Y=
|
||||
github.com/googleapis/gax-go/v2 v2.0.2/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||
github.com/honeybadger-io/honeybadger-go v0.4.0 h1:+cCkJzXu6KUZMn0iYeTZ1kvz2oDIyrbcH6XEXOYY/vk=
|
||||
github.com/honeybadger-io/honeybadger-go v0.4.0/go.mod h1:QBg96N5tQeLsbJzkgqkoIazFoND4NJmTCByL+73Ve10=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 h1:PJPDf8OUfOK1bb/NeTKd4f1QXZItOX389VN3B6qC8ro=
|
||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/compress v1.4.1 h1:8VMb5+0wMgdBykOV96DwNwKFQ+WTI4pzYURP99CcB9E=
|
||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE=
|
||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/mat/besticon v3.9.0+incompatible h1:SLaWKCE7ptsjWbQee8Sbx8F/WK4bw8b55tUV4mY0m/c=
|
||||
github.com/mat/besticon v3.9.0+incompatible/go.mod h1:mA1auQYHt6CW5e7L9HJLmqVQC8SzNk2gVwouO0AbiEU=
|
||||
github.com/matoous/go-nanoid v0.0.0-20181114085210-eab626deece6 h1:elv0VC5n2owefO3RvtKvS3i3/rw9LCrs0+tVFLbBlmQ=
|
||||
github.com/matoous/go-nanoid v0.0.0-20181114085210-eab626deece6/go.mod h1:soqXi4beH2aAljcVvgIDqekDtnM2UZkGl47fniwq3J4=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/newrelic/go-agent v2.2.0+incompatible h1:h7uU1vi+U6Z8TW4az5yewM68QMScsArxezuHvDFgSvU=
|
||||
github.com/newrelic/go-agent v2.2.0+incompatible/go.mod h1:a8Fv1b/fYhFSReoTU6HDkTYIMZeSVNffmoS726Y0LzQ=
|
||||
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
||||
github.com/pborman/uuid v0.0.0-20180906182336-adf5a7427709 h1:zNBQb37RGLmJybyMcs983HfUfpkw9OTFD9tbBfAViHE=
|
||||
github.com/pborman/uuid v0.0.0-20180906182336-adf5a7427709/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||
github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740=
|
||||
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
|
||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190109181635-f287a105a20e h1:/F8S20P9KteTOlxM8k6xWtTiY+u32wemAL2/zilHKzw=
|
||||
github.com/prometheus/client_model v0.0.0-20190109181635-f287a105a20e/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
||||
github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
||||
github.com/prometheus/common v0.1.0 h1:IxU7wGikQPAcoOd3/f4Ol7+vIKS1Sgu08tzjktR4nJE=
|
||||
github.com/prometheus/common v0.1.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190104112138-b1a0a9a36d74 h1:d1Xoc24yp/pXmWl2leBiBA+Tptce6cQsA+MMx/nOOcY=
|
||||
github.com/prometheus/procfs v0.0.0-20190104112138-b1a0a9a36d74/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM=
|
||||
github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||
github.com/valyala/fasthttp v1.2.0 h1:dzZJf2IuMiclVjdw0kkT+f9u4YdrapbNyGAN47E/qnk=
|
||||
github.com/valyala/fasthttp v1.2.0/go.mod h1:4vX61m6KN+xDduDNwXrhIAVZaZaZiQ1luJk8LWSxF3s=
|
||||
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
|
||||
go.opencensus.io v0.18.0 h1:Mk5rgZcggtbvtAun5aJzAtjKKN/t0R3jJPlWILlv938=
|
||||
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/image v0.0.0-20181116024801-cd38e8056d9b h1:VHyIDlv3XkfCa5/a81uzaoDkHH4rr81Z62g+xlnO8uM=
|
||||
golang.org/x/image v0.0.0-20181116024801-cd38e8056d9b/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
||||
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190110200230-915654e7eabc h1:Yx9JGxI1SBhVLFjpAkWMaO1TF+xyqtHLjZpvQboJGiM=
|
||||
golang.org/x/net v0.0.0-20190110200230-915654e7eabc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190110195249-fd3eaa146cbb h1:B7Dt1cnU6RCJTD1iFYg0SDa/UpNoDxgfT+coBHUe5Ks=
|
||||
golang.org/x/oauth2 v0.0.0-20190110195249-fd3eaa146cbb/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190109145017-48ac38b7c8cb h1:1w588/yEchbPNpa9sEvOcMZYbWHedwJjg4VOAdDHWHk=
|
||||
golang.org/x/sys v0.0.0-20190109145017-48ac38b7c8cb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||
google.golang.org/api v0.1.0 h1:K6z2u68e86TPdSdefXdzvXgR1zEMa+459vBSfWYAZkI=
|
||||
google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
|
||||
google.golang.org/genproto v0.0.0-20190110221437-6909d8a4a91b h1:oNKY5TkqnRYR7KgHuuuDi9g7tZmgWDNx0FFRv4u0j9A=
|
||||
google.golang.org/genproto v0.0.0-20190110221437-6909d8a4a91b/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
|
||||
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||
google.golang.org/grpc v1.17.0 h1:TRJYBgMclJvGYn2rIMjj+h9KtMt5r1Ij7ODVRIZkwhk=
|
||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
6
vendor/cloud.google.com/go/internal/version/update_version.sh
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
today=$(date +%Y%m%d)
|
||||
|
||||
sed -i -r -e 's/const Repo = "([0-9]{8})"/const Repo = "'$today'"/' $GOFILE
|
||||
|
53540
vendor/cloud.google.com/go/storage/storage.replay
generated
vendored
Normal file
6
vendor/github.com/StackExchange/wmi/README.md
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
wmi
|
||||
===
|
||||
|
||||
Package wmi provides a WQL interface to Windows WMI.
|
||||
|
||||
Note: It interfaces with WMI on the local machine, therefore it only runs on Windows.
|
12
vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
[default]
|
||||
aws_access_key_id = accessKey
|
||||
aws_secret_access_key = secret
|
||||
aws_session_token = token
|
||||
|
||||
[no_token]
|
||||
aws_access_key_id = accessKey
|
||||
aws_secret_access_key = secret
|
||||
|
||||
[with_colon]
|
||||
aws_access_key_id: accessKey
|
||||
aws_secret_access_key: secret
|
2388
vendor/github.com/beorn7/perks/quantile/exampledata.txt
generated
vendored
Normal file
5
vendor/github.com/bugsnag/bugsnag-go/.gitignore
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
# Ignore maze runner generated files
|
||||
maze_output
|
||||
vendor
|
||||
|
||||
features/fixtures/testbuild
|
349
vendor/github.com/bugsnag/bugsnag-go/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,349 @@
|
||||
sudo: required
|
||||
language: go
|
||||
|
||||
sevices:
|
||||
- docker
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- docker-ce
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- stage: gotest
|
||||
script: make ci
|
||||
go: "1.7"
|
||||
- script: make ci
|
||||
go: "1.8"
|
||||
- script: make ci
|
||||
go: "1.9"
|
||||
- script: make ci
|
||||
go: "1.10"
|
||||
- script: make ci
|
||||
go: "1.11"
|
||||
- script: make ci
|
||||
go: "master"
|
||||
|
||||
- stage: plain go app tests
|
||||
script: make testplain
|
||||
env: GO_VERSION=1.11
|
||||
- if: branch = master
|
||||
script: make testplain
|
||||
env: GO_VERSION=1.10
|
||||
- if: branch = master
|
||||
script: make testplain
|
||||
env: GO_VERSION=1.9
|
||||
- if: branch = master
|
||||
script: make testplain
|
||||
env: GO_VERSION=1.8
|
||||
- if: branch = master
|
||||
script: make testplain
|
||||
env: GO_VERSION=1.7
|
||||
|
||||
|
||||
- stage: net/http tests
|
||||
script: make testnethttp
|
||||
env: GO_VERSION=1.11
|
||||
- if: branch = master
|
||||
script: make testnethttp
|
||||
env: GO_VERSION=1.10
|
||||
- if: branch = master
|
||||
script: make testnethttp
|
||||
env: GO_VERSION=1.9
|
||||
- if: branch = master
|
||||
script: make testnethttp
|
||||
env: GO_VERSION=1.8
|
||||
- if: branch = master
|
||||
script: make testnethttp
|
||||
env: GO_VERSION=1.7
|
||||
|
||||
|
||||
- stage: gin tests
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- GIN_VERSION=v1.3.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- GIN_VERSION=v1.3.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- GIN_VERSION=v1.3.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- GIN_VERSION=v1.3.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.7
|
||||
- GIN_VERSION=v1.3.0
|
||||
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- GIN_VERSION=v1.2
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- GIN_VERSION=v1.2
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- GIN_VERSION=v1.2
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- GIN_VERSION=v1.2
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.7
|
||||
- GIN_VERSION=v1.2
|
||||
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- GIN_VERSION=v1.1
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- GIN_VERSION=v1.1
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- GIN_VERSION=v1.1
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- GIN_VERSION=v1.1
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.7
|
||||
- GIN_VERSION=v1.1
|
||||
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- GIN_VERSION=v1.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- GIN_VERSION=v1.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- GIN_VERSION=v1.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- GIN_VERSION=v1.0
|
||||
- if: branch = master
|
||||
script: make testgin
|
||||
env:
|
||||
- GO_VERSION=1.7
|
||||
- GIN_VERSION=v1.0
|
||||
|
||||
- stage: martini tests
|
||||
script: make testmartini
|
||||
env: GO_VERSION=1.11
|
||||
- if: branch = master
|
||||
script: make testmartini
|
||||
env: GO_VERSION=1.10
|
||||
- if: branch = master
|
||||
script: make testmartini
|
||||
env: GO_VERSION=1.9
|
||||
- if: branch = master
|
||||
script: make testmartini
|
||||
env: GO_VERSION=1.8
|
||||
- if: branch = master
|
||||
script: make testmartini
|
||||
env: GO_VERSION=1.7
|
||||
|
||||
- stage: negroni tests
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- NEGRONI_VERSION=v1.0.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- NEGRONI_VERSION=v1.0.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- NEGRONI_VERSION=v1.0.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- NEGRONI_VERSION=v1.0.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.7
|
||||
- NEGRONI_VERSION=v1.0.0
|
||||
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- NEGRONI_VERSION=v0.3.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- NEGRONI_VERSION=v0.3.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- NEGRONI_VERSION=v0.3.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- NEGRONI_VERSION=v0.3.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.7
|
||||
- NEGRONI_VERSION=v0.3.0
|
||||
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- NEGRONI_VERSION=v0.2.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- NEGRONI_VERSION=v0.2.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- NEGRONI_VERSION=v0.2.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- NEGRONI_VERSION=v0.2.0
|
||||
- if: branch = master
|
||||
script: make testnegroni
|
||||
env:
|
||||
- GO_VERSION=1.7
|
||||
- NEGRONI_VERSION=v0.2.0
|
||||
|
||||
|
||||
|
||||
- stage: revel tests
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- REVEL_VERSION=v0.21.0
|
||||
- REVEL_CMD_VERSION=v0.21.1
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- REVEL_VERSION=v0.21.0
|
||||
- REVEL_CMD_VERSION=v0.21.1
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- REVEL_VERSION=v0.21.0
|
||||
- REVEL_CMD_VERSION=v0.21.1
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- REVEL_VERSION=v0.21.0
|
||||
- REVEL_CMD_VERSION=v0.21.1
|
||||
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- REVEL_VERSION=v0.20.0
|
||||
- REVEL_CMD_VERSION=v0.20.2
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- REVEL_VERSION=v0.20.0
|
||||
- REVEL_CMD_VERSION=v0.20.2
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- REVEL_VERSION=v0.20.0
|
||||
- REVEL_CMD_VERSION=v0.20.2
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.8
|
||||
- REVEL_VERSION=v0.20.0
|
||||
- REVEL_CMD_VERSION=v0.20.2
|
||||
|
||||
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- REVEL_VERSION=v0.19.1
|
||||
- REVEL_CMD_VERSION=v0.19.0
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- REVEL_VERSION=v0.19.1
|
||||
- REVEL_CMD_VERSION=v0.19.0
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- REVEL_VERSION=v0.19.1
|
||||
- REVEL_CMD_VERSION=v0.19.0
|
||||
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.11
|
||||
- REVEL_VERSION=v0.18.0
|
||||
- REVEL_CMD_VERSION=v0.18.0
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.10
|
||||
- REVEL_VERSION=v0.18.0
|
||||
- REVEL_CMD_VERSION=v0.18.0
|
||||
- if: branch = master
|
||||
script: make testrevel
|
||||
env:
|
||||
- GO_VERSION=1.9
|
||||
- REVEL_VERSION=v0.18.0
|
||||
- REVEL_CMD_VERSION=v0.18.0
|
145
vendor/github.com/bugsnag/bugsnag-go/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,145 @@
|
||||
# Changelog
|
||||
|
||||
## 1.4.0 (2018-11-19)
|
||||
|
||||
This release is a big non-breaking revamp of the notifier. Most importantly, this release introduces session tracking to Go applications.
|
||||
|
||||
As of this release we require that you use Go 1.7 or higher.
|
||||
|
||||
### Features
|
||||
|
||||
* Session tracking to be able to show a stability score in the dashboard. Automatic recording of sessions for net/http, gin, revel, negroni and martini. Automatic capturing of sessions can be disabled using the `AutoCaptureSessions` configuration parameter.
|
||||
* Automatic recording of HTTP request information such as HTTP method, headers, URL and query parameters.
|
||||
|
||||
### Enhancements
|
||||
|
||||
* Migrate report payload version from 3 to 4.
|
||||
* Improve test coverage and introduce maze runner tests. Simplify integration tests for Negroni, Gin and Martini.
|
||||
* Deprecate the use of the old `Endpoint` configuration parameter, and allow users of on-premise to configure both the notify endpoint and the sessions endpoint.
|
||||
* `bugsnag.Notify()` now accepts a `context.Context` object, generally from `*http.Request`'s `r.Context()`, which Bugsnag can extract session and request information from.
|
||||
* Improve and augment examples (`bugsnag_example_test.go`) for documentation.
|
||||
* Improve example applications (`examples/` directory) to get up and running faster.
|
||||
* Clarify and improve GoDocs.
|
||||
* Improved serialization performance and safety of the report payload.
|
||||
* Filter HTTP headers based on the `FiltersParams`.
|
||||
* Revel enhancements:
|
||||
* Ensure all non-code configuration options are configurable from config file.
|
||||
* Stop using deprecated logger.
|
||||
* Attempt to configure a what we can from the revel configuration options.
|
||||
* Make NotifyReleaseStages work consistently with other notifiers, both for sessions and for reports.
|
||||
* Also filter out 'authorization' and 'cookie' by default, to match other notifiers.
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Address compile errors test failures that failed the build.
|
||||
* Don't crash when calling `bugsnag.Notify(nil)`
|
||||
* Other minor bug fixes that came to light after improving test coverage.
|
||||
|
||||
## 1.3.2 (2018-10-05)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Ensure error reports for fatal crashes gets sent
|
||||
[#77](https://github.com/bugsnag/bugsnag-go/pull/77)
|
||||
|
||||
## 1.3.1 (2018-03-14)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Add support for Revel v0.18
|
||||
[#63](https://github.com/bugsnag/bugsnag-go/pull/63)
|
||||
[Cameron Halter](https://github.com/EightB1ts)
|
||||
|
||||
## 1.3.0 (2017-10-02)
|
||||
|
||||
### Enhancements
|
||||
|
||||
* Track whether an error report was captured automatically
|
||||
* Add SourceRoot as a configuration option, defaulting to `$GOPATH`
|
||||
|
||||
## 1.2.2 (2017-08-25)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Point osext dependency at upstream, update with fixes
|
||||
|
||||
## 1.2.1 (2017-07-31)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Improve goroutine panic reporting by sending reports synchronously in the
|
||||
case that a goroutine is about to be cleaned up
|
||||
[#52](https://github.com/bugsnag/bugsnag-go/pull/52)
|
||||
|
||||
## 1.2.0 (2017-07-03)
|
||||
|
||||
### Enhancements
|
||||
|
||||
* Support custom stack frame implementations
|
||||
[alexanderwilling](https://github.com/alexanderwilling)
|
||||
[#43](https://github.com/bugsnag/bugsnag-go/issues/43)
|
||||
|
||||
* Support app.type in error reports
|
||||
[Jascha Ephraim](https://github.com/jaschaephraim)
|
||||
[#51](https://github.com/bugsnag/bugsnag-go/pull/51)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Mend nil pointer panic in metadata
|
||||
[Johan Sageryd](https://github.com/jsageryd)
|
||||
[#46](https://github.com/bugsnag/bugsnag-go/pull/46)
|
||||
|
||||
## 1.1.1 (2016-12-16)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Replace empty error class property in reports with "error"
|
||||
|
||||
## 1.1.0 (2016-11-07)
|
||||
|
||||
### Enhancements
|
||||
|
||||
* Add middleware for Gin
|
||||
[Mike Bull](https://github.com/bullmo)
|
||||
[#40](https://github.com/bugsnag/bugsnag-go/pull/40)
|
||||
|
||||
* Add middleware for Negroni
|
||||
[am-manideep](https://github.com/am-manideep)
|
||||
[#28](https://github.com/bugsnag/bugsnag-go/pull/28)
|
||||
|
||||
* Support stripping subpackage names
|
||||
[Facundo Ferrer](https://github.com/fjferrer)
|
||||
[#25](https://github.com/bugsnag/bugsnag-go/pull/25)
|
||||
|
||||
* Support using `ErrorWithCallers` to create a stacktrace for errors
|
||||
[Conrad Irwin](https://github.com/ConradIrwin)
|
||||
[#35](https://github.com/bugsnag/bugsnag-go/pull/35)
|
||||
|
||||
## 1.0.5
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Avoid swallowing errors which occur upon delivery
|
||||
|
||||
1.0.4
|
||||
-----
|
||||
|
||||
- Fix appengine integration broken by 1.0.3
|
||||
|
||||
1.0.3
|
||||
-----
|
||||
|
||||
- Allow any Logger with a Printf method.
|
||||
|
||||
1.0.2
|
||||
-----
|
||||
|
||||
- Use bugsnag copies of dependencies to avoid potential link rot
|
||||
|
||||
1.0.1
|
||||
-----
|
||||
|
||||
- gofmt/golint/govet docs improvements.
|
||||
|
||||
1.0.0
|
||||
-----
|
81
vendor/github.com/bugsnag/bugsnag-go/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
Contributing
|
||||
============
|
||||
|
||||
- [Fork](https://help.github.com/articles/fork-a-repo) the [notifier on github](https://github.com/bugsnag/bugsnag-go)
|
||||
- Build and test your changes
|
||||
- Commit and push until you are happy with your contribution
|
||||
- [Make a pull request](https://help.github.com/articles/using-pull-requests)
|
||||
- Thanks!
|
||||
|
||||
|
||||
Installing the go development environment
|
||||
-------------------------------------
|
||||
|
||||
1. Install homebrew
|
||||
|
||||
```
|
||||
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
|
||||
```
|
||||
|
||||
1. Install go
|
||||
|
||||
```
|
||||
brew install go --cross-compile-all
|
||||
```
|
||||
|
||||
1. Configure `$GOPATH` in `~/.bashrc`
|
||||
|
||||
```
|
||||
export GOPATH="$HOME/go"
|
||||
export PATH=$PATH:$GOPATH/bin
|
||||
```
|
||||
|
||||
Installing the appengine development environment
|
||||
------------------------------------------------
|
||||
|
||||
1. Follow the [Google instructions](https://cloud.google.com/appengine/downloads).
|
||||
|
||||
Downloading the code
|
||||
--------------------
|
||||
|
||||
You can download the code and its dependencies using
|
||||
|
||||
```
|
||||
go get -t github.com/bugsnag/bugsnag-go
|
||||
```
|
||||
|
||||
It will be put into "$GOPATH/src/github.com/bugsnag/bugsnag-go"
|
||||
|
||||
Then install depend
|
||||
|
||||
|
||||
Running Tests
|
||||
-------------
|
||||
|
||||
You can run the tests with
|
||||
|
||||
```shell
|
||||
go test
|
||||
```
|
||||
|
||||
If you've made significant changes, please also test the appengine integration with
|
||||
|
||||
```shell
|
||||
goapp test
|
||||
```
|
||||
|
||||
Releasing a New Version
|
||||
-----------------------
|
||||
|
||||
If you are a project maintainer, you can build and release a new version of
|
||||
`bugsnag-go` as follows:
|
||||
|
||||
1. Commit all your changes.
|
||||
1. Update the version number in `bugsnag.go`.
|
||||
1. Add an entry to `CHANGELOG.md` and update the README if necessary.
|
||||
1. Commit tag and push
|
||||
|
||||
git commit -mv1.0.x && git tag v1.0.x && git push origin v1.0.x
|
||||
|
||||
1. Update the setup guides for Go (and its frameworks) on docs.bugsnag.com with
|
||||
any new content.
|
3
vendor/github.com/bugsnag/bugsnag-go/Gemfile
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
gem 'bugsnag-maze-runner', git: 'https://github.com/bugsnag/maze-runner'
|
54
vendor/github.com/bugsnag/bugsnag-go/Gemfile.lock
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
GIT
|
||||
remote: https://github.com/bugsnag/maze-runner
|
||||
revision: 08a6f267d07ec7899d077ee7f7cfc669d866b1e3
|
||||
specs:
|
||||
bugsnag-maze-runner (1.0.0)
|
||||
cucumber (~> 3.1.0)
|
||||
cucumber-expressions (= 5.0.15)
|
||||
minitest (~> 5.0)
|
||||
os (~> 1.0.0)
|
||||
rack (~> 2.0.0)
|
||||
rake (~> 12.3.0)
|
||||
test-unit (~> 3.2.0)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
backports (3.11.4)
|
||||
builder (3.2.3)
|
||||
cucumber (3.1.0)
|
||||
builder (>= 2.1.2)
|
||||
cucumber-core (~> 3.1.0)
|
||||
cucumber-expressions (~> 5.0.4)
|
||||
cucumber-wire (~> 0.0.1)
|
||||
diff-lcs (~> 1.3)
|
||||
gherkin (~> 5.0)
|
||||
multi_json (>= 1.7.5, < 2.0)
|
||||
multi_test (>= 0.1.2)
|
||||
cucumber-core (3.1.0)
|
||||
backports (>= 3.8.0)
|
||||
cucumber-tag_expressions (~> 1.1.0)
|
||||
gherkin (>= 5.0.0)
|
||||
cucumber-expressions (5.0.15)
|
||||
cucumber-tag_expressions (1.1.1)
|
||||
cucumber-wire (0.0.1)
|
||||
diff-lcs (1.3)
|
||||
gherkin (5.1.0)
|
||||
minitest (5.11.3)
|
||||
multi_json (1.13.1)
|
||||
multi_test (0.1.2)
|
||||
os (1.0.0)
|
||||
power_assert (1.1.3)
|
||||
rack (2.0.6)
|
||||
rake (12.3.1)
|
||||
test-unit (3.2.8)
|
||||
power_assert
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
bugsnag-maze-runner!
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.1
|
58
vendor/github.com/bugsnag/bugsnag-go/Makefile
generated
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
TEST?=./...
|
||||
|
||||
default: alldeps test
|
||||
|
||||
deps:
|
||||
go get -v -d ./...
|
||||
|
||||
alldeps:
|
||||
go get -v -d -t ./...
|
||||
|
||||
updatedeps:
|
||||
go get -v -d -u ./...
|
||||
|
||||
test: alldeps
|
||||
#TODO: 2018-09-20 Not testing the 'errors' package as it relies on some very runtime-specific implementation details.
|
||||
# The testing of 'errors' needs to be revisited
|
||||
go test . ./gin ./martini ./negroni ./sessions ./headers
|
||||
@go vet 2>/dev/null ; if [ $$? -eq 3 ]; then \
|
||||
go get golang.org/x/tools/cmd/vet; \
|
||||
fi
|
||||
@go vet $(TEST) ; if [ $$? -eq 1 ]; then \
|
||||
echo "go-vet: Issues running go vet ./..."; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
maze:
|
||||
bundle install
|
||||
bundle exec bugsnag-maze-runner
|
||||
|
||||
ci: alldeps test
|
||||
|
||||
bench:
|
||||
go test --bench=.*
|
||||
|
||||
testsetup:
|
||||
gem update --system
|
||||
gem install bundler
|
||||
bundle install
|
||||
|
||||
testplain: testsetup
|
||||
bundle exec bugsnag-maze-runner -c features/plain_features
|
||||
|
||||
testnethttp: testsetup
|
||||
bundle exec bugsnag-maze-runner -c features/net_http_features
|
||||
|
||||
testgin: testsetup
|
||||
bundle exec bugsnag-maze-runner -c features/gin_features
|
||||
|
||||
testmartini: testsetup
|
||||
bundle exec bugsnag-maze-runner -c features/martini_features
|
||||
|
||||
testnegroni: testsetup
|
||||
bundle exec bugsnag-maze-runner -c features/negroni_features
|
||||
|
||||
testrevel: testsetup
|
||||
bundle exec bugsnag-maze-runner -c features/revel_features
|
||||
|
||||
.PHONY: bin checkversion ci default deps generate releasebin test testacc testrace updatedeps testsetup testplain testnethttp testgin testmartini testrevel
|
48
vendor/github.com/bugsnag/bugsnag-go/README.md
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
# Bugsnag error reporter for Go
|
||||
[![Latest Version](http://img.shields.io/github/release/bugsnag/bugsnag-go.svg?style=flat-square)](https://github.com/bugsnag/bugsnag-go/releases)
|
||||
[![Build Status](https://travis-ci.com/bugsnag/bugsnag-go.svg)](https://travis-ci.com/bugsnag/bugsnag-go)
|
||||
[![Go Documentation](http://img.shields.io/badge/godoc-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/bugsnag/bugsnag-go)
|
||||
|
||||
Automatically detect crashes and report errors in your Go apps. Get alerts about errors and panics in real-time, including detailed error reports with diagnostic information. Understand and resolve issues as fast as possible.
|
||||
|
||||
Learn more about Bugsnag's [Go error monitoring and error reporting](https://www.bugsnag.com/platforms/go-lang-error-reporting/) solution.
|
||||
|
||||
## Features
|
||||
|
||||
* Automatically report unhandled errors and panics
|
||||
* Report handled errors
|
||||
* Attach user information to determine how many people are affected by a crash
|
||||
* Send customized diagnostic data
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. [Create a Bugsnag account](https://bugsnag.com)
|
||||
2. Complete the instructions in the integration guide for your framework:
|
||||
* [Google App Engine](https://docs.bugsnag.com/platforms/go/app-engine/)
|
||||
* [Martini](https://docs.bugsnag.com/platforms/go/martini)
|
||||
* [Negroni](https://docs.bugsnag.com/platforms/go/negroni)
|
||||
* [net/http](https://docs.bugsnag.com/platforms/go/net-http)
|
||||
* [Revel](https://docs.bugsnag.com/platforms/go/revel)
|
||||
* [Other Go apps](https://docs.bugsnag.com/platforms/go/other)
|
||||
3. Relax!
|
||||
|
||||
## Support
|
||||
|
||||
* Read the configuration reference:
|
||||
* [Google App Engine](https://docs.bugsnag.com/platforms/go/app-engine/configuration-options/)
|
||||
* [Martini](https://docs.bugsnag.com/platforms/go/martini/configuration-options/)
|
||||
* [Negroni](https://docs.bugsnag.com/platforms/go/negroni/configuration-options/)
|
||||
* [net/http](https://docs.bugsnag.com/platforms/go/net-http/configuration-options/)
|
||||
* [Revel](https://docs.bugsnag.com/platforms/go/revel/configuration-options/)
|
||||
* [Other Go apps](https://docs.bugsnag.com/platforms/go/other/configuration-options/)
|
||||
* [Search open and closed issues](https://github.com/bugsnag/bugsnag-go/issues?utf8=✓&q=is%3Aissue) for similar problems
|
||||
* [Report a bug or request a feature](https://github.com/bugsnag/bugsnag-go/issues/new)
|
||||
|
||||
## Contributing
|
||||
|
||||
All contributors are welcome! For information on how to build, test and release `bugsnag-go`, see our [contributing guide](CONTRIBUTING.md).
|
||||
|
||||
|
||||
## License
|
||||
|
||||
The Bugsnag exception reporter for Go is free software released under the MIT License. See [LICENSE.txt](LICENSE.txt) for details.
|
6
vendor/github.com/bugsnag/bugsnag-go/errors/README.md
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
Adds stacktraces to errors in golang.
|
||||
|
||||
This was made to help build the Bugsnag notifier but can be used standalone if
|
||||
you like to have stacktraces on errors.
|
||||
|
||||
See [Godoc](https://godoc.org/github.com/bugsnag/bugsnag-go/errors) for the API docs.
|
18
vendor/github.com/bugsnag/bugsnag-go/issue_template.md
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
### Expected behavior
|
||||
*[Insert details on expected behaviour]*
|
||||
|
||||
### Observed behavior
|
||||
*[Insert details on observed behaviour]*
|
||||
|
||||
### Steps to reproduce
|
||||
*[Insert reproduction steps (if known)]*
|
||||
|
||||
### Version
|
||||
*[Insert version information]*
|
||||
|
||||
### Additional information
|
||||
*[Insert any additional information]*
|
||||
|
||||
#### Can't comment on Issues?
|
||||
Some users have been unable to comment on Github issues when an [adblocker extension is enabled](https://docs.bugsnag.com/platforms/browsers/faq/#is-bugsnag-blocked-by-ad-blockers).
|
||||
We recommend temporarily disabling the extension, or if that fails, contacting support@bugsnag.com.
|
23
vendor/github.com/bugsnag/panicwrap/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## 1.2.0 (2017-08-08)
|
||||
|
||||
### Bug fixes
|
||||
|
||||
* Fix bug where the program would relaunch without the panic wrapper
|
||||
[emersion](https://github.com/emersion)
|
||||
[#3](https://github.com/bugsnag/panicwrap/pull/3)
|
||||
|
||||
* Fix Solaris build
|
||||
[Brian Meyers](https://github.com/bmeyers22)
|
||||
[#4](https://github.com/bugsnag/panicwrap/pull/4)
|
||||
|
||||
## 1.1.0 (2016-01-18)
|
||||
|
||||
* Add ARM64 support
|
||||
[liusdu](https://github.com/liusdu)
|
||||
[#1](https://github.com/bugsnag/panicwrap/pull/1)
|
||||
|
||||
## 1.0.0 (2014-11-10)
|
||||
|
||||
### Enhancements
|
||||
|
||||
* Add ability to monitor a process
|
106
vendor/github.com/bugsnag/panicwrap/README.md
generated
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
# panicwrap
|
||||
|
||||
panicwrap is a Go library that re-executes a Go binary and monitors stderr
|
||||
output from the binary for a panic. When it find a panic, it executes a
|
||||
user-defined handler function. Stdout, stderr, stdin, signals, and exit
|
||||
codes continue to work as normal, making the existence of panicwrap mostly
|
||||
invisble to the end user until a panic actually occurs.
|
||||
|
||||
Since a panic is truly a bug in the program meant to crash the runtime,
|
||||
globally catching panics within Go applications is not supposed to be possible.
|
||||
Despite this, it is often useful to have a way to know when panics occur.
|
||||
panicwrap allows you to do something with these panics, such as writing them
|
||||
to a file, so that you can track when panics occur.
|
||||
|
||||
panicwrap is ***not a panic recovery system***. Panics indicate serious
|
||||
problems with your application and _should_ crash the runtime. panicwrap
|
||||
is just meant as a way to monitor for panics. If you still think this is
|
||||
the worst idea ever, read the section below on why.
|
||||
|
||||
_This is a fork of [mitchellh/panicwrap](https://github.com/mitchellh/panicwrap)
|
||||
which adds support for monitoring for panics without interrupting signal
|
||||
handling on supported platforms. More information is available in the
|
||||
[documentation](https://godoc.org/github.com/bugsnag/panicwrap#BasicMonitor)._
|
||||
|
||||
## Features
|
||||
|
||||
* **SIMPLE!**
|
||||
* Works with all Go applications on all platforms Go supports
|
||||
* Custom behavior when a panic occurs
|
||||
* Stdout, stderr, stdin, exit codes, and signals continue to work as
|
||||
expected.
|
||||
|
||||
## Usage
|
||||
|
||||
Using panicwrap is simple. It behaves a lot like `fork`, if you know
|
||||
how that works. A basic example is shown below.
|
||||
|
||||
Because it would be sad to panic while capturing a panic, it is recommended
|
||||
that the handler functions for panicwrap remain relatively simple and well
|
||||
tested. panicwrap itself contains many tests.
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/mitchellh/panicwrap"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
exitStatus, err := panicwrap.BasicWrap(panicHandler)
|
||||
if err != nil {
|
||||
// Something went wrong setting up the panic wrapper. Unlikely,
|
||||
// but possible.
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// If exitStatus >= 0, then we're the parent process and the panicwrap
|
||||
// re-executed ourselves and completed. Just exit with the proper status.
|
||||
if exitStatus >= 0 {
|
||||
os.Exit(exitStatus)
|
||||
}
|
||||
|
||||
// Otherwise, exitStatus < 0 means we're the child. Continue executing as
|
||||
// normal...
|
||||
|
||||
// Let's say we panic
|
||||
panic("oh shucks")
|
||||
}
|
||||
|
||||
func panicHandler(output string) {
|
||||
// output contains the full output (including stack traces) of the
|
||||
// panic. Put it in a file or something.
|
||||
fmt.Printf("The child panicked:\n\n%s\n", output)
|
||||
os.Exit(1)
|
||||
}
|
||||
```
|
||||
|
||||
## How Does it Work?
|
||||
|
||||
panicwrap works by re-executing the running program (retaining arguments,
|
||||
environmental variables, etc.) and monitoring the stderr of the program.
|
||||
Since Go always outputs panics in a predictable way with a predictable
|
||||
exit code, panicwrap is able to reliably detect panics and allow the parent
|
||||
process to handle them.
|
||||
|
||||
## WHY?! Panics should CRASH!
|
||||
|
||||
Yes, panics _should_ crash. They are 100% always indicative of bugs.
|
||||
However, in some cases, such as user-facing programs (programs like
|
||||
[Packer](http://github.com/mitchellh/packer) or
|
||||
[Docker](http://github.com/dotcloud/docker)), it is up to the user to
|
||||
report such panics. This is unreliable, at best, and it would be better if the
|
||||
program could have a way to automatically report panics. panicwrap provides
|
||||
a way to do this.
|
||||
|
||||
For backend applications, it is easier to detect crashes (since the application
|
||||
exits). However, it is still nice sometimes to more intelligently log
|
||||
panics in some way. For example, at [HashiCorp](http://www.hashicorp.com),
|
||||
we use panicwrap to log panics to timestamped files with some additional
|
||||
data (configuration settings at the time, environmental variables, etc.)
|
||||
|
||||
The goal of panicwrap is _not_ to hide panics. It is instead to provide
|
||||
a clean mechanism for handling them before bubbling the up to the user
|
||||
and ultimately crashing.
|
60
vendor/github.com/certifi/gocertifi/README.md
generated
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
# GoCertifi: SSL Certificates for Golang
|
||||
|
||||
This Go package contains a CA bundle that you can reference in your Go code.
|
||||
This is useful for systems that do not have CA bundles that Golang can find
|
||||
itself, or where a uniform set of CAs is valuable.
|
||||
|
||||
This is the same CA bundle that ships with the
|
||||
[Python Requests](https://github.com/kennethreitz/requests) library, and is a
|
||||
Golang specific port of [certifi](https://github.com/kennethreitz/certifi). The
|
||||
CA bundle is derived from Mozilla's canonical set.
|
||||
|
||||
## Usage
|
||||
|
||||
You can use the `gocertifi` package as follows:
|
||||
|
||||
```go
|
||||
import "github.com/certifi/gocertifi"
|
||||
|
||||
cert_pool, err := gocertifi.CACerts()
|
||||
```
|
||||
|
||||
You can use the returned `*x509.CertPool` as part of an HTTP transport, for example:
|
||||
|
||||
```go
|
||||
import (
|
||||
"net/http"
|
||||
"crypto/tls"
|
||||
)
|
||||
|
||||
// Setup an HTTP client with a custom transport
|
||||
transport := &http.Transport{
|
||||
TLSClientConfig: &tls.Config{RootCAs: cert_pool},
|
||||
}
|
||||
client := &http.Client{Transport: transport}
|
||||
|
||||
// Make an HTTP request using our custom transport
|
||||
resp, err := client.Get("https://example.com")
|
||||
```
|
||||
|
||||
## Detailed Documentation
|
||||
|
||||
Import as follows:
|
||||
|
||||
```go
|
||||
import "github.com/certifi/gocertifi"
|
||||
```
|
||||
|
||||
### Errors
|
||||
|
||||
```go
|
||||
var ErrParseFailed = errors.New("gocertifi: error when parsing certificates")
|
||||
```
|
||||
|
||||
### Functions
|
||||
|
||||
```go
|
||||
func CACerts() (*x509.CertPool, error)
|
||||
```
|
||||
CACerts builds an X.509 certificate pool containing the Mozilla CA Certificate
|
||||
bundle. Returns nil on error along with an appropriate error code.
|
20
vendor/github.com/certifi/gocertifi/tasks.py
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
from invoke import task
|
||||
import requests
|
||||
|
||||
@task
|
||||
def update(ctx):
|
||||
r = requests.get('https://mkcert.org/generate/')
|
||||
r.raise_for_status()
|
||||
certs = r.content
|
||||
|
||||
with open('certifi.go', 'rb') as f:
|
||||
file = f.read()
|
||||
|
||||
file = file.split('`\n')
|
||||
assert len(file) == 3
|
||||
file[1] = certs
|
||||
|
||||
ctx.run("rm certifi.go")
|
||||
|
||||
with open('certifi.go', 'wb') as f:
|
||||
f.write('`\n'.join(file))
|
1
vendor/github.com/getsentry/raven-go/.dockerignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
.git
|
5
vendor/github.com/getsentry/raven-go/.gitignore
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
*.test
|
||||
*.out
|
||||
example/example
|
||||
/xunit.xml
|
||||
/coverage.xml
|
0
vendor/github.com/getsentry/raven-go/.gitmodules
generated
vendored
Normal file
41
vendor/github.com/getsentry/raven-go/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
sudo: false
|
||||
language: go
|
||||
go:
|
||||
- 1.7.x
|
||||
- 1.8.x
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- 1.11.x
|
||||
- tip
|
||||
|
||||
before_install:
|
||||
- go install -race std
|
||||
- go get golang.org/x/tools/cmd/cover
|
||||
- go get github.com/tebeka/go2xunit
|
||||
- go get github.com/t-yuki/gocover-cobertura
|
||||
- go get -v ./...
|
||||
|
||||
script:
|
||||
- go test -v -race ./... | tee gotest.out
|
||||
- $GOPATH/bin/go2xunit -fail -input gotest.out -output xunit.xml
|
||||
- go test -v -coverprofile=coverage.txt -covermode count .
|
||||
- $GOPATH/bin/gocover-cobertura < coverage.txt > coverage.xml
|
||||
|
||||
after_script:
|
||||
- npm install -g @zeus-ci/cli
|
||||
- zeus upload -t "application/x-cobertura+xml" coverage.xml
|
||||
- zeus upload -t "application/x-xunit+xml" xunit.xml
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- go: tip
|
||||
|
||||
notifications:
|
||||
webhooks:
|
||||
urls:
|
||||
- https://zeus.ci/hooks/cd949996-d30a-11e8-ba53-0a580a28042d/public/provider/travis/webhook
|
||||
on_success: always
|
||||
on_failure: always
|
||||
on_start: always
|
||||
on_cancel: always
|
||||
on_error: always
|
19
vendor/github.com/getsentry/raven-go/README.md
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# raven
|
||||
|
||||
[![Build Status](https://api.travis-ci.org/getsentry/raven-go.svg?branch=master)](https://travis-ci.org/getsentry/raven-go)
|
||||
[![Go Report Card](https://goreportcard.com/badge/github.com/getsentry/raven-go)](https://goreportcard.com/report/github.com/getsentry/raven-go)
|
||||
[![GoDoc](https://godoc.org/github.com/getsentry/raven-go?status.svg)](https://godoc.org/github.com/getsentry/raven-go)
|
||||
|
||||
raven is the official Go SDK for the [Sentry](https://github.com/getsentry/sentry)
|
||||
event/error logging system.
|
||||
|
||||
- [**API Documentation**](https://godoc.org/github.com/getsentry/raven-go)
|
||||
- [**Usage and Examples**](https://docs.sentry.io/clients/go/)
|
||||
|
||||
## Installation
|
||||
|
||||
```text
|
||||
go get github.com/getsentry/raven-go
|
||||
```
|
||||
|
||||
Note: Go 1.7 and newer are supported.
|
4
vendor/github.com/getsentry/raven-go/runtests.sh
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
go test -race ./...
|
||||
go test -cover ./...
|
||||
go test -v ./...
|
9
vendor/github.com/go-ole/go-ole/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
language: go
|
||||
sudo: false
|
||||
|
||||
go:
|
||||
- 1.1
|
||||
- 1.2
|
||||
- 1.3
|
||||
- 1.4
|
||||
- tip
|
49
vendor/github.com/go-ole/go-ole/ChangeLog.md
generated
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
# Version 1.x.x
|
||||
|
||||
* **Add more test cases and reference new test COM server project.** (Placeholder for future additions)
|
||||
|
||||
# Version 1.2.0-alphaX
|
||||
|
||||
**Minimum supported version is now Go 1.4. Go 1.1 support is deprecated, but should still build.**
|
||||
|
||||
* Added CI configuration for Travis-CI and AppVeyor.
|
||||
* Added test InterfaceID and ClassID for the COM Test Server project.
|
||||
* Added more inline documentation (#83).
|
||||
* Added IEnumVARIANT implementation (#88).
|
||||
* Added IEnumVARIANT test cases (#99, #100, #101).
|
||||
* Added support for retrieving `time.Time` from VARIANT (#92).
|
||||
* Added test case for IUnknown (#64).
|
||||
* Added test case for IDispatch (#64).
|
||||
* Added test cases for scalar variants (#64, #76).
|
||||
|
||||
# Version 1.1.1
|
||||
|
||||
* Fixes for Linux build.
|
||||
* Fixes for Windows build.
|
||||
|
||||
# Version 1.1.0
|
||||
|
||||
The change to provide building on all platforms is a new feature. The increase in minor version reflects that and allows those who wish to stay on 1.0.x to continue to do so. Support for 1.0.x will be limited to bug fixes.
|
||||
|
||||
* Move GUID out of variables.go into its own file to make new documentation available.
|
||||
* Move OleError out of ole.go into its own file to make new documentation available.
|
||||
* Add documentation to utility functions.
|
||||
* Add documentation to variant receiver functions.
|
||||
* Add documentation to ole structures.
|
||||
* Make variant available to other systems outside of Windows.
|
||||
* Make OLE structures available to other systems outside of Windows.
|
||||
|
||||
## New Features
|
||||
|
||||
* Library should now be built on all platforms supported by Go. Library will NOOP on any platform that is not Windows.
|
||||
* More functions are now documented and available on godoc.org.
|
||||
|
||||
# Version 1.0.1
|
||||
|
||||
1. Fix package references from repository location change.
|
||||
|
||||
# Version 1.0.0
|
||||
|
||||
This version is stable enough for use. The COM API is still incomplete, but provides enough functionality for accessing COM servers using IDispatch interface.
|
||||
|
||||
There is no changelog for this version. Check commits for history.
|
46
vendor/github.com/go-ole/go-ole/README.md
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
# Go OLE
|
||||
|
||||
[![Build status](https://ci.appveyor.com/api/projects/status/qr0u2sf7q43us9fj?svg=true)](https://ci.appveyor.com/project/jacobsantos/go-ole-jgs28)
|
||||
[![Build Status](https://travis-ci.org/go-ole/go-ole.svg?branch=master)](https://travis-ci.org/go-ole/go-ole)
|
||||
[![GoDoc](https://godoc.org/github.com/go-ole/go-ole?status.svg)](https://godoc.org/github.com/go-ole/go-ole)
|
||||
|
||||
Go bindings for Windows COM using shared libraries instead of cgo.
|
||||
|
||||
By Yasuhiro Matsumoto.
|
||||
|
||||
## Install
|
||||
|
||||
To experiment with go-ole, you can just compile and run the example program:
|
||||
|
||||
```
|
||||
go get github.com/go-ole/go-ole
|
||||
cd /path/to/go-ole/
|
||||
go test
|
||||
|
||||
cd /path/to/go-ole/example/excel
|
||||
go run excel.go
|
||||
```
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
Continuous integration configuration has been added for both Travis-CI and AppVeyor. You will have to add these to your own account for your fork in order for it to run.
|
||||
|
||||
**Travis-CI**
|
||||
|
||||
Travis-CI was added to check builds on Linux to ensure that `go get` works when cross building. Currently, Travis-CI is not used to test cross-building, but this may be changed in the future. It is also not currently possible to test the library on Linux, since COM API is specific to Windows and it is not currently possible to run a COM server on Linux or even connect to a remote COM server.
|
||||
|
||||
**AppVeyor**
|
||||
|
||||
AppVeyor is used to build on Windows using the (in-development) test COM server. It is currently only used to test the build and ensure that the code works on Windows. It will be used to register a COM server and then run the test cases based on the test COM server.
|
||||
|
||||
The tests currently do run and do pass and this should be maintained with commits.
|
||||
|
||||
## Versioning
|
||||
|
||||
Go OLE uses [semantic versioning](http://semver.org) for version numbers, which is similar to the version contract of the Go language. Which means that the major version will always maintain backwards compatibility with minor versions. Minor versions will only add new additions and changes. Fixes will always be in patch.
|
||||
|
||||
This contract should allow you to upgrade to new minor and patch versions without breakage or modifications to your existing code. Leave a ticket, if there is breakage, so that it could be fixed.
|
||||
|
||||
## LICENSE
|
||||
|
||||
Under the MIT License: http://mattn.mit-license.org/2013
|
54
vendor/github.com/go-ole/go-ole/appveyor.yml
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
# Notes:
|
||||
# - Minimal appveyor.yml file is an empty file. All sections are optional.
|
||||
# - Indent each level of configuration with 2 spaces. Do not use tabs!
|
||||
# - All section names are case-sensitive.
|
||||
# - Section names should be unique on each level.
|
||||
|
||||
version: "1.3.0.{build}-alpha-{branch}"
|
||||
|
||||
os: Windows Server 2012 R2
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- v1.2
|
||||
- v1.1
|
||||
- v1.0
|
||||
|
||||
skip_tags: true
|
||||
|
||||
clone_folder: c:\gopath\src\github.com\go-ole\go-ole
|
||||
|
||||
environment:
|
||||
GOPATH: c:\gopath
|
||||
matrix:
|
||||
- GOARCH: amd64
|
||||
GOVERSION: 1.5
|
||||
GOROOT: c:\go
|
||||
DOWNLOADPLATFORM: "x64"
|
||||
|
||||
install:
|
||||
- choco install mingw
|
||||
- SET PATH=c:\tools\mingw64\bin;%PATH%
|
||||
# - Download COM Server
|
||||
- ps: Start-FileDownload "https://github.com/go-ole/test-com-server/releases/download/v1.0.2/test-com-server-${env:DOWNLOADPLATFORM}.zip"
|
||||
- 7z e test-com-server-%DOWNLOADPLATFORM%.zip -oc:\gopath\src\github.com\go-ole\go-ole > NUL
|
||||
- c:\gopath\src\github.com\go-ole\go-ole\build\register-assembly.bat
|
||||
# - set
|
||||
- go version
|
||||
- go env
|
||||
- go get -u golang.org/x/tools/cmd/cover
|
||||
- go get -u golang.org/x/tools/cmd/godoc
|
||||
- go get -u golang.org/x/tools/cmd/stringer
|
||||
|
||||
build_script:
|
||||
- cd c:\gopath\src\github.com\go-ole\go-ole
|
||||
- go get -v -t ./...
|
||||
- go build
|
||||
- go test -v -cover ./...
|
||||
|
||||
# disable automatic tests
|
||||
test: off
|
||||
|
||||
# disable deployment
|
||||
deploy: off
|
5
vendor/github.com/go-ole/go-ole/go.mod
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
module github.com/go-ole/go-ole
|
||||
|
||||
go 1.12
|
||||
|
||||
require github.com/go-ole/go-ole v1.2.2
|
2
vendor/github.com/go-ole/go-ole/go.sum
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
github.com/go-ole/go-ole v1.2.2 h1:HXmymm3IQ8iAfpqlbbUGLHd+SZrnmI4y1pv+WL/3R7c=
|
||||
github.com/go-ole/go-ole v1.2.2/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
|
15
vendor/github.com/gofrs/uuid/.gitignore
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
|
||||
# Test binary, build with `go test -c`
|
||||
*.test
|
||||
|
||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||
*.out
|
||||
|
||||
# binary bundle generated by go-fuzz
|
||||
uuid-fuzz.zip
|
23
vendor/github.com/gofrs/uuid/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
language: go
|
||||
sudo: false
|
||||
go:
|
||||
- 1.7.x
|
||||
- 1.8.x
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- 1.11.x
|
||||
- tip
|
||||
matrix:
|
||||
allow_failures:
|
||||
- go: tip
|
||||
fast_finish: true
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
before_install:
|
||||
- go get golang.org/x/tools/cmd/cover
|
||||
script:
|
||||
- go test ./... -race -coverprofile=coverage.txt -covermode=atomic
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
notifications:
|
||||
email: false
|
109
vendor/github.com/gofrs/uuid/README.md
generated
vendored
Normal file
@ -0,0 +1,109 @@
|
||||
# UUID
|
||||
|
||||
[![License](https://img.shields.io/github/license/gofrs/uuid.svg)](https://github.com/gofrs/uuid/blob/master/LICENSE)
|
||||
[![Build Status](https://travis-ci.org/gofrs/uuid.svg?branch=master)](https://travis-ci.org/gofrs/uuid)
|
||||
[![GoDoc](http://godoc.org/github.com/gofrs/uuid?status.svg)](http://godoc.org/github.com/gofrs/uuid)
|
||||
[![Coverage Status](https://codecov.io/gh/gofrs/uuid/branch/master/graphs/badge.svg?branch=master)](https://codecov.io/gh/gofrs/uuid/)
|
||||
[![Go Report Card](https://goreportcard.com/badge/github.com/gofrs/uuid)](https://goreportcard.com/report/github.com/gofrs/uuid)
|
||||
|
||||
Package uuid provides a pure Go implementation of Universally Unique Identifiers
|
||||
(UUID) variant as defined in RFC-4122. This package supports both the creation
|
||||
and parsing of UUIDs in different formats.
|
||||
|
||||
This package supports the following UUID versions:
|
||||
* Version 1, based on timestamp and MAC address (RFC-4122)
|
||||
* Version 2, based on timestamp, MAC address and POSIX UID/GID (DCE 1.1)
|
||||
* Version 3, based on MD5 hashing of a named value (RFC-4122)
|
||||
* Version 4, based on random numbers (RFC-4122)
|
||||
* Version 5, based on SHA-1 hashing of a named value (RFC-4122)
|
||||
|
||||
## Project History
|
||||
|
||||
This project was originally forked from the
|
||||
[github.com/satori/go.uuid](https://github.com/satori/go.uuid) repository after
|
||||
it appeared to be no longer maintained, while exhibiting [critical
|
||||
flaws](https://github.com/satori/go.uuid/issues/73). We have decided to take
|
||||
over this project to ensure it receives regular maintenance for the benefit of
|
||||
the larger Go community.
|
||||
|
||||
We'd like to thank Maxim Bublis for his hard work on the original iteration of
|
||||
the package.
|
||||
|
||||
## License
|
||||
|
||||
This source code of this package is released under the MIT License. Please see
|
||||
the [LICENSE](https://github.com/gofrs/uuid/blob/master/LICENSE) for the full
|
||||
content of the license.
|
||||
|
||||
## Recommended Package Version
|
||||
|
||||
We recommend using v2.0.0+ of this package, as versions prior to 2.0.0 were
|
||||
created before our fork of the original package and have some known
|
||||
deficiencies.
|
||||
|
||||
## Installation
|
||||
|
||||
It is recommended to use a package manager like `dep` that understands tagged
|
||||
releases of a package, as well as semantic versioning.
|
||||
|
||||
If you are unable to make use of a dependency manager with your project, you can
|
||||
use the `go get` command to download it directly:
|
||||
|
||||
```Shell
|
||||
$ go get github.com/gofrs/uuid
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
Due to subtests not being supported in older versions of Go, this package is
|
||||
only regularly tested against Go 1.7+. This package may work perfectly fine with
|
||||
Go 1.2+, but support for these older versions is not actively maintained.
|
||||
|
||||
## Go 1.11 Modules
|
||||
|
||||
As of v3.2.0, this repository no longer adopts Go modules, and v3.2.0 no longer has a `go.mod` file. As a result, v3.2.0 also drops support for the `github.com/gofrs/uuid/v3` import path. Only module-based consumers are impacted. With the v3.2.0 release, _all_ gofrs/uuid consumers should use the `github.com/gofrs/uuid` import path.
|
||||
|
||||
An existing module-based consumer will continue to be able to build using the `github.com/gofrs/uuid/v3` import path using any valid consumer `go.mod` that worked prior to the publishing of v3.2.0, but any module-based consumer should start using the `github.com/gofrs/uuid` import path when possible and _must_ use the `github.com/gofrs/uuid` import path prior to upgrading to v3.2.0.
|
||||
|
||||
Please refer to [Issue #61](https://github.com/gofrs/uuid/issues/61) and [Issue #66](https://github.com/gofrs/uuid/issues/66) for more details.
|
||||
|
||||
## Usage
|
||||
|
||||
Here is a quick overview of how to use this package. For more detailed
|
||||
documentation, please see the [GoDoc Page](http://godoc.org/github.com/gofrs/uuid).
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/gofrs/uuid"
|
||||
)
|
||||
|
||||
// Create a Version 4 UUID, panicking on error.
|
||||
// Use this form to initialize package-level variables.
|
||||
var u1 = uuid.Must(uuid.NewV4())
|
||||
|
||||
func main() {
|
||||
// Create a Version 4 UUID.
|
||||
u2, err := uuid.NewV4()
|
||||
if err != nil {
|
||||
log.Fatalf("failed to generate UUID: %v", err)
|
||||
}
|
||||
log.Printf("generated Version 4 UUID %v", u2)
|
||||
|
||||
// Parse a UUID from a string.
|
||||
s := "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
|
||||
u3, err := uuid.FromString(s)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to parse UUID %q: %v", s, err)
|
||||
}
|
||||
log.Printf("successfully parsed UUID %v", u3)
|
||||
}
|
||||
```
|
||||
|
||||
## References
|
||||
|
||||
* [RFC-4122](https://tools.ietf.org/html/rfc4122)
|
||||
* [DCE 1.1: Authentication and Security Services](http://pubs.opengroup.org/onlinepubs/9696989899/chap5.htm#tagcjh_08_02_01_01)
|
872
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto
generated
vendored
Normal file
@ -0,0 +1,872 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// Author: kenton@google.com (Kenton Varda)
|
||||
// Based on original Protocol Buffers design by
|
||||
// Sanjay Ghemawat, Jeff Dean, and others.
|
||||
//
|
||||
// The messages in this file describe the definitions found in .proto files.
|
||||
// A valid .proto file can be translated directly to a FileDescriptorProto
|
||||
// without any other information (e.g. without reading its imports).
|
||||
|
||||
|
||||
syntax = "proto2";
|
||||
|
||||
package google.protobuf;
|
||||
option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
|
||||
option java_package = "com.google.protobuf";
|
||||
option java_outer_classname = "DescriptorProtos";
|
||||
option csharp_namespace = "Google.Protobuf.Reflection";
|
||||
option objc_class_prefix = "GPB";
|
||||
option cc_enable_arenas = true;
|
||||
|
||||
// descriptor.proto must be optimized for speed because reflection-based
|
||||
// algorithms don't work during bootstrapping.
|
||||
option optimize_for = SPEED;
|
||||
|
||||
// The protocol compiler can output a FileDescriptorSet containing the .proto
|
||||
// files it parses.
|
||||
message FileDescriptorSet {
|
||||
repeated FileDescriptorProto file = 1;
|
||||
}
|
||||
|
||||
// Describes a complete .proto file.
|
||||
message FileDescriptorProto {
|
||||
optional string name = 1; // file name, relative to root of source tree
|
||||
optional string package = 2; // e.g. "foo", "foo.bar", etc.
|
||||
|
||||
// Names of files imported by this file.
|
||||
repeated string dependency = 3;
|
||||
// Indexes of the public imported files in the dependency list above.
|
||||
repeated int32 public_dependency = 10;
|
||||
// Indexes of the weak imported files in the dependency list.
|
||||
// For Google-internal migration only. Do not use.
|
||||
repeated int32 weak_dependency = 11;
|
||||
|
||||
// All top-level definitions in this file.
|
||||
repeated DescriptorProto message_type = 4;
|
||||
repeated EnumDescriptorProto enum_type = 5;
|
||||
repeated ServiceDescriptorProto service = 6;
|
||||
repeated FieldDescriptorProto extension = 7;
|
||||
|
||||
optional FileOptions options = 8;
|
||||
|
||||
// This field contains optional information about the original source code.
|
||||
// You may safely remove this entire field without harming runtime
|
||||
// functionality of the descriptors -- the information is needed only by
|
||||
// development tools.
|
||||
optional SourceCodeInfo source_code_info = 9;
|
||||
|
||||
// The syntax of the proto file.
|
||||
// The supported values are "proto2" and "proto3".
|
||||
optional string syntax = 12;
|
||||
}
|
||||
|
||||
// Describes a message type.
|
||||
message DescriptorProto {
|
||||
optional string name = 1;
|
||||
|
||||
repeated FieldDescriptorProto field = 2;
|
||||
repeated FieldDescriptorProto extension = 6;
|
||||
|
||||
repeated DescriptorProto nested_type = 3;
|
||||
repeated EnumDescriptorProto enum_type = 4;
|
||||
|
||||
message ExtensionRange {
|
||||
optional int32 start = 1;
|
||||
optional int32 end = 2;
|
||||
|
||||
optional ExtensionRangeOptions options = 3;
|
||||
}
|
||||
repeated ExtensionRange extension_range = 5;
|
||||
|
||||
repeated OneofDescriptorProto oneof_decl = 8;
|
||||
|
||||
optional MessageOptions options = 7;
|
||||
|
||||
// Range of reserved tag numbers. Reserved tag numbers may not be used by
|
||||
// fields or extension ranges in the same message. Reserved ranges may
|
||||
// not overlap.
|
||||
message ReservedRange {
|
||||
optional int32 start = 1; // Inclusive.
|
||||
optional int32 end = 2; // Exclusive.
|
||||
}
|
||||
repeated ReservedRange reserved_range = 9;
|
||||
// Reserved field names, which may not be used by fields in the same message.
|
||||
// A given name may only be reserved once.
|
||||
repeated string reserved_name = 10;
|
||||
}
|
||||
|
||||
message ExtensionRangeOptions {
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
}
|
||||
|
||||
// Describes a field within a message.
|
||||
message FieldDescriptorProto {
|
||||
enum Type {
|
||||
// 0 is reserved for errors.
|
||||
// Order is weird for historical reasons.
|
||||
TYPE_DOUBLE = 1;
|
||||
TYPE_FLOAT = 2;
|
||||
// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
|
||||
// negative values are likely.
|
||||
TYPE_INT64 = 3;
|
||||
TYPE_UINT64 = 4;
|
||||
// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
|
||||
// negative values are likely.
|
||||
TYPE_INT32 = 5;
|
||||
TYPE_FIXED64 = 6;
|
||||
TYPE_FIXED32 = 7;
|
||||
TYPE_BOOL = 8;
|
||||
TYPE_STRING = 9;
|
||||
// Tag-delimited aggregate.
|
||||
// Group type is deprecated and not supported in proto3. However, Proto3
|
||||
// implementations should still be able to parse the group wire format and
|
||||
// treat group fields as unknown fields.
|
||||
TYPE_GROUP = 10;
|
||||
TYPE_MESSAGE = 11; // Length-delimited aggregate.
|
||||
|
||||
// New in version 2.
|
||||
TYPE_BYTES = 12;
|
||||
TYPE_UINT32 = 13;
|
||||
TYPE_ENUM = 14;
|
||||
TYPE_SFIXED32 = 15;
|
||||
TYPE_SFIXED64 = 16;
|
||||
TYPE_SINT32 = 17; // Uses ZigZag encoding.
|
||||
TYPE_SINT64 = 18; // Uses ZigZag encoding.
|
||||
};
|
||||
|
||||
enum Label {
|
||||
// 0 is reserved for errors
|
||||
LABEL_OPTIONAL = 1;
|
||||
LABEL_REQUIRED = 2;
|
||||
LABEL_REPEATED = 3;
|
||||
};
|
||||
|
||||
optional string name = 1;
|
||||
optional int32 number = 3;
|
||||
optional Label label = 4;
|
||||
|
||||
// If type_name is set, this need not be set. If both this and type_name
|
||||
// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
|
||||
optional Type type = 5;
|
||||
|
||||
// For message and enum types, this is the name of the type. If the name
|
||||
// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
|
||||
// rules are used to find the type (i.e. first the nested types within this
|
||||
// message are searched, then within the parent, on up to the root
|
||||
// namespace).
|
||||
optional string type_name = 6;
|
||||
|
||||
// For extensions, this is the name of the type being extended. It is
|
||||
// resolved in the same manner as type_name.
|
||||
optional string extendee = 2;
|
||||
|
||||
// For numeric types, contains the original text representation of the value.
|
||||
// For booleans, "true" or "false".
|
||||
// For strings, contains the default text contents (not escaped in any way).
|
||||
// For bytes, contains the C escaped value. All bytes >= 128 are escaped.
|
||||
// TODO(kenton): Base-64 encode?
|
||||
optional string default_value = 7;
|
||||
|
||||
// If set, gives the index of a oneof in the containing type's oneof_decl
|
||||
// list. This field is a member of that oneof.
|
||||
optional int32 oneof_index = 9;
|
||||
|
||||
// JSON name of this field. The value is set by protocol compiler. If the
|
||||
// user has set a "json_name" option on this field, that option's value
|
||||
// will be used. Otherwise, it's deduced from the field's name by converting
|
||||
// it to camelCase.
|
||||
optional string json_name = 10;
|
||||
|
||||
optional FieldOptions options = 8;
|
||||
}
|
||||
|
||||
// Describes a oneof.
|
||||
message OneofDescriptorProto {
|
||||
optional string name = 1;
|
||||
optional OneofOptions options = 2;
|
||||
}
|
||||
|
||||
// Describes an enum type.
|
||||
message EnumDescriptorProto {
|
||||
optional string name = 1;
|
||||
|
||||
repeated EnumValueDescriptorProto value = 2;
|
||||
|
||||
optional EnumOptions options = 3;
|
||||
|
||||
// Range of reserved numeric values. Reserved values may not be used by
|
||||
// entries in the same enum. Reserved ranges may not overlap.
|
||||
//
|
||||
// Note that this is distinct from DescriptorProto.ReservedRange in that it
|
||||
// is inclusive such that it can appropriately represent the entire int32
|
||||
// domain.
|
||||
message EnumReservedRange {
|
||||
optional int32 start = 1; // Inclusive.
|
||||
optional int32 end = 2; // Inclusive.
|
||||
}
|
||||
|
||||
// Range of reserved numeric values. Reserved numeric values may not be used
|
||||
// by enum values in the same enum declaration. Reserved ranges may not
|
||||
// overlap.
|
||||
repeated EnumReservedRange reserved_range = 4;
|
||||
|
||||
// Reserved enum value names, which may not be reused. A given name may only
|
||||
// be reserved once.
|
||||
repeated string reserved_name = 5;
|
||||
}
|
||||
|
||||
// Describes a value within an enum.
|
||||
message EnumValueDescriptorProto {
|
||||
optional string name = 1;
|
||||
optional int32 number = 2;
|
||||
|
||||
optional EnumValueOptions options = 3;
|
||||
}
|
||||
|
||||
// Describes a service.
|
||||
message ServiceDescriptorProto {
|
||||
optional string name = 1;
|
||||
repeated MethodDescriptorProto method = 2;
|
||||
|
||||
optional ServiceOptions options = 3;
|
||||
}
|
||||
|
||||
// Describes a method of a service.
|
||||
message MethodDescriptorProto {
|
||||
optional string name = 1;
|
||||
|
||||
// Input and output type names. These are resolved in the same way as
|
||||
// FieldDescriptorProto.type_name, but must refer to a message type.
|
||||
optional string input_type = 2;
|
||||
optional string output_type = 3;
|
||||
|
||||
optional MethodOptions options = 4;
|
||||
|
||||
// Identifies if client streams multiple client messages
|
||||
optional bool client_streaming = 5 [default=false];
|
||||
// Identifies if server streams multiple server messages
|
||||
optional bool server_streaming = 6 [default=false];
|
||||
}
|
||||
|
||||
|
||||
// ===================================================================
|
||||
// Options
|
||||
|
||||
// Each of the definitions above may have "options" attached. These are
|
||||
// just annotations which may cause code to be generated slightly differently
|
||||
// or may contain hints for code that manipulates protocol messages.
|
||||
//
|
||||
// Clients may define custom options as extensions of the *Options messages.
|
||||
// These extensions may not yet be known at parsing time, so the parser cannot
|
||||
// store the values in them. Instead it stores them in a field in the *Options
|
||||
// message called uninterpreted_option. This field must have the same name
|
||||
// across all *Options messages. We then use this field to populate the
|
||||
// extensions when we build a descriptor, at which point all protos have been
|
||||
// parsed and so all extensions are known.
|
||||
//
|
||||
// Extension numbers for custom options may be chosen as follows:
|
||||
// * For options which will only be used within a single application or
|
||||
// organization, or for experimental options, use field numbers 50000
|
||||
// through 99999. It is up to you to ensure that you do not use the
|
||||
// same number for multiple options.
|
||||
// * For options which will be published and used publicly by multiple
|
||||
// independent entities, e-mail protobuf-global-extension-registry@google.com
|
||||
// to reserve extension numbers. Simply provide your project name (e.g.
|
||||
// Objective-C plugin) and your project website (if available) -- there's no
|
||||
// need to explain how you intend to use them. Usually you only need one
|
||||
// extension number. You can declare multiple options with only one extension
|
||||
// number by putting them in a sub-message. See the Custom Options section of
|
||||
// the docs for examples:
|
||||
// https://developers.google.com/protocol-buffers/docs/proto#options
|
||||
// If this turns out to be popular, a web service will be set up
|
||||
// to automatically assign option numbers.
|
||||
|
||||
|
||||
message FileOptions {
|
||||
|
||||
// Sets the Java package where classes generated from this .proto will be
|
||||
// placed. By default, the proto package is used, but this is often
|
||||
// inappropriate because proto packages do not normally start with backwards
|
||||
// domain names.
|
||||
optional string java_package = 1;
|
||||
|
||||
|
||||
// If set, all the classes from the .proto file are wrapped in a single
|
||||
// outer class with the given name. This applies to both Proto1
|
||||
// (equivalent to the old "--one_java_file" option) and Proto2 (where
|
||||
// a .proto always translates to a single class, but you may want to
|
||||
// explicitly choose the class name).
|
||||
optional string java_outer_classname = 8;
|
||||
|
||||
// If set true, then the Java code generator will generate a separate .java
|
||||
// file for each top-level message, enum, and service defined in the .proto
|
||||
// file. Thus, these types will *not* be nested inside the outer class
|
||||
// named by java_outer_classname. However, the outer class will still be
|
||||
// generated to contain the file's getDescriptor() method as well as any
|
||||
// top-level extensions defined in the file.
|
||||
optional bool java_multiple_files = 10 [default=false];
|
||||
|
||||
// This option does nothing.
|
||||
optional bool java_generate_equals_and_hash = 20 [deprecated=true];
|
||||
|
||||
// If set true, then the Java2 code generator will generate code that
|
||||
// throws an exception whenever an attempt is made to assign a non-UTF-8
|
||||
// byte sequence to a string field.
|
||||
// Message reflection will do the same.
|
||||
// However, an extension field still accepts non-UTF-8 byte sequences.
|
||||
// This option has no effect on when used with the lite runtime.
|
||||
optional bool java_string_check_utf8 = 27 [default=false];
|
||||
|
||||
|
||||
// Generated classes can be optimized for speed or code size.
|
||||
enum OptimizeMode {
|
||||
SPEED = 1; // Generate complete code for parsing, serialization,
|
||||
// etc.
|
||||
CODE_SIZE = 2; // Use ReflectionOps to implement these methods.
|
||||
LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
|
||||
}
|
||||
optional OptimizeMode optimize_for = 9 [default=SPEED];
|
||||
|
||||
// Sets the Go package where structs generated from this .proto will be
|
||||
// placed. If omitted, the Go package will be derived from the following:
|
||||
// - The basename of the package import path, if provided.
|
||||
// - Otherwise, the package statement in the .proto file, if present.
|
||||
// - Otherwise, the basename of the .proto file, without extension.
|
||||
optional string go_package = 11;
|
||||
|
||||
|
||||
|
||||
// Should generic services be generated in each language? "Generic" services
|
||||
// are not specific to any particular RPC system. They are generated by the
|
||||
// main code generators in each language (without additional plugins).
|
||||
// Generic services were the only kind of service generation supported by
|
||||
// early versions of google.protobuf.
|
||||
//
|
||||
// Generic services are now considered deprecated in favor of using plugins
|
||||
// that generate code specific to your particular RPC system. Therefore,
|
||||
// these default to false. Old code which depends on generic services should
|
||||
// explicitly set them to true.
|
||||
optional bool cc_generic_services = 16 [default=false];
|
||||
optional bool java_generic_services = 17 [default=false];
|
||||
optional bool py_generic_services = 18 [default=false];
|
||||
optional bool php_generic_services = 42 [default=false];
|
||||
|
||||
// Is this file deprecated?
|
||||
// Depending on the target platform, this can emit Deprecated annotations
|
||||
// for everything in the file, or it will be completely ignored; in the very
|
||||
// least, this is a formalization for deprecating files.
|
||||
optional bool deprecated = 23 [default=false];
|
||||
|
||||
// Enables the use of arenas for the proto messages in this file. This applies
|
||||
// only to generated classes for C++.
|
||||
optional bool cc_enable_arenas = 31 [default=false];
|
||||
|
||||
|
||||
// Sets the objective c class prefix which is prepended to all objective c
|
||||
// generated classes from this .proto. There is no default.
|
||||
optional string objc_class_prefix = 36;
|
||||
|
||||
// Namespace for generated classes; defaults to the package.
|
||||
optional string csharp_namespace = 37;
|
||||
|
||||
// By default Swift generators will take the proto package and CamelCase it
|
||||
// replacing '.' with underscore and use that to prefix the types/symbols
|
||||
// defined. When this options is provided, they will use this value instead
|
||||
// to prefix the types/symbols defined.
|
||||
optional string swift_prefix = 39;
|
||||
|
||||
// Sets the php class prefix which is prepended to all php generated classes
|
||||
// from this .proto. Default is empty.
|
||||
optional string php_class_prefix = 40;
|
||||
|
||||
// Use this option to change the namespace of php generated classes. Default
|
||||
// is empty. When this option is empty, the package name will be used for
|
||||
// determining the namespace.
|
||||
optional string php_namespace = 41;
|
||||
|
||||
// The parser stores options it doesn't recognize here.
|
||||
// See the documentation for the "Options" section above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message.
|
||||
// See the documentation for the "Options" section above.
|
||||
extensions 1000 to max;
|
||||
|
||||
reserved 38;
|
||||
}
|
||||
|
||||
message MessageOptions {
|
||||
// Set true to use the old proto1 MessageSet wire format for extensions.
|
||||
// This is provided for backwards-compatibility with the MessageSet wire
|
||||
// format. You should not use this for any other reason: It's less
|
||||
// efficient, has fewer features, and is more complicated.
|
||||
//
|
||||
// The message must be defined exactly as follows:
|
||||
// message Foo {
|
||||
// option message_set_wire_format = true;
|
||||
// extensions 4 to max;
|
||||
// }
|
||||
// Note that the message cannot have any defined fields; MessageSets only
|
||||
// have extensions.
|
||||
//
|
||||
// All extensions of your type must be singular messages; e.g. they cannot
|
||||
// be int32s, enums, or repeated messages.
|
||||
//
|
||||
// Because this is an option, the above two restrictions are not enforced by
|
||||
// the protocol compiler.
|
||||
optional bool message_set_wire_format = 1 [default=false];
|
||||
|
||||
// Disables the generation of the standard "descriptor()" accessor, which can
|
||||
// conflict with a field of the same name. This is meant to make migration
|
||||
// from proto1 easier; new code should avoid fields named "descriptor".
|
||||
optional bool no_standard_descriptor_accessor = 2 [default=false];
|
||||
|
||||
// Is this message deprecated?
|
||||
// Depending on the target platform, this can emit Deprecated annotations
|
||||
// for the message, or it will be completely ignored; in the very least,
|
||||
// this is a formalization for deprecating messages.
|
||||
optional bool deprecated = 3 [default=false];
|
||||
|
||||
// Whether the message is an automatically generated map entry type for the
|
||||
// maps field.
|
||||
//
|
||||
// For maps fields:
|
||||
// map<KeyType, ValueType> map_field = 1;
|
||||
// The parsed descriptor looks like:
|
||||
// message MapFieldEntry {
|
||||
// option map_entry = true;
|
||||
// optional KeyType key = 1;
|
||||
// optional ValueType value = 2;
|
||||
// }
|
||||
// repeated MapFieldEntry map_field = 1;
|
||||
//
|
||||
// Implementations may choose not to generate the map_entry=true message, but
|
||||
// use a native map in the target language to hold the keys and values.
|
||||
// The reflection APIs in such implementions still need to work as
|
||||
// if the field is a repeated message field.
|
||||
//
|
||||
// NOTE: Do not set the option in .proto files. Always use the maps syntax
|
||||
// instead. The option should only be implicitly set by the proto compiler
|
||||
// parser.
|
||||
optional bool map_entry = 7;
|
||||
|
||||
reserved 8; // javalite_serializable
|
||||
reserved 9; // javanano_as_lite
|
||||
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
}
|
||||
|
||||
message FieldOptions {
|
||||
// The ctype option instructs the C++ code generator to use a different
|
||||
// representation of the field than it normally would. See the specific
|
||||
// options below. This option is not yet implemented in the open source
|
||||
// release -- sorry, we'll try to include it in a future version!
|
||||
optional CType ctype = 1 [default = STRING];
|
||||
enum CType {
|
||||
// Default mode.
|
||||
STRING = 0;
|
||||
|
||||
CORD = 1;
|
||||
|
||||
STRING_PIECE = 2;
|
||||
}
|
||||
// The packed option can be enabled for repeated primitive fields to enable
|
||||
// a more efficient representation on the wire. Rather than repeatedly
|
||||
// writing the tag and type for each element, the entire array is encoded as
|
||||
// a single length-delimited blob. In proto3, only explicit setting it to
|
||||
// false will avoid using packed encoding.
|
||||
optional bool packed = 2;
|
||||
|
||||
// The jstype option determines the JavaScript type used for values of the
|
||||
// field. The option is permitted only for 64 bit integral and fixed types
|
||||
// (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
|
||||
// is represented as JavaScript string, which avoids loss of precision that
|
||||
// can happen when a large value is converted to a floating point JavaScript.
|
||||
// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
|
||||
// use the JavaScript "number" type. The behavior of the default option
|
||||
// JS_NORMAL is implementation dependent.
|
||||
//
|
||||
// This option is an enum to permit additional types to be added, e.g.
|
||||
// goog.math.Integer.
|
||||
optional JSType jstype = 6 [default = JS_NORMAL];
|
||||
enum JSType {
|
||||
// Use the default type.
|
||||
JS_NORMAL = 0;
|
||||
|
||||
// Use JavaScript strings.
|
||||
JS_STRING = 1;
|
||||
|
||||
// Use JavaScript numbers.
|
||||
JS_NUMBER = 2;
|
||||
}
|
||||
|
||||
// Should this field be parsed lazily? Lazy applies only to message-type
|
||||
// fields. It means that when the outer message is initially parsed, the
|
||||
// inner message's contents will not be parsed but instead stored in encoded
|
||||
// form. The inner message will actually be parsed when it is first accessed.
|
||||
//
|
||||
// This is only a hint. Implementations are free to choose whether to use
|
||||
// eager or lazy parsing regardless of the value of this option. However,
|
||||
// setting this option true suggests that the protocol author believes that
|
||||
// using lazy parsing on this field is worth the additional bookkeeping
|
||||
// overhead typically needed to implement it.
|
||||
//
|
||||
// This option does not affect the public interface of any generated code;
|
||||
// all method signatures remain the same. Furthermore, thread-safety of the
|
||||
// interface is not affected by this option; const methods remain safe to
|
||||
// call from multiple threads concurrently, while non-const methods continue
|
||||
// to require exclusive access.
|
||||
//
|
||||
//
|
||||
// Note that implementations may choose not to check required fields within
|
||||
// a lazy sub-message. That is, calling IsInitialized() on the outer message
|
||||
// may return true even if the inner message has missing required fields.
|
||||
// This is necessary because otherwise the inner message would have to be
|
||||
// parsed in order to perform the check, defeating the purpose of lazy
|
||||
// parsing. An implementation which chooses not to check required fields
|
||||
// must be consistent about it. That is, for any particular sub-message, the
|
||||
// implementation must either *always* check its required fields, or *never*
|
||||
// check its required fields, regardless of whether or not the message has
|
||||
// been parsed.
|
||||
optional bool lazy = 5 [default=false];
|
||||
|
||||
// Is this field deprecated?
|
||||
// Depending on the target platform, this can emit Deprecated annotations
|
||||
// for accessors, or it will be completely ignored; in the very least, this
|
||||
// is a formalization for deprecating fields.
|
||||
optional bool deprecated = 3 [default=false];
|
||||
|
||||
// For Google-internal migration only. Do not use.
|
||||
optional bool weak = 10 [default=false];
|
||||
|
||||
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
|
||||
reserved 4; // removed jtype
|
||||
}
|
||||
|
||||
message OneofOptions {
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
}
|
||||
|
||||
message EnumOptions {
|
||||
|
||||
// Set this option to true to allow mapping different tag names to the same
|
||||
// value.
|
||||
optional bool allow_alias = 2;
|
||||
|
||||
// Is this enum deprecated?
|
||||
// Depending on the target platform, this can emit Deprecated annotations
|
||||
// for the enum, or it will be completely ignored; in the very least, this
|
||||
// is a formalization for deprecating enums.
|
||||
optional bool deprecated = 3 [default=false];
|
||||
|
||||
reserved 5; // javanano_as_lite
|
||||
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
}
|
||||
|
||||
message EnumValueOptions {
|
||||
// Is this enum value deprecated?
|
||||
// Depending on the target platform, this can emit Deprecated annotations
|
||||
// for the enum value, or it will be completely ignored; in the very least,
|
||||
// this is a formalization for deprecating enum values.
|
||||
optional bool deprecated = 1 [default=false];
|
||||
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
}
|
||||
|
||||
message ServiceOptions {
|
||||
|
||||
// Note: Field numbers 1 through 32 are reserved for Google's internal RPC
|
||||
// framework. We apologize for hoarding these numbers to ourselves, but
|
||||
// we were already using them long before we decided to release Protocol
|
||||
// Buffers.
|
||||
|
||||
// Is this service deprecated?
|
||||
// Depending on the target platform, this can emit Deprecated annotations
|
||||
// for the service, or it will be completely ignored; in the very least,
|
||||
// this is a formalization for deprecating services.
|
||||
optional bool deprecated = 33 [default=false];
|
||||
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
}
|
||||
|
||||
message MethodOptions {
|
||||
|
||||
// Note: Field numbers 1 through 32 are reserved for Google's internal RPC
|
||||
// framework. We apologize for hoarding these numbers to ourselves, but
|
||||
// we were already using them long before we decided to release Protocol
|
||||
// Buffers.
|
||||
|
||||
// Is this method deprecated?
|
||||
// Depending on the target platform, this can emit Deprecated annotations
|
||||
// for the method, or it will be completely ignored; in the very least,
|
||||
// this is a formalization for deprecating methods.
|
||||
optional bool deprecated = 33 [default=false];
|
||||
|
||||
// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
|
||||
// or neither? HTTP based RPC implementation may choose GET verb for safe
|
||||
// methods, and PUT verb for idempotent methods instead of the default POST.
|
||||
enum IdempotencyLevel {
|
||||
IDEMPOTENCY_UNKNOWN = 0;
|
||||
NO_SIDE_EFFECTS = 1; // implies idempotent
|
||||
IDEMPOTENT = 2; // idempotent, but may have side effects
|
||||
}
|
||||
optional IdempotencyLevel idempotency_level =
|
||||
34 [default=IDEMPOTENCY_UNKNOWN];
|
||||
|
||||
// The parser stores options it doesn't recognize here. See above.
|
||||
repeated UninterpretedOption uninterpreted_option = 999;
|
||||
|
||||
// Clients can define custom options in extensions of this message. See above.
|
||||
extensions 1000 to max;
|
||||
}
|
||||
|
||||
|
||||
// A message representing a option the parser does not recognize. This only
|
||||
// appears in options protos created by the compiler::Parser class.
|
||||
// DescriptorPool resolves these when building Descriptor objects. Therefore,
|
||||
// options protos in descriptor objects (e.g. returned by Descriptor::options(),
|
||||
// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
|
||||
// in them.
|
||||
message UninterpretedOption {
|
||||
// The name of the uninterpreted option. Each string represents a segment in
|
||||
// a dot-separated name. is_extension is true iff a segment represents an
|
||||
// extension (denoted with parentheses in options specs in .proto files).
|
||||
// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
|
||||
// "foo.(bar.baz).qux".
|
||||
message NamePart {
|
||||
required string name_part = 1;
|
||||
required bool is_extension = 2;
|
||||
}
|
||||
repeated NamePart name = 2;
|
||||
|
||||
// The value of the uninterpreted option, in whatever type the tokenizer
|
||||
// identified it as during parsing. Exactly one of these should be set.
|
||||
optional string identifier_value = 3;
|
||||
optional uint64 positive_int_value = 4;
|
||||
optional int64 negative_int_value = 5;
|
||||
optional double double_value = 6;
|
||||
optional bytes string_value = 7;
|
||||
optional string aggregate_value = 8;
|
||||
}
|
||||
|
||||
// ===================================================================
|
||||
// Optional source code info
|
||||
|
||||
// Encapsulates information about the original source file from which a
|
||||
// FileDescriptorProto was generated.
|
||||
message SourceCodeInfo {
|
||||
// A Location identifies a piece of source code in a .proto file which
|
||||
// corresponds to a particular definition. This information is intended
|
||||
// to be useful to IDEs, code indexers, documentation generators, and similar
|
||||
// tools.
|
||||
//
|
||||
// For example, say we have a file like:
|
||||
// message Foo {
|
||||
// optional string foo = 1;
|
||||
// }
|
||||
// Let's look at just the field definition:
|
||||
// optional string foo = 1;
|
||||
// ^ ^^ ^^ ^ ^^^
|
||||
// a bc de f ghi
|
||||
// We have the following locations:
|
||||
// span path represents
|
||||
// [a,i) [ 4, 0, 2, 0 ] The whole field definition.
|
||||
// [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
|
||||
// [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
|
||||
// [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
|
||||
// [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
|
||||
//
|
||||
// Notes:
|
||||
// - A location may refer to a repeated field itself (i.e. not to any
|
||||
// particular index within it). This is used whenever a set of elements are
|
||||
// logically enclosed in a single code segment. For example, an entire
|
||||
// extend block (possibly containing multiple extension definitions) will
|
||||
// have an outer location whose path refers to the "extensions" repeated
|
||||
// field without an index.
|
||||
// - Multiple locations may have the same path. This happens when a single
|
||||
// logical declaration is spread out across multiple places. The most
|
||||
// obvious example is the "extend" block again -- there may be multiple
|
||||
// extend blocks in the same scope, each of which will have the same path.
|
||||
// - A location's span is not always a subset of its parent's span. For
|
||||
// example, the "extendee" of an extension declaration appears at the
|
||||
// beginning of the "extend" block and is shared by all extensions within
|
||||
// the block.
|
||||
// - Just because a location's span is a subset of some other location's span
|
||||
// does not mean that it is a descendent. For example, a "group" defines
|
||||
// both a type and a field in a single declaration. Thus, the locations
|
||||
// corresponding to the type and field and their components will overlap.
|
||||
// - Code which tries to interpret locations should probably be designed to
|
||||
// ignore those that it doesn't understand, as more types of locations could
|
||||
// be recorded in the future.
|
||||
repeated Location location = 1;
|
||||
message Location {
|
||||
// Identifies which part of the FileDescriptorProto was defined at this
|
||||
// location.
|
||||
//
|
||||
// Each element is a field number or an index. They form a path from
|
||||
// the root FileDescriptorProto to the place where the definition. For
|
||||
// example, this path:
|
||||
// [ 4, 3, 2, 7, 1 ]
|
||||
// refers to:
|
||||
// file.message_type(3) // 4, 3
|
||||
// .field(7) // 2, 7
|
||||
// .name() // 1
|
||||
// This is because FileDescriptorProto.message_type has field number 4:
|
||||
// repeated DescriptorProto message_type = 4;
|
||||
// and DescriptorProto.field has field number 2:
|
||||
// repeated FieldDescriptorProto field = 2;
|
||||
// and FieldDescriptorProto.name has field number 1:
|
||||
// optional string name = 1;
|
||||
//
|
||||
// Thus, the above path gives the location of a field name. If we removed
|
||||
// the last element:
|
||||
// [ 4, 3, 2, 7 ]
|
||||
// this path refers to the whole field declaration (from the beginning
|
||||
// of the label to the terminating semicolon).
|
||||
repeated int32 path = 1 [packed=true];
|
||||
|
||||
// Always has exactly three or four elements: start line, start column,
|
||||
// end line (optional, otherwise assumed same as start line), end column.
|
||||
// These are packed into a single field for efficiency. Note that line
|
||||
// and column numbers are zero-based -- typically you will want to add
|
||||
// 1 to each before displaying to a user.
|
||||
repeated int32 span = 2 [packed=true];
|
||||
|
||||
// If this SourceCodeInfo represents a complete declaration, these are any
|
||||
// comments appearing before and after the declaration which appear to be
|
||||
// attached to the declaration.
|
||||
//
|
||||
// A series of line comments appearing on consecutive lines, with no other
|
||||
// tokens appearing on those lines, will be treated as a single comment.
|
||||
//
|
||||
// leading_detached_comments will keep paragraphs of comments that appear
|
||||
// before (but not connected to) the current element. Each paragraph,
|
||||
// separated by empty lines, will be one comment element in the repeated
|
||||
// field.
|
||||
//
|
||||
// Only the comment content is provided; comment markers (e.g. //) are
|
||||
// stripped out. For block comments, leading whitespace and an asterisk
|
||||
// will be stripped from the beginning of each line other than the first.
|
||||
// Newlines are included in the output.
|
||||
//
|
||||
// Examples:
|
||||
//
|
||||
// optional int32 foo = 1; // Comment attached to foo.
|
||||
// // Comment attached to bar.
|
||||
// optional int32 bar = 2;
|
||||
//
|
||||
// optional string baz = 3;
|
||||
// // Comment attached to baz.
|
||||
// // Another line attached to baz.
|
||||
//
|
||||
// // Comment attached to qux.
|
||||
// //
|
||||
// // Another line attached to qux.
|
||||
// optional double qux = 4;
|
||||
//
|
||||
// // Detached comment for corge. This is not leading or trailing comments
|
||||
// // to qux or corge because there are blank lines separating it from
|
||||
// // both.
|
||||
//
|
||||
// // Detached comment for corge paragraph 2.
|
||||
//
|
||||
// optional string corge = 5;
|
||||
// /* Block comment attached
|
||||
// * to corge. Leading asterisks
|
||||
// * will be removed. */
|
||||
// /* Block comment attached to
|
||||
// * grault. */
|
||||
// optional int32 grault = 6;
|
||||
//
|
||||
// // ignored detached comments.
|
||||
optional string leading_comments = 3;
|
||||
optional string trailing_comments = 4;
|
||||
repeated string leading_detached_comments = 6;
|
||||
}
|
||||
}
|
||||
|
||||
// Describes the relationship between generated code and its original source
|
||||
// file. A GeneratedCodeInfo message is associated with only one generated
|
||||
// source file, but may contain references to different source .proto files.
|
||||
message GeneratedCodeInfo {
|
||||
// An Annotation connects some span of text in generated code to an element
|
||||
// of its generating .proto file.
|
||||
repeated Annotation annotation = 1;
|
||||
message Annotation {
|
||||
// Identifies the element in the original source .proto file. This field
|
||||
// is formatted the same as SourceCodeInfo.Location.path.
|
||||
repeated int32 path = 1 [packed=true];
|
||||
|
||||
// Identifies the filesystem path to the original source .proto.
|
||||
optional string source_file = 2;
|
||||
|
||||
// Identifies the starting offset in bytes in the generated code
|
||||
// that relates to the identified object.
|
||||
optional int32 begin = 3;
|
||||
|
||||
// Identifies the ending offset in bytes in the generated code that
|
||||
// relates to the identified offset. The end offset should be one past
|
||||
// the last relevant byte (so the length of the text = end - begin).
|
||||
optional int32 end = 4;
|
||||
}
|
||||
}
|
149
vendor/github.com/golang/protobuf/ptypes/any/any.proto
generated
vendored
Normal file
@ -0,0 +1,149 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.protobuf;
|
||||
|
||||
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
||||
option go_package = "github.com/golang/protobuf/ptypes/any";
|
||||
option java_package = "com.google.protobuf";
|
||||
option java_outer_classname = "AnyProto";
|
||||
option java_multiple_files = true;
|
||||
option objc_class_prefix = "GPB";
|
||||
|
||||
// `Any` contains an arbitrary serialized protocol buffer message along with a
|
||||
// URL that describes the type of the serialized message.
|
||||
//
|
||||
// Protobuf library provides support to pack/unpack Any values in the form
|
||||
// of utility functions or additional generated methods of the Any type.
|
||||
//
|
||||
// Example 1: Pack and unpack a message in C++.
|
||||
//
|
||||
// Foo foo = ...;
|
||||
// Any any;
|
||||
// any.PackFrom(foo);
|
||||
// ...
|
||||
// if (any.UnpackTo(&foo)) {
|
||||
// ...
|
||||
// }
|
||||
//
|
||||
// Example 2: Pack and unpack a message in Java.
|
||||
//
|
||||
// Foo foo = ...;
|
||||
// Any any = Any.pack(foo);
|
||||
// ...
|
||||
// if (any.is(Foo.class)) {
|
||||
// foo = any.unpack(Foo.class);
|
||||
// }
|
||||
//
|
||||
// Example 3: Pack and unpack a message in Python.
|
||||
//
|
||||
// foo = Foo(...)
|
||||
// any = Any()
|
||||
// any.Pack(foo)
|
||||
// ...
|
||||
// if any.Is(Foo.DESCRIPTOR):
|
||||
// any.Unpack(foo)
|
||||
// ...
|
||||
//
|
||||
// Example 4: Pack and unpack a message in Go
|
||||
//
|
||||
// foo := &pb.Foo{...}
|
||||
// any, err := ptypes.MarshalAny(foo)
|
||||
// ...
|
||||
// foo := &pb.Foo{}
|
||||
// if err := ptypes.UnmarshalAny(any, foo); err != nil {
|
||||
// ...
|
||||
// }
|
||||
//
|
||||
// The pack methods provided by protobuf library will by default use
|
||||
// 'type.googleapis.com/full.type.name' as the type URL and the unpack
|
||||
// methods only use the fully qualified type name after the last '/'
|
||||
// in the type URL, for example "foo.bar.com/x/y.z" will yield type
|
||||
// name "y.z".
|
||||
//
|
||||
//
|
||||
// JSON
|
||||
// ====
|
||||
// The JSON representation of an `Any` value uses the regular
|
||||
// representation of the deserialized, embedded message, with an
|
||||
// additional field `@type` which contains the type URL. Example:
|
||||
//
|
||||
// package google.profile;
|
||||
// message Person {
|
||||
// string first_name = 1;
|
||||
// string last_name = 2;
|
||||
// }
|
||||
//
|
||||
// {
|
||||
// "@type": "type.googleapis.com/google.profile.Person",
|
||||
// "firstName": <string>,
|
||||
// "lastName": <string>
|
||||
// }
|
||||
//
|
||||
// If the embedded message type is well-known and has a custom JSON
|
||||
// representation, that representation will be embedded adding a field
|
||||
// `value` which holds the custom JSON in addition to the `@type`
|
||||
// field. Example (for message [google.protobuf.Duration][]):
|
||||
//
|
||||
// {
|
||||
// "@type": "type.googleapis.com/google.protobuf.Duration",
|
||||
// "value": "1.212s"
|
||||
// }
|
||||
//
|
||||
message Any {
|
||||
// A URL/resource name whose content describes the type of the
|
||||
// serialized protocol buffer message.
|
||||
//
|
||||
// For URLs which use the scheme `http`, `https`, or no scheme, the
|
||||
// following restrictions and interpretations apply:
|
||||
//
|
||||
// * If no scheme is provided, `https` is assumed.
|
||||
// * The last segment of the URL's path must represent the fully
|
||||
// qualified name of the type (as in `path/google.protobuf.Duration`).
|
||||
// The name should be in a canonical form (e.g., leading "." is
|
||||
// not accepted).
|
||||
// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
|
||||
// value in binary format, or produce an error.
|
||||
// * Applications are allowed to cache lookup results based on the
|
||||
// URL, or have them precompiled into a binary to avoid any
|
||||
// lookup. Therefore, binary compatibility needs to be preserved
|
||||
// on changes to types. (Use versioned type names to manage
|
||||
// breaking changes.)
|
||||
//
|
||||
// Schemes other than `http`, `https` (or the empty scheme) might be
|
||||
// used with implementation specific semantics.
|
||||
//
|
||||
string type_url = 1;
|
||||
|
||||
// Must be a valid serialized protocol buffer of the above specified type.
|
||||
bytes value = 2;
|
||||
}
|
117
vendor/github.com/golang/protobuf/ptypes/duration/duration.proto
generated
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.protobuf;
|
||||
|
||||
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
||||
option cc_enable_arenas = true;
|
||||
option go_package = "github.com/golang/protobuf/ptypes/duration";
|
||||
option java_package = "com.google.protobuf";
|
||||
option java_outer_classname = "DurationProto";
|
||||
option java_multiple_files = true;
|
||||
option objc_class_prefix = "GPB";
|
||||
|
||||
// A Duration represents a signed, fixed-length span of time represented
|
||||
// as a count of seconds and fractions of seconds at nanosecond
|
||||
// resolution. It is independent of any calendar and concepts like "day"
|
||||
// or "month". It is related to Timestamp in that the difference between
|
||||
// two Timestamp values is a Duration and it can be added or subtracted
|
||||
// from a Timestamp. Range is approximately +-10,000 years.
|
||||
//
|
||||
// # Examples
|
||||
//
|
||||
// Example 1: Compute Duration from two Timestamps in pseudo code.
|
||||
//
|
||||
// Timestamp start = ...;
|
||||
// Timestamp end = ...;
|
||||
// Duration duration = ...;
|
||||
//
|
||||
// duration.seconds = end.seconds - start.seconds;
|
||||
// duration.nanos = end.nanos - start.nanos;
|
||||
//
|
||||
// if (duration.seconds < 0 && duration.nanos > 0) {
|
||||
// duration.seconds += 1;
|
||||
// duration.nanos -= 1000000000;
|
||||
// } else if (durations.seconds > 0 && duration.nanos < 0) {
|
||||
// duration.seconds -= 1;
|
||||
// duration.nanos += 1000000000;
|
||||
// }
|
||||
//
|
||||
// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
|
||||
//
|
||||
// Timestamp start = ...;
|
||||
// Duration duration = ...;
|
||||
// Timestamp end = ...;
|
||||
//
|
||||
// end.seconds = start.seconds + duration.seconds;
|
||||
// end.nanos = start.nanos + duration.nanos;
|
||||
//
|
||||
// if (end.nanos < 0) {
|
||||
// end.seconds -= 1;
|
||||
// end.nanos += 1000000000;
|
||||
// } else if (end.nanos >= 1000000000) {
|
||||
// end.seconds += 1;
|
||||
// end.nanos -= 1000000000;
|
||||
// }
|
||||
//
|
||||
// Example 3: Compute Duration from datetime.timedelta in Python.
|
||||
//
|
||||
// td = datetime.timedelta(days=3, minutes=10)
|
||||
// duration = Duration()
|
||||
// duration.FromTimedelta(td)
|
||||
//
|
||||
// # JSON Mapping
|
||||
//
|
||||
// In JSON format, the Duration type is encoded as a string rather than an
|
||||
// object, where the string ends in the suffix "s" (indicating seconds) and
|
||||
// is preceded by the number of seconds, with nanoseconds expressed as
|
||||
// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
|
||||
// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
|
||||
// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
|
||||
// microsecond should be expressed in JSON format as "3.000001s".
|
||||
//
|
||||
//
|
||||
message Duration {
|
||||
|
||||
// Signed seconds of the span of time. Must be from -315,576,000,000
|
||||
// to +315,576,000,000 inclusive. Note: these bounds are computed from:
|
||||
// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
|
||||
int64 seconds = 1;
|
||||
|
||||
// Signed fractions of a second at nanosecond resolution of the span
|
||||
// of time. Durations less than one second are represented with a 0
|
||||
// `seconds` field and a positive or negative `nanos` field. For durations
|
||||
// of one second or more, a non-zero value for the `nanos` field must be
|
||||
// of the same sign as the `seconds` field. Must be from -999,999,999
|
||||
// to +999,999,999 inclusive.
|
||||
int32 nanos = 2;
|
||||
}
|
133
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
generated
vendored
Normal file
@ -0,0 +1,133 @@
|
||||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.protobuf;
|
||||
|
||||
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
||||
option cc_enable_arenas = true;
|
||||
option go_package = "github.com/golang/protobuf/ptypes/timestamp";
|
||||
option java_package = "com.google.protobuf";
|
||||
option java_outer_classname = "TimestampProto";
|
||||
option java_multiple_files = true;
|
||||
option objc_class_prefix = "GPB";
|
||||
|
||||
// A Timestamp represents a point in time independent of any time zone
|
||||
// or calendar, represented as seconds and fractions of seconds at
|
||||
// nanosecond resolution in UTC Epoch time. It is encoded using the
|
||||
// Proleptic Gregorian Calendar which extends the Gregorian calendar
|
||||
// backwards to year one. It is encoded assuming all minutes are 60
|
||||
// seconds long, i.e. leap seconds are "smeared" so that no leap second
|
||||
// table is needed for interpretation. Range is from
|
||||
// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.
|
||||
// By restricting to that range, we ensure that we can convert to
|
||||
// and from RFC 3339 date strings.
|
||||
// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
|
||||
//
|
||||
// # Examples
|
||||
//
|
||||
// Example 1: Compute Timestamp from POSIX `time()`.
|
||||
//
|
||||
// Timestamp timestamp;
|
||||
// timestamp.set_seconds(time(NULL));
|
||||
// timestamp.set_nanos(0);
|
||||
//
|
||||
// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
|
||||
//
|
||||
// struct timeval tv;
|
||||
// gettimeofday(&tv, NULL);
|
||||
//
|
||||
// Timestamp timestamp;
|
||||
// timestamp.set_seconds(tv.tv_sec);
|
||||
// timestamp.set_nanos(tv.tv_usec * 1000);
|
||||
//
|
||||
// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
|
||||
//
|
||||
// FILETIME ft;
|
||||
// GetSystemTimeAsFileTime(&ft);
|
||||
// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
|
||||
//
|
||||
// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
|
||||
// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
|
||||
// Timestamp timestamp;
|
||||
// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
|
||||
// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
|
||||
//
|
||||
// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
|
||||
//
|
||||
// long millis = System.currentTimeMillis();
|
||||
//
|
||||
// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
|
||||
// .setNanos((int) ((millis % 1000) * 1000000)).build();
|
||||
//
|
||||
//
|
||||
// Example 5: Compute Timestamp from current time in Python.
|
||||
//
|
||||
// timestamp = Timestamp()
|
||||
// timestamp.GetCurrentTime()
|
||||
//
|
||||
// # JSON Mapping
|
||||
//
|
||||
// In JSON format, the Timestamp type is encoded as a string in the
|
||||
// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
|
||||
// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
|
||||
// where {year} is always expressed using four digits while {month}, {day},
|
||||
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
|
||||
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
|
||||
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
|
||||
// is required, though only UTC (as indicated by "Z") is presently supported.
|
||||
//
|
||||
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
|
||||
// 01:30 UTC on January 15, 2017.
|
||||
//
|
||||
// In JavaScript, one can convert a Date object to this format using the
|
||||
// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]
|
||||
// method. In Python, a standard `datetime.datetime` object can be converted
|
||||
// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
|
||||
// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
|
||||
// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
|
||||
// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--)
|
||||
// to obtain a formatter capable of generating timestamps in this format.
|
||||
//
|
||||
//
|
||||
message Timestamp {
|
||||
|
||||
// Represents seconds of UTC time since Unix epoch
|
||||
// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
|
||||
// 9999-12-31T23:59:59Z inclusive.
|
||||
int64 seconds = 1;
|
||||
|
||||
// Non-negative fractions of a second at nanosecond resolution. Negative
|
||||
// second values with fractions must still have non-negative nanos values
|
||||
// that count forward in time. Must be from 0 to 999,999,999
|
||||
// inclusive.
|
||||
int32 nanos = 2;
|
||||
}
|
9
vendor/github.com/google/uuid/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
language: go
|
||||
|
||||
go:
|
||||
- 1.4.3
|
||||
- 1.5.3
|
||||
- tip
|
||||
|
||||
script:
|
||||
- go test -v ./...
|
10
vendor/github.com/google/uuid/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
# How to contribute
|
||||
|
||||
We definitely welcome patches and contribution to this project!
|
||||
|
||||
### Legal requirements
|
||||
|
||||
In order to protect both you and ourselves, you will need to sign the
|
||||
[Contributor License Agreement](https://cla.developers.google.com/clas).
|
||||
|
||||
You may have already signed it for other Google projects.
|
19
vendor/github.com/google/uuid/README.md
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# uuid ![build status](https://travis-ci.org/google/uuid.svg?branch=master)
|
||||
The uuid package generates and inspects UUIDs based on
|
||||
[RFC 4122](http://tools.ietf.org/html/rfc4122)
|
||||
and DCE 1.1: Authentication and Security Services.
|
||||
|
||||
This package is based on the github.com/pborman/uuid package (previously named
|
||||
code.google.com/p/go-uuid). It differs from these earlier packages in that
|
||||
a UUID is a 16 byte array rather than a byte slice. One loss due to this
|
||||
change is the ability to represent an invalid UUID (vs a NIL UUID).
|
||||
|
||||
###### Install
|
||||
`go get github.com/google/uuid`
|
||||
|
||||
###### Documentation
|
||||
[![GoDoc](https://godoc.org/github.com/google/uuid?status.svg)](http://godoc.org/github.com/google/uuid)
|
||||
|
||||
Full `go doc` style documentation for the package can be viewed online without
|
||||
installing this package by using the GoDoc site here:
|
||||
http://godoc.org/github.com/google/uuid
|
1
vendor/github.com/google/uuid/go.mod
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
module github.com/google/uuid
|
1
vendor/github.com/googleapis/gax-go/.gitignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.cover
|
43
vendor/github.com/googleapis/gax-go/CODE_OF_CONDUCT.md
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
# Contributor Code of Conduct
|
||||
|
||||
As contributors and maintainers of this project,
|
||||
and in the interest of fostering an open and welcoming community,
|
||||
we pledge to respect all people who contribute through reporting issues,
|
||||
posting feature requests, updating documentation,
|
||||
submitting pull requests or patches, and other activities.
|
||||
|
||||
We are committed to making participation in this project
|
||||
a harassment-free experience for everyone,
|
||||
regardless of level of experience, gender, gender identity and expression,
|
||||
sexual orientation, disability, personal appearance,
|
||||
body size, race, ethnicity, age, religion, or nationality.
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery
|
||||
* Personal attacks
|
||||
* Trolling or insulting/derogatory comments
|
||||
* Public or private harassment
|
||||
* Publishing other's private information,
|
||||
such as physical or electronic
|
||||
addresses, without explicit permission
|
||||
* Other unethical or unprofessional conduct.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct.
|
||||
By adopting this Code of Conduct,
|
||||
project maintainers commit themselves to fairly and consistently
|
||||
applying these principles to every aspect of managing this project.
|
||||
Project maintainers who do not follow or enforce the Code of Conduct
|
||||
may be permanently removed from the project team.
|
||||
|
||||
This code of conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior
|
||||
may be reported by opening an issue
|
||||
or contacting one or more of the project maintainers.
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
|
||||
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
|
27
vendor/github.com/googleapis/gax-go/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
Want to contribute? Great! First, read this page (including the small print at the end).
|
||||
|
||||
### Before you contribute
|
||||
Before we can use your code, you must sign the
|
||||
[Google Individual Contributor License Agreement]
|
||||
(https://cla.developers.google.com/about/google-individual)
|
||||
(CLA), which you can do online. The CLA is necessary mainly because you own the
|
||||
copyright to your changes, even after your contribution becomes part of our
|
||||
codebase, so we need your permission to use and distribute your code. We also
|
||||
need to be sure of various other things—for instance that you'll tell us if you
|
||||
know that your code infringes on other people's patents. You don't have to sign
|
||||
the CLA until after you've submitted your code for review and a member has
|
||||
approved it, but you must do it before we can put your code into our codebase.
|
||||
Before you start working on a larger contribution, you should get in touch with
|
||||
us first through the issue tracker with your idea so that we can help out and
|
||||
possibly guide you. Coordinating up front makes it much easier to avoid
|
||||
frustration later on.
|
||||
|
||||
### Code reviews
|
||||
All submissions, including submissions by project members, require review. We
|
||||
use Github pull requests for this purpose.
|
||||
|
||||
### The small print
|
||||
Contributions made by corporations are covered by a different agreement than
|
||||
the one above, the
|
||||
[Software Grant and Corporate Contributor License Agreement]
|
||||
(https://cla.developers.google.com/about/google-corporate).
|
27
vendor/github.com/googleapis/gax-go/README.md
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
Google API Extensions for Go
|
||||
============================
|
||||
|
||||
[![GoDoc](https://godoc.org/github.com/googleapis/gax-go?status.svg)](https://godoc.org/github.com/googleapis/gax-go)
|
||||
|
||||
Google API Extensions for Go (gax-go) is a set of modules which aids the
|
||||
development of APIs for clients and servers based on `gRPC` and Google API
|
||||
conventions.
|
||||
|
||||
To install the API extensions, use:
|
||||
|
||||
```
|
||||
go get -u github.com/googleapis/gax-go
|
||||
```
|
||||
|
||||
**Note:** Application code will rarely need to use this library directly,
|
||||
but the code generated automatically from API definition files can use it
|
||||
to simplify code generation and to provide more convenient and idiomatic API surface.
|
||||
|
||||
Go Versions
|
||||
===========
|
||||
This library requires Go 1.6 or above.
|
||||
|
||||
License
|
||||
=======
|
||||
BSD - please see [LICENSE](https://github.com/googleapis/gax-go/blob/master/LICENSE)
|
||||
for more information.
|
9
vendor/github.com/googleapis/gax-go/RELEASING.md
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
# Releasing
|
||||
|
||||
1. Make changes.
|
||||
2. Determine next version. For the sake of this list, let's assume 1.2.3.
|
||||
3. Update `gax.go` with `const Version = "1.2.3"`. If v2, do the same to `v2/gax.go`.
|
||||
4. `git checkout -b my_branch && git commit && git push my_remote my_branch`
|
||||
5. Get it reviewed and merged.
|
||||
6. `git checkout master && git tag v1.2.3 && git push origin v1.2.3`
|
||||
7. Update the [releases page on GitHub](https://github.com/googleapis/gax-go/releases)
|
6
vendor/github.com/googleapis/gax-go/go.mod
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
module github.com/googleapis/gax-go
|
||||
|
||||
require (
|
||||
github.com/googleapis/gax-go/v2 v2.0.2
|
||||
google.golang.org/grpc v1.16.0
|
||||
)
|
28
vendor/github.com/googleapis/gax-go/go.sum
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/googleapis/gax-go/v2 v2.0.2 h1:/rNgUniLy2vDXiK2xyJOcirGpC3G99dtK1NWx26WZ8Y=
|
||||
github.com/googleapis/gax-go/v2 v2.0.2/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/grpc v1.16.0 h1:dz5IJGuC2BB7qXR5AyHNwAUBhZscK2xVez7mznh72sY=
|
||||
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
@ -1,27 +1,27 @@
|
||||
Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
Copyright 2016, Google Inc.
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
3
vendor/github.com/googleapis/gax-go/v2/call_option.go
generated
vendored
@ -113,7 +113,6 @@ type Backoff struct {
|
||||
cur time.Duration
|
||||
}
|
||||
|
||||
// Pause returns the next time.Duration that the caller should use to backoff.
|
||||
func (bo *Backoff) Pause() time.Duration {
|
||||
if bo.Initial == 0 {
|
||||
bo.Initial = time.Second
|
||||
@ -145,12 +144,10 @@ func (o grpcOpt) Resolve(s *CallSettings) {
|
||||
s.GRPC = o
|
||||
}
|
||||
|
||||
// WithGRPCOptions allows passing gRPC call options during client creation.
|
||||
func WithGRPCOptions(opt ...grpc.CallOption) CallOption {
|
||||
return grpcOpt(append([]grpc.CallOption(nil), opt...))
|
||||
}
|
||||
|
||||
// CallSettings allow fine-grained control over how calls are made.
|
||||
type CallSettings struct {
|
||||
// Retry returns a Retryer to be used to control retry logic of a method call.
|
||||
// If Retry is nil or the returned Retryer is nil, the call will not be retried.
|
||||
|
3
vendor/github.com/googleapis/gax-go/v2/gax.go
generated
vendored
@ -35,5 +35,4 @@
|
||||
// to simplify code generation and to provide more convenient and idiomatic API surfaces.
|
||||
package gax
|
||||
|
||||
// Version specifies the gax-go version being used.
|
||||
const Version = "2.0.3"
|
||||
const Version = "2.0.0"
|
||||
|
3
vendor/github.com/googleapis/gax-go/v2/go.mod
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
module github.com/googleapis/gax-go/v2
|
||||
|
||||
require google.golang.org/grpc v1.16.0
|
26
vendor/github.com/googleapis/gax-go/v2/go.sum
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/grpc v1.16.0 h1:dz5IJGuC2BB7qXR5AyHNwAUBhZscK2xVez7mznh72sY=
|
||||
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
29
vendor/github.com/googleapis/gax-go/v2/header.go
generated
vendored
@ -1,32 +1,3 @@
|
||||
// Copyright 2018, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
package gax
|
||||
|
||||
import "bytes"
|
||||
|
12
vendor/github.com/googleapis/gax-go/v2/invoke.go
generated
vendored
@ -31,11 +31,10 @@ package gax
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// APICall is a user defined call stub.
|
||||
// A user defined call stub.
|
||||
type APICall func(context.Context, CallSettings) error
|
||||
|
||||
// Invoke calls the given APICall,
|
||||
@ -74,15 +73,6 @@ func invoke(ctx context.Context, call APICall, settings CallSettings, sp sleeper
|
||||
if settings.Retry == nil {
|
||||
return err
|
||||
}
|
||||
// Never retry permanent certificate errors. (e.x. if ca-certificates
|
||||
// are not installed). We should only make very few, targeted
|
||||
// exceptions: many (other) status=Unavailable should be retried, such
|
||||
// as if there's a network hiccup, or the internet goes out for a
|
||||
// minute. This is also why here we are doing string parsing instead of
|
||||
// simply making Unavailable a non-retried code elsewhere.
|
||||
if strings.Contains(err.Error(), "x509: certificate signed by unknown authority") {
|
||||
return err
|
||||
}
|
||||
if retryer == nil {
|
||||
if r := settings.Retry(); r != nil {
|
||||
retryer = r
|
||||
|
26
vendor/github.com/honeybadger-io/honeybadger-go/.gitignore
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
|
||||
# Folders
|
||||
_obj
|
||||
_test
|
||||
|
||||
# Architecture specific extensions/prefixes
|
||||
*.[568vq]
|
||||
[568vq].out
|
||||
|
||||
*.cgo1.go
|
||||
*.cgo2.c
|
||||
_cgo_defun.c
|
||||
_cgo_gotypes.go
|
||||
_cgo_export.*
|
||||
|
||||
_testmain.go
|
||||
|
||||
*.exe
|
||||
*.test
|
||||
*.prof
|
||||
|
||||
cover.out
|
5
vendor/github.com/honeybadger-io/honeybadger-go/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
language: go
|
||||
install: make deps
|
||||
go:
|
||||
- 1.7
|
||||
- tip
|
61
vendor/github.com/honeybadger-io/honeybadger-go/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
# Change Log
|
||||
All notable changes to this project will be documented in this file. See [Keep a
|
||||
CHANGELOG](http://keepachangelog.com/) for how to update this file. This project
|
||||
adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [Unreleased][unreleased]
|
||||
|
||||
## [0.4.0] - 2018-07-18
|
||||
### Added
|
||||
- Ability to tag errors. -@izumin5210
|
||||
|
||||
## [0.3.0] - 2018-07-03
|
||||
### Changed
|
||||
- Remove deprecated metrics methods.
|
||||
|
||||
### Fixed
|
||||
- Fixed concurrent map writes bug when calling `honeybadger.SetContext` from
|
||||
concurrent goroutines.
|
||||
|
||||
## [0.2.1] - 2017-09-14
|
||||
### Fixed
|
||||
- Previously, if you put `honeybadger.Monitor()` in your main func, the app
|
||||
could finish and exit before the error was sent to honeybadger. We now Flush
|
||||
notices before re-panicking.
|
||||
|
||||
## [0.2.0] - 2016-10-14
|
||||
### Changed
|
||||
- Sunset performance metrics. See
|
||||
http://blog.honeybadger.io/sunsetting-performance-metrics/
|
||||
|
||||
## [0.1.0] - 2016-05-12
|
||||
### Added
|
||||
- Use `honeybadger.MetricsHandler` to send us request metrics!
|
||||
|
||||
## [0.0.3] - 2016-04-13
|
||||
### Added
|
||||
- `honeybadger.NewNullBackend()`: creates a backend which swallows all errors
|
||||
and does not send them to Honeybadger. This is useful for development and
|
||||
testing to disable sending unnecessary errors. -@gaffneyc
|
||||
- Tested against Go 1.5 and 1.6. -@gaffneyc
|
||||
|
||||
### Fixed
|
||||
- Export Fingerprint fields. -@smeriwether
|
||||
- Fix HB due to changes in shirou/gopsutil. -@kostyantyn
|
||||
|
||||
## [0.0.2] - 2016-03-28
|
||||
### Added
|
||||
- Make newError function public (#6). -@kostyantyn
|
||||
- Add public access to default client (#5). -@kostyantyn
|
||||
- Support default server mux in Handler.
|
||||
- Allow error class to be customized from `honeybadger.Notify`.
|
||||
- Support sending fingerprint in `honeybadger.Notify`.
|
||||
- Added BeforeNotify callback.
|
||||
|
||||
### Fixed
|
||||
- Drain the body of a response before closing it (#4). -@kostyantyn
|
||||
- Update config at pointer rather than dereferencing. (#2).
|
||||
|
||||
## [0.0.1] - 2015-06-25
|
||||
### Added
|
||||
- Go client for Honeybadger.io.
|
36
vendor/github.com/honeybadger-io/honeybadger-go/Makefile
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
all: test
|
||||
|
||||
deps:
|
||||
# dependencies
|
||||
go get github.com/pborman/uuid
|
||||
go get github.com/shirou/gopsutil/load
|
||||
go get golang.org/x/sys/unix
|
||||
# testing libs
|
||||
go get github.com/stretchr/testify/mock
|
||||
go get github.com/stretchr/testify/assert
|
||||
|
||||
prepare: deps
|
||||
# needed for `make fmt`
|
||||
go get golang.org/x/tools/cmd/goimports
|
||||
# linters
|
||||
go get github.com/alecthomas/gometalinter
|
||||
gometalinter --install
|
||||
# needed for `make cover`
|
||||
go get golang.org/x/tools/cmd/cover
|
||||
@echo Now you should be ready to run "make"
|
||||
|
||||
test:
|
||||
@go test -parallel 4 ./...
|
||||
|
||||
# goimports produces slightly different formatted code from go fmt
|
||||
fmt:
|
||||
find . -name "*.go" -exec goimports -w {} \;
|
||||
|
||||
lint:
|
||||
gometalinter
|
||||
|
||||
cover:
|
||||
go test -cover -coverprofile cover.out
|
||||
go tool cover -html=cover.out
|
||||
|
||||
.PHONY: all prepare test fmt lint cover
|
329
vendor/github.com/honeybadger-io/honeybadger-go/README.md
generated
vendored
Normal file
@ -0,0 +1,329 @@
|
||||
# Honeybadger for Go
|
||||
|
||||
[![Build Status](https://travis-ci.org/honeybadger-io/honeybadger-go.svg?branch=master)](https://travis-ci.org/honeybadger-io/honeybadger-go)
|
||||
|
||||
Go (golang) support for the :zap: [Honeybadger error
|
||||
notifier](https://www.honeybadger.io/). Receive instant notification of panics
|
||||
and errors in your Go applications.
|
||||
|
||||
## Getting Started
|
||||
|
||||
|
||||
### 1. Install the library
|
||||
|
||||
To install, grab the package from GitHub:
|
||||
|
||||
```sh
|
||||
go get github.com/honeybadger-io/honeybadger-go
|
||||
```
|
||||
|
||||
Then add an import to your application code:
|
||||
|
||||
```go
|
||||
import "github.com/honeybadger-io/honeybadger-go"
|
||||
```
|
||||
|
||||
### 2. Set your API key
|
||||
|
||||
Finally, configure your API key:
|
||||
|
||||
```go
|
||||
honeybadger.Configure(honeybadger.Configuration{APIKey: "your api key"})
|
||||
```
|
||||
|
||||
You can also configure Honeybadger via environment variables. See
|
||||
[Configuration](#configuration) for more information.
|
||||
|
||||
### 3. Enable automatic panic reporting
|
||||
|
||||
#### Panics during HTTP requests
|
||||
|
||||
To automatically report panics which happen during an HTTP request, wrap your
|
||||
`http.Handler` function with `honeybadger.Handler`:
|
||||
|
||||
```go
|
||||
log.Fatal(http.ListenAndServe(":8080", honeybadger.Handler(handler)))
|
||||
```
|
||||
|
||||
Request data such as cookies and params will automatically be reported with
|
||||
errors which happen inside `honeybadger.Handler`. Make sure you recover from
|
||||
panics after honeybadger's Handler has been executed to ensure all panics are
|
||||
reported.
|
||||
|
||||
#### Unhandled Panics
|
||||
|
||||
|
||||
To report all unhandled panics which happen in your application
|
||||
the following can be added to `main()`:
|
||||
|
||||
```go
|
||||
func main() {
|
||||
defer honeybadger.Monitor()
|
||||
// application code...
|
||||
}
|
||||
```
|
||||
|
||||
#### Manually Reporting Errors
|
||||
|
||||
To report an error manually, use `honeybadger.Notify`:
|
||||
|
||||
```go
|
||||
if err != nil {
|
||||
honeybadger.Notify(err)
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Sample Application
|
||||
|
||||
If you'd like to see the library in action before you integrate it with your apps, check out our [sample application](https://github.com/honeybadger-io/crywolf-go).
|
||||
|
||||
You can deploy the sample app to your Heroku account by clicking this button:
|
||||
|
||||
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/honeybadger-io/crywolf-go)
|
||||
|
||||
Don't forget to destroy the Heroku app after you're done so that you aren't charged for usage.
|
||||
|
||||
The code for the sample app is [available on Github](https://github.com/honeybadger-io/crywolf-go), in case you'd like to read through it, or run it locally.
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
To set configuration options, use the `honeybadger.Configuration` method, like so:
|
||||
|
||||
```go
|
||||
honeybadger.Configure(honeybadger.Configuration{
|
||||
APIKey: "your api key",
|
||||
Env: "staging"
|
||||
})
|
||||
```
|
||||
The following options are available to you:
|
||||
|
||||
| Name | Type | Default | Example | Environment variable |
|
||||
| ----- | ---- | ------- | ------- | -------------------- |
|
||||
| APIKey | `string` | `""` | `"badger01"` | `HONEYBADGER_API_KEY` |
|
||||
| Root | `string` | The current working directory | `"/path/to/project"` | `HONEYBADGER_ROOT` |
|
||||
| Env | `string` | `""` | `"production"` | `HONEYBADGER_ENV` |
|
||||
| Hostname | `string` | The hostname of the current server. | `"badger01"` | `HONEYBADGER_HOSTNAME` |
|
||||
| Endpoint | `string` | `"https://api.honeybadger.io"` | `"https://honeybadger.example.com/"` | `HONEYBADGER_ENDPOINT` |
|
||||
| Timeout | `time.Duration` | 3 seconds | `10 * time.Second` | `HONEYBADGER_TIMEOUT` (nanoseconds) |
|
||||
| Logger | `honeybadger.Logger` | Logs to stderr | `CustomLogger{}` | n/a |
|
||||
| Backend | `honeybadger.Backend` | HTTP backend | `CustomBackend{}` | n/a |
|
||||
|
||||
|
||||
## Public Interface
|
||||
|
||||
### `honeybadger.Notify()`: Send an error to Honeybadger.
|
||||
|
||||
If you've handled a panic in your code, but would still like to report the error to Honeybadger, this is the method for you.
|
||||
|
||||
#### Examples:
|
||||
|
||||
```go
|
||||
if err != nil {
|
||||
honeybadger.Notify(err)
|
||||
}
|
||||
```
|
||||
|
||||
You can also add local context using an optional second argument when calling
|
||||
`honeybadger.Notify`:
|
||||
|
||||
```go
|
||||
honeybadger.Notify(err, honeybadger.Context{"user_id": 2})
|
||||
```
|
||||
|
||||
Honeybadger uses the error's class name to group similar errors together. If
|
||||
your error classes are often generic (such as `errors.errorString`), you can
|
||||
improve grouping by overriding the default with something more unique:
|
||||
|
||||
```go
|
||||
honeybadger.Notify(err, honeybadger.ErrorClass{"CustomClassName"})
|
||||
```
|
||||
|
||||
To override grouping entirely, you can send a custom fingerprint. All errors
|
||||
with the same fingerprint will be grouped together:
|
||||
|
||||
```go
|
||||
honeybadger.Notify(err, honeybadger.Fingerprint{"A unique string"})
|
||||
```
|
||||
|
||||
To tag errors in Honeybadger:
|
||||
|
||||
```go
|
||||
honeybadger.Notify(err, honeybadger.Tags{"timeout", "http"})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
|
||||
### `honeybadger.SetContext()`: Set metadata to be sent if an error occurs
|
||||
|
||||
This method lets you set context data that will be sent if an error should occur.
|
||||
|
||||
For example, it's often useful to record the current user's ID when an error occurs in a web app. To do that, just use `SetContext` to set the user id on each request. If an error occurs, the id will be reported with it.
|
||||
|
||||
**Note**: This method is currently shared across goroutines, and therefore may not be optimal for use in highly concurrent use cases, such as HTTP requests. See [issue #35](https://github.com/honeybadger-io/honeybadger-go/issues/35).
|
||||
|
||||
#### Examples:
|
||||
|
||||
```go
|
||||
honeybadger.SetContext(honeybadger.Context{
|
||||
"user_id": 1,
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ``defer honeybadger.Monitor()``: Automatically report panics from your functions
|
||||
|
||||
To automatically report panics in your functions or methods, add
|
||||
`defer honeybadger.Monitor()` to the beginning of the function or method you wish to monitor.
|
||||
|
||||
|
||||
#### Examples:
|
||||
|
||||
```go
|
||||
func risky() {
|
||||
defer honeybadger.Monitor()
|
||||
// risky business logic...
|
||||
}
|
||||
```
|
||||
|
||||
__Important:__ `honeybadger.Monitor()` will re-panic after it reports the error, so make sure that it is only called once before recovering from the panic (or allowing the process to crash).
|
||||
|
||||
---
|
||||
|
||||
### ``honeybadger.BeforeNotify()``: Add a callback to skip or modify error notification.
|
||||
|
||||
Sometimes you may want to modify the data sent to Honeybadger right before an
|
||||
error notification is sent, or skip the notification entirely. To do so, add a
|
||||
callback using `honeybadger.BeforeNotify()`.
|
||||
|
||||
#### Examples:
|
||||
|
||||
```go
|
||||
honeybadger.BeforeNotify(
|
||||
func(notice *honeybadger.Notice) error {
|
||||
if notice.ErrorClass == "SkippedError" {
|
||||
return fmt.Errorf("Skipping this notification")
|
||||
}
|
||||
// Return nil to send notification for all other classes.
|
||||
return nil
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
To modify information:
|
||||
|
||||
```go
|
||||
honeybadger.BeforeNotify(
|
||||
func(notice *honeybadger.Notice) error {
|
||||
// Errors in Honeybadger will always have the class name "GenericError".
|
||||
notice.ErrorClass = "GenericError"
|
||||
return nil
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ``honeybadger.NewNullBackend()``: Disable data reporting.
|
||||
|
||||
`NewNullBackend` creates a backend which swallows all errors and does not send them to Honeybadger. This is useful for development and testing to disable sending unnecessary errors.
|
||||
|
||||
#### Examples:
|
||||
|
||||
```go
|
||||
honeybadger.Configure(honeybadger.Configuration{Backend: honeybadger.NewNullBackend()})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Creating a new client
|
||||
|
||||
In the same way that the log library provides a predefined "standard" logger, honeybadger defines a standard client which may be accessed directly via `honeybadger`. A new client may also be created by calling `honeybadger.New`:
|
||||
|
||||
```go
|
||||
hb := honeybadger.New(honeybadger.Configuration{APIKey: "some other api key"})
|
||||
hb.Notify("This error was reported by an alternate client.")
|
||||
```
|
||||
|
||||
## Grouping
|
||||
|
||||
Honeybadger groups by the error class and the first line of the backtrace by
|
||||
default. In some cases it may be desirable to provide your own grouping
|
||||
algorithm. One use case for this is `errors.errorString`. Because that type is
|
||||
used for many different types of errors in Go, Honeybadger will appear to group
|
||||
unrelated errors together. Here's an example of providing a custom fingerprint
|
||||
which will group `errors.errorString` by message instead:
|
||||
|
||||
```go
|
||||
honeybadger.BeforeNotify(
|
||||
func(notice *honeybadger.Notice) error {
|
||||
if notice.ErrorClass == "errors.errorString" {
|
||||
notice.Fingerprint = notice.Message
|
||||
}
|
||||
return nil
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
Note that in this example, the backtrace is ignored. If you want to group by
|
||||
message *and* backtrace, you could append data from `notice.Backtrace` to the
|
||||
fingerprint string.
|
||||
|
||||
An alternate approach would be to override `notice.ErrorClass` with a more
|
||||
specific class name that may be inferred from the message.
|
||||
|
||||
## Versioning
|
||||
|
||||
We use [Semantic Versioning](http://semver.org/) to version releases of
|
||||
honeybadger-go. Because there is no official method to specify version
|
||||
dependencies in Go, we will do our best never to introduce a breaking change on
|
||||
the master branch of this repo after reaching version 1. Until we reach version
|
||||
1 there is a small chance that we may introduce a breaking change (changing the
|
||||
signature of a function or method, for example), but we'll always tag a new
|
||||
minor release and broadcast that we made the change.
|
||||
|
||||
If you're concerned about versioning, there are two options:
|
||||
|
||||
### Vendor your dependencies
|
||||
|
||||
If you're really concerned about changes to this library, then copy it into your
|
||||
source control management system so that you can perform upgrades on your own
|
||||
time.
|
||||
|
||||
### Use gopkg.in
|
||||
|
||||
Rather than importing directly from GitHub, [gopkg.in](http://gopkg.in/) allows
|
||||
you to use their special URL format to transparently import a branch or tag from
|
||||
GitHub. Because we tag each release, using gopkg.in can enable you to depend
|
||||
explicitly on a certain version of this library. Importing from gopkg.in instead
|
||||
of directly from GitHub is as easy as:
|
||||
|
||||
```go
|
||||
import "gopkg.in/honeybadger-io/honeybadger-go.v0"
|
||||
```
|
||||
|
||||
Check out the [gopkg.in](http://gopkg.in/) homepage for more information on how
|
||||
to request versions.
|
||||
|
||||
## Changelog
|
||||
|
||||
See https://github.com/honeybadger-io/honeybadger-go/blob/master/CHANGELOG.md
|
||||
|
||||
## Contributing
|
||||
|
||||
If you're adding a new feature, please [submit an issue](https://github.com/honeybadger-io/honeybadger-go/issues/new) as a preliminary step; that way you can be (moderately) sure that your pull request will be accepted.
|
||||
|
||||
### To contribute your code:
|
||||
|
||||
1. Fork it.
|
||||
2. Create a topic branch `git checkout -b my_branch`
|
||||
3. Commit your changes `git commit -am "Boom"`
|
||||
3. Push to your branch `git push origin my_branch`
|
||||
4. Send a [pull request](https://github.com/honeybadger-io/honeybadger-go/pulls)
|
||||
|
||||
### License
|
||||
|
||||
This library is MIT licensed. See the [LICENSE](https://raw.github.com/honeybadger-io/honeybadger-go/master/LICENSE) file in this repository for details.
|
4
vendor/github.com/jmespath/go-jmespath/.gitignore
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/jpgo
|
||||
jmespath-fuzz.zip
|
||||
cpu.out
|
||||
go-jmespath.test
|
9
vendor/github.com/jmespath/go-jmespath/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
language: go
|
||||
|
||||
sudo: false
|
||||
|
||||
go:
|
||||
- 1.4
|
||||
|
||||
install: go get -v -t ./...
|
||||
script: make test
|
44
vendor/github.com/jmespath/go-jmespath/Makefile
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
CMD = jpgo
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " test to run all the tests"
|
||||
@echo " build to build the library and jp executable"
|
||||
@echo " generate to run codegen"
|
||||
|
||||
|
||||
generate:
|
||||
go generate ./...
|
||||
|
||||
build:
|
||||
rm -f $(CMD)
|
||||
go build ./...
|
||||
rm -f cmd/$(CMD)/$(CMD) && cd cmd/$(CMD)/ && go build ./...
|
||||
mv cmd/$(CMD)/$(CMD) .
|
||||
|
||||
test:
|
||||
go test -v ./...
|
||||
|
||||
check:
|
||||
go vet ./...
|
||||
@echo "golint ./..."
|
||||
@lint=`golint ./...`; \
|
||||
lint=`echo "$$lint" | grep -v "astnodetype_string.go" | grep -v "toktype_string.go"`; \
|
||||
echo "$$lint"; \
|
||||
if [ "$$lint" != "" ]; then exit 1; fi
|
||||
|
||||
htmlc:
|
||||
go test -coverprofile="/tmp/jpcov" && go tool cover -html="/tmp/jpcov" && unlink /tmp/jpcov
|
||||
|
||||
buildfuzz:
|
||||
go-fuzz-build github.com/jmespath/go-jmespath/fuzz
|
||||
|
||||
fuzz: buildfuzz
|
||||
go-fuzz -bin=./jmespath-fuzz.zip -workdir=fuzz/testdata
|
||||
|
||||
bench:
|
||||
go test -bench . -cpuprofile cpu.out
|
||||
|
||||
pprof-cpu:
|
||||
go tool pprof ./go-jmespath.test ./cpu.out
|
7
vendor/github.com/jmespath/go-jmespath/README.md
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
# go-jmespath - A JMESPath implementation in Go
|
||||
|
||||
[![Build Status](https://img.shields.io/travis/jmespath/go-jmespath.svg)](https://travis-ci.org/jmespath/go-jmespath)
|
||||
|
||||
|
||||
|
||||
See http://jmespath.org for more info.
|
21
vendor/github.com/kardianos/osext/README.md
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
### Extensions to the "os" package.
|
||||
|
||||
[![GoDoc](https://godoc.org/github.com/kardianos/osext?status.svg)](https://godoc.org/github.com/kardianos/osext)
|
||||
|
||||
## Find the current Executable and ExecutableFolder.
|
||||
|
||||
As of go1.8 the Executable function may be found in `os`. The Executable function
|
||||
in the std lib `os` package is used if available.
|
||||
|
||||
There is sometimes utility in finding the current executable file
|
||||
that is running. This can be used for upgrading the current executable
|
||||
or finding resources located relative to the executable file. Both
|
||||
working directory and the os.Args[0] value are arbitrary and cannot
|
||||
be relied on; os.Args[0] can be "faked".
|
||||
|
||||
Multi-platform and supports:
|
||||
* Linux
|
||||
* OS X
|
||||
* Windows
|
||||
* Plan 9
|
||||
* BSDs.
|
15
vendor/github.com/klauspost/compress/snappy/AUTHORS
generated
vendored
@ -1,15 +0,0 @@
|
||||
# This is the official list of Snappy-Go authors for copyright purposes.
|
||||
# This file is distinct from the CONTRIBUTORS files.
|
||||
# See the latter for an explanation.
|
||||
|
||||
# Names should be added to this file as
|
||||
# Name or Organization <email address>
|
||||
# The email address is not required for organizations.
|
||||
|
||||
# Please keep the list sorted.
|
||||
|
||||
Damian Gryski <dgryski@gmail.com>
|
||||
Google Inc.
|
||||
Jan Mercl <0xjnml@gmail.com>
|
||||
Rodolfo Carvalho <rhcarvalho@gmail.com>
|
||||
Sebastien Binet <seb.binet@gmail.com>
|
37
vendor/github.com/klauspost/compress/snappy/CONTRIBUTORS
generated
vendored
@ -1,37 +0,0 @@
|
||||
# This is the official list of people who can contribute
|
||||
# (and typically have contributed) code to the Snappy-Go repository.
|
||||
# The AUTHORS file lists the copyright holders; this file
|
||||
# lists people. For example, Google employees are listed here
|
||||
# but not in AUTHORS, because Google holds the copyright.
|
||||
#
|
||||
# The submission process automatically checks to make sure
|
||||
# that people submitting code are listed in this file (by email address).
|
||||
#
|
||||
# Names should be added to this file only after verifying that
|
||||
# the individual or the individual's organization has agreed to
|
||||
# the appropriate Contributor License Agreement, found here:
|
||||
#
|
||||
# http://code.google.com/legal/individual-cla-v1.0.html
|
||||
# http://code.google.com/legal/corporate-cla-v1.0.html
|
||||
#
|
||||
# The agreement for individuals can be filled out on the web.
|
||||
#
|
||||
# When adding J Random Contributor's name to this file,
|
||||
# either J's name or J's organization's name should be
|
||||
# added to the AUTHORS file, depending on whether the
|
||||
# individual or corporate CLA was used.
|
||||
|
||||
# Names should be added to this file like so:
|
||||
# Name <email address>
|
||||
|
||||
# Please keep the list sorted.
|
||||
|
||||
Damian Gryski <dgryski@gmail.com>
|
||||
Jan Mercl <0xjnml@gmail.com>
|
||||
Kai Backman <kaib@golang.org>
|
||||
Marc-Antoine Ruel <maruel@chromium.org>
|
||||
Nigel Tao <nigeltao@golang.org>
|
||||
Rob Pike <r@golang.org>
|
||||
Rodolfo Carvalho <rhcarvalho@gmail.com>
|
||||
Russ Cox <rsc@golang.org>
|
||||
Sebastien Binet <seb.binet@gmail.com>
|
24
vendor/github.com/klauspost/cpuid/.gitignore
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
|
||||
# Folders
|
||||
_obj
|
||||
_test
|
||||
|
||||
# Architecture specific extensions/prefixes
|
||||
*.[568vq]
|
||||
[568vq].out
|
||||
|
||||
*.cgo1.go
|
||||
*.cgo2.c
|
||||
_cgo_defun.c
|
||||
_cgo_gotypes.go
|
||||
_cgo_export.*
|
||||
|
||||
_testmain.go
|
||||
|
||||
*.exe
|
||||
*.test
|
||||
*.prof
|
23
vendor/github.com/klauspost/cpuid/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
language: go
|
||||
|
||||
sudo: false
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
go:
|
||||
- 1.8.x
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- master
|
||||
|
||||
script:
|
||||
- go vet ./...
|
||||
- go test -v ./...
|
||||
- go test -race ./...
|
||||
- diff <(gofmt -d .) <("")
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- go: 'master'
|
||||
fast_finish: true
|
35
vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
Developer Certificate of Origin
|
||||
Version 1.1
|
||||
|
||||
Copyright (C) 2015- Klaus Post & Contributors.
|
||||
Email: klauspost@gmail.com
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
(a) The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
(b) The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
(c) The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
145
vendor/github.com/klauspost/cpuid/README.md
generated
vendored
Normal file
@ -0,0 +1,145 @@
|
||||
# cpuid
|
||||
Package cpuid provides information about the CPU running the current program.
|
||||
|
||||
CPU features are detected on startup, and kept for fast access through the life of the application.
|
||||
Currently x86 / x64 (AMD64) is supported, and no external C (cgo) code is used, which should make the library very easy to use.
|
||||
|
||||
You can access the CPU information by accessing the shared CPU variable of the cpuid library.
|
||||
|
||||
Package home: https://github.com/klauspost/cpuid
|
||||
|
||||
[![GoDoc][1]][2] [![Build Status][3]][4]
|
||||
|
||||
[1]: https://godoc.org/github.com/klauspost/cpuid?status.svg
|
||||
[2]: https://godoc.org/github.com/klauspost/cpuid
|
||||
[3]: https://travis-ci.org/klauspost/cpuid.svg
|
||||
[4]: https://travis-ci.org/klauspost/cpuid
|
||||
|
||||
# features
|
||||
## CPU Instructions
|
||||
* **CMOV** (i686 CMOV)
|
||||
* **NX** (NX (No-Execute) bit)
|
||||
* **AMD3DNOW** (AMD 3DNOW)
|
||||
* **AMD3DNOWEXT** (AMD 3DNowExt)
|
||||
* **MMX** (standard MMX)
|
||||
* **MMXEXT** (SSE integer functions or AMD MMX ext)
|
||||
* **SSE** (SSE functions)
|
||||
* **SSE2** (P4 SSE functions)
|
||||
* **SSE3** (Prescott SSE3 functions)
|
||||
* **SSSE3** (Conroe SSSE3 functions)
|
||||
* **SSE4** (Penryn SSE4.1 functions)
|
||||
* **SSE4A** (AMD Barcelona microarchitecture SSE4a instructions)
|
||||
* **SSE42** (Nehalem SSE4.2 functions)
|
||||
* **AVX** (AVX functions)
|
||||
* **AVX2** (AVX2 functions)
|
||||
* **FMA3** (Intel FMA 3)
|
||||
* **FMA4** (Bulldozer FMA4 functions)
|
||||
* **XOP** (Bulldozer XOP functions)
|
||||
* **F16C** (Half-precision floating-point conversion)
|
||||
* **BMI1** (Bit Manipulation Instruction Set 1)
|
||||
* **BMI2** (Bit Manipulation Instruction Set 2)
|
||||
* **TBM** (AMD Trailing Bit Manipulation)
|
||||
* **LZCNT** (LZCNT instruction)
|
||||
* **POPCNT** (POPCNT instruction)
|
||||
* **AESNI** (Advanced Encryption Standard New Instructions)
|
||||
* **CLMUL** (Carry-less Multiplication)
|
||||
* **HTT** (Hyperthreading (enabled))
|
||||
* **HLE** (Hardware Lock Elision)
|
||||
* **RTM** (Restricted Transactional Memory)
|
||||
* **RDRAND** (RDRAND instruction is available)
|
||||
* **RDSEED** (RDSEED instruction is available)
|
||||
* **ADX** (Intel ADX (Multi-Precision Add-Carry Instruction Extensions))
|
||||
* **SHA** (Intel SHA Extensions)
|
||||
* **AVX512F** (AVX-512 Foundation)
|
||||
* **AVX512DQ** (AVX-512 Doubleword and Quadword Instructions)
|
||||
* **AVX512IFMA** (AVX-512 Integer Fused Multiply-Add Instructions)
|
||||
* **AVX512PF** (AVX-512 Prefetch Instructions)
|
||||
* **AVX512ER** (AVX-512 Exponential and Reciprocal Instructions)
|
||||
* **AVX512CD** (AVX-512 Conflict Detection Instructions)
|
||||
* **AVX512BW** (AVX-512 Byte and Word Instructions)
|
||||
* **AVX512VL** (AVX-512 Vector Length Extensions)
|
||||
* **AVX512VBMI** (AVX-512 Vector Bit Manipulation Instructions)
|
||||
* **MPX** (Intel MPX (Memory Protection Extensions))
|
||||
* **ERMS** (Enhanced REP MOVSB/STOSB)
|
||||
* **RDTSCP** (RDTSCP Instruction)
|
||||
* **CX16** (CMPXCHG16B Instruction)
|
||||
* **SGX** (Software Guard Extensions, with activation details)
|
||||
|
||||
## Performance
|
||||
* **RDTSCP()** Returns current cycle count. Can be used for benchmarking.
|
||||
* **SSE2SLOW** (SSE2 is supported, but usually not faster)
|
||||
* **SSE3SLOW** (SSE3 is supported, but usually not faster)
|
||||
* **ATOM** (Atom processor, some SSSE3 instructions are slower)
|
||||
* **Cache line** (Probable size of a cache line).
|
||||
* **L1, L2, L3 Cache size** on newer Intel/AMD CPUs.
|
||||
|
||||
## Cpu Vendor/VM
|
||||
* **Intel**
|
||||
* **AMD**
|
||||
* **VIA**
|
||||
* **Transmeta**
|
||||
* **NSC**
|
||||
* **KVM** (Kernel-based Virtual Machine)
|
||||
* **MSVM** (Microsoft Hyper-V or Windows Virtual PC)
|
||||
* **VMware**
|
||||
* **XenHVM**
|
||||
|
||||
# installing
|
||||
|
||||
```go get github.com/klauspost/cpuid```
|
||||
|
||||
# example
|
||||
|
||||
```Go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/klauspost/cpuid"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Print basic CPU information:
|
||||
fmt.Println("Name:", cpuid.CPU.BrandName)
|
||||
fmt.Println("PhysicalCores:", cpuid.CPU.PhysicalCores)
|
||||
fmt.Println("ThreadsPerCore:", cpuid.CPU.ThreadsPerCore)
|
||||
fmt.Println("LogicalCores:", cpuid.CPU.LogicalCores)
|
||||
fmt.Println("Family", cpuid.CPU.Family, "Model:", cpuid.CPU.Model)
|
||||
fmt.Println("Features:", cpuid.CPU.Features)
|
||||
fmt.Println("Cacheline bytes:", cpuid.CPU.CacheLine)
|
||||
fmt.Println("L1 Data Cache:", cpuid.CPU.Cache.L1D, "bytes")
|
||||
fmt.Println("L1 Instruction Cache:", cpuid.CPU.Cache.L1D, "bytes")
|
||||
fmt.Println("L2 Cache:", cpuid.CPU.Cache.L2, "bytes")
|
||||
fmt.Println("L3 Cache:", cpuid.CPU.Cache.L3, "bytes")
|
||||
|
||||
// Test if we have a specific feature:
|
||||
if cpuid.CPU.SSE() {
|
||||
fmt.Println("We have Streaming SIMD Extensions")
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sample output:
|
||||
```
|
||||
>go run main.go
|
||||
Name: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz
|
||||
PhysicalCores: 2
|
||||
ThreadsPerCore: 2
|
||||
LogicalCores: 4
|
||||
Family 6 Model: 42
|
||||
Features: CMOV,MMX,MMXEXT,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AESNI,CLMUL
|
||||
Cacheline bytes: 64
|
||||
We have Streaming SIMD Extensions
|
||||
```
|
||||
|
||||
# private package
|
||||
|
||||
In the "private" folder you can find an autogenerated version of the library you can include in your own packages.
|
||||
|
||||
For this purpose all exports are removed, and functions and constants are lowercased.
|
||||
|
||||
This is not a recommended way of using the library, but provided for convenience, if it is difficult for you to use external packages.
|
||||
|
||||
# license
|
||||
|
||||
This code is published under an MIT license. See LICENSE file for more information.
|
BIN
vendor/github.com/mat/besticon/ico/addthis.ico
generated
vendored
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
vendor/github.com/mat/besticon/ico/besticon.ico
generated
vendored
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
vendor/github.com/mat/besticon/ico/broken.ico
generated
vendored
Normal file
After Width: | Height: | Size: 32 B |
BIN
vendor/github.com/mat/besticon/ico/codeplex.ico
generated
vendored
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
vendor/github.com/mat/besticon/ico/favicon.ico
generated
vendored
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
vendor/github.com/mat/besticon/ico/github.ico
generated
vendored
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
vendor/github.com/mat/besticon/ico/wowhead.ico
generated
vendored
Normal file
After Width: | Height: | Size: 2.5 KiB |
92
vendor/github.com/mat/besticon/lettericon/fonts/LICENSE_OFL.txt
generated
vendored
@ -1,92 +0,0 @@
|
||||
This Font Software is licensed under the SIL Open Font License,
|
||||
Version 1.1.
|
||||
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font
|
||||
creation efforts of academic and linguistic communities, and to
|
||||
provide a free and open framework in which fonts may be shared and
|
||||
improved in partnership with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply to
|
||||
any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software
|
||||
components as distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to,
|
||||
deleting, or substituting -- in part or in whole -- any of the
|
||||
components of the Original Version, by changing formats or by porting
|
||||
the Font Software to a new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed,
|
||||
modify, redistribute, and sell modified and unmodified copies of the
|
||||
Font Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components, in
|
||||
Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the
|
||||
corresponding Copyright Holder. This restriction only applies to the
|
||||
primary font name as presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created using
|
||||
the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
1
vendor/github.com/matoous/go-nanoid/.gitignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
.idea
|
8
vendor/github.com/matoous/go-nanoid/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
language: go
|
||||
|
||||
go:
|
||||
- 1.8
|
||||
- 1.9
|
||||
- release
|
||||
|
||||
script: go test -v -bench=.
|
56
vendor/github.com/matoous/go-nanoid/README.md
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
# Go Nanoid
|
||||
|
||||
[![Build Status](https://travis-ci.org/matoous/go-nanoid.svg?branch=master)](https://travis-ci.org/matoous/go-nanoid) [![GoDoc](https://godoc.org/github.com/matoous/go-nanoid?status.svg)](https://godoc.org/github.com/matoous/go-nanoid) [![Go Report Card](https://goreportcard.com/badge/github.com/matoous/go-nanoid)](https://goreportcard.com/report/github.com/matoous/go-nanoid) [![GitHub issues](https://img.shields.io/github/issues/matoous/go-nanoid.svg)](https://github.com/matoous/go-nanoid/issues) [![License](https://img.shields.io/badge/license-MIT%20License-blue.svg)](https://github.com/matoous/go-nanoid/LICENSE)
|
||||
|
||||
|
||||
This package is Go implementation of [ai's](https://github.com/ai) [nanoid](https://github.com/ai/nanoid)!
|
||||
|
||||
**Safe.** It uses cryptographically strong random generator.
|
||||
|
||||
**Compact.** It uses more symbols than UUID (`A-Za-z0-9_-`)
|
||||
and has the same number of unique options in just 22 symbols instead of 36.
|
||||
|
||||
**Fast.** Nanoid is as fast as UUID but can be used in URLs.
|
||||
|
||||
## Install
|
||||
|
||||
Via go get tool
|
||||
|
||||
``` bash
|
||||
$ go get github.com/matoous/go-nanoid
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Generate ID
|
||||
|
||||
``` go
|
||||
id, err := gonanoid.Nanoid()
|
||||
```
|
||||
|
||||
Generate ID with custom alphabet and length
|
||||
|
||||
``` go
|
||||
id, err := gonanoid.Generate("abcde", 54)
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
``` bash
|
||||
$ go test
|
||||
```
|
||||
|
||||
## Notice
|
||||
|
||||
If you use Go Nanoid in your project, please let me know!
|
||||
|
||||
If you have any issues, just feel free and open it in this repository, thanks!
|
||||
|
||||
## Credits
|
||||
|
||||
- [ai](https://github.com/ai) - [nanoid](https://github.com/ai/nanoid)
|
||||
- icza - his tutorial on [random strings in Go](https://stackoverflow.com/questions/22892120/how-to-generate-a-random-string-of-a-fixed-length-in-golang)
|
||||
|
||||
## License
|
||||
|
||||
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
|
1
vendor/github.com/matoous/go-nanoid/go.mod
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
module github.com/matoous/go-nanoid
|
1
vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
cover.dat
|
7
vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
all:
|
||||
|
||||
cover:
|
||||
go test -cover -v -coverprofile=cover.dat ./...
|
||||
go tool cover -func cover.dat
|
||||
|
||||
.PHONY: cover
|
32
vendor/github.com/newrelic/go-agent/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
language: go
|
||||
go_import_path: github.com/newrelic/go-agent
|
||||
go:
|
||||
- "1.3"
|
||||
- "1.4"
|
||||
- "1.5"
|
||||
- "1.6"
|
||||
- "1.7"
|
||||
- "1.8"
|
||||
- "1.9"
|
||||
- "1.10"
|
||||
- "1.11"
|
||||
|
||||
# Skip the install step. Don't `go get` dependencies. Only build with the
|
||||
# code in vendor/
|
||||
install: true
|
||||
|
||||
# golint requires a supported version of Go, which in practice is currently 1.9+.
|
||||
# See: https://github.com/golang/lint#installation
|
||||
# For simplicity, run it on a single Go version: 1.11
|
||||
# Also, only run gofmt on 1.11: The format output changed from 1.10 to 1.11.
|
||||
before_script:
|
||||
- GO_FILES=$(find . -iname '*.go' -type f | grep -v /vendor/)
|
||||
- DO_GOLINT=$(if [[ "$TRAVIS_GO_VERSION" = "1.11" ]]; then echo "0"; else echo "1"; fi)
|
||||
- DO_GOFMT=$(if [[ "$TRAVIS_GO_VERSION" = "1.11" ]]; then echo "0"; else echo "1"; fi)
|
||||
- if [[ "$DO_GOLINT" -eq "0" ]]; then go get -u golang.org/x/lint/golint; fi
|
||||
|
||||
script:
|
||||
- if [ "$DO_GOFMT" -eq 0 ] && [ -n "$(gofmt -s -l $GO_FILES)" ]; then exit 1; fi; # gofmt
|
||||
- go test -v -race ./... # go test
|
||||
- go vet ./... # go vet
|
||||
- if [ "$DO_GOLINT" -eq 0 ]; then golint -set_exit_status $(go list ./...); fi # golint
|
368
vendor/github.com/newrelic/go-agent/CHANGELOG.md
generated
vendored
Normal file
@ -0,0 +1,368 @@
|
||||
## ChangeLog
|
||||
|
||||
## 2.2.0
|
||||
|
||||
* The `Transaction` parameter to
|
||||
[NewRoundTripper](https://godoc.org/github.com/newrelic/go-agent#NewRoundTripper)
|
||||
and
|
||||
[StartExternalSegment](https://godoc.org/github.com/newrelic/go-agent#StartExternalSegment)
|
||||
is now optional: If it is `nil`, then a `Transaction` will be looked for in the
|
||||
request's context (using
|
||||
[FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext)).
|
||||
Passing a `nil` transaction is **STRONGLY** recommended when using
|
||||
[NewRoundTripper](https://godoc.org/github.com/newrelic/go-agent#NewRoundTripper)
|
||||
since it allows one `http.Client.Transport` to be used for multiple
|
||||
transactions. Example use:
|
||||
|
||||
```go
|
||||
client := &http.Client{}
|
||||
client.Transport = newrelic.NewRoundTripper(nil, client.Transport)
|
||||
request, _ := http.NewRequest("GET", "http://example.com", nil)
|
||||
request = newrelic.RequestWithTransactionContext(request, txn)
|
||||
resp, err := client.Do(request)
|
||||
```
|
||||
|
||||
* Introduced `Transaction.SetWebRequest(WebRequest)` method which marks the
|
||||
transaction as a web transaction. If the `WebRequest` parameter is non-nil,
|
||||
`SetWebRequest` will collect details on request attributes, url, and method.
|
||||
This method is useful if you don't have access to the request at the beginning
|
||||
of the transaction, or if your request is not an `*http.Request` (just add
|
||||
methods to your request that satisfy
|
||||
[WebRequest](https://godoc.org/github.com/newrelic/go-agent#WebRequest)). To
|
||||
use an `*http.Request` as the parameter, use the
|
||||
[NewWebRequest](https://godoc.org/github.com/newrelic/go-agent#NewWebRequest)
|
||||
transformation function. Example:
|
||||
|
||||
```go
|
||||
var request *http.Request = getInboundRequest()
|
||||
txn.SetWebRequest(newrelic.NewWebRequest(request))
|
||||
```
|
||||
|
||||
* Fixed `Debug` in `nrlogrus` package. Previous versions of the New Relic Go Agent incorrectly
|
||||
logged to Info level instead of Debug. This has now been fixed. Thanks to @paddycarey for catching this.
|
||||
|
||||
* [nrgin.Transaction](https://godoc.org/github.com/newrelic/go-agent/_integrations/nrgin/v1#Transaction)
|
||||
may now be called with either a `context.Context` or a `*gin.Context`. If you were passing a `*gin.Context`
|
||||
around your functions as a `context.Context`, you may access the Transaction by calling either
|
||||
[nrgin.Transaction](https://godoc.org/github.com/newrelic/go-agent/_integrations/nrgin/v1#Transaction)
|
||||
or [FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext).
|
||||
These functions now work nicely together.
|
||||
For example, [FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext) will return the `Transaction`
|
||||
added by [nrgin.Middleware](https://godoc.org/github.com/newrelic/go-agent/_integrations/nrgin/v1#Middleware).
|
||||
Thanks to @rodriguezgustavo for the suggestion.
|
||||
|
||||
## 2.1.0
|
||||
|
||||
* The Go Agent now supports distributed tracing.
|
||||
|
||||
Distributed tracing lets you see the path that a request takes as it travels through your distributed system. By
|
||||
showing the distributed activity through a unified view, you can troubleshoot and understand a complex system better
|
||||
than ever before.
|
||||
|
||||
Distributed tracing is available with an APM Pro or equivalent subscription. To see a complete distributed trace, you
|
||||
need to enable the feature on a set of neighboring services. Enabling distributed tracing changes the behavior of
|
||||
some New Relic features, so carefully consult the
|
||||
[transition guide](https://docs.newrelic.com/docs/transition-guide-distributed-tracing) before you enable this
|
||||
feature.
|
||||
|
||||
To enable distributed tracing, set the following fields in your config. Note that distributed tracing and cross
|
||||
application tracing cannot be used simultaneously.
|
||||
|
||||
```
|
||||
config := newrelic.NewConfig("Your Application Name", "__YOUR_NEW_RELIC_LICENSE_KEY__")
|
||||
config.CrossApplicationTracer.Enabled = false
|
||||
config.DistributedTracer.Enabled = true
|
||||
```
|
||||
|
||||
Please refer to the
|
||||
[distributed tracing section of the guide](GUIDE.md#distributed-tracing)
|
||||
for more detail on how to ensure you get the most out of the Go agent's distributed tracing support.
|
||||
|
||||
* Added functions [NewContext](https://godoc.org/github.com/newrelic/go-agent#NewContext)
|
||||
and [FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext)
|
||||
for adding and retrieving the Transaction from a Context. Handlers
|
||||
instrumented by
|
||||
[WrapHandle](https://godoc.org/github.com/newrelic/go-agent#WrapHandle),
|
||||
[WrapHandleFunc](https://godoc.org/github.com/newrelic/go-agent#WrapHandleFunc),
|
||||
and [nrgorilla.InstrumentRoutes](https://godoc.org/github.com/newrelic/go-agent/_integrations/nrgorilla/v1#InstrumentRoutes)
|
||||
may use [FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext)
|
||||
on the request's context to access the Transaction.
|
||||
Thanks to @caarlos0 for the contribution! Though [NewContext](https://godoc.org/github.com/newrelic/go-agent#NewContext)
|
||||
and [FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext)
|
||||
require Go 1.7+ (when [context](https://golang.org/pkg/context/) was added),
|
||||
[RequestWithTransactionContext](https://godoc.org/github.com/newrelic/go-agent#RequestWithTransactionContext) is always exported so that it can be used in all framework and library
|
||||
instrumentation.
|
||||
|
||||
## 2.0.0
|
||||
|
||||
* The `End()` functions defined on the `Segment`, `DatastoreSegment`, and
|
||||
`ExternalSegment` types now receive the segment as a pointer, rather than as
|
||||
a value. This prevents unexpected behaviour when a call to `End()` is
|
||||
deferred before one or more fields are changed on the segment.
|
||||
|
||||
In practice, this is likely to only affect this pattern:
|
||||
|
||||
```go
|
||||
defer newrelic.DatastoreSegment{
|
||||
// ...
|
||||
}.End()
|
||||
```
|
||||
|
||||
Instead, you will now need to separate the literal from the deferred call:
|
||||
|
||||
```go
|
||||
ds := newrelic.DatastoreSegment{
|
||||
// ...
|
||||
}
|
||||
defer ds.End()
|
||||
```
|
||||
|
||||
When creating custom and external segments, we recommend using
|
||||
[`newrelic.StartSegment()`](https://godoc.org/github.com/newrelic/go-agent#StartSegment)
|
||||
and
|
||||
[`newrelic.StartExternalSegment()`](https://godoc.org/github.com/newrelic/go-agent#StartExternalSegment),
|
||||
respectively.
|
||||
|
||||
* Added GoDoc badge to README. Thanks to @mrhwick for the contribution!
|
||||
|
||||
* `Config.UseTLS` configuration setting has been removed to increase security.
|
||||
TLS will now always be used in communication with New Relic Servers.
|
||||
|
||||
## 1.11.0
|
||||
|
||||
* We've closed the Issues tab on GitHub. Please visit our
|
||||
[support site](https://support.newrelic.com) to get timely help with any
|
||||
problems you're having, or to report issues.
|
||||
|
||||
* Added support for Cross Application Tracing (CAT). Please refer to the
|
||||
[CAT section of the guide](GUIDE.md#cross-application-tracing)
|
||||
for more detail on how to ensure you get the most out of the Go agent's new
|
||||
CAT support.
|
||||
|
||||
* The agent now collects additional metadata when running within Amazon Web
|
||||
Services, Google Cloud Platform, Microsoft Azure, and Pivotal Cloud Foundry.
|
||||
This information is used to provide an enhanced experience when the agent is
|
||||
deployed on those platforms.
|
||||
|
||||
## 1.10.0
|
||||
|
||||
* Added new `RecordCustomMetric` method to [Application](https://godoc.org/github.com/newrelic/go-agent#Application).
|
||||
This functionality can be used to track averages or counters without using
|
||||
custom events.
|
||||
* [Custom Metric Documentation](https://docs.newrelic.com/docs/agents/manage-apm-agents/agent-data/collect-custom-metrics)
|
||||
|
||||
* Fixed import needed for logrus. The import Sirupsen/logrus had been renamed to sirupsen/logrus.
|
||||
Thanks to @alfred-landrum for spotting this.
|
||||
|
||||
* Added [ErrorAttributer](https://godoc.org/github.com/newrelic/go-agent#ErrorAttributer),
|
||||
an optional interface that can be implemented by errors provided to
|
||||
`Transaction.NoticeError` to attach additional attributes. These attributes are
|
||||
subject to attribute configuration.
|
||||
|
||||
* Added [Error](https://godoc.org/github.com/newrelic/go-agent#Error), a type
|
||||
that allows direct control of error fields. Example use:
|
||||
|
||||
```go
|
||||
txn.NoticeError(newrelic.Error{
|
||||
// Message is returned by the Error() method.
|
||||
Message: "error message: something went very wrong",
|
||||
Class: "errors are aggregated by class",
|
||||
Attributes: map[string]interface{}{
|
||||
"important_number": 97232,
|
||||
"relevant_string": "zap",
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
* Updated license to address scope of usage.
|
||||
|
||||
## 1.9.0
|
||||
|
||||
* Added support for [github.com/gin-gonic/gin](https://github.com/gin-gonic/gin)
|
||||
in the new `nrgin` package.
|
||||
* [Documentation](http://godoc.org/github.com/newrelic/go-agent/_integrations/nrgin/v1)
|
||||
* [Example](examples/_gin/main.go)
|
||||
|
||||
## 1.8.0
|
||||
|
||||
* Fixed incorrect metric rule application when the metric rule is flagged to
|
||||
terminate and matches but the name is unchanged.
|
||||
|
||||
* `Segment.End()`, `DatastoreSegment.End()`, and `ExternalSegment.End()` methods now return an
|
||||
error which may be helpful in diagnosing situations where segment data is unexpectedly missing.
|
||||
|
||||
## 1.7.0
|
||||
|
||||
* Added support for [gorilla/mux](http://github.com/gorilla/mux) in the new `nrgorilla`
|
||||
package.
|
||||
* [Documentation](http://godoc.org/github.com/newrelic/go-agent/_integrations/nrgorilla/v1)
|
||||
* [Example](examples/_gorilla/main.go)
|
||||
|
||||
## 1.6.0
|
||||
|
||||
* Added support for custom error messages and stack traces. Errors provided
|
||||
to `Transaction.NoticeError` will now be checked to see if
|
||||
they implement [ErrorClasser](https://godoc.org/github.com/newrelic/go-agent#ErrorClasser)
|
||||
and/or [StackTracer](https://godoc.org/github.com/newrelic/go-agent#StackTracer).
|
||||
Thanks to @fgrosse for this proposal.
|
||||
|
||||
* Added support for [pkg/errors](https://github.com/pkg/errors). Thanks to
|
||||
@fgrosse for this work.
|
||||
* [documentation](https://godoc.org/github.com/newrelic/go-agent/_integrations/nrpkgerrors)
|
||||
* [example](https://github.com/newrelic/go-agent/blob/master/_integrations/nrpkgerrors/nrpkgerrors.go)
|
||||
|
||||
* Fixed tests for Go 1.8.
|
||||
|
||||
## 1.5.0
|
||||
|
||||
* Added support for Windows. Thanks to @ianomad and @lvxv for the contributions.
|
||||
|
||||
* The number of heap objects allocated is recorded in the
|
||||
`Memory/Heap/AllocatedObjects` metric. This will soon be displayed on the "Go
|
||||
runtime" page.
|
||||
|
||||
* If the [DatastoreSegment](https://godoc.org/github.com/newrelic/go-agent#DatastoreSegment)
|
||||
fields `Host` and `PortPathOrID` are not provided, they will no longer appear
|
||||
as `"unknown"` in transaction traces and slow query traces.
|
||||
|
||||
* Stack traces will now be nicely aligned in the APM UI.
|
||||
|
||||
## 1.4.0
|
||||
|
||||
* Added support for slow query traces. Slow datastore segments will now
|
||||
generate slow query traces viewable on the datastore tab. These traces include
|
||||
a stack trace and help you to debug slow datastore activity.
|
||||
[Slow Query Documentation](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/viewing-slow-query-details)
|
||||
|
||||
* Added new
|
||||
[DatastoreSegment](https://godoc.org/github.com/newrelic/go-agent#DatastoreSegment)
|
||||
fields `ParameterizedQuery`, `QueryParameters`, `Host`, `PortPathOrID`, and
|
||||
`DatabaseName`. These fields will be shown in transaction traces and in slow
|
||||
query traces.
|
||||
|
||||
## 1.3.0
|
||||
|
||||
* Breaking Change: Added a timeout parameter to the `Application.Shutdown` method.
|
||||
|
||||
## 1.2.0
|
||||
|
||||
* Added support for instrumenting short-lived processes:
|
||||
* The new `Application.Shutdown` method allows applications to report
|
||||
data to New Relic without waiting a full minute.
|
||||
* The new `Application.WaitForConnection` method allows your process to
|
||||
defer instrumentation until the application is connected and ready to
|
||||
gather data.
|
||||
* Full documentation here: [application.go](application.go)
|
||||
* Example short-lived process: [examples/short-lived-process/main.go](examples/short-lived-process/main.go)
|
||||
|
||||
* Error metrics are no longer created when `ErrorCollector.Enabled = false`.
|
||||
|
||||
* Added support for [github.com/mgutz/logxi](github.com/mgutz/logxi). See
|
||||
[_integrations/nrlogxi/v1/nrlogxi.go](_integrations/nrlogxi/v1/nrlogxi.go).
|
||||
|
||||
* Fixed bug where Transaction Trace thresholds based upon Apdex were not being
|
||||
applied to background transactions.
|
||||
|
||||
## 1.1.0
|
||||
|
||||
* Added support for Transaction Traces.
|
||||
|
||||
* Stack trace filenames have been shortened: Any thing preceding the first
|
||||
`/src/` is now removed.
|
||||
|
||||
## 1.0.0
|
||||
|
||||
* Removed `BetaToken` from the `Config` structure.
|
||||
|
||||
* Breaking Datastore Change: `datastore` package contents moved to top level
|
||||
`newrelic` package. `datastore.MySQL` has become `newrelic.DatastoreMySQL`.
|
||||
|
||||
* Breaking Attributes Change: `attributes` package contents moved to top
|
||||
level `newrelic` package. `attributes.ResponseCode` has become
|
||||
`newrelic.AttributeResponseCode`. Some attribute name constants have been
|
||||
shortened.
|
||||
|
||||
* Added "runtime.NumCPU" to the environment tab. Thanks sergeylanzman for the
|
||||
contribution.
|
||||
|
||||
* Prefixed the environment tab values "Compiler", "GOARCH", "GOOS", and
|
||||
"Version" with "runtime.".
|
||||
|
||||
## 0.8.0
|
||||
|
||||
* Breaking Segments API Changes: The segments API has been rewritten with the
|
||||
goal of being easier to use and to avoid nil Transaction checks. See:
|
||||
|
||||
* [segments.go](segments.go)
|
||||
* [examples/server/main.go](examples/server/main.go)
|
||||
* [GUIDE.md#segments](GUIDE.md#segments)
|
||||
|
||||
* Updated LICENSE.txt with contribution information.
|
||||
|
||||
## 0.7.1
|
||||
|
||||
* Fixed a bug causing the `Config` to fail to serialize into JSON when the
|
||||
`Transport` field was populated.
|
||||
|
||||
## 0.7.0
|
||||
|
||||
* Eliminated `api`, `version`, and `log` packages. `Version`, `Config`,
|
||||
`Application`, and `Transaction` now live in the top level `newrelic` package.
|
||||
If you imported the `attributes` or `datastore` packages then you will need
|
||||
to remove `api` from the import path.
|
||||
|
||||
* Breaking Logging Changes
|
||||
|
||||
Logging is no longer controlled though a single global. Instead, logging is
|
||||
configured on a per-application basis with the new `Config.Logger` field. The
|
||||
logger is an interface described in [log.go](log.go). See
|
||||
[GUIDE.md#logging](GUIDE.md#logging).
|
||||
|
||||
## 0.6.1
|
||||
|
||||
* No longer create "GC/System/Pauses" metric if no GC pauses happened.
|
||||
|
||||
## 0.6.0
|
||||
|
||||
* Introduced beta token to support our beta program.
|
||||
|
||||
* Rename `Config.Development` to `Config.Enabled` (and change boolean
|
||||
direction).
|
||||
|
||||
* Fixed a bug where exclusive time could be incorrect if segments were not
|
||||
ended.
|
||||
|
||||
* Fix unit tests broken in 1.6.
|
||||
|
||||
* In `Config.Enabled = false` mode, the license must be the proper length or empty.
|
||||
|
||||
* Added runtime statistics for CPU/memory usage, garbage collection, and number
|
||||
of goroutines.
|
||||
|
||||
## 0.5.0
|
||||
|
||||
* Added segment timing methods to `Transaction`. These methods must only be
|
||||
used in a single goroutine.
|
||||
|
||||
* The license length check will not be performed in `Development` mode.
|
||||
|
||||
* Rename `SetLogFile` to `SetFile` to reduce redundancy.
|
||||
|
||||
* Added `DebugEnabled` logging guard to reduce overhead.
|
||||
|
||||
* `Transaction` now implements an `Ignore` method which will prevent
|
||||
any of the transaction's data from being recorded.
|
||||
|
||||
* `Transaction` now implements a subset of the interfaces
|
||||
`http.CloseNotifier`, `http.Flusher`, `http.Hijacker`, and `io.ReaderFrom`
|
||||
to match the behavior of its wrapped `http.ResponseWriter`.
|
||||
|
||||
* Changed project name from `go-sdk` to `go-agent`.
|
||||
|
||||
## 0.4.0
|
||||
|
||||
* Queue time support added: if the inbound request contains an
|
||||
`"X-Request-Start"` or `"X-Queue-Start"` header with a unix timestamp, the
|
||||
agent will report queue time metrics. Queue time will appear on the
|
||||
application overview chart. The timestamp may fractional seconds,
|
||||
milliseconds, or microseconds: the agent will deduce the correct units.
|
9
vendor/github.com/newrelic/go-agent/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
# Contributing
|
||||
|
||||
You are welcome to send pull requests to us. By doing so you agree that you are
|
||||
granting New Relic a non-exclusive, non-revokable, no-cost license to use the
|
||||
code, algorithms, patents, and ideas in that code in our products if we so
|
||||
choose. You also agree the code is provided as-is and you provide no warranties
|
||||
as to its fitness or correctness for any purpose.
|
||||
|
||||
* [LICENSE.txt](LICENSE.txt)
|
625
vendor/github.com/newrelic/go-agent/GUIDE.md
generated
vendored
Normal file
@ -0,0 +1,625 @@
|
||||
# New Relic Go Agent Guide
|
||||
|
||||
* [Installation](#installation)
|
||||
* [Config and Application](#config-and-application)
|
||||
* [Logging](#logging)
|
||||
* [logrus](#logrus)
|
||||
* [Transactions](#transactions)
|
||||
* [Segments](#segments)
|
||||
* [Datastore Segments](#datastore-segments)
|
||||
* [External Segments](#external-segments)
|
||||
* [Attributes](#attributes)
|
||||
* [Tracing](#tracing)
|
||||
* [Distributed Tracing](#distributed-tracing)
|
||||
* [Cross-Application Tracing](#cross-application-tracing)
|
||||
* [Tracing instrumentation](#tracing-instrumentation)
|
||||
* [Getting Tracing Instrumentation Out-of-the-Box](#getting-tracing-instrumentation-out-of-the-box)
|
||||
* [Manually Implementing Distributed Tracing](#manually-implementing-distributed-tracing)
|
||||
* [Distributed Tracing](#distributed-tracing)
|
||||
* [Custom Metrics](#custom-metrics)
|
||||
* [Custom Events](#custom-events)
|
||||
* [Request Queuing](#request-queuing)
|
||||
* [Error Reporting](#error-reporting)
|
||||
* [Advanced Error Reporting](#advanced-error-reporting)
|
||||
* [Naming Transactions and Metrics](#naming-transactions-and-metrics)
|
||||
* [For More Help](#for-more-help)
|
||||
|
||||
## Installation
|
||||
|
||||
Installing the Go Agent is the same as installing any other Go library. The
|
||||
simplest way is to run:
|
||||
|
||||
```
|
||||
go get github.com/newrelic/go-agent
|
||||
```
|
||||
|
||||
Then import the `github.com/newrelic/go-agent` package in your application.
|
||||
|
||||
## Config and Application
|
||||
|
||||
* [config.go](config.go)
|
||||
* [application.go](application.go)
|
||||
|
||||
In your `main` function or in an `init` block:
|
||||
|
||||
```go
|
||||
config := newrelic.NewConfig("Your Application Name", "__YOUR_NEW_RELIC_LICENSE_KEY__")
|
||||
app, err := newrelic.NewApplication(config)
|
||||
```
|
||||
|
||||
Find your application in the New Relic UI. Click on it to see the Go runtime
|
||||
page that shows information about goroutine counts, garbage collection, memory,
|
||||
and CPU usage.
|
||||
|
||||
If you are working in a development environment or running unit tests, you may
|
||||
not want the Go Agent to spawn goroutines or report to New Relic. You're in
|
||||
luck! Set the config's `Enabled` field to false. This makes the license key
|
||||
optional.
|
||||
|
||||
```go
|
||||
config := newrelic.NewConfig("Your Application Name", "")
|
||||
config.Enabled = false
|
||||
app, err := newrelic.NewApplication(config)
|
||||
```
|
||||
|
||||
## Logging
|
||||
|
||||
* [log.go](log.go)
|
||||
|
||||
The agent's logging system is designed to be easily extensible. By default, no
|
||||
logging will occur. To enable logging, assign the `Config.Logger` field to
|
||||
something implementing the `Logger` interface. A basic logging
|
||||
implementation is included.
|
||||
|
||||
To log at debug level to standard out, set:
|
||||
|
||||
```go
|
||||
config.Logger = newrelic.NewDebugLogger(os.Stdout)
|
||||
```
|
||||
|
||||
To log at info level to a file, set:
|
||||
|
||||
```go
|
||||
w, err := os.OpenFile("my_log_file", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
|
||||
if nil == err {
|
||||
config.Logger = newrelic.NewLogger(w)
|
||||
}
|
||||
```
|
||||
|
||||
### logrus
|
||||
|
||||
* [_integrations/nrlogrus/nrlogrus.go](_integrations/nrlogrus/nrlogrus.go)
|
||||
|
||||
If you are using `logrus` and would like to send the agent's log messages to its
|
||||
standard logger, import the
|
||||
`github.com/newrelic/go-agent/_integrations/nrlogrus` package, then set:
|
||||
|
||||
```go
|
||||
config.Logger = nrlogrus.StandardLogger()
|
||||
```
|
||||
|
||||
## Transactions
|
||||
|
||||
* [transaction.go](transaction.go)
|
||||
* [Naming Transactions](#naming-transactions-and-metrics)
|
||||
* [More info on Transactions](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/transactions-page)
|
||||
|
||||
Transactions time requests and background tasks. Each transaction should only
|
||||
be used in a single goroutine. Start a new transaction when you spawn a new
|
||||
goroutine.
|
||||
|
||||
The simplest way to create transactions is to use
|
||||
`Application.StartTransaction` and `Transaction.End`.
|
||||
|
||||
```go
|
||||
txn := app.StartTransaction("transactionName", responseWriter, request)
|
||||
defer txn.End()
|
||||
```
|
||||
|
||||
If the response writer is provided when calling `StartTransaction`, you can
|
||||
then use `txn.WriteHeader` as a drop in replacement for the standard library's
|
||||
[`http.ResponseWriter.WriteHeader`](https://golang.org/pkg/net/http/#ResponseWriter)
|
||||
function. We strongly recommend doing so, as this both enables cross-application
|
||||
tracing support and ensures that attributes are added to the
|
||||
Transaction event capturing the response size and status code.
|
||||
|
||||
The response writer and request parameters are optional. Leave them `nil` to
|
||||
instrument a background task.
|
||||
|
||||
```go
|
||||
txn := app.StartTransaction("backgroundTask", nil, nil)
|
||||
defer txn.End()
|
||||
```
|
||||
|
||||
The transaction has helpful methods like `NoticeError` and `SetName`.
|
||||
See more in [transaction.go](transaction.go).
|
||||
|
||||
If you are using [`http.ServeMux`](https://golang.org/pkg/net/http/#ServeMux),
|
||||
use `WrapHandle` and `WrapHandleFunc`. These wrappers automatically start and
|
||||
end transactions with the request and response writer. See
|
||||
[instrumentation.go](instrumentation.go).
|
||||
|
||||
```go
|
||||
http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))
|
||||
```
|
||||
|
||||
To access the transaction in your handler, use type assertion on the response
|
||||
writer passed to the handler.
|
||||
|
||||
```go
|
||||
func myHandler(w http.ResponseWriter, r *http.Request) {
|
||||
if txn, ok := w.(newrelic.Transaction); ok {
|
||||
txn.NoticeError(errors.New("my error message"))
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Segments
|
||||
|
||||
* [segments.go](segments.go)
|
||||
|
||||
Find out where the time in your transactions is being spent! Each transaction
|
||||
should only track segments in a single goroutine.
|
||||
|
||||
`Segment` is used to instrument functions, methods, and blocks of code. A
|
||||
segment begins when its `StartTime` field is populated, and finishes when its
|
||||
`End` method is called.
|
||||
|
||||
```go
|
||||
segment := newrelic.Segment{}
|
||||
segment.Name = "mySegmentName"
|
||||
segment.StartTime = newrelic.StartSegmentNow(txn)
|
||||
// ... code you want to time here ...
|
||||
segment.End()
|
||||
```
|
||||
|
||||
`StartSegment` is a convenient helper. It creates a segment and starts it:
|
||||
|
||||
```go
|
||||
segment := newrelic.StartSegment(txn, "mySegmentName")
|
||||
// ... code you want to time here ...
|
||||
segment.End()
|
||||
```
|
||||
|
||||
Timing a function is easy using `StartSegment` and `defer`. Just add the
|
||||
following line to the beginning of that function:
|
||||
|
||||
```go
|
||||
defer newrelic.StartSegment(txn, "mySegmentName").End()
|
||||
```
|
||||
|
||||
Segments may be nested. The segment being ended must be the most recently
|
||||
started segment.
|
||||
|
||||
```go
|
||||
s1 := newrelic.StartSegment(txn, "outerSegment")
|
||||
s2 := newrelic.StartSegment(txn, "innerSegment")
|
||||
// s2 must be ended before s1
|
||||
s2.End()
|
||||
s1.End()
|
||||
```
|
||||
|
||||
A zero value segment may safely be ended. Therefore, the following code
|
||||
is safe even if the conditional fails:
|
||||
|
||||
```go
|
||||
var s newrelic.Segment
|
||||
if txn, ok := w.(newrelic.Transaction); ok {
|
||||
s.StartTime = newrelic.StartSegmentNow(txn),
|
||||
}
|
||||
// ... code you wish to time here ...
|
||||
s.End()
|
||||
```
|
||||
|
||||
### Datastore Segments
|
||||
|
||||
Datastore segments appear in the transaction "Breakdown table" and in the
|
||||
"Databases" page.
|
||||
|
||||
* [datastore.go](datastore.go)
|
||||
* [More info on Databases page](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/databases-slow-queries-page)
|
||||
|
||||
Datastore segments are instrumented using `DatastoreSegment`. Just like basic
|
||||
segments, datastore segments begin when the `StartTime` field is populated and
|
||||
finish when the `End` method is called. Here is an example:
|
||||
|
||||
```go
|
||||
s := newrelic.DatastoreSegment{
|
||||
// Product is the datastore type. See the constants in datastore.go.
|
||||
Product: newrelic.DatastoreMySQL,
|
||||
// Collection is the table or group.
|
||||
Collection: "my_table",
|
||||
// Operation is the relevant action, e.g. "SELECT" or "GET".
|
||||
Operation: "SELECT",
|
||||
}
|
||||
s.StartTime = newrelic.StartSegmentNow(txn)
|
||||
// ... make the datastore call
|
||||
s.End()
|
||||
```
|
||||
|
||||
This may be combined into a single line when instrumenting a datastore call
|
||||
that spans an entire function call:
|
||||
|
||||
```go
|
||||
s := newrelic.DatastoreSegment{
|
||||
StartTime: newrelic.StartSegmentNow(txn),
|
||||
Product: newrelic.DatastoreMySQL,
|
||||
Collection: "my_table",
|
||||
Operation: "SELECT",
|
||||
}
|
||||
defer s.End()
|
||||
```
|
||||
|
||||
### External Segments
|
||||
|
||||
External segments appear in the transaction "Breakdown table" and in the
|
||||
"External services" page. Version 1.11.0 of the Go Agent adds support for
|
||||
cross-application tracing (CAT), which will result in external segments also
|
||||
appearing in the "Service maps" page and being linked in transaction traces when
|
||||
both sides of the request have traces. Version 2.1.0 of the Go Agent adds
|
||||
support for distributed tracing, which lets you see the path a request takes as
|
||||
it travels through distributed APM apps.
|
||||
|
||||
* [More info on External Services page](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/external-services-page)
|
||||
* [More info on Cross-Application Tracing](https://docs.newrelic.com/docs/apm/transactions/cross-application-traces/introduction-cross-application-traces)
|
||||
* [More info on Distributed Tracing](https://docs.newrelic.com/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing)
|
||||
|
||||
External segments are instrumented using `ExternalSegment`. There are three
|
||||
ways to use this functionality:
|
||||
|
||||
1. Using `StartExternalSegment` to create an `ExternalSegment` before the
|
||||
request is sent, and then calling `ExternalSegment.End` when the external
|
||||
request is complete.
|
||||
|
||||
For CAT support to operate, an `http.Request` must be provided to
|
||||
`StartExternalSegment`, and the `ExternalSegment.Response` field must be set
|
||||
before `ExternalSegment.End` is called or deferred.
|
||||
|
||||
For example:
|
||||
|
||||
```go
|
||||
func external(txn newrelic.Transaction, req *http.Request) (*http.Response, error) {
|
||||
s := newrelic.StartExternalSegment(txn, req)
|
||||
response, err := http.DefaultClient.Do(req)
|
||||
s.Response = response
|
||||
s.End()
|
||||
return response, err
|
||||
}
|
||||
```
|
||||
|
||||
If the transaction is `nil` then `StartExternalSegment` will look for a
|
||||
transaction in the request's context using
|
||||
[FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext).
|
||||
|
||||
2. Using `NewRoundTripper` to get a
|
||||
[`http.RoundTripper`](https://golang.org/pkg/net/http/#RoundTripper) that
|
||||
will automatically instrument all requests made via
|
||||
[`http.Client`](https://golang.org/pkg/net/http/#Client) instances that use
|
||||
that round tripper as their `Transport`. This option results in CAT support,
|
||||
provided the Go Agent is version 1.11.0, and in distributed tracing support,
|
||||
provided the Go Agent is version 2.1.0. `NewRoundTripper` can be called
|
||||
with a `nil` or non-`nil` transaction: If the transaction is `nil`, the
|
||||
round tripper will look for a transaction in the request's context
|
||||
using [FromContext](https://godoc.org/github.com/newrelic/go-agent#FromContext).
|
||||
This pattern is **strongly** recommended, since it allows the round tripper
|
||||
to be used in a client shared between multiple transactions.
|
||||
|
||||
For example:
|
||||
|
||||
```go
|
||||
client := &http.Client{}
|
||||
client.Transport = newrelic.NewRoundTripper(nil, client.Transport)
|
||||
request, _ := http.NewRequest("GET", "http://example.com", nil)
|
||||
request = newrelic.RequestWithTransactionContext(request, txn)
|
||||
resp, err := client.Do(request)
|
||||
```
|
||||
|
||||
If transaction is non-`nil`, the round tripper returned **must** only be
|
||||
used in the same goroutine as the transaction.
|
||||
|
||||
3. Directly creating an `ExternalSegment` via a struct literal with an explicit
|
||||
`URL` or `Request`, and then calling `ExternalSegment.End`. This option does
|
||||
not support CAT, and may be removed or changed in a future major version of
|
||||
the Go Agent. As a result, we suggest using one of the other options above
|
||||
wherever possible.
|
||||
|
||||
For example:
|
||||
|
||||
```go
|
||||
func external(txn newrelic.Transaction, url string) (*http.Response, error) {
|
||||
es := newrelic.ExternalSegment{
|
||||
StartTime: newrelic.StartSegmentNow(txn),
|
||||
URL: url,
|
||||
}
|
||||
defer es.End()
|
||||
|
||||
return http.Get(url)
|
||||
}
|
||||
```
|
||||
|
||||
## Attributes
|
||||
|
||||
Attributes add context to errors and allow you to filter performance data
|
||||
in Insights.
|
||||
|
||||
You may add them using the `Transaction.AddAttribute` method.
|
||||
|
||||
```go
|
||||
txn.AddAttribute("key", "value")
|
||||
txn.AddAttribute("product", "widget")
|
||||
txn.AddAttribute("price", 19.99)
|
||||
txn.AddAttribute("importantCustomer", true)
|
||||
```
|
||||
|
||||
* [More info on Custom Attributes](https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/insights-custom-attributes)
|
||||
|
||||
Some attributes are recorded automatically. These are called agent attributes.
|
||||
They are listed here:
|
||||
|
||||
* [attributes.go](attributes.go)
|
||||
|
||||
To disable one of these agents attributes, `AttributeResponseCode` for
|
||||
example, modify the config like this:
|
||||
|
||||
```go
|
||||
config.Attributes.Exclude = append(config.Attributes.Exclude, newrelic.AttributeResponseCode)
|
||||
```
|
||||
|
||||
* [More info on Agent Attributes](https://docs.newrelic.com/docs/agents/manage-apm-agents/agent-metrics/agent-attributes)
|
||||
|
||||
## Tracing
|
||||
|
||||
New Relic's [distributed
|
||||
tracing](https://docs.newrelic.com/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing)
|
||||
is the next generation of the previous cross-application tracing feature. Compared to
|
||||
cross-application tracing, distributed tracing gives more detail about cross-service activity and provides more
|
||||
complete end-to-end visibility. This section discusses distributed tracing and cross-application tracing in turn.
|
||||
|
||||
### Distributed Tracing
|
||||
|
||||
New Relic's [distributed
|
||||
tracing](https://docs.newrelic.com/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing)
|
||||
feature lets you see the path that a request takes as it travels through distributed APM
|
||||
apps, which is vital for applications implementing a service-oriented or
|
||||
microservices architecture. Support for distributed tracing was added in
|
||||
version 2.1.0 of the Go Agent.
|
||||
|
||||
The config's `DistributedTracer.Enabled` field has to be set. When true, the
|
||||
agent will add distributed tracing headers in outbound requests, and scan
|
||||
incoming requests for distributed tracing headers. Distributed tracing and
|
||||
cross-application tracing cannot be used simultaneously:
|
||||
|
||||
```go
|
||||
config.CrossApplicationTracer.Enabled = false
|
||||
config.DistributedTracer.Enabled = true
|
||||
```
|
||||
|
||||
### Cross-Application Tracing
|
||||
|
||||
New Relic's
|
||||
[cross-application tracing](https://docs.newrelic.com/docs/apm/transactions/cross-application-traces/introduction-cross-application-traces)
|
||||
feature, or CAT for short, links transactions between applications in APM to
|
||||
help identify performance problems within your service-oriented architecture.
|
||||
Support for CAT was added in version 1.11.0 of the Go Agent.
|
||||
|
||||
As CAT uses HTTP headers to track requests across applications, the Go Agent
|
||||
needs to be able to access and modify request and response headers both for
|
||||
incoming and outgoing requests.
|
||||
|
||||
### Tracing Instrumentation
|
||||
|
||||
Both distributed tracing and cross-application tracing work by propagating
|
||||
[header information](https://docs.newrelic.com/docs/apm/distributed-tracing/getting-started/how-new-relic-distributed-tracing-works#headers)
|
||||
from service to service in a request path. In many scenarios, the Go Agent offers tracing instrumentation
|
||||
out-of-the-box, for both distributed tracing and cross-application tracing. For other scenarios customers may implement
|
||||
distributed tracing based on the examples provided in this guide.
|
||||
|
||||
#### Getting Tracing Instrumentation Out-of-the-Box
|
||||
|
||||
The Go Agent automatically creates and propagates tracing header information
|
||||
for each of the following scenarios:
|
||||
|
||||
1. Using `WrapHandle` or `WrapHandleFunc` to instrument a server that
|
||||
uses [`http.ServeMux`](https://golang.org/pkg/net/http/#ServeMux)
|
||||
([Example](examples/server/main.go)).
|
||||
|
||||
2. Using either of the Go Agent's [Gin](_integrations/nrgin/v1) or
|
||||
[Gorilla](_integrations/nrgorilla/v1) integration
|
||||
([Gin Example](_integrations/nrgin/v1/example/main.go), [Gorilla Example](_integrations/nrgorilla/v1/example/main.go)).
|
||||
.
|
||||
|
||||
3. Using another framework or [`http.Server`](https://golang.org/pkg/net/http/#Server) while ensuring that:
|
||||
|
||||
1. All calls to `StartTransaction` include the response writer and
|
||||
request, and
|
||||
2. `Transaction.WriteHeader` is used instead of calling `WriteHeader`
|
||||
directly on the response writer, as described in the
|
||||
[transactions section of this guide](#transactions)
|
||||
([Example](examples/server-http/main.go)).
|
||||
|
||||
4. Using `NewRoundTripper`, as described in the
|
||||
[external segments section of this guide](#external-segments)
|
||||
([Example](examples/client-round-tripper/main.go)).
|
||||
|
||||
5. Using the call `StartExternalSegment` and providing an `http.Request`, as
|
||||
described in the [external segments section of this guide](#external-segments)
|
||||
([Example](examples/client/main.go)).
|
||||
|
||||
#### Manually Implementing Distributed Tracing
|
||||
|
||||
Consider [manual instrumentation](https://docs.newrelic.com/docs/apm/distributed-tracing/enable-configure/enable-distributed-tracing#agent-apis)
|
||||
for services not instrumented automatically by the Go Agent. In such scenarios, the
|
||||
calling service has to generate a distributed trace payload:
|
||||
|
||||
```go
|
||||
p := callingTxn.CreateDistributedTracePayload()
|
||||
```
|
||||
|
||||
This payload has to be added to the call to the destination service, which in turn
|
||||
invokes the call for accepting the payload:
|
||||
|
||||
```go
|
||||
calledTxn.AcceptDistributedTracePayload(newrelic.TransportOther, p)
|
||||
```
|
||||
|
||||
A complete example can be found
|
||||
[here](examples/custom-instrumentation/main.go).
|
||||
|
||||
|
||||
## Custom Metrics
|
||||
|
||||
* [More info on Custom Metrics](https://docs.newrelic.com/docs/agents/go-agent/instrumentation/create-custom-metrics-go)
|
||||
|
||||
You may [create custom metrics](https://docs.newrelic.com/docs/agents/manage-apm-agents/agent-data/collect-custom-metrics)
|
||||
via the `RecordCustomMetric` method.
|
||||
|
||||
```go
|
||||
app.RecordCustomMetric(
|
||||
"CustomMetricName", // Name of your metric
|
||||
132, // Value
|
||||
)
|
||||
```
|
||||
|
||||
**Note:** The Go Agent will automatically prepend the metric name you pass to
|
||||
`RecordCustomMetric` (`"CustomMetricName"` above) with the string `Custom/`.
|
||||
This means the above code would produce a metric named
|
||||
`Custom/CustomMetricName`. You'll also want to read over the
|
||||
[Naming Transactions and Metrics](#naming-transactions-and-metrics) section below for
|
||||
advice on coming up with appropriate metric names.
|
||||
|
||||
## Custom Events
|
||||
|
||||
You may track arbitrary events using custom Insights events.
|
||||
|
||||
```go
|
||||
app.RecordCustomEvent("MyEventType", map[string]interface{}{
|
||||
"myString": "hello",
|
||||
"myFloat": 0.603,
|
||||
"myInt": 123,
|
||||
"myBool": true,
|
||||
})
|
||||
```
|
||||
|
||||
## Request Queuing
|
||||
|
||||
If you are running a load balancer or reverse web proxy then you may configure
|
||||
it to add a `X-Queue-Start` header with a Unix timestamp. This will create a
|
||||
band on the application overview chart showing queue time.
|
||||
|
||||
* [More info on Request Queuing](https://docs.newrelic.com/docs/apm/applications-menu/features/request-queuing-tracking-front-end-time)
|
||||
|
||||
## Error Reporting
|
||||
|
||||
You may track errors using the `Transaction.NoticeError` method. The easiest
|
||||
way to get started with `NoticeError` is to use errors based on
|
||||
[Go's standard error interface](https://blog.golang.org/error-handling-and-go).
|
||||
|
||||
```go
|
||||
txn.NoticeError(errors.New("my error message"))
|
||||
```
|
||||
|
||||
`NoticeError` will work with *any* sort of object that implements Go's standard
|
||||
error type interface -- not just `errorStrings` created via `errors.New`.
|
||||
|
||||
If you're interested in sending more than an error *message* to New Relic, the
|
||||
Go Agent also offers a `newrelic.Error` struct.
|
||||
|
||||
```go
|
||||
txn.NoticeError(newrelic.Error{
|
||||
Message: "my error message",
|
||||
Class: "IdentifierForError",
|
||||
Attributes: map[string]interface{}{
|
||||
"important_number": 97232,
|
||||
"relevant_string": "zap",
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Using the `newrelic.Error` struct requires you to manually marshall your error
|
||||
data into the `Message`, `Class`, and `Attributes` fields. However, there's two
|
||||
**advantages** to using the `newrelic.Error` struct.
|
||||
|
||||
First, by setting an error `Class`, New Relic will be able to aggregate errors
|
||||
in the *Error Analytics* section of APM. Second, the `Attributes` field allows
|
||||
you to send through key/value pairs with additional error debugging information
|
||||
(also exposed in the *Error Analytics* section of APM).
|
||||
|
||||
### Advanced Error Reporting
|
||||
|
||||
You're not limited to using Go's built-in error type or the provided
|
||||
`newrelic.Error` struct. The Go Agent provides three error interfaces
|
||||
|
||||
```go
|
||||
type StackTracer interface {
|
||||
StackTrace() []uintptr
|
||||
}
|
||||
|
||||
type ErrorClasser interface {
|
||||
ErrorClass() string
|
||||
}
|
||||
|
||||
type ErrorAttributer interface {
|
||||
ErrorAttributes() map[string]interface{}
|
||||
}
|
||||
```
|
||||
|
||||
If you implement any of these on your own error structs, the `txn.NoticeError`
|
||||
method will recognize these methods and use their return values to provide error
|
||||
information.
|
||||
|
||||
For example, you could implement a custom error struct named `MyErrorWithClass`
|
||||
|
||||
```go
|
||||
type MyErrorWithClass struct {
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
Then, you could implement both an `Error` method (per Go's standard `error`
|
||||
interface) and an `ErrorClass` method (per the Go Agent `ErrorClasser`
|
||||
interface) for this struct.
|
||||
|
||||
```go
|
||||
func (e MyErrorWithClass) Error() string { return "A hard coded error message" }
|
||||
|
||||
// ErrorClass implements the ErrorClasser interface.
|
||||
func (e MyErrorWithClass) ErrorClass() string { return "MyErrorClassForAggregation" }
|
||||
```
|
||||
|
||||
Finally, you'd use your new error by creating a new instance of your struct and
|
||||
passing it to the `NoticeError` method
|
||||
|
||||
```go
|
||||
txn.NoticeError(MyErrorWithClass{})
|
||||
```
|
||||
|
||||
While this is an oversimplified example, these interfaces give you a great deal
|
||||
of control over what error information is available for your application.
|
||||
|
||||
## Naming Transactions and Metrics
|
||||
|
||||
You'll want to think carefully about how you name your transactions and custom
|
||||
metrics. If your program creates too many unique names, you may end up with a
|
||||
[Metric Grouping Issue (or MGI)](https://docs.newrelic.com/docs/agents/manage-apm-agents/troubleshooting/metric-grouping-issues).
|
||||
|
||||
MGIs occur when the granularity of names is too fine, resulting in hundreds or
|
||||
thousands of uniquely identified metrics and transactions. One common cause of
|
||||
MGIs is relying on the full URL name for metric naming in web transactions. A
|
||||
few major code paths may generate many different full URL paths to unique
|
||||
documents, articles, page, etc. If the unique element of the URL path is
|
||||
included in the metric name, each of these common paths will have its own unique
|
||||
metric name.
|
||||
|
||||
|
||||
## For More Help
|
||||
|
||||
There's a variety of places online to learn more about the Go Agent.
|
||||
|
||||
[The New Relic docs site](https://docs.newrelic.com/docs/agents/go-agent/get-started/introduction-new-relic-go)
|
||||
contains a number of useful code samples and more context about how to use the Go Agent.
|
||||
|
||||
[New Relic's discussion forums](https://discuss.newrelic.com) have a dedicated
|
||||
public forum [for the Go Agent](https://discuss.newrelic.com/c/support-products-agents/go-agent).
|
||||
|
||||
When in doubt, [the New Relic support site](https://support.newrelic.com/) is
|
||||
the best place to get started troubleshooting an agent issue.
|
162
vendor/github.com/newrelic/go-agent/README.md
generated
vendored
Normal file
@ -0,0 +1,162 @@
|
||||
# New Relic Go Agent [![GoDoc](https://godoc.org/github.com/newrelic/go-agent?status.svg)](https://godoc.org/github.com/newrelic/go-agent)
|
||||
|
||||
## Description
|
||||
|
||||
The New Relic Go Agent allows you to monitor your Go applications with New
|
||||
Relic. It helps you track transactions, outbound requests, database calls, and
|
||||
other parts of your Go application's behavior and provides a running overview of
|
||||
garbage collection, goroutine activity, and memory use.
|
||||
|
||||
All pull requests will be reviewed by the New Relic product team. Any questions or issues should be directed to our [support
|
||||
site](http://support.newrelic.com/) or our [community
|
||||
forum](https://discuss.newrelic.com).
|
||||
|
||||
## Requirements
|
||||
|
||||
Go 1.3+ is required, due to the use of http.Client's Timeout field.
|
||||
|
||||
Linux, OS X, and Windows (Vista, Server 2008 and later) are supported.
|
||||
|
||||
## Getting Started
|
||||
|
||||
Here are the basic steps to instrumenting your application. For more
|
||||
information, see [GUIDE.md](GUIDE.md).
|
||||
|
||||
#### Step 0: Installation
|
||||
|
||||
Installing the Go Agent is the same as installing any other Go library. The
|
||||
simplest way is to run:
|
||||
|
||||
```
|
||||
go get github.com/newrelic/go-agent
|
||||
```
|
||||
|
||||
Then import the `github.com/newrelic/go-agent` package in your application.
|
||||
|
||||
#### Step 1: Create a Config and an Application
|
||||
|
||||
In your `main` function or an `init` block:
|
||||
|
||||
```go
|
||||
config := newrelic.NewConfig("Your Application Name", "__YOUR_NEW_RELIC_LICENSE_KEY__")
|
||||
app, err := newrelic.NewApplication(config)
|
||||
```
|
||||
|
||||
[more info](GUIDE.md#config-and-application), [application.go](application.go),
|
||||
[config.go](config.go)
|
||||
|
||||
#### Step 2: Add Transactions
|
||||
|
||||
Transactions time requests and background tasks. Use `WrapHandle` and
|
||||
`WrapHandleFunc` to create transactions for requests handled by the `http`
|
||||
standard library package.
|
||||
|
||||
```go
|
||||
http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))
|
||||
```
|
||||
|
||||
Alternatively, create transactions directly using the application's
|
||||
`StartTransaction` method:
|
||||
|
||||
```go
|
||||
txn := app.StartTransaction("myTxn", optionalResponseWriter, optionalRequest)
|
||||
defer txn.End()
|
||||
```
|
||||
|
||||
[more info](GUIDE.md#transactions), [transaction.go](transaction.go)
|
||||
|
||||
#### Step 3: Instrument Segments
|
||||
|
||||
Segments show you where time in your transactions is being spent. At the
|
||||
beginning of important functions, add:
|
||||
|
||||
```go
|
||||
defer newrelic.StartSegment(txn, "mySegmentName").End()
|
||||
```
|
||||
|
||||
[more info](GUIDE.md#segments), [segments.go](segments.go)
|
||||
|
||||
## Runnable Example
|
||||
|
||||
[examples/server/main.go](./examples/server/main.go) is an example that will
|
||||
appear as "Example App" in your New Relic applications list. To run it:
|
||||
|
||||
```
|
||||
env NEW_RELIC_LICENSE_KEY=__YOUR_NEW_RELIC_LICENSE_KEY__LICENSE__ \
|
||||
go run examples/server/main.go
|
||||
```
|
||||
|
||||
Some endpoints exposed are [http://localhost:8000/](http://localhost:8000/)
|
||||
and [http://localhost:8000/notice_error](http://localhost:8000/notice_error)
|
||||
|
||||
|
||||
## Basic Example
|
||||
|
||||
Before Instrumentation
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func helloHandler(w http.ResponseWriter, r *http.Request) {
|
||||
io.WriteString(w, "hello, world")
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/", helloHandler)
|
||||
http.ListenAndServe(":8000", nil)
|
||||
}
|
||||
```
|
||||
|
||||
After Instrumentation
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/newrelic/go-agent"
|
||||
)
|
||||
|
||||
func helloHandler(w http.ResponseWriter, r *http.Request) {
|
||||
io.WriteString(w, "hello, world")
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Create a config. You need to provide the desired application name
|
||||
// and your New Relic license key.
|
||||
cfg := newrelic.NewConfig("Example App", "__YOUR_NEW_RELIC_LICENSE_KEY__")
|
||||
|
||||
// Create an application. This represents an application in the New
|
||||
// Relic UI.
|
||||
app, err := newrelic.NewApplication(cfg)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Wrap helloHandler. The performance of this handler will be recorded.
|
||||
http.HandleFunc(newrelic.WrapHandleFunc(app, "/", helloHandler))
|
||||
http.ListenAndServe(":8000", nil)
|
||||
}
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
You can find more detailed documentation [in the guide](GUIDE.md) and on
|
||||
[the New Relic Documentation site](https://docs.newrelic.com/docs/agents/go-agent).
|
||||
|
||||
If you can't find what you're looking for there, reach out to us on our [support
|
||||
site](http://support.newrelic.com/) or our [community
|
||||
forum](https://discuss.newrelic.com) and we'll be happy to help you.
|
||||
|
||||
Find a bug? Contact us via [support.newrelic.com](http://support.newrelic.com/),
|
||||
or email support@newrelic.com.
|
10
vendor/github.com/pborman/uuid/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
language: go
|
||||
|
||||
go:
|
||||
- "1.9"
|
||||
- "1.10"
|
||||
- "1.11"
|
||||
- tip
|
||||
|
||||
script:
|
||||
- go test -v ./...
|
10
vendor/github.com/pborman/uuid/CONTRIBUTING.md
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
# How to contribute
|
||||
|
||||
We definitely welcome patches and contribution to this project!
|
||||
|
||||
### Legal requirements
|
||||
|
||||
In order to protect both you and ourselves, you will need to sign the
|
||||
[Contributor License Agreement](https://cla.developers.google.com/clas).
|
||||
|
||||
You may have already signed it for other Google projects.
|
15
vendor/github.com/pborman/uuid/README.md
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
This project was automatically exported from code.google.com/p/go-uuid
|
||||
|
||||
# uuid ![build status](https://travis-ci.org/pborman/uuid.svg?branch=master)
|
||||
The uuid package generates and inspects UUIDs based on [RFC 4122](http://tools.ietf.org/html/rfc4122) and DCE 1.1: Authentication and Security Services.
|
||||
|
||||
This package now leverages the github.com/google/uuid package (which is based off an earlier version of this package).
|
||||
|
||||
###### Install
|
||||
`go get github.com/pborman/uuid`
|
||||
|
||||
###### Documentation
|
||||
[![GoDoc](https://godoc.org/github.com/pborman/uuid?status.svg)](http://godoc.org/github.com/pborman/uuid)
|
||||
|
||||
Full `go doc` style documentation for the package can be viewed online without installing this package by using the GoDoc site here:
|
||||
http://godoc.org/github.com/pborman/uuid
|
24
vendor/github.com/pkg/errors/.gitignore
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
|
||||
# Folders
|
||||
_obj
|
||||
_test
|
||||
|
||||
# Architecture specific extensions/prefixes
|
||||
*.[568vq]
|
||||
[568vq].out
|
||||
|
||||
*.cgo1.go
|
||||
*.cgo2.c
|
||||
_cgo_defun.c
|
||||
_cgo_gotypes.go
|
||||
_cgo_export.*
|
||||
|
||||
_testmain.go
|
||||
|
||||
*.exe
|
||||
*.test
|
||||
*.prof
|
15
vendor/github.com/pkg/errors/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
language: go
|
||||
go_import_path: github.com/pkg/errors
|
||||
go:
|
||||
- 1.4.x
|
||||
- 1.5.x
|
||||
- 1.6.x
|
||||
- 1.7.x
|
||||
- 1.8.x
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- 1.11.x
|
||||
- tip
|
||||
|
||||
script:
|
||||
- go test -v ./...
|