Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sheldon for openSUSE:Factory checked in at 2025-05-26 18:34:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sheldon (Old) and /work/SRC/openSUSE:Factory/.sheldon.new.2732 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sheldon" Mon May 26 18:34:03 2025 rev:6 rq:1279541 version:0.8.2 Changes: -------- --- /work/SRC/openSUSE:Factory/sheldon/sheldon.changes 2025-02-09 20:55:48.896652790 +0100 +++ /work/SRC/openSUSE:Factory/.sheldon.new.2732/sheldon.changes 2025-05-26 18:35:48.912124844 +0200 @@ -1,0 +2,6 @@ +Fri May 23 12:21:03 UTC 2025 - Ondřej Súkup <mimi...@gmail.com> + +- update to 0.8.23 + * Reduce scope of file mutex + +------------------------------------------------------------------- Old: ---- sheldon-0.8.1.tar.gz New: ---- sheldon-0.8.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sheldon.spec ++++++ --- /var/tmp/diff_new_pack.lUA1sP/_old 2025-05-26 18:35:49.936168011 +0200 +++ /var/tmp/diff_new_pack.lUA1sP/_new 2025-05-26 18:35:49.936168011 +0200 @@ -17,7 +17,7 @@ Name: sheldon -Version: 0.8.1 +Version: 0.8.2 Release: 0 Summary: Fast, configurable, shell plugin manager License: MIT OR Apache-2.0 AND MIT AND Zlib AND LGPL-2.1-or-later AND CC-BY-SA-4.0 AND Apache-2.0 WITH LLVM-exception AND BSD-4-clause AND OpenSSL AND Unicode AND SUSE-GPL-2.0-with-linking-exception ++++++ sheldon-0.8.1.tar.gz -> sheldon-0.8.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/Cargo.lock new/sheldon-0.8.2/Cargo.lock --- old/sheldon-0.8.1/Cargo.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/Cargo.lock 2025-05-22 21:28:38.000000000 +0200 @@ -19,21 +19,21 @@ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "bstr" -version = "1.11.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", "serde", @@ -47,9 +47,9 @@ [[package]] name = "cc" -version = "1.2.13" +version = "1.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766" dependencies = [ "jobserver", "libc", @@ -64,9 +64,9 @@ [[package]] name = "clap" -version = "4.5.28" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" +checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" dependencies = [ "clap_builder", "clap_derive", @@ -74,9 +74,9 @@ [[package]] name = "clap_builder" -version = "4.5.27" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" dependencies = [ "anstyle", "clap_lex", @@ -85,18 +85,18 @@ [[package]] name = "clap_complete" -version = "4.5.44" +version = "4.5.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375f9d8255adeeedd51053574fd8d4ba875ea5fa558e86617b07f09f1680c8b6" +checksum = "c91d3baa3bcd889d60e6ef28874126a0b384fd225ab83aa6d8a801c519194ce1" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", @@ -112,9 +112,9 @@ [[package]] name = "constcat" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffb5df6dd5dadb422897e8132f415d7a054e3cd757e5070b663f75bea1840fb" +checksum = "136d3e02915a2cea4d74caa8681e2d44b1c3254bdbf17d11d41d587ff858832c" [[package]] name = "crossbeam-deque" @@ -158,9 +158,9 @@ [[package]] name = "curl-sys" -version = "0.4.78+curl-8.11.0" +version = "0.4.80+curl-8.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eec768341c5c7789611ae51cf6c459099f22e64a5d5d0ce4892434e33821eaf" +checksum = "55f7df2eac63200c3ab25bde3b2268ef2ee56af3d238e76d61f01c3c49bff734" dependencies = [ "cc", "libc", @@ -190,9 +190,9 @@ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "env_home" @@ -202,15 +202,15 @@ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" dependencies = [ "libc", "windows-sys 0.59.0", @@ -224,11 +224,12 @@ [[package]] name = "fmutex" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e84c17070603126a7b0cd07d0ecc8e8cca4d15b67934ac2740286a84f3086c" +checksum = "5bd990c8a95704647aeb7cc51b0ea54c5072c824894977cc8ba679459f00bc9a" dependencies = [ "libc", + "windows-sys 0.59.0", ] [[package]] @@ -242,21 +243,21 @@ [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", + "r-efi", "wasi", - "windows-targets", ] [[package]] name = "git2" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff" +checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" dependencies = [ "bitflags", "libc", @@ -269,9 +270,9 @@ [[package]] name = "globset" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", @@ -308,9 +309,9 @@ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" [[package]] name = "heck" @@ -368,9 +369,9 @@ [[package]] name = "icu_locid_transform_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" [[package]] name = "icu_normalizer" @@ -392,9 +393,9 @@ [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" [[package]] name = "icu_properties" @@ -413,9 +414,9 @@ [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" [[package]] name = "icu_provider" @@ -484,9 +485,9 @@ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", "hashbrown", @@ -505,30 +506,31 @@ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom", "libc", ] [[package]] name = "libc" -version = "0.2.169" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libgit2-sys" -version = "0.18.0+1.9.0" +version = "0.18.1+1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1a117465e7e1597e8febea8bb0c410f1c7fb93b1e1cddf34363f8390367ffec" +checksum = "e1dcb20f84ffcdd825c7a311ae347cce604a6f084a767dec4a4929829645290e" dependencies = [ "cc", "libc", @@ -554,9 +556,9 @@ [[package]] name = "libz-sys" -version = "1.1.21" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" dependencies = [ "cc", "libc", @@ -566,21 +568,21 @@ [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "log" -version = "0.4.25" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "maplit" @@ -596,9 +598,9 @@ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "openssl-probe" @@ -608,18 +610,18 @@ [[package]] name = "openssl-src" -version = "300.4.1+3.4.0" +version = "300.5.0+3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" dependencies = [ "cc", "libc", @@ -636,9 +638,9 @@ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "pretty_assertions" @@ -652,23 +654,29 @@ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] [[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + +[[package]] name = "rayon" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -713,11 +721,10 @@ [[package]] name = "regex-macro" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12fa36e7add16db296640bba993a65dae2a0088a8e5cd5f935c8bfbd3710145b" +checksum = "7d306632607af6ec61c0b117971d57a96381b6317cf18ae419b5558048fe016e" dependencies = [ - "once_cell", "regex", ] @@ -729,9 +736,9 @@ [[package]] name = "rustix" -version = "0.38.44" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ "bitflags", "errno", @@ -742,9 +749,9 @@ [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -766,18 +773,18 @@ [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -786,9 +793,9 @@ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -807,7 +814,7 @@ [[package]] name = "sheldon" -version = "0.8.1" +version = "0.8.2" dependencies = [ "anyhow", "casual", @@ -846,15 +853,15 @@ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -874,9 +881,9 @@ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -885,9 +892,9 @@ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -896,11 +903,10 @@ [[package]] name = "tempfile" -version = "3.16.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", "getrandom", "once_cell", @@ -910,18 +916,18 @@ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", @@ -940,9 +946,9 @@ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "indexmap", "serde", @@ -953,31 +959,38 @@ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.23" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] [[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + +[[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-width" @@ -1048,18 +1061,18 @@ [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ "wit-bindgen-rt", ] [[package]] name = "which" -version = "7.0.2" +version = "7.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2774c861e1f072b3aadc02f8ba886c26ad6321567ecc294c935434cad06f1283" +checksum = "24d643ce3fd3e5b54854602a080f34fb10ab75e0b813ee32d00ca2b44fa74762" dependencies = [ "either", "env_home", @@ -1160,9 +1173,9 @@ [[package]] name = "winnow" -version = "0.7.1" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] @@ -1175,9 +1188,9 @@ [[package]] name = "wit-bindgen-rt" -version = "0.33.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ "bitflags", ] @@ -1226,18 +1239,18 @@ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/Cargo.toml new/sheldon-0.8.2/Cargo.toml --- old/sheldon-0.8.1/Cargo.toml 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/Cargo.toml 2025-05-22 21:28:38.000000000 +0200 @@ -1,6 +1,6 @@ [package] name = "sheldon" -version = "0.8.1" +version = "0.8.2" authors = ["Ross MacArthur <r...@macarthur.io>"] edition = "2021" description = "Fast, configurable, shell plugin manager." @@ -33,7 +33,7 @@ clap_complete = "4.4.10" constcat = "0.6.0" curl = "0.4.46" -fmutex = "0.1.0" +fmutex = "0.3.0" git2 = "0.20.0" globwalk = "0.9.1" home = "0.5.9" @@ -41,7 +41,7 @@ itertools = "0.14.0" maplit = "1.0.2" rayon = "1.10.0" -regex-macro = "0.2.0" +regex-macro = "0.3.0" serde = { version = "1.0.209", features = ["derive"] } thiserror = "2.0.11" toml = { version = "0.8.19", features = ["preserve_order"] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/README.md new/sheldon-0.8.2/README.md --- old/sheldon-0.8.1/README.md 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/README.md 2025-05-22 21:28:38.000000000 +0200 @@ -1,4 +1,4 @@ -<!-- Generated by cargo-onedoc. DO NOT EDIT. --> +<!-- Generated by cargo-onedoc v0.2.2. DO NOT EDIT. --> # sheldon @@ -641,9 +641,9 @@ ```toml [templates] -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/RELEASES.md new/sheldon-0.8.2/RELEASES.md --- old/sheldon-0.8.1/RELEASES.md 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/RELEASES.md 2025-05-22 21:28:38.000000000 +0200 @@ -1,5 +1,14 @@ # 📝 Release notes +## 0.8.2 + +*May 22nd, 2025* + +- [Reduce scope of file mutex][0cec413d]. This fixes [#196]. + +[#196]: https://github.com/rossmacarthur/sheldon/issues/196 +[0cec413d]: https://github.com/rossmacarthur/sheldon/commit/0cec413dcd5cb584952447dd2395d5e98d57672f + ## 0.8.1 *February 8th, 2025* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/completions/sheldon.bash new/sheldon-0.8.2/completions/sheldon.bash --- old/sheldon-0.8.1/completions/sheldon.bash 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/completions/sheldon.bash 2025-05-22 21:28:38.000000000 +0200 @@ -1,12 +1,16 @@ _sheldon() { local i cur prev opts cmd COMPREPLY=() - cur="${COMP_WORDS[COMP_CWORD]}" - prev="${COMP_WORDS[COMP_CWORD-1]}" + if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then + cur="$2" + else + cur="${COMP_WORDS[COMP_CWORD]}" + fi + prev="$3" cmd="" opts="" - for i in ${COMP_WORDS[@]} + for i in "${COMP_WORDS[@]:0:COMP_CWORD}" do case "${cmd},${i}" in ",$1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/docs/README_TEMPLATE.md new/sheldon-0.8.2/docs/README_TEMPLATE.md --- old/sheldon-0.8.1/docs/README_TEMPLATE.md 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/docs/README_TEMPLATE.md 2025-05-22 21:28:38.000000000 +0200 @@ -1,5 +1,3 @@ -<!-- Generated by cargo-onedoc. DO NOT EDIT. --> - # sheldon *Fast, configurable, shell plugin manager* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/docs/src/Configuration.md new/sheldon-0.8.2/docs/src/Configuration.md --- old/sheldon-0.8.1/docs/src/Configuration.md 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/docs/src/Configuration.md 2025-05-22 21:28:38.000000000 +0200 @@ -248,9 +248,9 @@ ```toml [templates] -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/src/cli/raw.rs new/sheldon-0.8.2/src/cli/raw.rs --- old/sheldon-0.8.1/src/cli/raw.rs 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/src/cli/raw.rs 2025-05-22 21:28:38.000000000 +0200 @@ -226,9 +226,6 @@ fn key_value_parser(s: &str) -> Result<(String, String), String> { match s.split_once('=') { Some((k, v)) => Ok((k.to_string(), v.to_string())), - _ => Err(format!( - "{} isn't a valid key-value pair separated with =", - s - )), + _ => Err(format!("{s} isn't a valid key-value pair separated with =")), } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/src/main.rs new/sheldon-0.8.2/src/main.rs --- old/sheldon-0.8.1/src/main.rs 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/src/main.rs 2025-05-22 21:28:38.000000000 +0200 @@ -40,15 +40,6 @@ /// The main entry point to execute the application. pub fn run_command(ctx: &Context, command: Command) -> Result<()> { - // We always try to acquire the mutex but it is only strictly necessary for - // the lock and source commands. - let _guard = match acquire_mutex(ctx, ctx.config_dir()) { - Ok(g) => Some(g), - Err(_) if !matches!(command, Command::Lock | Command::Source) => None, - Err(err) => { - return Err(err).context("failed to acquire lock on config directory"); - } - }; let mut warnings = Vec::new(); let result = match command { Command::Init { shell } => init(ctx, shell), @@ -64,27 +55,11 @@ result } -fn acquire_mutex(ctx: &Context, path: &Path) -> Result<fmutex::Guard> { - match fmutex::try_lock(path).with_context(|| format!("failed to open `{}`", path.display()))? { - Some(g) => Ok(g), - None => { - ctx.log_warning( - "Blocking", - &format!( - "waiting for file lock on {}", - ctx.replace_home(path).display() - ), - ); - fmutex::lock(path) - .with_context(|| format!("failed to acquire file lock `{}`", path.display())) - } - } -} - /// Executes the `init` subcommand. /// /// Initialize a new config file. fn init(ctx: &Context, shell: Option<Shell>) -> Result<()> { + let _guard = access(ctx, Access::W); let path = ctx.config_file(); match path .metadata() @@ -105,6 +80,7 @@ /// /// Add a new plugin to the config file. fn add(ctx: &Context, name: String, plugin: &EditPlugin) -> Result<()> { + let _guard = access(ctx, Access::W); let path = ctx.config_file(); let mut config = match EditConfig::from_path(path) { Ok(config) => { @@ -124,6 +100,7 @@ /// /// Open up the config file in the default editor. fn edit(ctx: &Context) -> Result<()> { + let _guard = access(ctx, Access::W); let path = ctx.config_file(); let original_contents = match fs::read_to_string(path) .with_context(|| format!("failed to read from `{}`", path.display())) @@ -152,6 +129,7 @@ /// /// Remove a plugin from the config file. fn remove(ctx: &Context, name: String) -> Result<()> { + let _guard = access(ctx, Access::W); let path = ctx.config_file(); let mut config = EditConfig::from_path(path)?; ctx.log_header("Loaded", path); @@ -191,6 +169,8 @@ /// /// Install the plugins sources and generate the lock file. fn lock(ctx: &Context, warnings: &mut Vec<Error>) -> Result<()> { + let _guard = access(ctx, Access::W); + let mut locked = locked(ctx, warnings)?; if let Some(last) = locked.errors.pop() { @@ -216,36 +196,49 @@ let mut to_path = true; let locked_config = if ctx.lock_mode.is_some() || newer_than(config_path, lock_path) { + let _g = access(ctx, Access::W)?; locked(ctx, warnings)? } else { - match lock::from_path(lock_path) { + let cfg = { + let _g = access(ctx, Access::R)?; + lock::from_path(lock_path) + }; + match cfg { Ok(locked_config) => { if locked_config.verify(ctx) { to_path = false; ctx.log_verbose_header("Unlocked", lock_path); locked_config } else { + let _g = access(ctx, Access::W)?; locked(ctx, warnings)? } } - Err(_) => locked(ctx, warnings)?, + Err(_) => { + let _g = access(ctx, Access::W)?; + locked(ctx, warnings)? + } } }; - let script = locked_config - .script(ctx) - .context("failed to render source")?; - - if to_path && locked_config.errors.is_empty() { - locked_config - .to_path(lock_path) - .context("failed to write lock file")?; - ctx.log_header("Locked", lock_path); - } else { - for err in &locked_config.errors { - ctx.log_error(err); + let script = { + let _g = access(ctx, Access::R)?; + let script = locked_config + .script(ctx) + .context("failed to render source")?; + + if to_path && locked_config.errors.is_empty() { + locked_config + .to_path(lock_path) + .context("failed to write lock file")?; + ctx.log_header("Locked", lock_path); + } else { + for err in &locked_config.errors { + ctx.log_error(err); + } } - } + script + }; print!("{script}"); Ok(()) @@ -269,3 +262,56 @@ config::clean(ctx, warnings, &config)?; lock::config(ctx, config) } + +#[derive(Debug, Clone, Copy)] +enum Access { + R, + W, +} + +fn access(ctx: &Context, mode: Access) -> Result<fmutex::Guard<'static>> { + match mode { + Access::R => lock_read(ctx).context("failed to acquire exclusive lock on config directory"), + Access::W => lock_write(ctx).context("failed to acquire shared lock on config directory"), + } +} + +fn lock_write(ctx: &Context) -> Result<fmutex::Guard<'static>> { + let path = ctx.config_dir(); + match fmutex::try_lock_exclusive_path(path) + .with_context(|| format!("failed to open `{}`", path.display()))? + { + Some(g) => Ok(g), + None => { + ctx.log_warning( + "Blocking", + &format!( + "waiting for file lock on {}", + ctx.replace_home(path).display() + ), + ); + fmutex::lock_exclusive_path(path) + .with_context(|| format!("failed to acquire file lock `{}`", path.display())) + } + } +} + +fn lock_read(ctx: &Context) -> Result<fmutex::Guard<'static>> { + let path = ctx.config_dir(); + match fmutex::try_lock_shared_path(path) + .with_context(|| format!("failed to open `{}`", path.display()))? + { + Some(g) => Ok(g), + None => { + ctx.log_warning( + "Blocking", + &format!( + "waiting for file lock on {}", + ctx.replace_home(path).display() + ), + ); + fmutex::lock_shared_path(path) + .with_context(|| format!("failed to acquire file lock `{}`", path.display())) + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/directories_default/plugins.lock new/sheldon-0.8.2/tests/testdata/directories_default/plugins.lock --- old/sheldon-0.8.1/tests/testdata/directories_default/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/directories_default/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -24,6 +24,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/directories_xdg_from_env/plugins.lock new/sheldon-0.8.2/tests/testdata/directories_xdg_from_env/plugins.lock --- old/sheldon-0.8.1/tests/testdata/directories_xdg_from_env/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/directories_xdg_from_env/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -24,6 +24,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/github_bad_reinstall/plugins.lock new/sheldon-0.8.2/tests/testdata/github_bad_reinstall/plugins.lock --- old/sheldon-0.8.1/tests/testdata/github_bad_reinstall/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/github_bad_reinstall/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -16,6 +16,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/github_branch/plugins.lock new/sheldon-0.8.2/tests/testdata/github_branch/plugins.lock --- old/sheldon-0.8.1/tests/testdata/github_branch/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/github_branch/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -16,6 +16,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/github_https/plugins.lock new/sheldon-0.8.2/tests/testdata/github_https/plugins.lock --- old/sheldon-0.8.1/tests/testdata/github_https/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/github_https/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -16,6 +16,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/github_submodule/plugins.lock new/sheldon-0.8.2/tests/testdata/github_submodule/plugins.lock --- old/sheldon-0.8.1/tests/testdata/github_submodule/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/github_submodule/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -17,6 +17,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/github_tag/plugins.lock new/sheldon-0.8.2/tests/testdata/github_tag/plugins.lock --- old/sheldon-0.8.1/tests/testdata/github_tag/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/github_tag/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -16,6 +16,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/hooks/plugins.lock new/sheldon-0.8.2/tests/testdata/hooks/plugins.lock --- old/sheldon-0.8.1/tests/testdata/hooks/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/hooks/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -26,6 +26,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/inline/plugins.lock new/sheldon-0.8.2/tests/testdata/inline/plugins.lock --- old/sheldon-0.8.1/tests/testdata/inline/plugins.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/inline/plugins.lock 2025-05-22 21:28:38.000000000 +0200 @@ -20,6 +20,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sheldon-0.8.1/tests/testdata/profiles/plugins.p1.lock new/sheldon-0.8.2/tests/testdata/profiles/plugins.p1.lock --- old/sheldon-0.8.1/tests/testdata/profiles/plugins.p1.lock 2025-02-08 13:58:49.000000000 +0100 +++ new/sheldon-0.8.2/tests/testdata/profiles/plugins.p1.lock 2025-05-22 21:28:38.000000000 +0200 @@ -22,6 +22,6 @@ PATH = 'export PATH="{{ dir }}:$PATH"' path = 'path=( "{{ dir }}" $path )' fpath = 'fpath=( "{{ dir }}" $fpath )' -source = ''' +source = """ {{ hooks?.pre | nl }}{% for file in files %}source "{{ file }}" -{% endfor %}{{ hooks?.post | nl }}''' +{% endfor %}{{ hooks?.post | nl }}""" ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/sheldon/vendor.tar.zst /work/SRC/openSUSE:Factory/.sheldon.new.2732/vendor.tar.zst differ: char 7, line 1