├── .dockerignore ├── .gitignore ├── CONTRIBUTING.md ├── Cargo.lock ├── Cargo.toml ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── brigade.js ├── brigade.json ├── charts └── buck │ ├── .helmignore │ ├── Chart.yaml │ ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── crd.yaml │ ├── deployment.yaml │ └── rbac.yaml │ └── values.yaml ├── docs ├── README.md └── managing_projects.md ├── examples ├── README.md ├── book-crd.yaml ├── brigade.js ├── moby-dick.yaml └── run.sh └── src └── main.rs /.dockerignore: -------------------------------------------------------------------------------- 1 | target/ 2 | _scratch/ 3 | charts/ 4 | examples/ -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guide 2 | 3 | See our Brigade project [Contributing Guide](https://github.com/brigadecore/community/blob/master/contributing.md). -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "adler32" 5 | version = "1.0.3" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | 8 | [[package]] 9 | name = "aho-corasick" 10 | version = "0.7.6" 11 | source = "registry+https://github.com/rust-lang/crates.io-index" 12 | dependencies = [ 13 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 14 | ] 15 | 16 | [[package]] 17 | name = "arrayref" 18 | version = "0.3.5" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | 21 | [[package]] 22 | name = "arrayvec" 23 | version = "0.4.11" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | dependencies = [ 26 | "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 27 | ] 28 | 29 | [[package]] 30 | name = "autocfg" 31 | version = "0.1.5" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | 34 | [[package]] 35 | name = "backtrace" 36 | version = "0.3.34" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | dependencies = [ 39 | "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", 40 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 41 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 42 | "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 43 | ] 44 | 45 | [[package]] 46 | name = "backtrace-sys" 47 | version = "0.1.31" 48 | source = "registry+https://github.com/rust-lang/crates.io-index" 49 | dependencies = [ 50 | "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 51 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 52 | ] 53 | 54 | [[package]] 55 | name = "base64" 56 | version = "0.9.3" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | dependencies = [ 59 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 60 | "safemem 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 61 | ] 62 | 63 | [[package]] 64 | name = "base64" 65 | version = "0.10.1" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | dependencies = [ 68 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 69 | ] 70 | 71 | [[package]] 72 | name = "bitflags" 73 | version = "1.1.0" 74 | source = "registry+https://github.com/rust-lang/crates.io-index" 75 | 76 | [[package]] 77 | name = "blake2b_simd" 78 | version = "0.5.6" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | dependencies = [ 81 | "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 83 | "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 84 | ] 85 | 86 | [[package]] 87 | name = "buck" 88 | version = "0.1.0" 89 | dependencies = [ 90 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 91 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 92 | "k8s-openapi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 93 | "kube 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", 94 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 95 | "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 96 | "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 97 | "ulid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 98 | ] 99 | 100 | [[package]] 101 | name = "byteorder" 102 | version = "1.3.2" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | 105 | [[package]] 106 | name = "bytes" 107 | version = "0.4.12" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | dependencies = [ 110 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 111 | "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 112 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 113 | ] 114 | 115 | [[package]] 116 | name = "c2-chacha" 117 | version = "0.2.2" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | dependencies = [ 120 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 121 | "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 122 | ] 123 | 124 | [[package]] 125 | name = "cc" 126 | version = "1.0.38" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | 129 | [[package]] 130 | name = "cfg-if" 131 | version = "0.1.9" 132 | source = "registry+https://github.com/rust-lang/crates.io-index" 133 | 134 | [[package]] 135 | name = "chrono" 136 | version = "0.4.7" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | dependencies = [ 139 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 140 | "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 141 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 142 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 143 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 144 | ] 145 | 146 | [[package]] 147 | name = "cloudabi" 148 | version = "0.0.3" 149 | source = "registry+https://github.com/rust-lang/crates.io-index" 150 | dependencies = [ 151 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 152 | ] 153 | 154 | [[package]] 155 | name = "constant_time_eq" 156 | version = "0.1.3" 157 | source = "registry+https://github.com/rust-lang/crates.io-index" 158 | 159 | [[package]] 160 | name = "cookie" 161 | version = "0.12.0" 162 | source = "registry+https://github.com/rust-lang/crates.io-index" 163 | dependencies = [ 164 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 165 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 166 | ] 167 | 168 | [[package]] 169 | name = "cookie_store" 170 | version = "0.7.0" 171 | source = "registry+https://github.com/rust-lang/crates.io-index" 172 | dependencies = [ 173 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 174 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 175 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 176 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 177 | "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 178 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 179 | "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 180 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 181 | "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 182 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 183 | ] 184 | 185 | [[package]] 186 | name = "core-foundation" 187 | version = "0.6.4" 188 | source = "registry+https://github.com/rust-lang/crates.io-index" 189 | dependencies = [ 190 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 191 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 192 | ] 193 | 194 | [[package]] 195 | name = "core-foundation-sys" 196 | version = "0.6.2" 197 | source = "registry+https://github.com/rust-lang/crates.io-index" 198 | 199 | [[package]] 200 | name = "crc32fast" 201 | version = "1.2.0" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | dependencies = [ 204 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 205 | ] 206 | 207 | [[package]] 208 | name = "crossbeam" 209 | version = "0.5.0" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | dependencies = [ 212 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 213 | "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 214 | "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 215 | "crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 217 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 218 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 219 | "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 220 | ] 221 | 222 | [[package]] 223 | name = "crossbeam-channel" 224 | version = "0.3.9" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | dependencies = [ 227 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 228 | ] 229 | 230 | [[package]] 231 | name = "crossbeam-deque" 232 | version = "0.6.3" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | dependencies = [ 235 | "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 236 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 237 | ] 238 | 239 | [[package]] 240 | name = "crossbeam-deque" 241 | version = "0.7.1" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | dependencies = [ 244 | "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 245 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 246 | ] 247 | 248 | [[package]] 249 | name = "crossbeam-epoch" 250 | version = "0.6.1" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | dependencies = [ 253 | "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 254 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 255 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 256 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 257 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 258 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 259 | ] 260 | 261 | [[package]] 262 | name = "crossbeam-epoch" 263 | version = "0.7.2" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | dependencies = [ 266 | "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 267 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 268 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 269 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 270 | "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 271 | "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 272 | ] 273 | 274 | [[package]] 275 | name = "crossbeam-queue" 276 | version = "0.1.2" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | dependencies = [ 279 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 280 | ] 281 | 282 | [[package]] 283 | name = "crossbeam-utils" 284 | version = "0.6.6" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | dependencies = [ 287 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 288 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 289 | ] 290 | 291 | [[package]] 292 | name = "dirs" 293 | version = "1.0.5" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | dependencies = [ 296 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 297 | "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 298 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 299 | ] 300 | 301 | [[package]] 302 | name = "dtoa" 303 | version = "0.4.4" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | 306 | [[package]] 307 | name = "either" 308 | version = "1.5.2" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | 311 | [[package]] 312 | name = "encoding_rs" 313 | version = "0.8.17" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | dependencies = [ 316 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 317 | ] 318 | 319 | [[package]] 320 | name = "error-chain" 321 | version = "0.12.1" 322 | source = "registry+https://github.com/rust-lang/crates.io-index" 323 | dependencies = [ 324 | "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", 325 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 326 | ] 327 | 328 | [[package]] 329 | name = "failure" 330 | version = "0.1.5" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | dependencies = [ 333 | "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", 334 | "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 335 | ] 336 | 337 | [[package]] 338 | name = "failure_derive" 339 | version = "0.1.5" 340 | source = "registry+https://github.com/rust-lang/crates.io-index" 341 | dependencies = [ 342 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 343 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 344 | "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", 345 | "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", 346 | ] 347 | 348 | [[package]] 349 | name = "flate2" 350 | version = "1.0.9" 351 | source = "registry+https://github.com/rust-lang/crates.io-index" 352 | dependencies = [ 353 | "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 354 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 355 | "miniz_oxide_c_api 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 356 | ] 357 | 358 | [[package]] 359 | name = "fnv" 360 | version = "1.0.6" 361 | source = "registry+https://github.com/rust-lang/crates.io-index" 362 | 363 | [[package]] 364 | name = "foreign-types" 365 | version = "0.3.2" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | dependencies = [ 368 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 369 | ] 370 | 371 | [[package]] 372 | name = "foreign-types-shared" 373 | version = "0.1.1" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | 376 | [[package]] 377 | name = "fuchsia-cprng" 378 | version = "0.1.1" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | 381 | [[package]] 382 | name = "fuchsia-zircon" 383 | version = "0.3.3" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | dependencies = [ 386 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 387 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 388 | ] 389 | 390 | [[package]] 391 | name = "fuchsia-zircon-sys" 392 | version = "0.3.3" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | 395 | [[package]] 396 | name = "futures" 397 | version = "0.1.28" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | 400 | [[package]] 401 | name = "futures-cpupool" 402 | version = "0.1.8" 403 | source = "registry+https://github.com/rust-lang/crates.io-index" 404 | dependencies = [ 405 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 406 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 407 | ] 408 | 409 | [[package]] 410 | name = "getrandom" 411 | version = "0.1.8" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | dependencies = [ 414 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 415 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 416 | ] 417 | 418 | [[package]] 419 | name = "h2" 420 | version = "0.1.26" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | dependencies = [ 423 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 424 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 425 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 426 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 427 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 428 | "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 429 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 430 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 431 | "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 432 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 433 | ] 434 | 435 | [[package]] 436 | name = "http" 437 | version = "0.1.18" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | dependencies = [ 440 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 441 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 442 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 443 | ] 444 | 445 | [[package]] 446 | name = "http-body" 447 | version = "0.1.0" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | dependencies = [ 450 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 451 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 452 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 453 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 454 | ] 455 | 456 | [[package]] 457 | name = "httparse" 458 | version = "1.3.4" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | 461 | [[package]] 462 | name = "hyper" 463 | version = "0.12.33" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | dependencies = [ 466 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 467 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 468 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 469 | "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", 470 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 471 | "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 472 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 473 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 474 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 475 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 476 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 477 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 478 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 479 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 480 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 481 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 482 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 483 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 484 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 485 | "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 486 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 487 | "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 488 | ] 489 | 490 | [[package]] 491 | name = "hyper-tls" 492 | version = "0.3.2" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | dependencies = [ 495 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 496 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 497 | "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)", 498 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 499 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 500 | ] 501 | 502 | [[package]] 503 | name = "idna" 504 | version = "0.1.5" 505 | source = "registry+https://github.com/rust-lang/crates.io-index" 506 | dependencies = [ 507 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 508 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 509 | "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 510 | ] 511 | 512 | [[package]] 513 | name = "indexmap" 514 | version = "1.0.2" 515 | source = "registry+https://github.com/rust-lang/crates.io-index" 516 | 517 | [[package]] 518 | name = "iovec" 519 | version = "0.1.2" 520 | source = "registry+https://github.com/rust-lang/crates.io-index" 521 | dependencies = [ 522 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 523 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 524 | ] 525 | 526 | [[package]] 527 | name = "itoa" 528 | version = "0.4.4" 529 | source = "registry+https://github.com/rust-lang/crates.io-index" 530 | 531 | [[package]] 532 | name = "k8s-openapi" 533 | version = "0.5.1" 534 | source = "registry+https://github.com/rust-lang/crates.io-index" 535 | dependencies = [ 536 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 537 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 538 | "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 539 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 540 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 541 | "serde-value 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 542 | "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 543 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 544 | ] 545 | 546 | [[package]] 547 | name = "kernel32-sys" 548 | version = "0.2.2" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | dependencies = [ 551 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 552 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 553 | ] 554 | 555 | [[package]] 556 | name = "kube" 557 | version = "0.16.1" 558 | source = "registry+https://github.com/rust-lang/crates.io-index" 559 | dependencies = [ 560 | "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 561 | "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 562 | "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 563 | "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 564 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 565 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 566 | "k8s-openapi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 567 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 568 | "openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)", 569 | "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)", 570 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 571 | "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 572 | "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 573 | "serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)", 574 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 575 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 576 | ] 577 | 578 | [[package]] 579 | name = "lazy_static" 580 | version = "1.3.0" 581 | source = "registry+https://github.com/rust-lang/crates.io-index" 582 | 583 | [[package]] 584 | name = "libc" 585 | version = "0.2.60" 586 | source = "registry+https://github.com/rust-lang/crates.io-index" 587 | 588 | [[package]] 589 | name = "linked-hash-map" 590 | version = "0.5.2" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | 593 | [[package]] 594 | name = "lock_api" 595 | version = "0.1.5" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | dependencies = [ 598 | "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 599 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 600 | ] 601 | 602 | [[package]] 603 | name = "log" 604 | version = "0.4.8" 605 | source = "registry+https://github.com/rust-lang/crates.io-index" 606 | dependencies = [ 607 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 608 | ] 609 | 610 | [[package]] 611 | name = "matches" 612 | version = "0.1.8" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | 615 | [[package]] 616 | name = "memchr" 617 | version = "2.2.1" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | 620 | [[package]] 621 | name = "memoffset" 622 | version = "0.2.1" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | 625 | [[package]] 626 | name = "memoffset" 627 | version = "0.5.1" 628 | source = "registry+https://github.com/rust-lang/crates.io-index" 629 | dependencies = [ 630 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 631 | ] 632 | 633 | [[package]] 634 | name = "mime" 635 | version = "0.3.13" 636 | source = "registry+https://github.com/rust-lang/crates.io-index" 637 | dependencies = [ 638 | "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 639 | ] 640 | 641 | [[package]] 642 | name = "mime_guess" 643 | version = "2.0.1" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | dependencies = [ 646 | "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", 647 | "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 648 | ] 649 | 650 | [[package]] 651 | name = "miniz_oxide" 652 | version = "0.3.1" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | dependencies = [ 655 | "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 656 | ] 657 | 658 | [[package]] 659 | name = "miniz_oxide_c_api" 660 | version = "0.2.3" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | dependencies = [ 663 | "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 664 | "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 665 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 666 | "miniz_oxide 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 667 | ] 668 | 669 | [[package]] 670 | name = "mio" 671 | version = "0.6.19" 672 | source = "registry+https://github.com/rust-lang/crates.io-index" 673 | dependencies = [ 674 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 675 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 676 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 677 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 678 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 679 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 680 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 681 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 682 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 683 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 684 | ] 685 | 686 | [[package]] 687 | name = "miow" 688 | version = "0.2.1" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | dependencies = [ 691 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 692 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 693 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 694 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 695 | ] 696 | 697 | [[package]] 698 | name = "native-tls" 699 | version = "0.2.3" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | dependencies = [ 702 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 703 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 704 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 705 | "openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)", 706 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 707 | "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)", 708 | "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 709 | "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 710 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 711 | "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 712 | ] 713 | 714 | [[package]] 715 | name = "net2" 716 | version = "0.2.33" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | dependencies = [ 719 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 720 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 721 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 722 | ] 723 | 724 | [[package]] 725 | name = "nodrop" 726 | version = "0.1.13" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | 729 | [[package]] 730 | name = "num-integer" 731 | version = "0.1.41" 732 | source = "registry+https://github.com/rust-lang/crates.io-index" 733 | dependencies = [ 734 | "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 735 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 736 | ] 737 | 738 | [[package]] 739 | name = "num-traits" 740 | version = "0.2.8" 741 | source = "registry+https://github.com/rust-lang/crates.io-index" 742 | dependencies = [ 743 | "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 744 | ] 745 | 746 | [[package]] 747 | name = "num_cpus" 748 | version = "1.10.1" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | dependencies = [ 751 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 752 | ] 753 | 754 | [[package]] 755 | name = "openssl" 756 | version = "0.10.24" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | dependencies = [ 759 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 760 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 761 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 762 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 763 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 764 | "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)", 765 | ] 766 | 767 | [[package]] 768 | name = "openssl-probe" 769 | version = "0.1.2" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | 772 | [[package]] 773 | name = "openssl-sys" 774 | version = "0.9.48" 775 | source = "registry+https://github.com/rust-lang/crates.io-index" 776 | dependencies = [ 777 | "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 778 | "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", 779 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 780 | "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 781 | "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 782 | ] 783 | 784 | [[package]] 785 | name = "ordered-float" 786 | version = "1.0.2" 787 | source = "registry+https://github.com/rust-lang/crates.io-index" 788 | dependencies = [ 789 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 790 | ] 791 | 792 | [[package]] 793 | name = "owning_ref" 794 | version = "0.4.0" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | dependencies = [ 797 | "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 798 | ] 799 | 800 | [[package]] 801 | name = "parking_lot" 802 | version = "0.6.4" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | dependencies = [ 805 | "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 806 | "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 807 | ] 808 | 809 | [[package]] 810 | name = "parking_lot" 811 | version = "0.7.1" 812 | source = "registry+https://github.com/rust-lang/crates.io-index" 813 | dependencies = [ 814 | "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 815 | "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 816 | ] 817 | 818 | [[package]] 819 | name = "parking_lot_core" 820 | version = "0.3.1" 821 | source = "registry+https://github.com/rust-lang/crates.io-index" 822 | dependencies = [ 823 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 824 | "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 825 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 826 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 827 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 828 | ] 829 | 830 | [[package]] 831 | name = "parking_lot_core" 832 | version = "0.4.0" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | dependencies = [ 835 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 836 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 837 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 838 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 839 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 840 | ] 841 | 842 | [[package]] 843 | name = "percent-encoding" 844 | version = "1.0.1" 845 | source = "registry+https://github.com/rust-lang/crates.io-index" 846 | 847 | [[package]] 848 | name = "pkg-config" 849 | version = "0.3.15" 850 | source = "registry+https://github.com/rust-lang/crates.io-index" 851 | 852 | [[package]] 853 | name = "ppv-lite86" 854 | version = "0.2.5" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | 857 | [[package]] 858 | name = "proc-macro2" 859 | version = "0.4.30" 860 | source = "registry+https://github.com/rust-lang/crates.io-index" 861 | dependencies = [ 862 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 863 | ] 864 | 865 | [[package]] 866 | name = "publicsuffix" 867 | version = "1.5.2" 868 | source = "registry+https://github.com/rust-lang/crates.io-index" 869 | dependencies = [ 870 | "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", 871 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 872 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 873 | "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 874 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 875 | ] 876 | 877 | [[package]] 878 | name = "quote" 879 | version = "0.6.13" 880 | source = "registry+https://github.com/rust-lang/crates.io-index" 881 | dependencies = [ 882 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 883 | ] 884 | 885 | [[package]] 886 | name = "rand" 887 | version = "0.5.6" 888 | source = "registry+https://github.com/rust-lang/crates.io-index" 889 | dependencies = [ 890 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 891 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 892 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 893 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 894 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 895 | ] 896 | 897 | [[package]] 898 | name = "rand" 899 | version = "0.6.5" 900 | source = "registry+https://github.com/rust-lang/crates.io-index" 901 | dependencies = [ 902 | "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 903 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 904 | "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 905 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 906 | "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 907 | "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 908 | "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 909 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 910 | "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 911 | "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 912 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 913 | ] 914 | 915 | [[package]] 916 | name = "rand" 917 | version = "0.7.0" 918 | source = "registry+https://github.com/rust-lang/crates.io-index" 919 | dependencies = [ 920 | "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 921 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 922 | "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 923 | "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 924 | "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 925 | ] 926 | 927 | [[package]] 928 | name = "rand_chacha" 929 | version = "0.1.1" 930 | source = "registry+https://github.com/rust-lang/crates.io-index" 931 | dependencies = [ 932 | "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 933 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 934 | ] 935 | 936 | [[package]] 937 | name = "rand_chacha" 938 | version = "0.2.1" 939 | source = "registry+https://github.com/rust-lang/crates.io-index" 940 | dependencies = [ 941 | "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 942 | "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 943 | ] 944 | 945 | [[package]] 946 | name = "rand_core" 947 | version = "0.3.1" 948 | source = "registry+https://github.com/rust-lang/crates.io-index" 949 | dependencies = [ 950 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 951 | ] 952 | 953 | [[package]] 954 | name = "rand_core" 955 | version = "0.4.2" 956 | source = "registry+https://github.com/rust-lang/crates.io-index" 957 | 958 | [[package]] 959 | name = "rand_core" 960 | version = "0.5.0" 961 | source = "registry+https://github.com/rust-lang/crates.io-index" 962 | dependencies = [ 963 | "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 964 | ] 965 | 966 | [[package]] 967 | name = "rand_hc" 968 | version = "0.1.0" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | dependencies = [ 971 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 972 | ] 973 | 974 | [[package]] 975 | name = "rand_hc" 976 | version = "0.2.0" 977 | source = "registry+https://github.com/rust-lang/crates.io-index" 978 | dependencies = [ 979 | "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 980 | ] 981 | 982 | [[package]] 983 | name = "rand_isaac" 984 | version = "0.1.1" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | dependencies = [ 987 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 988 | ] 989 | 990 | [[package]] 991 | name = "rand_jitter" 992 | version = "0.1.4" 993 | source = "registry+https://github.com/rust-lang/crates.io-index" 994 | dependencies = [ 995 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 996 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 997 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 998 | ] 999 | 1000 | [[package]] 1001 | name = "rand_os" 1002 | version = "0.1.3" 1003 | source = "registry+https://github.com/rust-lang/crates.io-index" 1004 | dependencies = [ 1005 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1006 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1007 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 1008 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1009 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1010 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1011 | ] 1012 | 1013 | [[package]] 1014 | name = "rand_pcg" 1015 | version = "0.1.2" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | dependencies = [ 1018 | "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1019 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1020 | ] 1021 | 1022 | [[package]] 1023 | name = "rand_xorshift" 1024 | version = "0.1.1" 1025 | source = "registry+https://github.com/rust-lang/crates.io-index" 1026 | dependencies = [ 1027 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1028 | ] 1029 | 1030 | [[package]] 1031 | name = "rdrand" 1032 | version = "0.4.0" 1033 | source = "registry+https://github.com/rust-lang/crates.io-index" 1034 | dependencies = [ 1035 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1036 | ] 1037 | 1038 | [[package]] 1039 | name = "redox_syscall" 1040 | version = "0.1.56" 1041 | source = "registry+https://github.com/rust-lang/crates.io-index" 1042 | 1043 | [[package]] 1044 | name = "redox_users" 1045 | version = "0.3.1" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | dependencies = [ 1048 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1049 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1050 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1051 | "rust-argon2 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1052 | ] 1053 | 1054 | [[package]] 1055 | name = "regex" 1056 | version = "1.2.1" 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" 1058 | dependencies = [ 1059 | "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", 1060 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1061 | "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", 1062 | "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1063 | ] 1064 | 1065 | [[package]] 1066 | name = "regex-syntax" 1067 | version = "0.6.11" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | 1070 | [[package]] 1071 | name = "remove_dir_all" 1072 | version = "0.5.2" 1073 | source = "registry+https://github.com/rust-lang/crates.io-index" 1074 | dependencies = [ 1075 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1076 | ] 1077 | 1078 | [[package]] 1079 | name = "reqwest" 1080 | version = "0.9.19" 1081 | source = "registry+https://github.com/rust-lang/crates.io-index" 1082 | dependencies = [ 1083 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1084 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1085 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 1086 | "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1087 | "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", 1088 | "flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", 1089 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1090 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 1091 | "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)", 1092 | "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1093 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1094 | "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", 1095 | "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1096 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1097 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 1098 | "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 1099 | "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1100 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 1101 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 1102 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1103 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1104 | "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 1105 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1106 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1107 | "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 1108 | "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1109 | ] 1110 | 1111 | [[package]] 1112 | name = "rust-argon2" 1113 | version = "0.5.0" 1114 | source = "registry+https://github.com/rust-lang/crates.io-index" 1115 | dependencies = [ 1116 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1117 | "blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 1118 | "crossbeam 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1119 | ] 1120 | 1121 | [[package]] 1122 | name = "rustc-demangle" 1123 | version = "0.1.15" 1124 | source = "registry+https://github.com/rust-lang/crates.io-index" 1125 | 1126 | [[package]] 1127 | name = "rustc_version" 1128 | version = "0.2.3" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | dependencies = [ 1131 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "ryu" 1136 | version = "1.0.0" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | 1139 | [[package]] 1140 | name = "safemem" 1141 | version = "0.3.1" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | 1144 | [[package]] 1145 | name = "schannel" 1146 | version = "0.1.15" 1147 | source = "registry+https://github.com/rust-lang/crates.io-index" 1148 | dependencies = [ 1149 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1150 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1151 | ] 1152 | 1153 | [[package]] 1154 | name = "scopeguard" 1155 | version = "0.3.3" 1156 | source = "registry+https://github.com/rust-lang/crates.io-index" 1157 | 1158 | [[package]] 1159 | name = "scopeguard" 1160 | version = "1.0.0" 1161 | source = "registry+https://github.com/rust-lang/crates.io-index" 1162 | 1163 | [[package]] 1164 | name = "security-framework" 1165 | version = "0.3.1" 1166 | source = "registry+https://github.com/rust-lang/crates.io-index" 1167 | dependencies = [ 1168 | "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1169 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1170 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 1171 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1172 | ] 1173 | 1174 | [[package]] 1175 | name = "security-framework-sys" 1176 | version = "0.3.1" 1177 | source = "registry+https://github.com/rust-lang/crates.io-index" 1178 | dependencies = [ 1179 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1180 | ] 1181 | 1182 | [[package]] 1183 | name = "semver" 1184 | version = "0.9.0" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | dependencies = [ 1187 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1188 | ] 1189 | 1190 | [[package]] 1191 | name = "semver-parser" 1192 | version = "0.7.0" 1193 | source = "registry+https://github.com/rust-lang/crates.io-index" 1194 | 1195 | [[package]] 1196 | name = "serde" 1197 | version = "1.0.98" 1198 | source = "registry+https://github.com/rust-lang/crates.io-index" 1199 | dependencies = [ 1200 | "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 1201 | ] 1202 | 1203 | [[package]] 1204 | name = "serde-value" 1205 | version = "0.6.0" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | dependencies = [ 1208 | "ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1209 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 1210 | ] 1211 | 1212 | [[package]] 1213 | name = "serde_derive" 1214 | version = "1.0.98" 1215 | source = "registry+https://github.com/rust-lang/crates.io-index" 1216 | dependencies = [ 1217 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1218 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1219 | "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", 1220 | ] 1221 | 1222 | [[package]] 1223 | name = "serde_json" 1224 | version = "1.0.40" 1225 | source = "registry+https://github.com/rust-lang/crates.io-index" 1226 | dependencies = [ 1227 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1228 | "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1229 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 1230 | ] 1231 | 1232 | [[package]] 1233 | name = "serde_urlencoded" 1234 | version = "0.5.5" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | dependencies = [ 1237 | "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1238 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1239 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 1240 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "serde_yaml" 1245 | version = "0.8.9" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | dependencies = [ 1248 | "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1249 | "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1250 | "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", 1251 | "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", 1252 | ] 1253 | 1254 | [[package]] 1255 | name = "slab" 1256 | version = "0.4.2" 1257 | source = "registry+https://github.com/rust-lang/crates.io-index" 1258 | 1259 | [[package]] 1260 | name = "smallvec" 1261 | version = "0.6.10" 1262 | source = "registry+https://github.com/rust-lang/crates.io-index" 1263 | 1264 | [[package]] 1265 | name = "stable_deref_trait" 1266 | version = "1.1.1" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | 1269 | [[package]] 1270 | name = "string" 1271 | version = "0.2.1" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | dependencies = [ 1274 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1275 | ] 1276 | 1277 | [[package]] 1278 | name = "syn" 1279 | version = "0.15.43" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | dependencies = [ 1282 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1283 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1284 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1285 | ] 1286 | 1287 | [[package]] 1288 | name = "synstructure" 1289 | version = "0.10.2" 1290 | source = "registry+https://github.com/rust-lang/crates.io-index" 1291 | dependencies = [ 1292 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1293 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1294 | "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", 1295 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1296 | ] 1297 | 1298 | [[package]] 1299 | name = "tempfile" 1300 | version = "3.1.0" 1301 | source = "registry+https://github.com/rust-lang/crates.io-index" 1302 | dependencies = [ 1303 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1304 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 1305 | "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1306 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1307 | "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1308 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1309 | ] 1310 | 1311 | [[package]] 1312 | name = "thread_local" 1313 | version = "0.3.6" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | dependencies = [ 1316 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1317 | ] 1318 | 1319 | [[package]] 1320 | name = "time" 1321 | version = "0.1.42" 1322 | source = "registry+https://github.com/rust-lang/crates.io-index" 1323 | dependencies = [ 1324 | "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", 1325 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1326 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1327 | ] 1328 | 1329 | [[package]] 1330 | name = "tokio" 1331 | version = "0.1.22" 1332 | source = "registry+https://github.com/rust-lang/crates.io-index" 1333 | dependencies = [ 1334 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1335 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1336 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1337 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1338 | "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1339 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1340 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1341 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1342 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1343 | "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 1344 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1345 | ] 1346 | 1347 | [[package]] 1348 | name = "tokio-buf" 1349 | version = "0.1.1" 1350 | source = "registry+https://github.com/rust-lang/crates.io-index" 1351 | dependencies = [ 1352 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1353 | "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1354 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1355 | ] 1356 | 1357 | [[package]] 1358 | name = "tokio-current-thread" 1359 | version = "0.1.6" 1360 | source = "registry+https://github.com/rust-lang/crates.io-index" 1361 | dependencies = [ 1362 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1363 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1364 | ] 1365 | 1366 | [[package]] 1367 | name = "tokio-executor" 1368 | version = "0.1.8" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | dependencies = [ 1371 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1372 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1373 | ] 1374 | 1375 | [[package]] 1376 | name = "tokio-io" 1377 | version = "0.1.12" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | dependencies = [ 1380 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1381 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1382 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1383 | ] 1384 | 1385 | [[package]] 1386 | name = "tokio-reactor" 1387 | version = "0.1.9" 1388 | source = "registry+https://github.com/rust-lang/crates.io-index" 1389 | dependencies = [ 1390 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1391 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1392 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1393 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1394 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1395 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1396 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1397 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1398 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1399 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1400 | "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1401 | ] 1402 | 1403 | [[package]] 1404 | name = "tokio-sync" 1405 | version = "0.1.6" 1406 | source = "registry+https://github.com/rust-lang/crates.io-index" 1407 | dependencies = [ 1408 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1409 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1410 | ] 1411 | 1412 | [[package]] 1413 | name = "tokio-tcp" 1414 | version = "0.1.3" 1415 | source = "registry+https://github.com/rust-lang/crates.io-index" 1416 | dependencies = [ 1417 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1418 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1419 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1420 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1421 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1422 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1423 | ] 1424 | 1425 | [[package]] 1426 | name = "tokio-threadpool" 1427 | version = "0.1.15" 1428 | source = "registry+https://github.com/rust-lang/crates.io-index" 1429 | dependencies = [ 1430 | "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1431 | "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1432 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1433 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1434 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1435 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1436 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1437 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1438 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1439 | ] 1440 | 1441 | [[package]] 1442 | name = "tokio-timer" 1443 | version = "0.2.11" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | dependencies = [ 1446 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1447 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1448 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1449 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "try-lock" 1454 | version = "0.2.2" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | 1457 | [[package]] 1458 | name = "try_from" 1459 | version = "0.3.2" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | dependencies = [ 1462 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1463 | ] 1464 | 1465 | [[package]] 1466 | name = "ulid" 1467 | version = "0.3.1" 1468 | source = "registry+https://github.com/rust-lang/crates.io-index" 1469 | dependencies = [ 1470 | "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1471 | "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1472 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1473 | ] 1474 | 1475 | [[package]] 1476 | name = "unicase" 1477 | version = "2.4.0" 1478 | source = "registry+https://github.com/rust-lang/crates.io-index" 1479 | dependencies = [ 1480 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1481 | ] 1482 | 1483 | [[package]] 1484 | name = "unicode-bidi" 1485 | version = "0.3.4" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | dependencies = [ 1488 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1489 | ] 1490 | 1491 | [[package]] 1492 | name = "unicode-normalization" 1493 | version = "0.1.8" 1494 | source = "registry+https://github.com/rust-lang/crates.io-index" 1495 | dependencies = [ 1496 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1497 | ] 1498 | 1499 | [[package]] 1500 | name = "unicode-xid" 1501 | version = "0.1.0" 1502 | source = "registry+https://github.com/rust-lang/crates.io-index" 1503 | 1504 | [[package]] 1505 | name = "url" 1506 | version = "1.7.2" 1507 | source = "registry+https://github.com/rust-lang/crates.io-index" 1508 | dependencies = [ 1509 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1510 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1511 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1512 | ] 1513 | 1514 | [[package]] 1515 | name = "uuid" 1516 | version = "0.7.4" 1517 | source = "registry+https://github.com/rust-lang/crates.io-index" 1518 | dependencies = [ 1519 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1520 | ] 1521 | 1522 | [[package]] 1523 | name = "vcpkg" 1524 | version = "0.2.7" 1525 | source = "registry+https://github.com/rust-lang/crates.io-index" 1526 | 1527 | [[package]] 1528 | name = "version_check" 1529 | version = "0.1.5" 1530 | source = "registry+https://github.com/rust-lang/crates.io-index" 1531 | 1532 | [[package]] 1533 | name = "want" 1534 | version = "0.2.0" 1535 | source = "registry+https://github.com/rust-lang/crates.io-index" 1536 | dependencies = [ 1537 | "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", 1538 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1539 | "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1540 | ] 1541 | 1542 | [[package]] 1543 | name = "winapi" 1544 | version = "0.2.8" 1545 | source = "registry+https://github.com/rust-lang/crates.io-index" 1546 | 1547 | [[package]] 1548 | name = "winapi" 1549 | version = "0.3.7" 1550 | source = "registry+https://github.com/rust-lang/crates.io-index" 1551 | dependencies = [ 1552 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1553 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1554 | ] 1555 | 1556 | [[package]] 1557 | name = "winapi-build" 1558 | version = "0.1.1" 1559 | source = "registry+https://github.com/rust-lang/crates.io-index" 1560 | 1561 | [[package]] 1562 | name = "winapi-i686-pc-windows-gnu" 1563 | version = "0.4.0" 1564 | source = "registry+https://github.com/rust-lang/crates.io-index" 1565 | 1566 | [[package]] 1567 | name = "winapi-x86_64-pc-windows-gnu" 1568 | version = "0.4.0" 1569 | source = "registry+https://github.com/rust-lang/crates.io-index" 1570 | 1571 | [[package]] 1572 | name = "winreg" 1573 | version = "0.6.2" 1574 | source = "registry+https://github.com/rust-lang/crates.io-index" 1575 | dependencies = [ 1576 | "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1577 | ] 1578 | 1579 | [[package]] 1580 | name = "ws2_32-sys" 1581 | version = "0.2.1" 1582 | source = "registry+https://github.com/rust-lang/crates.io-index" 1583 | dependencies = [ 1584 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1585 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1586 | ] 1587 | 1588 | [[package]] 1589 | name = "yaml-rust" 1590 | version = "0.4.3" 1591 | source = "registry+https://github.com/rust-lang/crates.io-index" 1592 | dependencies = [ 1593 | "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1594 | ] 1595 | 1596 | [metadata] 1597 | "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" 1598 | "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" 1599 | "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" 1600 | "checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" 1601 | "checksum autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "22130e92352b948e7e82a49cdb0aa94f2211761117f29e052dd397c1ac33542b" 1602 | "checksum backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)" = "b5164d292487f037ece34ec0de2fcede2faa162f085dd96d2385ab81b12765ba" 1603 | "checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" 1604 | "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 1605 | "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" 1606 | "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" 1607 | "checksum blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "461f4b879a8eb70c1debf7d0788a9a5ff15f1ea9d25925fea264ef4258bed6b2" 1608 | "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 1609 | "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 1610 | "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" 1611 | "checksum cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "ce400c638d48ee0e9ab75aef7997609ec57367ccfe1463f21bf53c3eca67bf46" 1612 | "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" 1613 | "checksum chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "77d81f58b7301084de3b958691458a53c3f7e0b1d702f77e550b6a88e3a88abe" 1614 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1615 | "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" 1616 | "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" 1617 | "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" 1618 | "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" 1619 | "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" 1620 | "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" 1621 | "checksum crossbeam 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d1c92ff2d7a202d592f5a412d75cf421495c913817781c1cb383bf12a77e185f" 1622 | "checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" 1623 | "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" 1624 | "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" 1625 | "checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8" 1626 | "checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" 1627 | "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" 1628 | "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" 1629 | "checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" 1630 | "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" 1631 | "checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b" 1632 | "checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" 1633 | "checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" 1634 | "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" 1635 | "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" 1636 | "checksum flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "550934ad4808d5d39365e5d61727309bf18b3b02c6c56b729cb92e7dd84bc3d8" 1637 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1638 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1639 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1640 | "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 1641 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1642 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1643 | "checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" 1644 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1645 | "checksum getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "34f33de6f0ae7c9cb5e574502a562e2b512799e32abb801cd1e79ad952b62b49" 1646 | "checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" 1647 | "checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" 1648 | "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" 1649 | "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" 1650 | "checksum hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)" = "7cb44cbce9d8ee4fb36e4c0ad7b794ac44ebaad924b9c8291a63215bb44c2c8f" 1651 | "checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" 1652 | "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 1653 | "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" 1654 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1655 | "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" 1656 | "checksum k8s-openapi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "30e2ac1496d5920d157d0eb5ab453b0af1e6622d5ffa8e7f9c60d435d13342da" 1657 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1658 | "checksum kube 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "999e096714140913deb79850f33a1cd99c38acf0824305604456ccd0bc2c6cde" 1659 | "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" 1660 | "checksum libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d44e80633f007889c7eff624b709ab43c92d708caad982295768a7b13ca3b5eb" 1661 | "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" 1662 | "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" 1663 | "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 1664 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1665 | "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" 1666 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 1667 | "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" 1668 | "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" 1669 | "checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" 1670 | "checksum miniz_oxide 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe2959c5a0747a8d7a56b4444c252ffd2dda5d452cfd147cdfdda73b1c3ece5b" 1671 | "checksum miniz_oxide_c_api 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6c675792957b0d19933816c4e1d56663c341dd9bfa31cb2140ff2267c1d8ecf4" 1672 | "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" 1673 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1674 | "checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" 1675 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1676 | "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" 1677 | "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" 1678 | "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" 1679 | "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 1680 | "checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15" 1681 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 1682 | "checksum openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)" = "b5ba300217253bcc5dc68bed23d782affa45000193866e025329aa8a7a9f05b8" 1683 | "checksum ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518" 1684 | "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" 1685 | "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" 1686 | "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" 1687 | "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" 1688 | "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" 1689 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1690 | "checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af" 1691 | "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" 1692 | "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 1693 | "checksum publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5afecba86dcf1e4fd610246f89899d1924fe12e1e89f555eb7c7f710f3c5ad1d" 1694 | "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" 1695 | "checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" 1696 | "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 1697 | "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" 1698 | "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 1699 | "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" 1700 | "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 1701 | "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" 1702 | "checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" 1703 | "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 1704 | "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1705 | "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 1706 | "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" 1707 | "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 1708 | "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 1709 | "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 1710 | "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 1711 | "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 1712 | "checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" 1713 | "checksum regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88c3d9193984285d544df4a30c23a4e62ead42edf70a4452ceb76dac1ce05c26" 1714 | "checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f" 1715 | "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 1716 | "checksum reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0777154c2c3eb54f5c480db01de845652d941e47191277cc673634c3853939" 1717 | "checksum rust-argon2 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81ed8d04228b44a740c8d46ff872a28e50fff3d659f307ab4da2cc502e019ff3" 1718 | "checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af" 1719 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1720 | "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" 1721 | "checksum safemem 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e133ccc4f4d1cd4f89cc8a7ff618287d56dc7f638b8e38fc32c5fdcadc339dd5" 1722 | "checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" 1723 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 1724 | "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" 1725 | "checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2" 1726 | "checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56" 1727 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1728 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1729 | "checksum serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5626ac617da2f2d9c48af5515a21d5a480dbd151e01bb1c355e26a3e68113" 1730 | "checksum serde-value 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a65a7291a8a568adcae4c10a677ebcedbc6c9cec91c054dee2ce40b0e3290eb" 1731 | "checksum serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "01e69e1b8a631f245467ee275b8c757b818653c6d704cdbcaeb56b56767b529c" 1732 | "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" 1733 | "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" 1734 | "checksum serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "38b08a9a90e5260fe01c6480ec7c811606df6d3a660415808c3c3fa8ed95b582" 1735 | "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1736 | "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 1737 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 1738 | "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" 1739 | "checksum syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ee06ea4b620ab59a2267c6b48be16244a3389f8bfa0986bdd15c35b890b00af3" 1740 | "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" 1741 | "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 1742 | "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 1743 | "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" 1744 | "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" 1745 | "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" 1746 | "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" 1747 | "checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" 1748 | "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" 1749 | "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" 1750 | "checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" 1751 | "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" 1752 | "checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" 1753 | "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" 1754 | "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1755 | "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" 1756 | "checksum ulid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "66239d1f7f19c9af37383f4a28e112727f1a77f6b13dca86faf75c40038e6dd3" 1757 | "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" 1758 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1759 | "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" 1760 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 1761 | "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 1762 | "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" 1763 | "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" 1764 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 1765 | "checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" 1766 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1767 | "checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" 1768 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1769 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1770 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1771 | "checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" 1772 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1773 | "checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d" 1774 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "buck" 3 | version = "0.1.0" 4 | authors = ["Matt Butcher "] 5 | edition = "2018" 6 | 7 | [dependencies] 8 | kube = { version = "0.16.1", features = ["openapi"] } 9 | k8s-openapi = { version = "0.5.1", features = ["v1_15"] } 10 | serde = "1.0" 11 | serde_derive = "1.0" 12 | serde_json = "1.0" 13 | failure = "0.1.5" 14 | ulid = "0.3" 15 | base64 = "0.10" -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:1.37 AS builder 2 | WORKDIR /usr/src/buck 3 | 4 | COPY Cargo.toml . 5 | COPY Cargo.lock . 6 | 7 | # Layer hack: Build an empty program to compile dependencies and place on their own layer. 8 | # This cuts down build time 9 | RUN mkdir -p ./src/ && \ 10 | echo 'fn main() {}' > ./src/main.rs && \ 11 | echo '' > ./src/lib.rs 12 | RUN cargo fetch 13 | RUN cargo build --release && \ 14 | rm -rf ./target/release/.fingerprint/buck-* 15 | 16 | # Build real binaries now 17 | COPY ./src ./src 18 | RUN cargo build --release 19 | 20 | FROM debian:stretch-slim 21 | WORKDIR /usr/app 22 | RUN apt-get update && apt-get install -y openssl && rm -rf /var/lib/apt/lists/* 23 | COPY --from=builder /usr/src/buck/target/release/buck . 24 | CMD ["./buck"] -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2019 The Brigade Authors. 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | REPO ?= brigadecore/buck 2 | TAG ?= latest 3 | 4 | .PHONY: build 5 | build: 6 | docker build -t $(REPO):$(TAG) . 7 | docker push $(REPO) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > ⚠️  This repo contains the source for a component of the Brigade 2 | > v1.x ecosystem. Brigade v1.x reached end-of-life on June 1, 2022 and as a 3 | > result, this component is no longer maintained. 4 | 5 | # BUCK: Brigade Universal Controller for Kubernetes 6 | 7 | BUCK is the fastest way to build new controllers for Kubernetes. Define your CRD (or use an existing resource), and write a few lines of JavaScript for your controller code. 8 | 9 | BUCK uses the event system of [Brigade](https://brigade.sh) to handle Kubernetes events. And it abstracts away the process of modeling and defining resource types. Its ultra-fast Rust server manages the controller (the _informer_ in Kubernetes terminology) and you just write the handling code. If you can install a Helm chart and write a few lines of JS, you can build a Kubernetes controller. 10 | 11 | If you have Brigade installed and configured, BUCK is as easy as 1-2-3. 12 | 13 | ## Step 0. Clone this repository 14 | 15 | You know what to do! `git clone git@github.com:brigadecore/buck.git` 16 | 17 | ## Step 1: Write your JS Controller 18 | 19 | This is a `brigade.js`-flavored script: 20 | 21 | ```javascript 22 | const { events } = require("brigadier"); 23 | 24 | events.on("resource_added", handle); // New resource is created 25 | events.on("resource_modified", handle); // Existing resource is modified 26 | events.on("resource_deleted", handle); // Existing resource is deleted 27 | events.on("resource_error", handle); // Something weird happened, and we think you should know about it 28 | 29 | function handle(e, p) { 30 | let obj = JSON.parse(e.payload); // <-- your Kubernetes object 31 | console.log(obj); 32 | } 33 | ``` 34 | 35 | ## Step 2: Create a new Brigade project 36 | 37 | Creating new Brigade projects is done with `brig project create`. You can tune your project however you want, but this is the most minimal way: 38 | 39 | - Choose `no-VCS` 40 | - Name it (e.g. `buck-test`) 41 | - Answer `No` for `Add Secrets` 42 | - Hit enter for `Auto-generate Generic Gateway secret` 43 | - Leave `Default script ConfigMap name` blank 44 | - Type `brigade.js` when prompted to `Upload a default brigade.js script` (This is the path to the `brigade.js` script you created in Step 1) 45 | - Answer `N` for `Configure advanced options` 46 | 47 | This will give you a brigade ID that looks something like `brigade-XXXXXXXXXXXXXX`. You will need this. 48 | 49 | ## Step 3. Use Helm to Define Your Resource 50 | 51 | Your Helm `values.yaml` file is your entry point. Create the file and add your data: 52 | 53 | ```yaml 54 | project: brigade-XXXXXXXXXXXXXX # The ID created from Step 2 55 | crd: # The CRD that you want to define. 56 | group: my.example.com 57 | version: v1 58 | kind: Book # This should be capitalized 59 | plural: books 60 | ``` 61 | 62 | You can get the Brigade `project` ID by running `brig project list`. 63 | 64 | Now you can install the Helm 3 chart with `helm install $NAME ./charts/buck -f values.yaml`, where `$NAME` is whatever name you want (usually something like `book-controller`). 65 | 66 | # Technical Details 67 | 68 | The BUCK Helm chart does the following things: 69 | 70 | - Creates a CRD (if necessary) 71 | - Creates a Brigade project 72 | - Adds a one-shot controller for your resource type 73 | - Configures the controller to execute for your project 74 | 75 | All you need to do is install the chart. -------------------------------------------------------------------------------- /brigade.js: -------------------------------------------------------------------------------- 1 | const { events, Job } = require("@brigadecore/brigadier"); 2 | const { Check } = require("@brigadecore/brigade-utils"); 3 | 4 | const projectName = "buck"; 5 | const rustImg = "rust:1.38"; 6 | 7 | function build(event, project) { 8 | var build = new Job(`${projectName}-build`, rustImg); 9 | build.tasks = [ 10 | "cd /src", 11 | "cargo test", 12 | ]; 13 | return build; 14 | } 15 | 16 | function runSuite(e, p) { 17 | var check = new Check(e, p, build(e, p), `https://brigadecore.github.io/kashti/builds/${e.buildID}`); 18 | check.run(); 19 | } 20 | 21 | events.on("check_suite:requested", runSuite); 22 | events.on("check_suite:rerequested", runSuite); 23 | 24 | // this enables "/brig run" comments from allowed authors to start a check run 25 | events.on("issue_comment:created", (e, p) => 26 | Check.handleIssueComment(e, p, runSuite) 27 | ); 28 | -------------------------------------------------------------------------------- /brigade.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@brigadecore/brigade-utils": "0.3.0" 4 | } 5 | } -------------------------------------------------------------------------------- /charts/buck/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /charts/buck/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: buck 3 | description: Create a specialized CRD controller for Brigade 4 | type: application 5 | version: 0.1.0 6 | appVersion: latest 7 | -------------------------------------------------------------------------------- /charts/buck/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | This creates a custom controller for your CRD. 2 | 3 | The controller will listen for the resource type {{.Values.crd.group}}/{{.Values.crd.version}}.{{.Values.crd.kind}}. 4 | 5 | Each time a CRD of that type is created, modified, or deleted, a new request will be sent to the Brigade project {{ .Values.project }} 6 | -------------------------------------------------------------------------------- /charts/buck/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* vim: set filetype=mustache: */}} 2 | {{/* 3 | Expand the name of the chart. 4 | */}} 5 | {{- define "buck.name" -}} 6 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} 7 | {{- end -}} 8 | 9 | {{/* 10 | Create a default fully qualified app name. 11 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 12 | If release name contains chart name it will be used as a full name. 13 | */}} 14 | {{- define "buck.fullname" -}} 15 | {{- if .Values.fullnameOverride -}} 16 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} 17 | {{- else -}} 18 | {{- $name := default .Chart.Name .Values.nameOverride -}} 19 | {{- if contains $name .Release.Name -}} 20 | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} 21 | {{- else -}} 22 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} 23 | {{- end -}} 24 | {{- end -}} 25 | {{- end -}} 26 | 27 | {{/* 28 | Create chart name and version as used by the chart label. 29 | */}} 30 | {{- define "buck.chart" -}} 31 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} 32 | {{- end -}} 33 | 34 | {{/* 35 | Common labels 36 | */}} 37 | {{- define "buck.labels" -}} 38 | app.kubernetes.io/name: {{ include "buck.name" . }} 39 | helm.sh/chart: {{ include "buck.chart" . }} 40 | app.kubernetes.io/instance: {{ .Release.Name }} 41 | {{- if .Chart.AppVersion }} 42 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 43 | {{- end }} 44 | app.kubernetes.io/managed-by: {{ .Release.Service }} 45 | {{- end -}} 46 | -------------------------------------------------------------------------------- /charts/buck/templates/crd.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1beta1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | name: {{ .Values.crd.plural | lower -}}.{{- .Values.crd.group }} 5 | spec: 6 | group: {{ .Values.crd.group }} 7 | versions: 8 | - name: {{ .Values.crd.version }} 9 | served: true 10 | storage: true 11 | scope: Namespaced 12 | names: 13 | plural: {{ .Values.crd.plural }} 14 | singular: {{ .Values.crd.kind | lower }} 15 | kind: {{ .Values.crd.kind | title }} 16 | shortNames: [] 17 | -------------------------------------------------------------------------------- /charts/buck/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ template "buck.fullname" . }} 5 | labels: 6 | {{ include "buck.labels" . | indent 4 }} 7 | spec: 8 | replicas: {{ .Values.replicaCount }} 9 | selector: 10 | matchLabels: 11 | app.kubernetes.io/name: {{ include "buck.name" . }} 12 | app.kubernetes.io/instance: {{ .Release.Name }} 13 | template: 14 | metadata: 15 | labels: 16 | app.kubernetes.io/name: {{ include "buck.name" . }} 17 | app.kubernetes.io/instance: {{ .Release.Name }} 18 | spec: 19 | serviceAccountName: {{ template "buck.fullname" . }} 20 | containers: 21 | - name: {{ .Chart.Name }} 22 | image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}" 23 | imagePullPolicy: {{ .Values.image.pullPolicy }} 24 | env: 25 | - name: PROJECT 26 | value: {{ .Values.project }} 27 | - name: GROUP 28 | value: {{ .Values.crd.group }} 29 | - name: VERSION 30 | value: {{ .Values.crd.version }} 31 | - name: KIND 32 | value: {{ .Values.crd.kind }} 33 | - name: PLURAL 34 | value: {{ .Values.crd.plural }} 35 | - name: NAMESPACE 36 | valueFrom: 37 | fieldRef: 38 | fieldPath: metadata.namespace 39 | resources: 40 | {{ toYaml .Values.resources | indent 12 }} 41 | {{- with .Values.nodeSelector }} 42 | nodeSelector: 43 | {{ toYaml . | indent 8 }} 44 | {{- end }} 45 | {{- with .Values.affinity }} 46 | affinity: 47 | {{ toYaml . | indent 8 }} 48 | {{- end }} 49 | {{- with .Values.tolerations }} 50 | tolerations: 51 | {{ toYaml . | indent 8 }} 52 | {{- end }} 53 | -------------------------------------------------------------------------------- /charts/buck/templates/rbac.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ServiceAccount 3 | metadata: 4 | name: {{ template "buck.fullname" . }} 5 | labels: 6 | {{ include "buck.labels" . | indent 4 }} 7 | 8 | {{ if .Values.enableRBAC }} 9 | --- 10 | 11 | apiVersion: rbac.authorization.k8s.io/v1 12 | kind: ClusterRole 13 | metadata: 14 | name: {{ template "buck.fullname" . }} 15 | labels: 16 | {{ include "buck.labels" . | indent 4 }} 17 | rules: 18 | - apiGroups: ["", "apps", "batch", "extensions", "apiextensions.k8s.io", "{{ .Values.crd.group }}"] 19 | resources: ["*"] 20 | verbs: ["*"] 21 | 22 | --- 23 | 24 | apiVersion: rbac.authorization.k8s.io/v1 25 | kind: ClusterRoleBinding 26 | metadata: 27 | name: {{ template "buck.fullname" . }} 28 | labels: 29 | {{ include "buck.labels" . | indent 4 }} 30 | subjects: 31 | - kind: ServiceAccount 32 | name: {{ template "buck.fullname" . }} 33 | namespace: {{ .Release.Namespace }} 34 | roleRef: 35 | kind: ClusterRole 36 | name: {{ template "buck.fullname" . }} 37 | apiGroup: "" 38 | {{ end }} 39 | -------------------------------------------------------------------------------- /charts/buck/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for buck. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | # You should definitely override this. 6 | project: brigade-XXXXXXXXXXXXXX 7 | crd: 8 | group: buck.brigadecore.com # Set this to your domain 9 | version: v1 # v1, v1alpha1, etc 10 | kind: Book # This should be capitalized. It will be lowercased where necessary. 11 | plural: books # Case does not matter here 12 | 13 | # From here down, you probably do not need to edit. 14 | replicaCount: 1 # Usually you only want 1 15 | image: 16 | repository: brigadecore/buck 17 | pullPolicy: Always 18 | 19 | nameOverride: "" 20 | fullnameOverride: "" 21 | 22 | resources: {} 23 | nodeSelector: {} 24 | tolerations: [] 25 | affinity: {} 26 | 27 | enableRBAC: true 28 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Buck: The Brigade Universal Controller for Kubernetes 2 | 3 | Buck is a tool for rapidly prototyping Kubernetes controllers. With a Helm chart and a Brigade script, you can quickly build a complete Kubernetes controller. Say goodbye to thousands of lines of generated Go code! This is your onramp to using your own Custom Resource Definitions (CRDs) inside of Kubernetes. 4 | 5 | This guide explains how to use Buck. 6 | 7 | 1. [Managing Buck Projects](managing_projects.md) -------------------------------------------------------------------------------- /docs/managing_projects.md: -------------------------------------------------------------------------------- 1 | # Managing Buck Projects 2 | 3 | Buck is a Brigade gateway. It provides a listener on the Kubernetes event stream, and then converts relevant activity to Brigade events. 4 | 5 | As with other Brigade tools, Buck requires that you create a Brigade project for each handler. 6 | 7 | ## Installing Projects 8 | 9 | The introduction to Buck suggests this way of creating a new project: 10 | 11 | Run `brig project create` and then answer the prompts as follows. 12 | 13 | - Choose `no-VCS` 14 | - Name it (e.g. `buck-test`) 15 | - Answer `No` for `Add Secrets` 16 | - Hit enter for `Auto-generate Generic Gateway secret` 17 | - Leave `Default script ConfigMap name` blank 18 | - Type `brigade.js` when prompted to `Upload a default brigade.js script` (This is the path to the `brigade.js` script you created in Step 1) 19 | - Answer `N` for `Configure advanced options` 20 | 21 | This is a great way to quickly get your Buck project running. But updating a project requires you to use `kubectl` to update the Brigade javascript that is stored in the secret. Likewise, you can store the script in a `ConfigMap` and set `Default script ConfigMap name` to point to that ConfigMap. With this method, you merely need to edit the script in the ConfigMap and use `kubectl apply` to update it. This method is covered more below. 22 | 23 | Finally, you may wish to use a Git repository to store your `brigade.js` file. This method is covered extensively in the Brigade documentation. 24 | 25 | ### Using a ConfigMap to store the Brigade script 26 | 27 | You can load your `brigade.js` file into a dedicated ConfigMap. Assuming you have a `brigade.js` file at the path `example/brigade.js`, use `kubectl` to create the ConfigMap and load it in your cluster: 28 | 29 | ```console 30 | $ kubectl create configmap buck-script --from-file=brigade.js=examples/brigade.js 31 | ``` 32 | 33 | Then create a new project, selecting slightly different options. Run `brig project create` and then answer the prompts as follows. 34 | 35 | - Choose `no-VCS` 36 | - Name it (e.g. `buck-test`) 37 | - Answer `No` for `Add Secrets` 38 | - Hit enter for `Auto-generate Generic Gateway secret` 39 | - Set `Default script ConfigMap name` to `buck-script` (the name you gave in the `kubectl` command above) 40 | - When prompted to `Upload a default brigade.js script`, leave it blank 41 | - Answer `N` for `Configure advanced options` 42 | 43 | In this case, Buck will now read the `brigade.js` in the ConfigMap you created above. Editing the `brigade.js` script can be done two ways: 44 | 45 | - You can edit the script inside of the ConfigMap using `kubectl edit configmap buck-script` 46 | - Or you can edit the script locally and recreate or update the ConfigMap 47 | 48 | For more on using a ConfigMap, see [the Brigade documentation](https://docs.brigade.sh/topics/projects/) 49 | 50 | ### Storing a Brigade script in Git 51 | 52 | The most common way of storing Brigade scripts is to put them in a Git repository and point your project configuration to that repository. The Briagde [Quickstart](https://docs.brigade.sh/intro/quickstart/#using-brigade-with-a-version-control-system) explains this process. 53 | 54 | You must create a Git repository and store your `brigade.js` file at the root of that repository. If you are using a `brigade.json` file to include additional dependencies, this is the only method that will support adding `brigade.json`. 55 | 56 | Once you have your Git repository, you can set up your project to reference that repository. Run `brig project create` and provide answers like this: 57 | 58 | ```console 59 | $ brig project create 60 | ? VCS or no-VCS project? *VCS* 61 | ? Project Name *myname/myrepo* 62 | ? Full repository name *github.com/myname/myrepo* 63 | ? Clone URL (https://github.com/your/repo.git) *https://github.com/myname/myrepo.git* 64 | ? Add secrets? No 65 | ? Where should the project's shared secret come from? Auto-generate one now 66 | Auto-generated a Shared Secret: "XXXXXXXXXXXXXXXXX" 67 | ? Configure GitHub Access? No 68 | ? Configure advanced options No 69 | Project ID: brigade-XXXXXXXXX 70 | ``` 71 | 72 | The above will create a project that pulls its `brigade.js` (and `brigade.json`) from the `myname/myrepo` repository at GitHub. -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | This is a basic example of BUCK. 2 | 3 | STOP: You probably want to just use the Helm chart. This is for setting up a development 4 | environment. 5 | 6 | This document walks through the process of setting up BUCK to run locally. 7 | 8 | To use this example: 9 | 10 | 1. Create the `books` CRD: `kubectl create -f books-crd.yaml` 11 | 2. Run `brig project create` to create a new project 12 | - Choose no-VCS 13 | - Name it `bookdemo` 14 | - Answer `No` for `Add Secrets` 15 | - Auto-generate Generic Gateway secret 16 | - Leave `Default script ConfigMap name` blank 17 | - Type `examples/brigade.js` when prompted to `Upload a default brigade.js script` 18 | - Answer `N` for `Configure advanced options` 19 | 3. Execute `./run.sh` and leave it running. This will start Buck in the foreground 20 | 4. In another terminal, run `kubectl create -f examples/moby-dick.yaml` 21 | 22 | Now you should be able to use `brig build list` to see your new build, or `kubectl` to troubleshoot. -------------------------------------------------------------------------------- /examples/book-crd.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiextensions.k8s.io/v1beta1 2 | kind: CustomResourceDefinition 3 | metadata: 4 | name: books.buck.brigadecore.com 5 | spec: 6 | group: buck.brigadecore.com 7 | versions: 8 | - name: v1 9 | served: true 10 | storage: true 11 | scope: Namespaced 12 | names: 13 | plural: books 14 | singular: book 15 | kind: Book 16 | shortNames: 17 | - bk 18 | -------------------------------------------------------------------------------- /examples/brigade.js: -------------------------------------------------------------------------------- 1 | const { events } = require("brigadier"); 2 | 3 | events.on("resource_added", handle); 4 | events.on("resource_modified", handle); 5 | events.on("resource_deleted", handle); 6 | events.on("resource_error", handle); 7 | 8 | function handle(e, p) { 9 | let obj = JSON.parse(e.payload); // <-- your Kubernetes object 10 | console.log(obj); 11 | } -------------------------------------------------------------------------------- /examples/moby-dick.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: buck.brigadecore.com/v1 2 | kind: Book 3 | metadata: 4 | name: moby-dick 5 | spec: 6 | title: Moby Dick, or the White Whale 7 | author: Herman Mellville 8 | -------------------------------------------------------------------------------- /examples/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export NAMESPACE=default 4 | export PROJECT=brigade-08f47247d225ac25e8c8e0a231e2c5e84babe06271939e804aa9a2 5 | export GROUP=buck.brigadecore.com 6 | export VERSION=v1 7 | export KIND=Book 8 | export PLURAL=books 9 | 10 | cargo run -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | extern crate serde_json; 3 | extern crate base64; 4 | extern crate ulid; 5 | 6 | use kube::{ 7 | api::{Api, Informer, Object, PostParams, RawApi, WatchEvent}, 8 | client::APIClient, 9 | config, 10 | }; 11 | 12 | type KubeObj = Object; 13 | 14 | fn main() { 15 | let kubeconfig = config::load_kube_config() 16 | .or_else(|_| config::incluster_config()) 17 | .expect("kubeconfig failed to load"); 18 | let client = APIClient::new(kubeconfig); 19 | let namespace = Some(std::env::var("NAMESPACE").unwrap_or_else(|_| "default".into())); 20 | let project = std::env::var("PROJECT").expect("PROJECT env var is required"); 21 | 22 | // default is pod/v1 23 | let group = std::env::var("GROUP").unwrap_or_else(|_| "".into()); 24 | let version = std::env::var("VERSION").unwrap_or_else(|_| "v1".into()); 25 | let kind = std::env::var("KIND").unwrap_or_else(|_| "pod".into()); 26 | let plural = std::env::var("PLURAL").unwrap_or_else(|_| "pods".into()); 27 | let prefix = std::env::var("PREFIX") 28 | .or_else(|e| { 29 | if kind == "pod" { 30 | return Ok("api".to_string()); 31 | } 32 | Err(e) 33 | }) 34 | .unwrap_or_else(|_| "apis".into()) 35 | .to_string(); 36 | 37 | let resource = RawApi { 38 | namespace: namespace.clone(), 39 | group, 40 | version, 41 | prefix, 42 | resource: plural, 43 | }; 44 | 45 | // Create our informer and start listening. 46 | let informer = Informer::raw(client.clone(), resource) 47 | .init() 48 | .expect("informer init failed"); 49 | loop { 50 | informer.poll().expect("informer poll failed"); 51 | while let Some(event) = informer.pop() { 52 | handle( 53 | client.clone(), 54 | event, 55 | project.clone(), 56 | namespace.clone().unwrap(), 57 | ); 58 | } 59 | } 60 | } 61 | 62 | fn handle(client: APIClient, event: WatchEvent, project: String, namespace: String) { 63 | match event { 64 | WatchEvent::Added(o) => create_secret(client, "resource_added", o, project, namespace), 65 | WatchEvent::Modified(o) => { 66 | create_secret(client, "resource_modified", o, project, namespace) 67 | } 68 | WatchEvent::Deleted(o) => create_secret(client, "resource_deleted", o, project, namespace), 69 | WatchEvent::Error(e) => println!("Error: {}", e), 70 | } 71 | } 72 | 73 | fn create_secret( 74 | client: APIClient, 75 | event: &str, 76 | payload: KubeObj, 77 | project: String, 78 | namespace: String, 79 | ) { 80 | println!("Event {} on resource {}", event, payload.metadata.name); 81 | let secret = generate_secret(&payload, project.as_str(), event); 82 | let data = serde_json::to_vec(&secret); 83 | println!("{}", serde_json::to_string_pretty(&secret).unwrap()); 84 | if data.is_err() { 85 | println!("Error serializing secret: {}", data.unwrap_err()); 86 | return; 87 | } 88 | 89 | let pp = PostParams::default(); 90 | match Api::v1Secret(client) 91 | .within(namespace.as_str()) 92 | .create(&pp, data.unwrap()) 93 | { 94 | Ok(_) => println!("Sent Brigade event"), 95 | Err(e) => println!("Error sending event: {}", e), 96 | }; 97 | } 98 | 99 | fn generate_secret(payload: &KubeObj, project: &str, event: &str) -> serde_json::Value { 100 | let uid = ulid::Ulid::new().to_string().to_ascii_lowercase(); 101 | let name = format!("buck-{}", uid); 102 | let encoded_payload = serde_json::to_string(payload).unwrap_or_else(|_| "".to_string()); 103 | 104 | // Currently have not implemented clone_url or log_level 105 | json!({ 106 | "apiVersion": "v1", 107 | "kind": "Secret", 108 | "metadata": { 109 | "name": name, 110 | "labels": { 111 | "heritage": "brigade", 112 | "project": project, 113 | "build": uid.as_str(), 114 | "component": "build" 115 | } 116 | }, 117 | "type": "brigade.sh/build", 118 | "data": { 119 | "event_provider": base64::encode("buck"), 120 | "event_type": base64::encode(event), 121 | "project_id": base64::encode(project), 122 | "build_name": base64::encode(project), 123 | "build_id": base64::encode(uid.as_str()), 124 | "payload": base64::encode(encoded_payload.as_str()), 125 | "commit_ref": base64::encode("master") 126 | } 127 | }) 128 | } 129 | 130 | #[cfg(test)] 131 | mod test { 132 | use kube::api::Object; 133 | #[test] 134 | fn test_generate_secret() { 135 | let payload: Object = Object { 136 | types: kube::api::TypeMeta { 137 | apiVersion: Some("v1".into()), 138 | kind: Some("Secret".into()), 139 | }, 140 | metadata: kube::api::ObjectMeta::default(), 141 | spec: json!({}), 142 | status: None, 143 | }; 144 | let sec = super::generate_secret(&payload, "project", "event"); 145 | assert_eq!("Secret", sec["kind"]); 146 | let uid = &sec["metadata"]["labels"]["build"].as_str(); 147 | let name = format!("buck-{}", uid.expect("string data")); 148 | assert_eq!(name, sec["metadata"]["name"]); 149 | } 150 | } 151 | --------------------------------------------------------------------------------