Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mcfly for openSUSE:Factory checked in at 2023-12-25 19:06:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mcfly (Old) and /work/SRC/openSUSE:Factory/.mcfly.new.28375 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mcfly" Mon Dec 25 19:06:23 2023 rev:5 rq:1135079 version:0.8.4+0 Changes: -------- --- /work/SRC/openSUSE:Factory/mcfly/mcfly.changes 2023-12-04 23:01:36.055820327 +0100 +++ /work/SRC/openSUSE:Factory/.mcfly.new.28375/mcfly.changes 2023-12-25 19:06:35.788320355 +0100 @@ -1,0 +2,16 @@ +Mon Dec 25 07:49:21 UTC 2023 - Michael Vetter <[email protected]> + +- Update to 0.8.4: + * Remove spurious print when moving files. + * PowerShell improvements + +------------------------------------------------------------------- +Mon Dec 4 07:29:28 UTC 2023 - Michael Vetter <[email protected]> + +- Update to 0.8.3: + * Add support for exporting command history matching a regex or + date range + * Add Windows and Powershell support + * Add deprecation warning on brew tap. + +------------------------------------------------------------------- Old: ---- cargo_config mcfly-0.8.2+0.tar.xz New: ---- mcfly-0.8.4+0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mcfly.spec ++++++ --- /var/tmp/diff_new_pack.jDQpyf/_old 2023-12-25 19:06:36.708353930 +0100 +++ /var/tmp/diff_new_pack.jDQpyf/_new 2023-12-25 19:06:36.708353930 +0100 @@ -17,7 +17,7 @@ Name: mcfly -Version: 0.8.2+0 +Version: 0.8.4+0 Release: 0 Summary: Shell history helper License: MIT @@ -25,7 +25,6 @@ URL: https://github.com/cantino/mcfly Source0: %{name}-%{version}.tar.xz Source1: vendor.tar.xz -Source2: cargo_config BuildRequires: cargo-packaging BuildRequires: libopenssl-devel @@ -34,8 +33,6 @@ %prep %autosetup -a1 -mkdir -p .cargo -cp %{SOURCE2} .cargo/config %build %{cargo_build} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.jDQpyf/_old 2023-12-25 19:06:36.736354952 +0100 +++ /var/tmp/diff_new_pack.jDQpyf/_new 2023-12-25 19:06:36.740355098 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/cantino/mcfly.git</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="scm">git</param> - <param name="revision">v0.8.2</param> + <param name="revision">v0.8.4</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> ++++++ mcfly-0.8.2+0.tar.xz -> mcfly-0.8.4+0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/CHANGELOG.txt new/mcfly-0.8.4+0/CHANGELOG.txt --- old/mcfly-0.8.2+0/CHANGELOG.txt 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/CHANGELOG.txt 2023-12-25 00:00:24.000000000 +0100 @@ -1,5 +1,11 @@ -0.8.2 - Dec 3, 2023 +0.8.4 - Dec 24, 2023 + - Remove spurious print when moving files. + - PowerShell improvements (thanks @Namorzyny and @YoshidaRyoko!) + +0.8.3 - Dec 3, 2023 - Add support for exporting command history matching a regex or date range (thanks @TD-Sky!) + - Add Windows and Powershell support (thanks @jtschuster!) + - Add deprecation warning on brew tap. 0.8.1 - Jun 3, 2023 - Fix use of MCFLY_DISABLE_MENU (thanks @barklan!) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/Cargo.lock new/mcfly-0.8.4+0/Cargo.lock --- old/mcfly-0.8.2+0/Cargo.lock 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/Cargo.lock 2023-12-25 00:00:24.000000000 +0100 @@ -3,6 +3,12 @@ version = 3 [[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] name = "ahash" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -99,6 +105,24 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] +name = "autopilot" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a2fd0359d0cd30b15419bcce7e6641a3cbe2046c612b3900216dc64bc989558" +dependencies = [ + "cocoa", + "core-foundation", + "core-graphics", + "image", + "libc", + "pkg-config", + "rand 0.7.3", + "scopeguard", + "winapi", + "x11", +] + +[[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -111,12 +135,24 @@ checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] name = "bumpalo" version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] name = "cc" version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -157,9 +193,9 @@ [[package]] name = "clap" -version = "4.4.8" +version = "4.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" +checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272" dependencies = [ "clap_builder", "clap_derive", @@ -167,9 +203,9 @@ [[package]] name = "clap_builder" -version = "4.4.8" +version = "4.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" +checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1" dependencies = [ "anstream", "anstyle", @@ -184,9 +220,9 @@ checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.70", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -196,16 +232,107 @@ checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] +name = "cocoa" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c49e86fc36d5704151f5996b7b3795385f50ce09e3be0f47a0cfde869681cf8" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] name = "colorchoice" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "foreign-types", + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] [[package]] name = "crossterm" @@ -255,6 +382,16 @@ ] [[package]] +name = "deflate" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707b6a7b384888a70c8d2e8650b3e60170dfc6a67bb4aa67b6dfca57af4bedb4" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] name = "directories-next" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -325,6 +462,32 @@ ] [[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] name = "getrandom" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -332,14 +495,24 @@ dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gif" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471d90201b3b223f3451cd4ad53e34295f16a1df17b1edf3736d47761c3981af" +dependencies = [ + "color_quant", + "lzw", ] [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", "allocator-api2", @@ -373,7 +546,7 @@ checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", - "core-foundation-sys", + "core-foundation-sys 0.8.6", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", @@ -390,6 +563,32 @@ ] [[package]] +name = "image" +version = "0.22.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08ed2ada878397b045454ac7cfb011d73132c59f31a955d230bd1f1c2e68eb4a" +dependencies = [ + "byteorder", + "gif", + "jpeg-decoder", + "num-iter", + "num-rational", + "num-traits", + "png", + "scoped_threadpool", + "tiff", +] + +[[package]] +name = "inflate" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" +dependencies = [ + "adler32", +] + +[[package]] name = "itertools" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -405,10 +604,19 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] +name = "jpeg-decoder" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" +dependencies = [ + "rayon", +] + +[[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] @@ -458,9 +666,25 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] +name = "lzw" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] name = "mcfly" -version = "0.8.2" +version = "0.8.4" dependencies = [ + "autopilot", "chrono", "chrono-systemd-time", "clap", @@ -470,9 +694,9 @@ "humantime", "itertools", "libc", - "rand", + "path-absolutize", + "rand 0.8.5", "regex", - "relative-path", "rusqlite", "serde", "serde_json", @@ -487,6 +711,15 @@ checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] name = "mio" version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -494,11 +727,54 @@ dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys", ] [[package]] +name = "num-derive" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] name = "num-traits" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -508,6 +784,15 @@ ] [[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] name = "once_cell" version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -537,12 +822,42 @@ ] [[package]] +name = "path-absolutize" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5" +dependencies = [ + "path-dedot", +] + +[[package]] +name = "path-dedot" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" +dependencies = [ + "once_cell", +] + +[[package]] name = "pkg-config" version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] +name = "png" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef859a23054bbfee7811284275ae522f0434a3c8e7f4b74bd4a35ae7e1c4a283" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "deflate", + "inflate", +] + +[[package]] name = "ppv-lite86" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -550,20 +865,51 @@ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "proc-macro2" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] [[package]] name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2", + "proc-macro2 1.0.70", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", ] [[package]] @@ -573,8 +919,18 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] @@ -584,7 +940,16 @@ checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", ] [[package]] @@ -593,7 +958,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.11", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rayon" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", ] [[package]] @@ -611,7 +1005,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom", + "getrandom 0.2.11", "libredox", "thiserror", ] @@ -646,12 +1040,6 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] -name = "relative-path" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" - -[[package]] name = "rusqlite" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -672,6 +1060,12 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -679,22 +1073,22 @@ [[package]] name = "serde" -version = "1.0.192" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.70", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -761,12 +1155,23 @@ [[package]] name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid", +] + +[[package]] +name = "syn" version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.70", + "quote 1.0.33", "unicode-ident", ] @@ -785,9 +1190,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.70", + "quote 1.0.33", + "syn 2.0.39", +] + +[[package]] +name = "tiff" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7b7c2cfc4742bd8a32f2e614339dd8ce30dbcf676bb262bd63a2327bc5df57d" +dependencies = [ + "byteorder", + "lzw", + "num-derive", + "num-traits", ] [[package]] @@ -803,6 +1220,12 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] name = "utf8parse" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -822,15 +1245,21 @@ [[package]] name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -838,47 +1267,47 @@ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.70", + "quote 1.0.33", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ - "quote", + "quote 1.0.33", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.70", + "quote 1.0.33", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "winapi" @@ -978,21 +1407,31 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] name = "zerocopy" -version = "0.7.26" +version = "0.7.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +checksum = "7d6f15f7ade05d2a4935e34a457b936c23dc70a05cc1d97133dc99e7a3fe0f0e" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.26" +version = "0.7.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +checksum = "dbbad221e3f78500350ecbd7dfa4e63ef945c05f4c61cb7f4d3f84cd0bba649b" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.70", + "quote 1.0.33", + "syn 2.0.39", ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/Cargo.toml new/mcfly-0.8.4+0/Cargo.toml --- old/mcfly-0.8.2+0/Cargo.toml 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/Cargo.toml 2023-12-25 00:00:24.000000000 +0100 @@ -1,13 +1,13 @@ [package] name = "mcfly" -version = "0.8.2" +version = "0.8.4" authors = ["Andrew Cantino <[email protected]>"] edition = "2021" description = "McFly replaces your default ctrl-r shell history search with an intelligent search engine that takes into account your working directory and the context of recently executed commands. McFly's suggestions are prioritized in real time with a small neural network." license = "MIT" repository = "https://github.com/cantino/mcfly" categories = ["command-line-utilities"] -exclude = ["docs/*"] +exclude = ["HomebrewFormula", "HomebrewFormula/*", "pkg/*", "docs/*"] [profile.release] lto = true @@ -24,10 +24,9 @@ humantime = "2.1" directories-next = "2.0" itertools = "0.10" -libc = "0.2" rand = "0.8" +path-absolutize = "3.0.13" regex = { version = "1", default-features = false, features = ["perf", "std"] } -relative-path = "1.7" shellexpand = "2.1" unicode-segmentation = "1.9" @@ -43,6 +42,12 @@ version = "4" features = ["derive"] +[target.'cfg(not(windows))'.dependencies] +libc = "0.2" + +[target.'cfg(windows)'.dependencies] +autopilot = "0.4.0" + [features] default = ["sqlite-bundled"] sqlite-bundled = ["rusqlite/bundled"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/HomebrewFormula new/mcfly-0.8.4+0/HomebrewFormula --- old/mcfly-0.8.2+0/HomebrewFormula 1970-01-01 01:00:00.000000000 +0100 +++ new/mcfly-0.8.4+0/HomebrewFormula 2023-12-25 19:06:36.816357872 +0100 @@ -0,0 +1 @@ +symbolic link to ./pkg/brew diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/README.md new/mcfly-0.8.4+0/README.md --- old/mcfly-0.8.2+0/README.md 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/README.md 2023-12-25 00:00:24.000000000 +0100 @@ -49,17 +49,17 @@ ``` 1. Add the following to the end of your `~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish` file: - Bash: + Bash: ```bash eval "$(mcfly init bash)" ``` - Zsh: + Zsh: ```bash eval "$(mcfly init zsh)" ``` - Fish: + Fish: ```bash mcfly init fish | source ``` @@ -85,17 +85,17 @@ ``` 1. Add the following to the end of your `~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish` file, as appropriate: - Bash: + Bash: ```bash eval "$(mcfly init bash)" ``` - Zsh: + Zsh: ```bash eval "$(mcfly init zsh)" ``` - Fish: + Fish: ```bash mcfly init fish | source ``` @@ -111,7 +111,7 @@ ### Installing using our install script -1. `curl -LSfs https://raw.githubusercontent.com/cantino/mcfly/master/ci/install.sh | sh -s -- --git cantino/mcfly` +1. `curl -LSfs https://raw.githubusercontent.com/cantino/mcfly/master/ci/install.sh | sh -s -- --git cantino/mcfly` (or, if the current user doesn't have permissions to edit /usr/local/bin, then use `sudo sh -s`.) 2. Add the following to the end of your `~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish` file, respectively: @@ -141,17 +141,17 @@ 1. Install to a location in your `$PATH`. (For example, you could create a directory at `~/bin`, copy `mcfly` to this location, and add `export PATH="$PATH:$HOME/bin"` to your `.bashrc` / `.zshrc`, or run `set -Ua fish_user_paths "$HOME/bin"` for fish.) 1. Add the following to the end of your `~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish` file, respectively: - Bash: + Bash: ```bash eval "$(mcfly init bash)" ``` - Zsh: + Zsh: ```bash eval "$(mcfly init zsh)" ``` - Fish: + Fish: ```bash mcfly init fish | source ``` @@ -165,17 +165,17 @@ 1. Ensure `~/.cargo/bin` is in your `$PATH`. 1. Add the following to the end of your `~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish` file, respectively: - Bash: + Bash: ```bash eval "$(mcfly init bash)" ``` - Zsh: + Zsh: ```bash eval "$(mcfly init zsh)" ``` - Fish: + Fish: ```bash mcfly init fish | source ``` @@ -402,8 +402,8 @@ * Learn common command options and autocomplete them in the suggestion UI? * Sort command line args when coming up with the template matching string. * Possible prioritization improvements: - * Cross validation & explicit training set selection. - * Learn command embeddings + * Cross validation & explicit training set selection. + * Learn command embeddings ## Development diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/mcfly.ps1 new/mcfly-0.8.4+0/mcfly.ps1 --- old/mcfly-0.8.2+0/mcfly.ps1 1970-01-01 01:00:00.000000000 +0100 +++ new/mcfly-0.8.4+0/mcfly.ps1 2023-12-25 00:00:24.000000000 +0100 @@ -0,0 +1,117 @@ +#!/usr/bin/env pwsh + +$null = New-Module mcfly { + # We need PSReadLine for a number of capabilities + if ($null -eq (Get-Module -Name PSReadLine)) { + Write-Host "Installing PSReadLine as McFly dependency" + Install-Module PSReadLine + } + + # Get history file and make a dummy file for psreadline (hopefully after it has loaded the real history file to its in memory history) + $env:HISTFILE = $null -eq $env:HISTFILE -or "" -eq $env:HISTFILE ? (Get-PSReadLineOption).HistorySavePath : $env:HISTFILE; + $psreadline_dummy = New-TemporaryFile + # Append history to dummy file for compatibility + Get-Content -Path $Env:HISTFILE | Out-File -FilePath $psreadline_dummy -Force + Set-PSReadLineOption -HistorySavePath $psreadline_dummy.FullName + + + $fileExists = Test-Path -path $env:HISTFILE + if (-not $fileExists) { + Write-Host "McFly: ${env:HISTFILE} does not exist or is not readable. Please fix this or set HISTFILE to something else before using McFly."; + return 1; + } + + # MCFLY_SESSION_ID is used by McFly internally to keep track of the commands from a particular terminal session. + $MCFLY_SESSION_ID = new-guid + $env:MCFLY_SESSION_ID = $MCFLY_SESSION_ID + + $env:MCFLY_HISTORY = New-TemporaryFile + Get-Content $env:HISTFILE | Select-Object -Last 100 | Set-Content $env:MCFLY_HISTORY + + <# + .SYNOPSIS + Cmdlet to run McFly + + .PARAMETER CommandToComplete + The command to complete + + .EXAMPLE + Invoke-McFly -CommandToComplete "cargo bu" + #> + function Invoke-McFly { + Param([string]$CommandToComplete) + $lastExitTmp = $LASTEXITCODE + $tempFile = New-TemporaryFile + Start-Process -FilePath '::MCFLY::' -ArgumentList "search", "$CommandToComplete", -o, "$tempFile" -NoNewWindow -Wait + foreach($line in Get-Content $tempFile) { + $key, $value = $line -split ' ', 2 + if ("mode" -eq $key) { + $mode = $value + } + if ("commandline" -eq $key) { + $commandline = $value + } + } + if(-not ($null -eq $commandline)) { + [Microsoft.PowerShell.PSConsoleReadLine]::DeleteLine() + [Microsoft.PowerShell.PSConsoleReadline]::Insert($commandline) + if("run" -eq $mode) { + [Microsoft.PowerShell.PSConsoleReadline]::AcceptLine() + } + } + Remove-Item $tempFile + $LASTEXITCODE = $lastExitTmp + } + + <# + .SYNOPSIS + Add a command to McFly's history. + + .PARAMETER Command + The string of the command to add to McFly's history + + .PARAMETER ExitCode + The exit code of the command to add + + .EXAMPLE + Add-CommandToMcFly -Command "cargo build" + #> + function Add-CommandToMcFly { + Param ( + [string] $Command, + [int] $ExitCode + ) + $ExitCode = $ExitCode ?? 0; + $Command | Out-File -FilePath $env:MCFLY_HISTORY -Append + Start-Process -FilePath '::MCFLY::' -ArgumentList add, --exit, $ExitCode, --append-to-histfile, $env:HISTFILE -NoNewWindow | Write-Host + } + + # We need to make sure we call out AddToHistoryHandler right after each command is called + Set-PSReadLineOption -HistorySaveStyle SaveIncrementally + + Set-PSReadLineOption -PredictionSource HistoryAndPlugin + + Set-PSReadLineOption -AddToHistoryHandler { + Param([string]$Command) + $lastExitTmp = $LASTEXITCODE + $Command = $Command.Trim(); + # PSReadLine executes this before the command even runs, so we don't know its exit code - assume 0 + Add-CommandToMcFly -Command $Command -ExitCode 0 + $LASTEXITCODE = $lastExitTmp + # Tell PSReadLine to save the command to their in-memory history (and also the dummy file) + return $true + } + + Set-PSReadLineKeyHandler -Chord "Ctrl+r" -ScriptBlock { + $line = $null + $cursor = $null + [Microsoft.PowerShell.PSConsoleReadline]::GetBufferState([ref]$line, [ref]$cursor) + "#mcfly: $line" | Out-File -FilePath $env:MCFLY_HISTORY -Append + Invoke-McFly -CommandToComplete "`"$line`"" + } + + Export-ModuleMember -Function @( + "Invoke-McFly" + "Add-CommandToMcFly" + ) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/pkg/brew/mcfly.rb new/mcfly-0.8.4+0/pkg/brew/mcfly.rb --- old/mcfly-0.8.2+0/pkg/brew/mcfly.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/mcfly-0.8.4+0/pkg/brew/mcfly.rb 2023-12-25 00:00:24.000000000 +0100 @@ -0,0 +1,36 @@ +# To install: +# brew tap cantino/mcfly +# brew install mcfly +# +# To remove: +# brew uninstall mcfly +# brew untap cantino/mcfly + +class Mcfly < Formula + version 'v0.8.3' + desc "McFly" + homepage "https://github.com/cantino/mcfly" + + if OS.mac? + url "https://github.com/cantino/mcfly/releases/download/#{version}/mcfly-#{version}-x86_64-apple-darwin.tar.gz" + sha256 "b549e9d89002b17d73f83951f3e10ae4b26fa95c876f68c1d2d766c953093e32" + elsif OS.linux? + url "https://github.com/cantino/mcfly/releases/download/#{version}/mcfly-#{version}-x86_64-unknown-linux-musl.tar.gz" + sha256 "2feb0eb924a996832825168e323574351e8839846f2d54e72aed2efd80ba3617" + end + + def install + bin.install "mcfly" + end + + def caveats + <<~EOS + DEPRECATED! mcfly is now in the core homebrew repository and you don't need this tap. + Please run: + + brew uninstall mcfly + brew untap cantino/mcfly + brew install mcfly + EOS + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/src/cli.rs new/mcfly-0.8.4+0/src/cli.rs --- old/mcfly-0.8.2+0/src/cli.rs 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/src/cli.rs 2023-12-25 00:00:24.000000000 +0100 @@ -155,6 +155,7 @@ Bash, Zsh, Fish, + Powershell, } #[derive(Debug, Clone, Copy, ValueEnum, Default)] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/src/fake_typer.rs new/mcfly-0.8.4+0/src/fake_typer.rs --- old/mcfly-0.8.2+0/src/fake_typer.rs 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/src/fake_typer.rs 2023-12-25 00:00:24.000000000 +0100 @@ -1,11 +1,13 @@ +#[cfg(not(windows))] use libc; -use std::convert::TryInto; // Should we be using https://docs.rs/libc/0.2.44/libc/fn.ioctl.html instead? +#[cfg(not(windows))] extern "C" { pub fn ioctl(fd: libc::c_int, request: libc::c_ulong, arg: ...) -> libc::c_int; } +#[cfg(not(windows))] #[allow(clippy::useless_conversion)] pub fn use_tiocsti(string: &str) { for byte in string.as_bytes() { @@ -15,3 +17,8 @@ } } } + +#[cfg(windows)] +pub fn use_tiocsti(string: &str) { + autopilot::key::type_string(string, &[], 0.0, 0.0); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/src/init.rs new/mcfly-0.8.4+0/src/init.rs --- old/mcfly-0.8.2+0/src/init.rs 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/src/init.rs 2023-12-25 00:00:24.000000000 +0100 @@ -1,4 +1,5 @@ use super::settings::InitMode; +use std::env; pub struct Init {} @@ -14,6 +15,9 @@ InitMode::Fish => { Init::init_fish(); } + InitMode::Powershell => { + Init::init_pwsh(); + } } Self {} } @@ -29,4 +33,9 @@ let script = include_str!("../mcfly.fish"); print!("{}", script); } + pub fn init_pwsh() { + let script = include_str!("../mcfly.ps1") + .replace("::MCFLY::", env::current_exe().unwrap().to_str().unwrap()); + print!("{}", script); + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/src/interface.rs new/mcfly-0.8.4+0/src/interface.rs --- old/mcfly-0.8.2+0/src/interface.rs 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/src/interface.rs 2023-12-25 00:00:24.000000000 +0100 @@ -8,7 +8,7 @@ use crate::settings::{ResultSort, Settings}; use chrono::{Duration, TimeZone, Utc}; use crossterm::event::KeyCode::Char; -use crossterm::event::{read, Event, KeyCode, KeyEvent, KeyModifiers}; +use crossterm::event::{read, Event, KeyCode, KeyEvent, KeyEventKind, KeyModifiers}; use crossterm::style::{Color, Print, SetBackgroundColor, SetForegroundColor}; use crossterm::terminal::{self, LeaveAlternateScreen}; use crossterm::terminal::{Clear, ClearType, EnterAlternateScreen}; @@ -448,7 +448,6 @@ screen.flush().unwrap(); loop { - terminal::enable_raw_mode().unwrap(); let event = read().unwrap_or_else(|e| panic!("McFly error: failed to read input {:?}", &e)); self.debug_cursor(&mut screen); @@ -511,6 +510,9 @@ } fn select_with_emacs_key_scheme(&mut self, event: KeyEvent) -> bool { + if event.kind != KeyEventKind::Press { + return false; + } match event { KeyEvent { code: KeyCode::Enter, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/src/path_update_helpers.rs new/mcfly-0.8.4+0/src/path_update_helpers.rs --- old/mcfly-0.8.2+0/src/path_update_helpers.rs 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/src/path_update_helpers.rs 2023-12-25 00:00:24.000000000 +0100 @@ -1,32 +1,16 @@ -use relative_path::RelativePath; -use std::env; -use std::path::{Path, PathBuf}; +use crate::settings::pwd; +use path_absolutize::*; +use std::path::Path; use unicode_segmentation::UnicodeSegmentation; pub fn normalize_path(incoming_path: &str) -> String { - let expanded_path = shellexpand::tilde(incoming_path); - - let current_dir = env::var("PWD").unwrap_or_else(|err| { - panic!( - "McFly error: Unable to determine current directory ({})", - err - ) - }); - let current_dir_path = Path::new(¤t_dir); - - let path_buf = if expanded_path.starts_with('/') { - PathBuf::from("/").join(RelativePath::new(&expanded_path).normalize().to_path("")) - } else { - let to_current_dir = RelativePath::new(&expanded_path).to_path(current_dir_path); - RelativePath::new(to_current_dir.to_str().unwrap()) - .normalize() - .to_path("/") - }; - - path_buf + let expanded_path = shellexpand::tilde(incoming_path).to_string(); + return Path::new(&expanded_path) + .absolutize_from(pwd()) + .unwrap() .to_str() .unwrap_or_else(|| panic!("McFly error: Path must be a valid UTF8 string")) - .to_string() + .to_string(); } pub fn parse_mv_command(command: &str) -> Vec<String> { @@ -108,6 +92,7 @@ use std::path::PathBuf; #[test] + #[cfg(not(windows))] fn normalize_path_works_absolute_paths() { assert_eq!(normalize_path("/foo/bar/baz"), String::from("/foo/bar/baz")); assert_eq!(normalize_path("/"), String::from("/")); @@ -115,6 +100,7 @@ } #[test] + #[cfg(not(windows))] fn normalize_path_works_with_tilda() { assert_eq!(normalize_path("~/"), env::var("HOME").unwrap()); assert_eq!( @@ -126,6 +112,7 @@ } #[test] + #[cfg(not(windows))] fn normalize_path_works_with_double_dots() { assert_eq!(normalize_path("/foo/bar/../baz"), String::from("/foo/baz")); assert_eq!(normalize_path("/foo/bar/../../baz"), String::from("/baz")); @@ -140,6 +127,63 @@ assert_eq!(normalize_path("~/foo/bar/../.."), env::var("HOME").unwrap()); } + #[cfg(windows)] + fn windows_home_path() -> String { + PathBuf::from(env::var("HOMEDRIVE").unwrap()) + .join(env::var("HOMEPATH").unwrap()) + .to_str() + .unwrap() + .to_string() + } + + #[test] + #[cfg(windows)] + fn normalize_path_works_absolute_paths() { + assert_eq!( + normalize_path("C:\\foo\\bar\\baz"), + String::from("C:\\foo\\bar\\baz") + ); + assert_eq!(normalize_path("C:\\"), String::from("C:\\")); + assert_eq!(normalize_path("C:\\\\\\\\"), String::from("C:\\")); + } + + #[test] + #[cfg(windows)] + fn normalize_path_works_with_tilda() { + assert_eq!(normalize_path("~\\"), windows_home_path()); + assert_eq!( + normalize_path("~\\foo"), + PathBuf::from(windows_home_path()) + .join("foo") + .to_string_lossy() + ); + } + + #[test] + #[cfg(windows)] + fn normalize_path_works_with_double_dots() { + assert_eq!( + normalize_path("C:\\foo\\bar\\..\\baz"), + String::from("C:\\foo\\baz") + ); + assert_eq!( + normalize_path("C:\\foo\\bar\\..\\..\\baz"), + String::from("C:\\baz") + ); + assert_eq!( + normalize_path("C:\\foo\\bar\\..\\..\\"), + String::from("C:\\") + ); + assert_eq!(normalize_path("C:\\foo\\bar\\..\\.."), String::from("C:\\")); + assert_eq!( + normalize_path("~\\foo\\bar\\..\\baz"), + PathBuf::from(windows_home_path()) + .join("foo\\baz") + .to_string_lossy() + ); + assert_eq!(normalize_path("~\\foo\\bar\\..\\.."), windows_home_path()); + } + #[test] fn parse_mv_command_works_in_the_basic_case() { assert_eq!( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mcfly-0.8.2+0/src/settings.rs new/mcfly-0.8.4+0/src/settings.rs --- old/mcfly-0.8.2+0/src/settings.rs 2023-12-03 21:14:06.000000000 +0100 +++ new/mcfly-0.8.4+0/src/settings.rs 2023-12-25 00:00:24.000000000 +0100 @@ -31,6 +31,7 @@ Bash, Zsh, Fish, + Powershell, } #[derive(Debug, PartialEq, Eq)] @@ -370,6 +371,7 @@ Bash => InitMode::Bash, Zsh => InitMode::Zsh, Fish => InitMode::Fish, + Powershell => InitMode::Powershell, }; } @@ -442,7 +444,8 @@ } } -fn pwd() -> String { +#[cfg(not(windows))] +pub fn pwd() -> String { env::var("PWD").unwrap_or_else(|err| { panic!( "McFly error: Unable to determine current directory ({})", @@ -451,6 +454,19 @@ }) } +#[cfg(windows)] +pub fn pwd() -> String { + env::current_dir() + .unwrap_or_else(|err| { + panic!( + "McFly error: Unable to determine current directory ({})", + err + ) + }) + .display() + .to_string() +} + fn is_env_var_truthy(name: &str) -> bool { match env::var(name) { Ok(val) => { ++++++ vendor.tar.xz ++++++ /work/SRC/openSUSE:Factory/mcfly/vendor.tar.xz /work/SRC/openSUSE:Factory/.mcfly.new.28375/vendor.tar.xz differ: char 15, line 1
