From 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:41:41 +0200 Subject: Merging upstream version 1.70.0+dfsg2. Signed-off-by: Daniel Baumann --- vendor/gix-prompt/.cargo-checksum.json | 1 + vendor/gix-prompt/CHANGELOG.md | 197 +++++++++++++++++++++++++++++++++ vendor/gix-prompt/Cargo.toml | 52 +++++++++ vendor/gix-prompt/README.md | 4 + vendor/gix-prompt/src/lib.rs | 76 +++++++++++++ vendor/gix-prompt/src/types.rs | 84 ++++++++++++++ vendor/gix-prompt/src/unix.rs | 93 ++++++++++++++++ 7 files changed, 507 insertions(+) create mode 100644 vendor/gix-prompt/.cargo-checksum.json create mode 100644 vendor/gix-prompt/CHANGELOG.md create mode 100644 vendor/gix-prompt/Cargo.toml create mode 100644 vendor/gix-prompt/README.md create mode 100644 vendor/gix-prompt/src/lib.rs create mode 100644 vendor/gix-prompt/src/types.rs create mode 100644 vendor/gix-prompt/src/unix.rs (limited to 'vendor/gix-prompt') diff --git a/vendor/gix-prompt/.cargo-checksum.json b/vendor/gix-prompt/.cargo-checksum.json new file mode 100644 index 000000000..411a8cf59 --- /dev/null +++ b/vendor/gix-prompt/.cargo-checksum.json @@ -0,0 +1 @@ +{"files":{"CHANGELOG.md":"f46adea2f355e9ceccb70f4f55dbfa52c1e56aed168598031ecd09b5763e9069","Cargo.toml":"03af86aca9af8768f7a23f5c3ed503104f2873d910353e48e3cec21338e84acb","README.md":"d88a6c8ee4d438ecda42df0e9a589e13dfc0816c42605afb0202346f5e9947c1","src/lib.rs":"9eb62b7e24c420e5a866ca3991dcfccf933190437badc66258fa7fe31694a35c","src/types.rs":"e13aa7f5aea111af916a80e32c0957de398462a63a719eba4e50f3aef5440cbf","src/unix.rs":"c4729c2a84be0c37d0df7fa1b3f2d0c693472cde47f1ddcb936a01cd677fd7d7"},"package":"a20cebf73229debaa82574c4fd20dcaf00fa8d4bfce823a862c4e990d7a0b5b4"} \ No newline at end of file diff --git a/vendor/gix-prompt/CHANGELOG.md b/vendor/gix-prompt/CHANGELOG.md new file mode 100644 index 000000000..416b11cad --- /dev/null +++ b/vendor/gix-prompt/CHANGELOG.md @@ -0,0 +1,197 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## 0.3.3 (2023-02-17) + +### Bug Fixes + + - note that crates have been renamed from `git-*` to `gix-*`. + This also means that the `git-*` prefixed crates of the `gitoxide` project + are effectively unmaintained. + Use the crates with the `gix-*` prefix instead. + + If you were using `git-repository`, then `gix` is its substitute. + +## 0.3.2 (2023-02-17) + +### New Features (BREAKING) + + - upgrade edition to 2021 in most crates. + MSRV for this is 1.56, and we are now at 1.60 so should be compatible. + This isn't more than a patch release as it should break nobody + who is adhering to the MSRV, but let's be careful and mark it + breaking. + + Note that `git-features` and `git-pack` are still on edition 2018 + as they make use of a workaround to support (safe) mutable access + to non-overlapping entries in a slice which doesn't work anymore + in edition 2021. + +### Documentation + + - fix typos + +### Commit Statistics + + + + - 105 commits contributed to the release over the course of 172 calendar days. + - 2 commits were understood as [conventional](https://www.conventionalcommits.org). + - 3 unique issues were worked on: [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470), [#691](https://github.com/Byron/gitoxide/issues/691) + +### Commit Details + + + +
view details + + * **[#450](https://github.com/Byron/gitoxide/issues/450)** + - fix warnings on windows ([`b8b4371`](https://github.com/Byron/gitoxide/commit/b8b4371be7802742b5cffdbc3acf8c197521ffbc)) + - Use reference `git-prompt::Options` to allow them to be re-used ([`51930a2`](https://github.com/Byron/gitoxide/commit/51930a237ec472fff34c639c9caffe74ed12ab2a)) + - always compile prompting support in ([`bd0ea68`](https://github.com/Byron/gitoxide/commit/bd0ea68225a73fb83c9fc1b8594fc6ad288a77a9)) + - set version of git-prompt to 0.1 and turn prompting on ([`7657693`](https://github.com/Byron/gitoxide/commit/7657693b8e23dfb69d6da4376bcd1b8e4e264f7e)) + - validate askpass program works ([`bb1acf4`](https://github.com/Byron/gitoxide/commit/bb1acf40ff9da965b87da6cfc695957b668f14d3)) + - getting closer to using askpass correctly ([`1ddcb50`](https://github.com/Byron/gitoxide/commit/1ddcb50a8405a9293ae01bca20047d3a3a9a56c4)) + - a test to validate askpass support ([`a023d7d`](https://github.com/Byron/gitoxide/commit/a023d7d2541ba4bfa6ecf1cea99be5c8eeb7a3d5)) + - refactor ([`77026d7`](https://github.com/Byron/gitoxide/commit/77026d76c93b4a1f05011fac94e1fb8664b84c89)) + - askpass example ([`1efb139`](https://github.com/Byron/gitoxide/commit/1efb13984c78f39c72c6bb691403011e8ad7654d)) + - tests for `Options::apply_environment()` ([`623d4a5`](https://github.com/Byron/gitoxide/commit/623d4a55b9590ff6496b7383925ec89d9d2e5d3d)) + - A for now untested way to adjust options with environment variables ([`af08b38`](https://github.com/Byron/gitoxide/commit/af08b380beff90c11900ef30e7db3ffd35a352ed)) + - refactor ([`0fa676a`](https://github.com/Byron/gitoxide/commit/0fa676a9d880eb23dcf096af09ac9b5c01b72c63)) + - a flexible `Mode` enum to handle all possible states ([`15bb50c`](https://github.com/Byron/gitoxide/commit/15bb50c9b9769a8efa8e38e51b8be4af3798eab7)) + - sketch askpass path ([`f8c8cbb`](https://github.com/Byron/gitoxide/commit/f8c8cbb4f3e3c062073af51f3a01e30e467187e2)) + - cargo-diet for git-prompt ([`db2d8ae`](https://github.com/Byron/gitoxide/commit/db2d8ae65cc94f9cd93c4f88378b38b0f734bc41)) + - refactor ([`b346169`](https://github.com/Byron/gitoxide/commit/b346169e0ca32d5568a1c924c8c291384a544daa)) + - See if not having cargo-run output in program invocation fixes it on macos ([`a8d9d12`](https://github.com/Byron/gitoxide/commit/a8d9d123f2bfdebd00a0ca27cee21916ca7e44e4)) + - add missing docs ([`f10623b`](https://github.com/Byron/gitoxide/commit/f10623bf7b574876b1fb6c75cf35890c14e2c091)) + - Also setup the tty accordingly to not echo input ([`6a55a7b`](https://github.com/Byron/gitoxide/commit/6a55a7bc338df841dd706a31e1bd2631ece4dddd)) + - save state with restore and password reading, without hiding ([`a4ec2e2`](https://github.com/Byron/gitoxide/commit/a4ec2e2b279b15de15dcea6aad93e979f1019c5e)) + - restrict tests to unix only ([`dc2765f`](https://github.com/Byron/gitoxide/commit/dc2765f27d5c684ca46960db04fedfd26aae56a8)) + - properly trim the username at the end, and test for it ([`141aaa3`](https://github.com/Byron/gitoxide/commit/141aaa3b9ee90dd91e2bd03de7ca464297ab38f3)) + - basic TTY based prompting, without hiding of secrets ([`7c0297f`](https://github.com/Byron/gitoxide/commit/7c0297f5c0716bcdf274165de0decf998ec76d34)) + - the first successful assertion, showing that expectrl can intercept the tty ([`8582697`](https://github.com/Byron/gitoxide/commit/8582697cc21adc5eeb67155a0e4b0e2780d37beb)) + - frame for cross-platform compatible implementation ([`b18866e`](https://github.com/Byron/gitoxide/commit/b18866e82b35675a936b4f7cf1147727d565c318)) + - proper prompt generation ([`63ee38d`](https://github.com/Byron/gitoxide/commit/63ee38dab45fd9d07532f6c01afc2d8dd1c1e904)) + - remove rustyline in favor of `git-prompt` ([`b3e5e59`](https://github.com/Byron/gitoxide/commit/b3e5e59cafaab0d4866c52722cd2a67aa313b395)) + - prepare changelog ([`3c7d490`](https://github.com/Byron/gitoxide/commit/3c7d4905b2b079018ace9f9f13c40585b9fe575f)) + - Add `git-prompt` crate for registration ([`b0140a6`](https://github.com/Byron/gitoxide/commit/b0140a6819cdfce0a5d88149f3713295b3bb54b5)) + * **[#470](https://github.com/Byron/gitoxide/issues/470)** + - update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd)) + * **[#691](https://github.com/Byron/gitoxide/issues/691)** + - set `rust-version` to 1.64 ([`55066ce`](https://github.com/Byron/gitoxide/commit/55066ce5fd71209abb5d84da2998b903504584bb)) + * **Uncategorized** + - Release gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 ([`e313112`](https://github.com/Byron/gitoxide/commit/e31311257bd138b52042dea5fc40c3abab7f269b)) + - Release gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 ([`6efd0d3`](https://github.com/Byron/gitoxide/commit/6efd0d31fbeca31ab7319aa2ac97bb31dc4ce055)) + - Release gix-date v0.4.2, gix-hash v0.10.2, gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 ([`6ccc88a`](https://github.com/Byron/gitoxide/commit/6ccc88a8e4a56973b1a358cf72dc012ee3c75d56)) + - Merge branch 'rename-crates' into inform-about-gix-rename ([`c9275b9`](https://github.com/Byron/gitoxide/commit/c9275b99ea43949306d93775d9d78c98fb86cfb1)) + - rename `git-testtools` to `gix-testtools` ([`b65c33d`](https://github.com/Byron/gitoxide/commit/b65c33d256cfed65d11adeff41132e3e58754089)) + - adjust to renaming of `git-pack` to `gix-pack` ([`1ee81ad`](https://github.com/Byron/gitoxide/commit/1ee81ad310285ee4aa118118a2be3810dbace574)) + - adjust to renaming of `git-odb` to `gix-odb` ([`476e2ad`](https://github.com/Byron/gitoxide/commit/476e2ad1a64e9e3f0d7c8651d5bcbee36cd78241)) + - adjust to renaming of `git-index` to `gix-index` ([`86db5e0`](https://github.com/Byron/gitoxide/commit/86db5e09fc58ce66b252dc13b8d7e2c48e4d5062)) + - adjust to renaming of `git-diff` to `gix-diff` ([`49a163e`](https://github.com/Byron/gitoxide/commit/49a163ec8b18f0e5fcd05a315de16d5d8be7650e)) + - adjust to renaming of `git-commitgraph` to `gix-commitgraph` ([`f1dd0a3`](https://github.com/Byron/gitoxide/commit/f1dd0a3366e31259af029da73228e8af2f414244)) + - adjust to renaming of `git-mailmap` to `gix-mailmap` ([`2e28c56`](https://github.com/Byron/gitoxide/commit/2e28c56bb9f70de6f97439818118d3a25859698f)) + - adjust to renaming of `git-discover` to `gix-discover` ([`53adfe1`](https://github.com/Byron/gitoxide/commit/53adfe1c34e9ea3b27067a97b5e7ac80b351c441)) + - adjust to renaming of `git-chunk` to `gix-chunk` ([`59194e3`](https://github.com/Byron/gitoxide/commit/59194e3a07853eae0624ebc4907478d1de4f7599)) + - adjust to renaming of `git-bitmap` to `gix-bitmap` ([`75f2a07`](https://github.com/Byron/gitoxide/commit/75f2a079b17489f62bc43e1f1d932307375c4f9d)) + - adjust to renaming for `git-protocol` to `gix-protocol` ([`823795a`](https://github.com/Byron/gitoxide/commit/823795addea3810243cab7936cd8ec0137cbc224)) + - adjust to renaming of `git-refspec` to `gix-refspec` ([`c958802`](https://github.com/Byron/gitoxide/commit/c9588020561577736faa065e7e5b5bb486ca8fe1)) + - adjust to renaming of `git-revision` to `gix-revision` ([`ee0ee84`](https://github.com/Byron/gitoxide/commit/ee0ee84607c2ffe11ee75f27a31903db68afed02)) + - adjust to renaming of `git-transport` to `gix-transport` ([`b2ccf71`](https://github.com/Byron/gitoxide/commit/b2ccf716dc4425bb96651d4d58806a3cc2da219e)) + - adjust to renaming of `git-credentials` to `gix-credentials` ([`6b18abc`](https://github.com/Byron/gitoxide/commit/6b18abcf2856f02ab938d535a65e51ac282bf94a)) + - adjust to renaming of `git-prompt` to `gix-prompt` ([`6a4654e`](https://github.com/Byron/gitoxide/commit/6a4654e0d10ab773dd219cb4b731c0fc1471c36d)) + - rename `git-prompt` to `gix-prompt` ([`568022c`](https://github.com/Byron/gitoxide/commit/568022cb6c9eaefbdeb97d82af9ab8731e7a1766)) + - adjust to renaming of `git-command` to `gix-command` ([`d26b8e0`](https://github.com/Byron/gitoxide/commit/d26b8e046496894ae06b0bbfdba77196976cd975)) + - adjust to renaming of `git-packetline` to `gix-packetline` ([`5cbd22c`](https://github.com/Byron/gitoxide/commit/5cbd22cf42efb760058561c6c3bbcd4dab8c8be1)) + - adjust to renaming of `git-worktree` to `gix-worktree` ([`73a1282`](https://github.com/Byron/gitoxide/commit/73a12821b3d9b66ec1714d07dd27eb7a73e3a544)) + - adjust to renamining of `git-worktree` to `gix-worktree` ([`108bb1a`](https://github.com/Byron/gitoxide/commit/108bb1a634f4828853fb590e9fc125f79441dd38)) + - adjust to renaming of `git-url` to `gix-url` ([`b50817a`](https://github.com/Byron/gitoxide/commit/b50817aadb143e19f61f64e19b19ec1107d980c6)) + - adjust to renaming of `git-date` to `gix-date` ([`9a79ff2`](https://github.com/Byron/gitoxide/commit/9a79ff2d5cc74c1efad9f41e21095ae498cce00b)) + - adjust to renamining of `git-attributes` to `gix-attributes` ([`4a8b3b8`](https://github.com/Byron/gitoxide/commit/4a8b3b812ac26f2a2aee8ce8ca81591273383c84)) + - adjust to renaminig of `git-quote` to `gix-quote` ([`648025b`](https://github.com/Byron/gitoxide/commit/648025b7ca94411fdd0d90c53e5faede5fde6c8d)) + - adjust to renaming of `git-config` to `gix-config` ([`3a861c8`](https://github.com/Byron/gitoxide/commit/3a861c8f049f6502d3bcbdac752659aa1aeda46a)) + - adjust to renaming of `git-ref` to `gix-ref` ([`1f5f695`](https://github.com/Byron/gitoxide/commit/1f5f695407b034377d94b172465ff573562b3fc3)) + - adjust to renaming of `git-lock` to `gix-lock` ([`2028e78`](https://github.com/Byron/gitoxide/commit/2028e7884ae1821edeec81612f501e88e4722b17)) + - adjust to renaming of `git-tempfile` to `gix-tempfile` ([`b6cc3eb`](https://github.com/Byron/gitoxide/commit/b6cc3ebb5137084a6327af16a7d9364d8f092cc9)) + - adjust to renaming of `git-object` to `gix-object` ([`fc86a1e`](https://github.com/Byron/gitoxide/commit/fc86a1e710ad7bf076c25cc6f028ddcf1a5a4311)) + - adjust to renaming of `git-actor` to `gix-actor` ([`4dc9b44`](https://github.com/Byron/gitoxide/commit/4dc9b44dc52f2486ffa2040585c6897c1bf55df4)) + - adjust to renaming of `git-validate` to `gix-validate` ([`5e40ad0`](https://github.com/Byron/gitoxide/commit/5e40ad078af3d08cbc2ca81ce755c0ed8a065b4f)) + - adjust to renaming of `git-hash` to `gix-hash` ([`4a9d025`](https://github.com/Byron/gitoxide/commit/4a9d0257110c3efa61d08c8457c4545b200226d1)) + - adjust to renaming of `git-features` to `gix-features` ([`e2dd68a`](https://github.com/Byron/gitoxide/commit/e2dd68a417aad229e194ff20dbbfd77668096ec6)) + - adjust to renaming of `git-glob` to `gix-glob` ([`35b2a3a`](https://github.com/Byron/gitoxide/commit/35b2a3acbc8f2a03f151bc0a3863163844e0ca86)) + - adjust to renaming of `git-sec` to `gix-sec` ([`eabbb92`](https://github.com/Byron/gitoxide/commit/eabbb923bd5a32fc80fa80f96cfdc2ab7bb2ed17)) + - adapt to renaming of `git-path` to `gix-path` ([`d3bbcfc`](https://github.com/Byron/gitoxide/commit/d3bbcfccad80fc44ea8e7bf819f23adaca06ba2d)) + - adjust to rename of `git-config-value` to `gix-config-value` ([`622b3e1`](https://github.com/Byron/gitoxide/commit/622b3e1d0bffa0f8db73697960f9712024fac430)) + - Release git-date v0.4.2, git-hash v0.10.2, git-features v0.26.2, git-actor v0.17.1, git-glob v0.5.3, git-path v0.7.1, git-quote v0.4.1, git-attributes v0.8.2, git-config-value v0.10.1, git-tempfile v3.0.2, git-lock v3.0.2, git-validate v0.7.2, git-object v0.26.1, git-ref v0.24.0, git-sec v0.6.2, git-config v0.16.0, git-command v0.2.3, git-prompt v0.3.2, git-url v0.13.2, git-credentials v0.9.1, git-diff v0.26.1, git-discover v0.13.0, git-hashtable v0.1.1, git-bitmap v0.2.1, git-traverse v0.22.1, git-index v0.12.3, git-mailmap v0.9.2, git-chunk v0.4.1, git-pack v0.30.2, git-odb v0.40.2, git-packetline v0.14.2, git-transport v0.25.4, git-protocol v0.26.3, git-revision v0.10.2, git-refspec v0.7.2, git-worktree v0.12.2, git-repository v0.34.0, safety bump 3 crates ([`c196d20`](https://github.com/Byron/gitoxide/commit/c196d206d57a310b1ce974a1cf0e7e6d6db5c4d6)) + - prepare changelogs prior to release ([`7c846d2`](https://github.com/Byron/gitoxide/commit/7c846d2102dc767366771925212712ef8cc9bf07)) + - Merge branch 'Lioness100/main' ([`1e544e8`](https://github.com/Byron/gitoxide/commit/1e544e82455bf9ecb5e3c2146280eaf7ecd81f16)) + - fix typos ([`39ed9ed`](https://github.com/Byron/gitoxide/commit/39ed9eda62b7718d5109135e5ad406fb1fe2978c)) + - upgrade serial-test to 1.0 ([`9ab3e25`](https://github.com/Byron/gitoxide/commit/9ab3e25e4c1ff6d504a79521cfa9453a7e7e7465)) + - Release git-date v0.4.1, git-features v0.26.1, git-glob v0.5.2, git-attributes v0.8.1, git-tempfile v3.0.1, git-ref v0.23.1, git-sec v0.6.1, git-config v0.15.1, git-prompt v0.3.1, git-url v0.13.1, git-discover v0.12.1, git-index v0.12.2, git-mailmap v0.9.1, git-pack v0.30.1, git-odb v0.40.1, git-transport v0.25.3, git-protocol v0.26.2, git-revision v0.10.1, git-refspec v0.7.1, git-worktree v0.12.1, git-repository v0.33.0 ([`5b5b380`](https://github.com/Byron/gitoxide/commit/5b5b3809faa71c658db38b40dfc410224d08a367)) + - prepare changelogs prior to release ([`93bef97`](https://github.com/Byron/gitoxide/commit/93bef97b3c0c75d4bf7119fdd787516e1efc77bf)) + - Merge branch 'patch-1' ([`b93f0c4`](https://github.com/Byron/gitoxide/commit/b93f0c49fc677b6c19aea332cbfc1445ce475375)) + - thanks clippy ([`9e04685`](https://github.com/Byron/gitoxide/commit/9e04685dd3f109bfb27663f9dc7c04102e660bf2)) + - upgrade `expectrl` - still comes with dependencies flagged as vulnerable though ([`f9312d5`](https://github.com/Byron/gitoxide/commit/f9312d5719056006267d50370d366fc316b882cf)) + - uprgade serial_test to 0.10 ([`8623b5a`](https://github.com/Byron/gitoxide/commit/8623b5a36f3e82cd694f7772798e36656cbfcd0a)) + - Release git-date v0.3.1, git-features v0.25.0, git-actor v0.15.0, git-glob v0.5.1, git-path v0.7.0, git-attributes v0.7.0, git-config-value v0.10.0, git-lock v3.0.1, git-validate v0.7.1, git-object v0.24.0, git-ref v0.21.0, git-sec v0.6.0, git-config v0.13.0, git-prompt v0.3.0, git-url v0.12.0, git-credentials v0.8.0, git-diff v0.24.0, git-discover v0.10.0, git-traverse v0.20.0, git-index v0.10.0, git-mailmap v0.7.0, git-pack v0.28.0, git-odb v0.38.0, git-packetline v0.14.1, git-transport v0.24.0, git-protocol v0.25.0, git-revision v0.8.0, git-refspec v0.5.0, git-worktree v0.10.0, git-repository v0.30.0, safety bump 26 crates ([`e6b9906`](https://github.com/Byron/gitoxide/commit/e6b9906c486b11057936da16ed6e0ec450a0fb83)) + - prepare chnagelogs prior to git-repository release ([`7114bbb`](https://github.com/Byron/gitoxide/commit/7114bbb6732aa8571d4ab74f28ed3e26e9fbe4d0)) + - Upgrade nix to 0.26 ([`2148284`](https://github.com/Byron/gitoxide/commit/21482848a1f63d1b392caed18f15d9f32d6726b4)) + - Merge branch 'main' into http-config ([`bcd9654`](https://github.com/Byron/gitoxide/commit/bcd9654e56169799eb706646da6ee1f4ef2021a9)) + - Release git-hash v0.10.0, git-features v0.24.0, git-date v0.3.0, git-actor v0.14.0, git-glob v0.5.0, git-path v0.6.0, git-quote v0.4.0, git-attributes v0.6.0, git-config-value v0.9.0, git-tempfile v3.0.0, git-lock v3.0.0, git-validate v0.7.0, git-object v0.23.0, git-ref v0.20.0, git-sec v0.5.0, git-config v0.12.0, git-command v0.2.0, git-prompt v0.2.0, git-url v0.11.0, git-credentials v0.7.0, git-diff v0.23.0, git-discover v0.9.0, git-bitmap v0.2.0, git-traverse v0.19.0, git-index v0.9.0, git-mailmap v0.6.0, git-chunk v0.4.0, git-pack v0.27.0, git-odb v0.37.0, git-packetline v0.14.0, git-transport v0.23.0, git-protocol v0.24.0, git-revision v0.7.0, git-refspec v0.4.0, git-worktree v0.9.0, git-repository v0.29.0, git-commitgraph v0.11.0, gitoxide-core v0.21.0, gitoxide v0.19.0, safety bump 28 crates ([`b2c301e`](https://github.com/Byron/gitoxide/commit/b2c301ef131ffe1871314e19f387cf10a8d2ac16)) + - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c)) + - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8)) + - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed)) + - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f)) + - prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06)) + - Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) ([`5406630`](https://github.com/Byron/gitoxide/commit/5406630466145990b5adbdadb59151036993060d)) + - thanks clippy ([`04cfa63`](https://github.com/Byron/gitoxide/commit/04cfa635a65ae34ad6d22391f2febd2ca7eabca9)) + - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b)) + - Release git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0 ([`f5c36d8`](https://github.com/Byron/gitoxide/commit/f5c36d85755d1f0f503b77d9a565fad6aecf6728)) + - Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4)) + - Merge branch 'git_date_relative' ([`83a3832`](https://github.com/Byron/gitoxide/commit/83a38329c59e9ebc057221da832fd8320bbeddb1)) + - WIP. ([`79d82d4`](https://github.com/Byron/gitoxide/commit/79d82d46613c83280d2401ef4d72a35010a70b87)) + - make fmt ([`535e967`](https://github.com/Byron/gitoxide/commit/535e967666c6da657ff1b7eff7c64ab27cafb182)) + - Merge branch 'filter-refs-by-spec' ([`5c05198`](https://github.com/Byron/gitoxide/commit/5c051986bd89590a9287d85d84c713d83dfab83a)) + - thanks clippy ([`9867384`](https://github.com/Byron/gitoxide/commit/98673846d04a76c216ddd1da942a983dd8bb4ea1)) + - Release git-prompt v0.0.0 ([`41281ad`](https://github.com/Byron/gitoxide/commit/41281ad9bc413af519973532238b467b2eb4fa9b)) +
+ +## 0.3.1 (2023-01-10) + +A maintenance release without user-facing changes. + +## 0.3.0 (2022-12-19) + +A maintenance release without user-facing changes. + +## 0.2.0 (2022-11-21) + +### New Features (BREAKING) + + - upgrade edition to 2021 in most crates. + MSRV for this is 1.56, and we are now at 1.60 so should be compatible. + This isn't more than a patch release as it should break nobody + who is adhering to the MSRV, but let's be careful and mark it + breaking. + + Note that `gix-features` and `gix-pack` are still on edition 2018 + as they make use of a workaround to support (safe) mutable access + to non-overlapping entries in a slice which doesn't work anymore + in edition 2021. + +## 0.1.1 (2022-11-06) + +A maintenance release without user-facing changes. + +## 0.1.0 (2022-09-20) + +The first usable release. + +## 0.0.0 (2022-08-29) + +Initial release just for the name. + diff --git a/vendor/gix-prompt/Cargo.toml b/vendor/gix-prompt/Cargo.toml new file mode 100644 index 000000000..98d97e20e --- /dev/null +++ b/vendor/gix-prompt/Cargo.toml @@ -0,0 +1,52 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2021" +rust-version = "1.64" +name = "gix-prompt" +version = "0.3.2" +authors = ["Sebastian Thiel "] +include = [ + "src/**/*", + "README.md", + "CHANGELOG.md", +] +description = "A crate of the gitoxide project for handling prompts in the terminal" +readme = "README.md" +license = "MIT/Apache-2.0" +repository = "https://github.com/Byron/gitoxide" + +[lib] +doctest = false + +[dependencies.gix-command] +version = "^0.2.3" + +[dependencies.gix-config-value] +version = "^0.10.1" + +[dependencies.parking_lot] +version = "0.12.1" + +[dependencies.thiserror] +version = "1.0.32" + +[dev-dependencies.expectrl] +version = "0.6.0" + +[dev-dependencies.serial_test] +version = "1.0.0" + +[target."cfg(unix)".dependencies.nix] +version = "0.26.1" +features = ["term"] +default-features = false diff --git a/vendor/gix-prompt/README.md b/vendor/gix-prompt/README.md new file mode 100644 index 000000000..14b113f7e --- /dev/null +++ b/vendor/gix-prompt/README.md @@ -0,0 +1,4 @@ + +### Acknowledgements + +Portions of this crate are loosely based on [`rpassword`](https://github.com/conradkleinespel/duck). diff --git a/vendor/gix-prompt/src/lib.rs b/vendor/gix-prompt/src/lib.rs new file mode 100644 index 000000000..75cc1ebd5 --- /dev/null +++ b/vendor/gix-prompt/src/lib.rs @@ -0,0 +1,76 @@ +//! Git style prompting with support for `GIT_ASKPASS` and `askpass` program configuration. +//! +//! ### Compatibility +//! +//! This is a unix-only crate which will return with an error when trying to obtain any prompt on other platforms. +//! On those platforms it is common to have helpers which perform this task so it shouldn't be a problem. +#![deny(rust_2018_idioms, missing_docs)] +#![forbid(unsafe_code)] + +mod types; +pub use types::{Error, Mode, Options}; + +/// +pub mod unix; +#[cfg(unix)] +use unix::imp; + +#[cfg(not(unix))] +mod imp { + use crate::{Error, Options}; + + pub(crate) fn ask(_prompt: &str, _opts: &Options<'_>) -> Result { + Err(Error::UnsupportedPlatform) + } +} + +/// Ask the user given a `prompt`, returning the result. +pub fn ask(prompt: &str, opts: &Options<'_>) -> Result { + if let Some(askpass) = opts.askpass.as_deref() { + match gix_command::prepare(askpass).arg(prompt).spawn() { + Ok(cmd) => { + if let Some(mut stdout) = cmd + .wait_with_output() + .ok() + .and_then(|out| String::from_utf8(out.stdout).ok()) + { + if stdout.ends_with('\n') { + stdout.pop(); + } + if stdout.ends_with('\r') { + stdout.pop(); + } + return Ok(stdout); + } + } + Err(err) => eprintln!("Cannot run askpass program: {askpass:?} with error: {err}"), + } + } + imp::ask(prompt, opts) +} + +/// Ask for information typed by the user into the terminal after showing the prompt`, like `"Username: `. +/// +/// Use [`ask()`] for more control. +pub fn openly(prompt: impl AsRef) -> Result { + imp::ask( + prompt.as_ref(), + &Options { + mode: Mode::Visible, + askpass: None, + }, + ) +} + +/// Ask for information _securely_ after showing the `prompt` (like `"password: "`) by not showing what's typed. +/// +/// Use [`ask()`] for more control. +pub fn securely(prompt: impl AsRef) -> Result { + imp::ask( + prompt.as_ref(), + &Options { + mode: Mode::Hidden, + askpass: None, + }, + ) +} diff --git a/vendor/gix-prompt/src/types.rs b/vendor/gix-prompt/src/types.rs new file mode 100644 index 000000000..cc938dd3a --- /dev/null +++ b/vendor/gix-prompt/src/types.rs @@ -0,0 +1,84 @@ +use std::{borrow::Cow, convert::TryFrom, path::Path}; + +/// The error returned by [ask()][crate::ask()]. +#[derive(Debug, thiserror::Error)] +#[allow(missing_docs)] +pub enum Error { + #[error("Terminal prompts are disabled")] + Disabled, + #[error("The current platform has no implementation for prompting in the terminal")] + UnsupportedPlatform, + #[error( + "Failed to open terminal at {:?} for writing prompt, or to write it", + crate::unix::TTY_PATH + )] + TtyIo(#[from] std::io::Error), + #[cfg(unix)] + #[error("Failed to obtain or set terminal configuration")] + TerminalConfiguration(#[from] nix::errno::Errno), +} + +/// The way the user is prompted. +#[derive(Debug, Copy, Clone, Eq, PartialEq)] +pub enum Mode { + /// Visibly show user input. + Visible, + /// Do not show user input, suitable for sensitive data. + Hidden, + /// Do not prompt the user at all but rather abort with an error. This is useful in conjunction with [Options::askpass]. + Disable, +} + +impl Default for Mode { + fn default() -> Self { + Mode::Hidden + } +} + +/// The options used in `[ask()]`. +#[derive(Default, Clone)] +pub struct Options<'a> { + /// The path or name (for lookup in `PATH`) to the askpass program to call before prompting the user. + /// + /// It's called like this `askpass `, but note that it won't know if the input should be hidden or not. + pub askpass: Option>, + /// The way the user is prompted. + pub mode: Mode, +} + +impl Options<'_> { + /// Change this instance to incorporate information from the environment. + /// + /// - if `use_git_askpass` is true, use `GIT_ASKPASS` to override any existing [`askpass`][Options::askpass] program + /// - otherwise fall back to the [`askpass`][Options::askpass] program already set + /// - or try to use the `SSH_ASKPASS` if `use_ssh_askpass` is true + /// + /// At the and of this process, the `askpass` program may be set depending on the rules above. + /// + /// Lastly, if `use_git_terminal_prompt` is set, use the `GIT_TERMINAL_PROMPT` environment variable and evaluate it as boolean, + /// and if false, set [`mode`][Options::mode] to `disable`. + pub fn apply_environment( + mut self, + use_git_askpass: bool, + use_ssh_askpass: bool, + use_git_terminal_prompt: bool, + ) -> Self { + if let Some(askpass) = use_git_askpass.then(|| std::env::var_os("GIT_ASKPASS")).flatten() { + self.askpass = Some(Cow::Owned(askpass.into())) + } + if self.askpass.is_none() { + if let Some(askpass) = use_ssh_askpass.then(|| std::env::var_os("SSH_ASKPASS")).flatten() { + self.askpass = Some(Cow::Owned(askpass.into())) + } + } + self.mode = use_git_terminal_prompt + .then(|| { + std::env::var_os("GIT_TERMINAL_PROMPT") + .and_then(|val| gix_config_value::Boolean::try_from(val).ok()) + .and_then(|allow| (!allow.0).then_some(Mode::Disable)) + }) + .flatten() + .unwrap_or(self.mode); + self + } +} diff --git a/vendor/gix-prompt/src/unix.rs b/vendor/gix-prompt/src/unix.rs new file mode 100644 index 000000000..a08d2d777 --- /dev/null +++ b/vendor/gix-prompt/src/unix.rs @@ -0,0 +1,93 @@ +/// The path to the default TTY on linux +pub const TTY_PATH: &str = "/dev/tty"; + +#[cfg(unix)] +pub(crate) mod imp { + use std::{ + io::{BufRead, Write}, + os::unix::io::{AsRawFd, RawFd}, + }; + + use nix::sys::{termios, termios::Termios}; + use parking_lot::{const_mutex, lock_api::MutexGuard, Mutex, RawMutex}; + + use crate::{unix::TTY_PATH, Error, Mode, Options}; + + static TERM_STATE: Mutex> = const_mutex(None); + + /// Ask the user given a `prompt`, returning the result. + pub(crate) fn ask(prompt: &str, Options { mode, .. }: &Options<'_>) -> Result { + match mode { + Mode::Disable => Err(Error::Disabled), + Mode::Hidden => { + let state = TERM_STATE.lock(); + let mut in_out = std::fs::OpenOptions::new().write(true).read(true).open(TTY_PATH)?; + let restore = save_term_state_and_disable_echo(state, in_out.as_raw_fd())?; + in_out.write_all(prompt.as_bytes())?; + + let mut buf_read = std::io::BufReader::with_capacity(64, in_out); + let mut out = String::with_capacity(64); + buf_read.read_line(&mut out)?; + + out.pop(); + if out.ends_with('\r') { + out.pop(); + } + restore.now()?; + Ok(out) + } + Mode::Visible => { + let mut in_out = std::fs::OpenOptions::new().write(true).read(true).open(TTY_PATH)?; + in_out.write_all(prompt.as_bytes())?; + + let mut buf_read = std::io::BufReader::with_capacity(64, in_out); + let mut out = String::with_capacity(64); + buf_read.read_line(&mut out)?; + Ok(out.trim_end().to_owned()) + } + } + } + + type TermiosGuard<'a> = MutexGuard<'a, RawMutex, Option>; + + struct RestoreTerminalStateOnDrop<'a> { + state: TermiosGuard<'a>, + fd: RawFd, + } + + impl<'a> RestoreTerminalStateOnDrop<'a> { + fn now(mut self) -> Result<(), Error> { + let state = self.state.take().expect("BUG: we exist only if something is saved"); + termios::tcsetattr(self.fd, termios::SetArg::TCSAFLUSH, &state)?; + Ok(()) + } + } + + impl<'a> Drop for RestoreTerminalStateOnDrop<'a> { + fn drop(&mut self) { + if let Some(state) = self.state.take() { + termios::tcsetattr(self.fd, termios::SetArg::TCSAFLUSH, &state).ok(); + } + } + } + + fn save_term_state_and_disable_echo( + mut state: TermiosGuard<'_>, + fd: RawFd, + ) -> Result, Error> { + assert!( + state.is_none(), + "BUG: recursive calls are not possible and we restore afterwards" + ); + + let prev = termios::tcgetattr(fd)?; + let mut new = prev.clone(); + *state = prev.into(); + + new.local_flags &= !termios::LocalFlags::ECHO; + new.local_flags |= termios::LocalFlags::ECHONL; + termios::tcsetattr(fd, termios::SetArg::TCSAFLUSH, &new)?; + + Ok(RestoreTerminalStateOnDrop { fd, state }) + } +} -- cgit v1.2.3