From nobody Tue Feb 15 21:25:34 2022 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 078741948940; Tue, 15 Feb 2022 21:25:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JyvJZ6nK0z3JQl; Tue, 15 Feb 2022 21:25:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644960335; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=co7Qzro7e8/mBrphEk35eHGhEGawYToGpMI7Y6/y7ic=; b=SnClf7zCoeukVnPAjSgJjxTb7SyDdz95hDd2bWk00RDSxZJ+ZVRkC0YasjsWLIWCcsZTx1 DMqmoGlU8TynOeqBN9Ct0nI/eQDPONycfUis1VT6zl+mkOV2mybpgebOwPB6N3hWJkuigV j+NCCMNPuoYQ+0/tnjpkCNScqf/XV6PaKCOgFVLI/ndgAIwi34/ATOHueXJDbUg3ylCiEM 5c12WNOZXSzbuYTFfkAf3HKA1DRkPSPxHZnfbJIwFUhpzuamrVceOFEHyeaGAchuBZqBfa SUXgylI3pxsX7U7Ln7c7ihXzDBcuUoibvmNZVThWqt2ZNo4I5xR8y/kN5xTQig== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C9AA71A56; Tue, 15 Feb 2022 21:25:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21FLPYsb002747; Tue, 15 Feb 2022 21:25:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21FLPYJ5002746; Tue, 15 Feb 2022 21:25:34 GMT (envelope-from git) Date: Tue, 15 Feb 2022 21:25:34 GMT Message-Id: <202202152125.21FLPYJ5002746@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Emanuel Haupt Subject: git: 6f16c9c835c7 - main - sysutils/bkt: Add new port List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ehaupt X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6f16c9c835c7c33e302e5e2b2a559a00d210944d Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644960335; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=co7Qzro7e8/mBrphEk35eHGhEGawYToGpMI7Y6/y7ic=; b=c9mNLDVLDqyLEBo/oppVMF/MC8cHn64j9YYmiVnBjDKMIrC2Tzw6gNaVCxIeW8B+Sqb6O2 PceA2cJPtLev0Nb2UXiKbOX53PG22og1Q60iySslJU8pTifClyYvUi1qqWMKZAXDLV0dQt XJCtFcAwnLhVt5m/Xp7+eRwBshnWK0S+Qe60cRlrYB+vZeA41hkWo/QBLTHDm9++WFjk4n rFW8UyS/96UTCEoQdc+m1NYV/RiJeb6VYscZtub0r1aK7xa1qhBhKO4r1A0aXGVZWLe6gG VzY5eCSsdVSuv7lCnSxRrelthacwBW54NSuzKz7N8w2lP3dYZlZnYLjvS6aqXQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1644960335; a=rsa-sha256; cv=none; b=VyjpkLh6y6F89iSDDttrbjVgwv7/1h0/jIdFNqS0dpXBsYpEVN1ICNp0iAjrbKlbJT+6ZW FY5oiK8XzWMldWv8vp+26ElDzVe0zTddOa3zocC3jLdIiVy4/jas7DUn89jcLOZVyaJibW LBAVq95KOuMIaohjcHf1qJ/GG6HwsZBWOzu/5kpy8D8WEN1J3hVFHZiVS7vs659lD97I0o AblARiKwBerF3cfF5E+UW/7Lg5PqSqcypRWnXPfEpFcaZqhilutL63FucnvgaquDS0x9G1 vlef2Cah1nEVecP2dWmbnnsAM82CzDI+nbyZ9QODOocXEEcajM3delGjRE9bHA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by ehaupt: URL: https://cgit.FreeBSD.org/ports/commit/?id=6f16c9c835c7c33e302e5e2b2a559a00d210944d commit 6f16c9c835c7c33e302e5e2b2a559a00d210944d Author: Emanuel Haupt AuthorDate: 2022-02-15 21:24:29 +0000 Commit: Emanuel Haupt CommitDate: 2022-02-15 21:24:29 +0000 sysutils/bkt: Add new port bkt (pronounced bucket) is a subprocess caching utility written in Rust, inspired by bash-cache. Wrapping expensive process invocations with bkt allows callers to reuse recent invocations without complicating their application logic. This can be useful in shell prompts, interactive applications such as fzf, and long-running programs that poll other processes. When bkt is passed a command it hasn't seen before (or recently) it executes the command synchronously and caches its stdout, stderr, and exit code. Calling bkt again with the same command reads the data from the cache and outputs it as if the command had been run again. --- sysutils/Makefile | 1 + sysutils/bkt/Makefile | 22 ++++++++++ sysutils/bkt/Makefile.crates | 49 +++++++++++++++++++++ sysutils/bkt/distinfo | 101 +++++++++++++++++++++++++++++++++++++++++++ sysutils/bkt/pkg-descr | 13 ++++++ 5 files changed, 186 insertions(+) diff --git a/sysutils/Makefile b/sysutils/Makefile index fb12d4ef6954..733d4387b019 100644 --- a/sysutils/Makefile +++ b/sysutils/Makefile @@ -123,6 +123,7 @@ SUBDIR += biosfont SUBDIR += bkpupsd SUBDIR += bksh + SUBDIR += bkt SUBDIR += boot-extract SUBDIR += boxbackup-devel SUBDIR += bpytop diff --git a/sysutils/bkt/Makefile b/sysutils/bkt/Makefile new file mode 100644 index 000000000000..61ec47c1d519 --- /dev/null +++ b/sysutils/bkt/Makefile @@ -0,0 +1,22 @@ +# Created by: Emanuel Haupt + +PORTNAME= bkt +PORTVERSION= 0.5.2 +CATEGORIES= sysutils + +MAINTAINER= ehaupt@FreeBSD.org +COMMENT= Subprocess caching utility + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= cargo +USE_GITHUB= yes +GH_ACCOUNT= dimo414 + +PLIST_FILES= bin/bkt + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/bkt + +.include diff --git a/sysutils/bkt/Makefile.crates b/sysutils/bkt/Makefile.crates new file mode 100644 index 000000000000..5a6687bcba5c --- /dev/null +++ b/sysutils/bkt/Makefile.crates @@ -0,0 +1,49 @@ +CARGO_CRATES= anyhow-1.0.38 \ + autocfg-1.0.1 \ + bincode-1.3.1 \ + bitflags-1.2.1 \ + byteorder-1.4.2 \ + cfg-if-1.0.0 \ + clap-3.0.0 \ + clap_derive-3.0.0 \ + filetime-0.2.14 \ + getrandom-0.1.16 \ + getrandom-0.2.2 \ + hashbrown-0.11.2 \ + heck-0.3.3 \ + humantime-2.1.0 \ + indexmap-1.7.0 \ + itoa-0.4.7 \ + lazy_static-1.4.0 \ + libc-0.2.86 \ + memchr-2.4.1 \ + os_str_bytes-6.0.0 \ + ppv-lite86-0.2.10 \ + proc-macro-error-1.0.4 \ + proc-macro-error-attr-1.0.4 \ + proc-macro2-1.0.36 \ + quote-1.0.9 \ + rand-0.7.3 \ + rand-0.8.3 \ + rand_chacha-0.2.2 \ + rand_chacha-0.3.0 \ + rand_core-0.5.1 \ + rand_core-0.6.2 \ + rand_hc-0.2.0 \ + rand_hc-0.3.0 \ + redox_syscall-0.2.5 \ + ryu-1.0.5 \ + serde-1.0.123 \ + serde_derive-1.0.123 \ + serde_json-1.0.62 \ + syn-1.0.84 \ + test_dir-0.1.0 \ + textwrap-0.14.2 \ + unicode-segmentation-1.8.0 \ + unicode-xid-0.2.1 \ + version_check-0.9.3 \ + wasi-0.9.0+wasi-snapshot-preview1 \ + wasi-0.10.2+wasi-snapshot-preview1 \ + winapi-0.3.9 \ + winapi-i686-pc-windows-gnu-0.4.0 \ + winapi-x86_64-pc-windows-gnu-0.4.0 diff --git a/sysutils/bkt/distinfo b/sysutils/bkt/distinfo new file mode 100644 index 000000000000..c2c239266003 --- /dev/null +++ b/sysutils/bkt/distinfo @@ -0,0 +1,101 @@ +TIMESTAMP = 1644953250 +SHA256 (rust/crates/anyhow-1.0.38.crate) = afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1 +SIZE (rust/crates/anyhow-1.0.38.crate) = 30417 +SHA256 (rust/crates/autocfg-1.0.1.crate) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a +SIZE (rust/crates/autocfg-1.0.1.crate) = 12908 +SHA256 (rust/crates/bincode-1.3.1.crate) = f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d +SIZE (rust/crates/bincode-1.3.1.crate) = 26121 +SHA256 (rust/crates/bitflags-1.2.1.crate) = cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693 +SIZE (rust/crates/bitflags-1.2.1.crate) = 16745 +SHA256 (rust/crates/byteorder-1.4.2.crate) = ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b +SIZE (rust/crates/byteorder-1.4.2.crate) = 22148 +SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd +SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934 +SHA256 (rust/crates/clap-3.0.0.crate) = d17bf219fcd37199b9a29e00ba65dfb8cd5b2688b7297ec14ff829c40ac50ca9 +SIZE (rust/crates/clap-3.0.0.crate) = 189026 +SHA256 (rust/crates/clap_derive-3.0.0.crate) = e1b9752c030a14235a0bd5ef3ad60a1dcac8468c30921327fc8af36b20c790b9 +SIZE (rust/crates/clap_derive-3.0.0.crate) = 24684 +SHA256 (rust/crates/filetime-0.2.14.crate) = 1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8 +SIZE (rust/crates/filetime-0.2.14.crate) = 14358 +SHA256 (rust/crates/getrandom-0.1.16.crate) = 8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce +SIZE (rust/crates/getrandom-0.1.16.crate) = 25077 +SHA256 (rust/crates/getrandom-0.2.2.crate) = c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8 +SIZE (rust/crates/getrandom-0.2.2.crate) = 26010 +SHA256 (rust/crates/hashbrown-0.11.2.crate) = ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e +SIZE (rust/crates/hashbrown-0.11.2.crate) = 85713 +SHA256 (rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c +SIZE (rust/crates/heck-0.3.3.crate) = 10260 +SHA256 (rust/crates/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4 +SIZE (rust/crates/humantime-2.1.0.crate) = 16749 +SHA256 (rust/crates/indexmap-1.7.0.crate) = bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5 +SIZE (rust/crates/indexmap-1.7.0.crate) = 50363 +SHA256 (rust/crates/itoa-0.4.7.crate) = dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736 +SIZE (rust/crates/itoa-0.4.7.crate) = 12099 +SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646 +SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443 +SHA256 (rust/crates/libc-0.2.86.crate) = b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c +SIZE (rust/crates/libc-0.2.86.crate) = 522986 +SHA256 (rust/crates/memchr-2.4.1.crate) = 308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a +SIZE (rust/crates/memchr-2.4.1.crate) = 64977 +SHA256 (rust/crates/os_str_bytes-6.0.0.crate) = 8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64 +SIZE (rust/crates/os_str_bytes-6.0.0.crate) = 21046 +SHA256 (rust/crates/ppv-lite86-0.2.10.crate) = ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857 +SIZE (rust/crates/ppv-lite86-0.2.10.crate) = 20915 +SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c +SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293 +SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869 +SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971 +SHA256 (rust/crates/proc-macro2-1.0.36.crate) = c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029 +SIZE (rust/crates/proc-macro2-1.0.36.crate) = 41411 +SHA256 (rust/crates/quote-1.0.9.crate) = c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7 +SIZE (rust/crates/quote-1.0.9.crate) = 25042 +SHA256 (rust/crates/rand-0.7.3.crate) = 6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03 +SIZE (rust/crates/rand-0.7.3.crate) = 112246 +SHA256 (rust/crates/rand-0.8.3.crate) = 0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e +SIZE (rust/crates/rand-0.8.3.crate) = 84493 +SHA256 (rust/crates/rand_chacha-0.2.2.crate) = f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402 +SIZE (rust/crates/rand_chacha-0.2.2.crate) = 13267 +SHA256 (rust/crates/rand_chacha-0.3.0.crate) = e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d +SIZE (rust/crates/rand_chacha-0.3.0.crate) = 13920 +SHA256 (rust/crates/rand_core-0.5.1.crate) = 90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19 +SIZE (rust/crates/rand_core-0.5.1.crate) = 21116 +SHA256 (rust/crates/rand_core-0.6.2.crate) = 34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7 +SIZE (rust/crates/rand_core-0.6.2.crate) = 21708 +SHA256 (rust/crates/rand_hc-0.2.0.crate) = ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c +SIZE (rust/crates/rand_hc-0.2.0.crate) = 11670 +SHA256 (rust/crates/rand_hc-0.3.0.crate) = 3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73 +SIZE (rust/crates/rand_hc-0.3.0.crate) = 11780 +SHA256 (rust/crates/redox_syscall-0.2.5.crate) = 94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9 +SIZE (rust/crates/redox_syscall-0.2.5.crate) = 23449 +SHA256 (rust/crates/ryu-1.0.5.crate) = 71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e +SIZE (rust/crates/ryu-1.0.5.crate) = 49570 +SHA256 (rust/crates/serde-1.0.123.crate) = 92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae +SIZE (rust/crates/serde-1.0.123.crate) = 74379 +SHA256 (rust/crates/serde_derive-1.0.123.crate) = 9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31 +SIZE (rust/crates/serde_derive-1.0.123.crate) = 54122 +SHA256 (rust/crates/serde_json-1.0.62.crate) = ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486 +SIZE (rust/crates/serde_json-1.0.62.crate) = 114960 +SHA256 (rust/crates/syn-1.0.84.crate) = ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b +SIZE (rust/crates/syn-1.0.84.crate) = 235025 +SHA256 (rust/crates/test_dir-0.1.0.crate) = e571ebf9127a9da821890a9fa8a8ef777fce3e0f959ff6949cf06ca8b736381d +SIZE (rust/crates/test_dir-0.1.0.crate) = 4241 +SHA256 (rust/crates/textwrap-0.14.2.crate) = 0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80 +SIZE (rust/crates/textwrap-0.14.2.crate) = 52016 +SHA256 (rust/crates/unicode-segmentation-1.8.0.crate) = 8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b +SIZE (rust/crates/unicode-segmentation-1.8.0.crate) = 94011 +SHA256 (rust/crates/unicode-xid-0.2.1.crate) = f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564 +SIZE (rust/crates/unicode-xid-0.2.1.crate) = 14392 +SHA256 (rust/crates/version_check-0.9.3.crate) = 5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe +SIZE (rust/crates/version_check-0.9.3.crate) = 12547 +SHA256 (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519 +SIZE (rust/crates/wasi-0.9.0+wasi-snapshot-preview1.crate) = 31521 +SHA256 (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6 +SIZE (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505 +SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419 +SIZE (rust/crates/winapi-0.3.9.crate) = 1200382 +SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 +SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815 +SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f +SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998 +SHA256 (dimo414-bkt-0.5.2_GH0.tar.gz) = e6acab9ae6a617fe471dceed9f69064e1f0cb3a8eb93d82e2087faeab4d48ee8 +SIZE (dimo414-bkt-0.5.2_GH0.tar.gz) = 27405 diff --git a/sysutils/bkt/pkg-descr b/sysutils/bkt/pkg-descr new file mode 100644 index 000000000000..ebea8633860a --- /dev/null +++ b/sysutils/bkt/pkg-descr @@ -0,0 +1,13 @@ +bkt (pronounced bucket) is a subprocess caching utility written in Rust, +inspired by bash-cache. +Wrapping expensive process invocations with bkt allows callers to reuse recent +invocations without complicating their application logic. This can be useful in +shell prompts, interactive applications such as fzf, and long-running programs +that poll other processes. + +When bkt is passed a command it hasn't seen before (or recently) it executes +the command synchronously and caches its stdout, stderr, and exit code. +Calling bkt again with the same command reads the data from the cache and +outputs it as if the command had been run again. + +WWW: https://github.com/dimo414/bkt