diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 000000000..73f82bb72 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[env] +RUST_TEST_THREADS = '1' diff --git a/.cliffignore b/.cliffignore new file mode 100644 index 000000000..49ed49f17 --- /dev/null +++ b/.cliffignore @@ -0,0 +1,1463 @@ +41dc59bce49a6247db240247b19631b8c964ec1a +68d7532be363aa2df7eb5afae082e83a250c15b8 +c5d91ebfbf1b7a03203e8442a3f6348c41ce086d +3e9b6b0e0629ba8153b61481e7c09145c2c90890 +3a93a5223f8c20e9180e0dbdd514b3af7841515b +581bb88e9a0de56fb8ed28644bd445adef863b9b +4750bb8bdc5506ed1c3113c78b9222148afa2f35 +3321df155a8e76693d68acfa4773a263d6343f99 +6209476f4bd242a7b20bf98b4dabcb1cded0614a +3fef656ccffc71907316d8898eb00a95cfba5359 +8e311ee15386f81c86f8d2c8e37e7c666e23bfde +66eddae95d4fc303ae897609dd25fa8e044ca2a7 +4fc5f51656c93bd3defe231df484881d46bf2203 +bb089c2fd9c516e5b8f1e25c45092de53b2c3708 +065335b89ae1621f9c70e0599bea9bc1a073bc60 +70e021e70d76ed679dad09ff9c60c18ccfaf0280 +845e62918d3573a70075d385f0ecaae683d2eeab +cf8df616d239084462c09207812277522d47cce1 +5afe7b5ad20332cc00d3253d6411700081c310df +1daf96b6622901b9bde37c26d5bbe4c55317fe7a +5186aa0f5accd07be5544d1c5836ab9c4c61c556 +c0e6de924f5ad0a28ceeba8bb805fcd652cd20b7 +812924c5de02994c95c4311a98b83ee476f1afe8 +506aab4cc047c7395285e17a659387eec30580bf +3d8d1ffb25f7b16dc71bab00ff55787a3120a72c +840967865e2956e03c89cdc9d0e9823c139996d6 +b6aecede936c35690bf89016fdb8da6c37069947 +dbd8292162701cc9c2745dee47e87b6195c5d3d2 +33dca1fb779aa65390cf3d8f50841f3f89616854 +fdcd88053ef6dd32d001a7169dbfb564fb2bda63 +1151fb362989fe9f71fbd973340c619c0babd797 +9793eb7e0ad8e194ea9ca1a376e255bf0754f865 +c515b5345f9c2eabc4199033abeac2efaef2434c +ee6a3c56e13a50df3c8f98f54e201a14a7c8e36f +5c799f8d1874ab6239daa0b076c0198305ff164a +c3f4ef3e625bb51702d4d00eb738d3d4e5991f00 +f2a1f657343d6703c15f7f372feb26a5e852a381 +4008c2e068cfba70fbd452f87ac42193481223b4 +705d9b01908a5d56bb2d4b26ea40ab576b38c364 +664d2458596626890a581cde2f51047046795d4b +1d090772212f8b4166b11467de220ff4f1405c45 +cdf64c4110b72b8ddcf103c91d00158af0396ae9 +5717e65719cd31a8f0d348c9d04a6e4b76e40703 +fd9774524219e07fc08711f0f824a168389f3df7 +20d96e3be8dca64bef62a4fbb1c660d63781f125 +4dd0ded3872bfae7195fb556b63ba56be1b88e4b +4179dc6a94126e7e8bb09ac8026af83d96eced58 +237b6ce44c2301050e254140a01c7e7a25405dbc +0c252ba2c3d8a5022d6705edcbb9dd8c51ee7d51 +8aa2e5949418e34a805cc29e457a4d184453245b +a1bffa43e20d80d9442326fea471e2f474404f07 +15ba8d55c40f9982242f4087b6eb279811c696e0 +154b68b7f1bc682d8e6fe54d884f15a94b1e1458 +54e3e7d011b8324dd096bd4f98a74ce59ef42b99 +328d56b9b2a912d557b808f366ce4f77ecba3a3b +4b0ec812334ea8bdf1d27dd103044dec27af3c3c +23196487296ba3dea97bf6cc10bf5071081baa21 +dd4921a7ccb9df25c6dde0a36b45bb0c1bccb5aa +f2a360fa50f2672dc0a2224444189c1ca6b24f4b +04683b79a214c2502c0fe36da0c9722bf0fd5079 +e15496b0561794a5fcee73ebd9c40d76a3294b03 +7b2d4f589aef880d760292d5c728bd69202a1881 +3119c37b92a3176fdae856eb3c1ebe5309d2a96d +6c0e16148a276e477ff95c1808d809d4edb78698 +1314705c19750b462c93cc12dea7d343e0861b26 +f357862d210cd2e35624f91c9794ecedb05e12b6 +15dadb14e1daca61fdae4c4204a5d24c138e6fee +f32b6d1cf638f1b2e6ac2033c860ce110de1f8dd +7f356433b79007ea2e0a31cb0096b4ca8508d0d5 +6168b62960c6ca51eb3dc36923259d08939f01fa +5d2a38086463c830dd2160256108f5b90491a89e +a4989e9e2479213b1e211098b9a1f9a239467d02 +226528fc4eba55a8f82988d26f9f7147ffe03a4c +a2c0738f16598f4586a4ccbf1bfb79a5e53f6f3a +bda7ef9320c1111e8ad0fe3dec9e26e74b3959cd +427556972ac64a5350335a46cfde43bc58eaf396 +358f51db6cf6fda0b2982ae0c2230d843c785a8c +c585e3c6fff0fdf1c6ecd02991326bef23091446 +08874a72094d064940b999b61257d01e99ad84f9 +5c163146150883fa26425d71b6d90ffda2c6265c +b295fdbed33811d0763f6673cf63d93ee6049831 +55b70fa98b955752a4c854b86ee0325c255e1052 +e40b2bcb1b5b6f715af78b89d928c7dadc4cde1d +962ed4b785f23b936be0ceafd58fa2c203935db2 +776b856edd0710559cad7871a55bc1567e63e986 +fcea53d091170ea23b9162d8dd1b4114fb9baf98 +3fe8afe84ed35a1e8950ddb060cfb63c5822bb3b +24b5d7ca8ea8489adbae21dc6dfc39136249bff4 +d1f9d0e92d7fdd3ca1f24ea27bf9ebe6228ecc88 +29698a0db28b1ace4a15ff610a68819db8efdf20 +fbd092548aa32548a784f13d575d3d8ee9613470 +ce71bb312c34b2afabea8f081b327ca17bdbe8fc +722f80c26ee1bdfe77972e2181491661a4dd2379 +be423689e09daacafd4934c898a4132000053869 +b3cdd77dc660a78fe955e2677f757aca0fe4119f +8b5ec2b77aed781f57566790896f5c6438a28963 +1a742b7290c1d9ea3c0ad40a68a2398f1c87ef5b +1ccb6c41b955713ea6a4d1773e054a27a2b02c50 +6d5e5f82ebdce2253b661f662e53fcce61590681 +a1898077c5bfbc078e93c1c7a8326a32c64f1756 +ad71e2cfc56420ba932d8e89136ab53c577c3973 +d3de49771b70acdde506f7bd66b767885723ba0f +b0ec11318faff022dc3349a75c39eb9fb9784002 +3594ba816c4d8268ebe17f41d26b2615f9a37fc9 +2e694beb33193d2e50d5b94c01d01e5730a0b9fd +2f1017c7beb5d0fb6e41c82919b210c8ca6f20b7 +c439b9c51fbbd803eb5c4c18fb31c9655dbaa831 +682d4c90f512ee6503b1fd9d28c18ad6ef5b96a5 +f4ddd9ad11c92fb307005f4cc80c7c60b43e481e +25c29cb892242e06c60dda292864c95aa53e703b +e51dacea138f3de0b88af23f7faa83fbc7ec72a3 +8dd08e1344c74562414cfaf65f8ff7a73c0f4d4a +0985ebab759f6abd99693455d02d0c66bc4b7808 +7493803d4a3b53e8d3e1746ba38bc88bb69dde3a +8faabc95d29460f59bc888e89a63220a91e4c3af +c9e3a0c6687f7e23f41052c2e1438db879da668a +696c82948e4e85afa3506f2040b3172861f7b434 +65074ab714ae4f4928992c299935d6e409edcb3e +fddf4d829175536ff5e32a998904c41d0b05b339 +0f501cde659ce2f02fb53c9a31b89ef791dfdac2 +f63a9bf975204649b56b95793ff222bf4dd60cf5 +8ea497e38333e0fe012273dcf359474fa4623702 +5de0fd39829ff23f62576cba6c1e3d5c0783e072 +e72e5e27909f5b8d6f81c51162caf1a93a5a77c1 +83774b427ee57ed51a7f25e3d941df5fc9645bf2 +2b30943bd7d5b8eb65fb5740bb06df24cffeb313 +a85991697dc6cd17518a05e767a74c8c2ba6f27c +bfa2db63258261fca60e9c1906651242a8e9b4c6 +31d371cb181ead8f39ad94455fc837eaa37d34b7 +996d3d05aa2232b183a80e5491a7b533a580e153 +22e38066443a16991941ca5a2a9f19dcd9865ea4 +9b5378c1c8aab763edd16b7368f7214e3d2fdbbd +fbc76d7fbe2f9360ce1ddc223740b537bb8f0bed +dd74cc440168d4cde92a7caddbed552798181152 +45e40c298801ebcfeca718222517e30f753591df +93fdc1cd86fdb0f215851cfc16233dea17197254 +d68cc69b677e43812057f4eca45e867a8cf33c7b +1a83ea21a6611c9c402ba9e4c6164a6710740823 +131764f1e8755cec0e1f4e66277db4ea5b9362a5 +27da1f6dceea2164ad12b5843c3a6916523218e1 +ee50be6389defa7d0cfad6922ecf2cdf53107930 +833f9bd7ede38d0c94f41ad1a7001a1ca75dc917 +89edda87dcd6b03775f54a65cadd84efb6418c14 +e7351db7df640568fabc3ea701d923555bbe310e +b03baaa604324d0e5dab57ea6bc886411530bd81 +c0b26389d6cbd33530e82d9aa527fb16beca9ceb +28bae06c8638bf4609093b20abded5b8e6d5adeb +eb74b8825d70cff923c5682581c6d213e71bab56 +ac3926cf46a2185a090f5744a68726ac4b9c737a +da954f2c9f958750b9437235db4ba98f5176f589 +fc86fc9199095303985ffeaededa628d7a41bf8a +c93dff4171a20a70e1c36e66b9f2131f380c9afb +f1e0f31066773b678cde8758a71c2ddd42d8fd1b +2abd88329f26801a237b07c6010433ef898ad026 +6e5b492c0ebf00032b7862f3c95fe7e917745f57 +097d4aa7fb01fe41776b018fc78f3c905d859b4f +b4317cfc996411885ea114b0522341d0a1440a96 +09607be5e5b16e8a7f124a52c119ab0a19ae6b15 +703bf5c7cd73426f206550f71fcf88b9e69502b2 +f9af3de2a84c4dd856ca23d498c0249b8118e4c7 +ebc3820266b57a9dcbf662a651e10ec19077c310 +11a16398cc5a3cacf9c172efce20bdf54af22a06 +4ac9e61283a0081421e0785526fc903caaaad2b0 +2e2de4258c760c894f564febc51d67a766bf6811 +7726d3af56337d254fbc6123fdc7ce45c6c929fd +17c0b194445f6cf25de2dd3815988f26484e098c +88007e10ff4f67041e5000efc4373af125e83f74 +7cc58f31869d0d7e20a48eeec7ab964804dd3965 +d2fea9e449f597cf0999f14fe12b94fcef79ab9e +c8d464cf72a71b4be5f89ed24beec9ecc18eefdf +a2d3dea325e30de10ee30adaf3988f24b327758f +84f9ada93153511e51203cf3660838b75268a7b9 +42ef3772359cb2142e357508706acacf44fddf10 +27c9ea76dbd1cb72af70b2d8ec77d582339958d0 +154a585c1d8ae7cea62bd2b71f195d1fd815f1c0 +363be6d36b7f6705ff4d8d779661cab6b8dda996 +88191bbdeb0cbc380e99b49ff2352fbba40279b5 +e2379989e2bf4797b6992c705a4ff1544d2aa2e8 +254f38f14cddd37e6cf876a589fb85354f948eaf +7b54a7828261795bc048697f8c4f4f0ac40cb67a +fb7e314670499ce64dd19503f1f0b011824e1b18 +a4b5f55fa2a6cfe55b51a5f4379df7b7735886b6 +044873f90edf6be00c3218ba1efa50bebf3b4a8c +50f78fa32956c3aa0444a1a3bd1e0ae7221e24cb +6b5c54a847601b3a238be15ceb2f8ab23574c078 +45cf271475d293ab9f6b4dba3f56d6b8563a229d +30b564a8f475ab3db815fda1f78874f76f1d81a5 +b59cd04f89178697d7abd6f6cf0bd647d099179c +c50f5c202ac5e39292a99269713adeff3a03ed95 +5374567f68aa50748fcd981b0acb4a208e34e5f1 +14da46c012c7ddd29eda566581e96f9e321ee9fe +d200b86da91fdc1bbe2c6e8d002a4c19c533b424 +64c3bd00f62fa0aa75197ffd05e3e893bb693c2d +de7191bb6c6e29985de8e00d854bb56cdba7da91 +1b5aac6a777511e31a9b532642b3b4f424dbed79 +079c3cc9a2bc9a153293427a490b882365e2fa6e +5cf847ef209feadf0e2914fca16398c5b483b2c9 +396cb1497113fa41dad5361d5359ac0be83c2b2c +926cd93d45158627164faceffc32720dad27aedd +278c0fd98a37d0f4ec767463fe895f60ae5d102d +e018e866f0e24f8593dcb6235c1306bc4b6282d6 +c7dde14287e75a44c1b7056ad1bf07bc145b6dd2 +59d9eb7e631c955455d066438e20943729a9606f +76e85bb5cb7d9429b484292d6f5fb2da1fc182ca +3203c539242af386517d815c1f0974bf720cfc3b +5b1a348e0b8d7ea1b104dc90b6ab131aa404eb22 +b40a6414a4894c8efe709f3c8004287d5be78b9d +3165d6d83774f9648133179eeeeb5e67ccc4bb15 +e0d3bcff9e73392ee84a3925f5b809f122695e22 +9546dbd5819cbf3d17cbc0a99ed25567d2bf6a3c +4d148e5dd02ad58769f19efa562f9ddf09c160bd +b7d2334dc87e6dc4da6abe8ffe5403c792a1a127 +e91bb2f969d44425413b700278b3ffb29fe50d2e +2abae300cad34fb0f9a15ef37682bcd943437fb9 +2f7d0798f91de0d0bcba8ea17a738665054a4555 +29d66d4da5fa97ccfc643814497c94dd63421390 +1aa98e880cc1eac4b7803423a4d030f834aded77 +4c7c63504ecb55f74c32f61194d9ab228321cbae +e0581f6f10e2f236d813294c1637520c214d03aa +956183f2e3cd9501b1bd15e24959397e6f7aea68 +1dfafb8e26aed3541b64d60d21c01723db52216a +234a0ad16a710b4c47f270c4d8dcb0b6dd8427ff +19168e2e953efea31d53dcfb0884ffeceaf76e1f +f2893aa586d5c97eeef9b22df596dcf0778b9ec3 +e577bd5a441a16eeec7ccccedc9237f9441cce2a +0c786625c65146b60a8e62efd42aa2e44d58c63d +925f8875c31be27f44e0bdd4039d8b23c0a027b1 +a5f97966ec49220f3d1217befb498ffc32e98824 +113f1af7f21e21161e28886a009865845bb77a77 +d36a9fe048e901f7da461fcfbcfb1bc17c00f3e1 +7291fcde6e1be72ba1298d8f6b6074ca9cd02896 +37b03b4faa7faa78aac3bb8959a4d1df63032f8f +992b747138d8ffe98f335db24510b1160241e679 +a776972b847953c891711b5455439c1c83dab101 +7b7b74a61c314a86e24c4cdcde2ee2bd508c764b +9563b55d4fa23d7d663cdaee0881c44163b050b2 +bf285a5013842e9d08976ef12d7715c2780491da +25a24190d59190d223a9461ae6b248b89af7dcf3 +e07ed4000eaacfcb120699500a80f3ecbc11dd0a +35ed2f8d3d5b9c424aa80e0b2557c148240b689a +dccf21dbad5696c839c34f81ec23d2e27cacfbae +4e4397912791974fbb233a0551fdcdf064e6f0a9 +32f485b127ca6d1fdfbedcf97a35afe70b35b8ef +8dd0174268d69a79eac25979bd0322578c4e8dce +3fff20a073bb81e9d4473307dc4fcd2a70c9d8d2 +e4febaf71a5ddb1b93d8456712c310f0a29bd20f +171409348574994c0bd20a84cc8f8ccd9bfc11e1 +e5479032a4087241a0b110c93738cc37be6e3ffc +253ede809189f4e6ba334c2ebf49e9e6d8a0b6fc +e88655877dd72af79cc62eb83fe995a226370496 +9c6e3f0b26be9d257a43749af58b3ada76d523f9 +d2c40e32b00131ecbd72619597d62e1e27bb42d4 +7fbc03900b64620fd5248b9b60639cc9d4c262db +8a97cf5603a4c4558cf2e70e9d3324d460ed10cf +f42e1a6256caad63ae3f7aa34d338b66a18b019b +5fe3f5b60824033453e128ba64907416be9f8e71 +879434bc2e0639967f83325f642f8bbecb32d582 +9d4151f301ab7a53f93e44541168adfdb8aa7943 +db19c8743064497f0245964a27f3ec7fcdcc9db8 +e29ddc8ab1cc9898ce756848bd99bcb94522ba1c +e605e11d0e500031f2f665d03ee1492e5f94eeaf +b477fa2c37083dec1372338940e285820d1d7d02 +4aba36dd8dfaabab739e3573041cdb7cab1aa32d +cece30088a33c43d33ae77cc768d583af3f99b73 +29f33718d9f9f238caafcfc70a03adb84b3323b3 +bb7a25c007c514d82c9115a125db7ef7834b1fa3 +dedd7e4c5a32c5ea68813c5f83ca8c12cf73dbe3 +eabdf063f00cefeb0bf13622ad37091517ff0439 +949076dfa8569caaf9023b4fbb786d82f9db564e +73a20a111fc76b3d68c0b441b54960f6ac4566c0 +7ffdcbc583cce54d9c7f3f4362402554d81f6101 +284623edd6b47275c5a3e8730036affd3028f6d0 +56126d9b295cf42be347a47ee9a1c6ceb6272f3c +ca408355a46171ba0a324efd35042a73b4994ce7 +9cc0f70555bd8047657caaff3bfa0748adda0c6e +0a5dde339125eabb95b71906afa60c01c1eb43e3 +712c35331d8518b3f1ab0d0db352dcd680348d47 +ab63ffa56c67dc51fdb4bb1eae33b8a694709b1d +f4b510d1d0c01ab2da95b80a1c1521f651cdd708 +ba2a5e65e87a2ae34614ada00f0225a1e6a36f06 +26dfd5480867788197f0f1bc08392b842d00bb8d +265a294f7e6cff03082797c1c2e34290196bbe74 +23c5452d3e8f5e99ce863457ca7acbe468ee4079 +ce1f3fbbf3066e60e130898c032b450a40d9755b +3ab5f694616316d2cae2e29a7f79e057c816cfa1 +9612a30fc76e1ce7725c24c23236225d490b9cf8 +53b2f33f85aa9df7f169ec78c5f12240bb367410 +24018b18aeaf8faf8fe1120a9941f2cf4bfe159a +645dd4012ad688dbc6850409439ca947cf594fa2 +f99e1ef13f9c9d1dd8fae772614524758383be1b +f305359cd97d76437fc66b2005ab24dbe59163cd +afa2770089be074f8b59738048512daaff2c0ccb +814a5a1149fedbcbce01ef63333d3b395bb08ef8 +2669bc80e5d10f219795ae96ee850fc7be54359a +cf78914c96314187ce5befbb1aede4e34db24e02 +f361af4dabb6c127cefa4ea51a21164ee9aca42e +c9a90e6242fc850646e3261ed941bf0fafa53c92 +a996b425d074f7a9c03bda05d55f640317b4e38a +633c8a421aae5c92778ecc31506debbfe0bd9907 +5233fffdd7935fb953c3fb400921cf58fad6bc9f +7a4d8ef5cfbd30be0d2f4081670565883cce6736 +d8d62c6fde329f79bf5981b95c711e866dcbb1b3 +197431a457dc8b212aaee4d08d5f8c440a6ea320 +279007874207057ffa497df4a7ad50021054cf53 +9a207620123b18f509d41a8d818f2246cbb86f03 +5517ca71ce891c8d61fda7d0b94e4a31b03ddea2 +04130f9e2b2f753ed4ff942e0ed5ecb9ce987463 +b8669b3961df795af43efb112098c8a98854f51c +071676386dbcdbd6d68a74a2e1fe189ccc150a89 +b5f0fb4677698f7300c71e19af33b55af81207b4 +3bb16e8343e80a0fb86d9272fc5a93d59b24ba42 +25978779c84c0089d5bd1bd474bbd50e8cae69f3 +70253fe3cdd4523d21b97318455bc1ddd805780f +6fa2f349df8c150218ff17c59795aa9aeb6c809b +4d7c5358713c1bd3a0c8e647d19b3cd7cbb68018 +ee05369238b62465e06331b87af0688c6ec412e8 +c581fe04b24f345070199a436fbfd7556a83f892 +e75f350d0ff8b73dc58d32f50466a2a5cc42905c +51bc6ed5f779e4d2eee259eb82612428d83479fd +a68e0f916006c86b418b4d93f0f9454681126e66 +200156ac7a482ba0e3fcaabfdcfdbba5e3cf5180 +3596050fe6a623ef3f0a12ff7dd615c0c7d774d3 +0333a4a339f13eaa7dfcf979c1c330d8ac954479 +dbfa038916c300184cacbb68aa2b42db331aef87 +07c300391e9c90ce55eeb847ad28959d787e3054 +75e71b1e987b4698236c9773922e79277e162a9e +304a1689e2058cb13248a4b9533a49bc0dfb6d03 +b7530967b6c982be6d21dfc472f8452caf2b68c5 +3b59c3e5cade315d935b3782b993ef08703a4927 +67aff865440f442e930134e56707bb328b75ba2c +82969331df11ba93e8bcfde89fc22da5f5874ac4 +6f5a838da5798c4dc7bff22f55705f3d7a97b7dd +f0bbf46c82d0437de6a6fc6aa6f05ab51c78d492 +9e6e1478b2d1e3f206bd3ce94a7be43d6a789d98 +c7b79d84c4aa51dd60d7495540ba3970645d152f +924e9aad4e2ae81fd44ab8c7851f01d6f11804af +f1c8ba3c0ed87f844b99e0f3e358211451119f18 +d65a3608dfe64bd70d49bfa35a202dc7e4b37ccb +6498384c22a29602d065d3db681b8f32f7e4295b +954dfae6773665538632a3a1e3ffa5dae65d66e7 +09766214720d673c47ca1f7a7a2c9d900203c796 +9e8f2fdca7ecf0668fc2a5a3672b9c398ebf1acb +8f9e63da33419b78f62a606981afc20b69a341fb +9625bd57cc40c518fd08eef9085031ec631a1311 +92c9a23fc8b102e64eccd688d93aa60a8740c931 +d69245aa917ae756c370ef5e38804e123372cdec +f88d65bbf979a1718271e5550bd05a8f5d1e9230 +eb901997c111b618b9459618c514135cc3608d47 +4f6e438a2df262b6d1f8b728f31a497c5d03f5bd +ba096638f9dc867bf9a8f7791f22e31d800d3d93 +fe1df2a7c14b0653e3d5206470da7269041434c4 +e98505f3e305af398dacfdb1139a18ca87ad44a4 +bc4dd9660d28cfa1f0a50fda006d21b5b01a3d2b +96ad53be405d8719f0db2fe9fecb0a7d6c861432 +4c32d8fe151261953de9f4cb9b58713dde24524c +05fbbdf522a1d14aade538a7ae02091f74f0aec9 +18bc7b617dc1d8cd71cafc064c03f03a0d5226d2 +0a03801224742f2b22fba7b622a6e28cd896dc79 +8b3d536172a15aea20b7c52b5a950e0f57df8f9f +5c3e2bc6a7e578499bd7799a358802fb1848cc8e +96da5e3fe67fb558a1d8946ee641d012645de3ce +7be8b2879128fd9a68e75e13b2da1f99c16bc619 +87382a01ba88df8594863aee7864d91446a723dc +cc4d7e01278277e00743b99b3e54d2a1611f0891 +3735ebd64c13c7a3ad28181d9e8c73f692e41f85 +04232d97e996528e8d663b1d35680e5b12c8fd32 +ec84651b4a19b0b58a478fe2b9df56e4fa1c469a +c0007f704bf1568bf2c4e58b26145219bbf0e900 +ac15e66fe1089a0007751a775bb84b212ae92f18 +837c9a34f641038c09d0797006843555e2099bc8 +07e4e6c675f7fed168855fa2d95989814b33ce67 +87dfa0c954da7f4e98b1f0db9f72958aefec31f3 +66c6f117c65ceec0b777f23cbf0c9ed42ce31e14 +e91552b75132d891c319e5a1a54f17017b6f1473 +8e26c1c491fe58a4b4d53fc520eedac0e3667b77 +08fb6a907461cfffbe0c19aed7a434362c6aeadb +e77ba644694e0f0193790a14a93caa52be9f1a5e +d1f776a5d754ab0b13fcc921ea0b55fde9a303ef +bc90e4f7645879521630bc28e317325fea84dfcd +5a48608f7640db3f25c90b7f53bd79e8ec951420 +c8fb3f93bc12643a5c554d8c22173f8e0438d1c0 +f89733741d563c2cdef3c1809f8304ed4ad8ff1c +3c1b317ddc754ae17db56d331074bd37b45978e4 +078a889e09f809fd73a546cfde53195d5fff47c0 +cf2bd80865058f1be9dec596abc47dfb14ac0808 +b38e38a6b6f73b0499806014cd3836603961b889 +df32310943e97a647ef00b22c54174acca0a59cd +de4ab07d6ce0e7467f5c52224540f0d0bf94dded +50d70ba795d787d8830405ab9ecaf66d7f0129eb +53aec5a42a2498394b46ea92f573c08b0c53f0ee +59a8d3810c2bca577d58a9940632e9626442b424 +358a333351376c3ff11203081d5c717ab7bcc435 +30cf6dfc04800a82639ad1243f8c92e1b5cacc26 +17732052e1a2e1c105181db78e9908edf45cded9 +c06a973d2d43e307084ac37fabd25665ea1b1c7a +e5357dff998fcbedf84e32642e5500c9dc011189 +2b3083e440d78851f04ee47f6d003e89b35f6076 +a26d20a64e22c81eab776c930f01e7695f9c62a7 +6731c87e9edf507e0f6217647641359b1fdb9a1a +c6896d7a3c8a62820714ca526abfed59ace9600a +87acc3dc9b9ec44ed57b0a85f679c5fe3b30565b +006c49b981dbbf7470af5bdd35685b1e3cb4eb09 +7667d0d1cd032d6900df3b643084e1b0136e7bbf +36ef1ef1eaf8f656da539c33c6d8e7e951dfc670 +21a5af2aac2f7eb02d0a163451c474e83268da2d +aff51dc8cd9634818455a797c5eab1c477b06a27 +8b4349f5826f285006dfd305d8c76c16de2fb7b0 +f61a114e35f1d530ee1883619da8fec22f22e927 +528dcefdbb993d67465ac64acaa780d8458c96db +811799c0d6d913a403185b4d62ff67efa25508b1 +ab076680bde3ae704f33114d415849441604d2eb +d6d7abfd66dda3a5aef6e2ab46f6fd6e168fed66 +41d82867230e818d2731275cbe942f88b7ab608f +2bad31ec240b06e0d60cade01802304c76d9e836 +e6539fd1cc49f2874748ee5a6bdd7ec2d05d6192 +034b8c6a71e21308420245e2f44751e0bac5381f +5a3096f0cdf762ed157e162026c452ddcef5fb40 +e78ef3dcfb37acdbbddad2240b053fc655b8ef0e +ad5b533775edd1b0eb0f569a2e9e7ea5ea750876 +0a4652b7f37b336934914a9e175fbe6c2b6a9f49 +42bab165f6474f93dd60ecd0090d4411b1b41241 +6c19299964caa91c1fd298c433bd12f655d2bd48 +2e785376d5702785020a3603c3c6fcbb712fa8b6 +df7ef4ab58209223367ef5bcee71aeb3f669af96 +aa3dc3d59720f628a2e6bc5cd6aab2ea24e82bc4 +8e17ee6eb45abfce43dec358ed58665de665f2a3 +3a4dbbc294c38aa3cb3ba4619c7848a24c0e80fe +476c9cd06b264fbf5c02d3cd343fa6f4a8ccc397 +e9bc5ec7952c8c9775576a359e820b43c799341e +c3b2d820f7798d4a67651db370abcf4ceb37b51a +2ea06f4d4b7c7c7d57c41a6a713f719fa2bd38c6 +02eabc830e670ad2de95f9c1963194fbb6747249 +a47b6b49a680f2107c0513eb0d2198ac197e3d34 +42f90720ff00f7e63361eea914d395397fe24487 +a1c0673667acaa6765b1a2eb63c5787d037b6cb1 +aefdad6645366faade38f7940398968f1b04b594 +dda9eda4ef433b054a31463b50545b28b481f4ab +935e8080e603544b8457118b0f75e8c4bd5bdb27 +04103ef1c78d56566c9b1a8248a8b45fde301aae +eda2546b5a0a7e415c5bd92e8d068500a0378897 +15593f35098e51c7eccb679a702c29ba9751804d +22c4cce8716c95a00ab95209a6304c1b752894ac +1fa496c0f547cea5a761a2b9a47cdd09799f8425 +eb2bbcda6db641ec315d5fb7b9d670c8b984ec69 +da24bd7b4bf4da901d578ab2478c5248a66f31ac +621e08895483ec634fb8014b626ee0289e85c450 +d0637715f833159c468c3e8e18a90411cc733cf0 +71c590648c5c4d0834517d1f041fefa9851f3de7 +cdde830f69a80ed2aa96bef2ab20794afb1626ac +01aac9990f40d06e904966542798e1bf0792b61c +35562fde1f77d3d0191d2e60b4a35c52c169f91c +f2ff4959a65af033fb953d71e0e119f6bdc5b182 +435452fe2eee3aee7c24d7d8b1b8605678184569 +9a48d84657012bf6e2af9427ad3752d13bc5e66a +9f13d20628d18c5d888a3546d3c0335a820444d0 +6c3ec3855634f238bc11cc187c46c255db3abaed +152494108a97bedcbdba8277e427a79ef8dbd545 +7a90991193573521e9d2f5aaf99ca0efbe29585e +1ff9ae8da5aa9f05913123f1b6e9cc98af6823fc +9d11db5956a1a0c5993cacc048f1fd73608d5237 +1512fe17cd387f4d00334b66e077bb6dea6ba3bf +338c11b8491f1ac9cf9dcf1539b7e599c0a743b6 +2bee8a7165caad1c506b4fdb71e8d31146a5d3bd +7d3c29e0bf4a2ee11112946c1e67e6f546085a73 +949f3d55573030054614707d28642128d53738c3 +8f6435fda2053a723daaa3291a7513015ebb5a1e +8b31af4cdb97c71f684b3663dce5d30b4dc24ae5 +cb7859fa38f407b081ac80583f404ffb119304bb +a41d66e7b9ed62c68aa51b696d157d786879811d +eac375be1c49f2d3710426f86625e50333945f27 +4684b25e81aec35b7acf3020ef4a3560462a0a5f +eee25fc912144903eefbe63904df74ef176be49b +bdd655cb1a2ef471d62f7755b0ef8a6425b752c2 +1a7846d63d51d3169cb102aa762568b2d100c233 +24e97b797070d0c09baae6937c0c506db2e333ab +082b89257ff92aa5b92ce443788509823bcdcd14 +cb258971239451c70487a723872475ef34a90c7e +d77bf5574410304cb1c1e0097d84e0034b8733be +ad6501a8e184968d663890f83a6396ba6d8fb769 +bee86d5f72641061d6d91789202b2b225c25d538 +fe90d7af11a83c59ed20a781a44f2ae8882048b7 +c7e59cc74fa65e5634db18d80b475b83483a0f39 +04e161c8c289817febb3aa4c798e2b09c1c343ff +762cbae10e9da3e3be603551cb99a4f2f352e393 +e9cbdb1d4a80c04318d3c998bda9eb56626f4c5a +8533f69ffb92849e924ca2a39e1d6e72c7131bed +e20cccbf299853e7e1c5133ec1aa0514fbc2c8a1 +72a6d117fda7400bb9017c1d4fca7f0ebba4bfe7 +955b9e1741d655a5d70f49321c9bd9ed3b005da9 +8ef69e30401b286cb8de1a285a34158725f3ac1d +ff83dda5b158be8d6c71f30fee3c587f86f3d330 +91d349a05a25ec513742e161b65a945c31eb406c +ce0af2c8d68419b3d043d26c80b7d415a072ba10 +33037feb6b859611407e3a53f6d400913f925fc1 +d6c318926962a1f449cc142f4a35978b2d5fd597 +ca8f4ce09351c08f95650eb729bf3a38a34833e8 +b5a51d9e282db645e2463b8878c13b2f16336654 +2278f973ac39bec0a45303ce891a27ca69a06c7c +9c0292868bbebefe4b999388dc0a599d4cc721b6 +31d79d4a6e96cfecfb88285c071d3835fe786067 +c9ba36a0f0d6749c3af24328ee058f3e78c263b0 +9cba4f084768dd4f3e9eb619e90902b94f67740f +68e995d68ab368ac721d5a20281519be9c07efa6 +9c1266544de1f873d8468411bbe305ac0a5e33b8 +3b2d815061affef1599dc7e3468639b5f5aa782c +169e82c3b5cc7274b9ec99c9b2328ea305499a42 +8e2e707228e9de7e6ae471bf9ddcc06da0ddf551 +c9d0599ac0ab7576ad508444f1e3c7555624a2f4 +2300af7c0f656a1782518dc1a7c4f3d056dc095e +cc76a83259eb674d3fb391b8693f59a39a7ecf3e +c5b93443c717205b760c7ffcb9516487a9f3cadd +702c78a3fbd5afa565ad996700810adea37c7b74 +ea2e8baf36e01b2a059b301eaf90af3e2ccc0e42 +28e5429fa7f1d944f35ab2eae57a8058f5404113 +43e10fa65d2da0c00243963203ce0bc51e68435e +f1008964a05a87e80b4c90d3e870291f1cc85a89 +1224f5bfc7d79ee8c85aa7f69497cc9402773175 +a80b827becc664bb608485a0aa960ed2825e7444 +b9665ee073c4db11e8d069e7f9708dfbbf199ab7 +d853147639dbb8f0ff11fa8bceda4878c43800e3 +08269063d6b52087e485d827798803fae9fd06a3 +dacc21030a8de012ed40ab1fe54edeae7ec43306 +bc7c8b679fc738fc785532391650bb573477d2ee +25131120824f5d755f3c9123c7e7afd2bdf482c3 +25b14f53722d8967fddc1e4eea904ae46784a65b +9cd05da8f85ceac57011289e1bb60e678ea281a8 +ddb7ba33813e567fae8dd5df31df87a465967e03 +7c4c6176d3e16128163228d0d3d41011a9ab8902 +071e261c71db7e9a998f5eac2ccb310fbf8c7b9e +e9f2e4daf134c542efc89b7670b48b6982ef911d +44081d0ce5673b8420d7aa055e1055e9a67c80a9 +96aadf3a198c8ca5f2221bb078ea587cd5637d36 +c018ed871a815356d369525e10e7b0d10e1dc412 +5094227d32bec0e7913931a49f32334112610dc7 +f03b1136955f9ebd4d51d6c6dda667a18a963cba +da6482da97abcb916f12306824a305de35034f29 +ababcd668be2631af7a16e087aa2468c89cfb6d5 +ea80f11a975f95a69f3861f6126523075e1ce2f8 +e7834151b42adbac034e884f699a34ee0c881283 +52d73d9fb5b1bb9c04874571d779fb13cf009547 +75d4eb92038b498d37238f1e3d3964f180dedd42 +fb06ecf1e80e5356f33402d8db1988c022439c33 +d51b43ba50aed6a2c769470e7470ba9bdd00ce8c +295b217644914ea0ba5c3b11363ddeb727f36382 +404f6c53bef76e61dea782174d256955bb7014bd +7b0b2c93339dd79b4c4d419af1e11cc077b1853c +232d2dfa5fc362833e61c909ae57e7e10975beef +9b4ca58b1b975d44a72e0e07bcaae2095d63fb9c +efdfdc2887567b4fe40b1cd93a0f862a9219b99e +c2d325465e7e78dd7eca5f1f39fa9cebbb20c1d5 +f7922c0984ffc83e4fa12d9bc69a7629cea57175 +e3f9a2caadbd7f77cad1cb0d380c65e041f589c7 +1fee69709961f7136823883d666b990c819945f4 +92323fc89203117943daa9b6665a8b0c6213f57b +af0bf1bf59c78722e54d6da82342bbd0ad7ae989 +bba68dbdb1b81097f2fcc56d9861028592b0e627 +86dde8bcbcec1a3ca672753e8e14dd0bf16ba720 +ccac3893848d217d658722395999171cb7c5c0ca +6a0b20bb86db1664f0ef26eff6e9b1bab8cce904 +9d7926a6675b53814232e1ddb28958e7db70fbdc +6d05a59011c2223cac50031e057e75e36be1202a +dd20263cde91aed3a9bb65b17bb95cfc7ee5f1f2 +d264096fdefa737ad091b73fd6599dc881d18dca +34bbeda1fce95c81b1cbbfb876d14230e1ff99d6 +5c5792706faae2830ee46ff71caded0a537a4eb3 +5a6ea236f4f206d01a06635ff6118d3889fdedd1 +18b1a1f26891831fd1cf832dba27ab0c6dee6768 +c5026804faaffc90b737203054b55d1aeae71e22 +1f6646c45a9ff76731b10f12bf1f5604ee7e450a +f236fede426df1a37c728e372255018ef97fef77 +5710fa501f6207b2ba2bb82b912809795fa9ee0b +13f8a206a801b34a45d8183682f1a2c2a64e8a84 +9b9931853287c034f3349dabcf4500e51589aa49 +7d239bc8d4b0f5041ed7820896831577fdb6b859 +3689be7248270452815014692c8b1cc8fa33703d +4ab2712b8e1ee6c527827b5829221f2ae8cd4926 +a336046e914a45f0618f1d1eaefc5f15ce5184ca +64c13f72a5e65fade86e5ea0fe33c0d505665b67 +5e87c0733803bb2e7684f0b04ad9b845937e64a4 +73d0628d615103cd3472daedd2602ac217caab67 +b5aa3f9d03c934b2a93a83ceb57f1a7ce36b4a05 +98e74f408a2fbfc0c81ca58a607bd853025171f6 +3fd08f99e2fbb61f64e382485f260efb80c2ce94 +dfc4e7c025a41500c694febd9bc2b72c23a3059a +bdb480e866e87ce572994c22fd7bc586c88f77e2 +4523fa5cbcf8da46771633ac19d9a7322bf79740 +a58931a8c95c2760ef16aa318ea095425ea53527 +53c321ef3cca187b0dbbb6a1ef33e299bb99a89c +d3ce7dd5d6f41e7e0136df2228e7886086a74edf +6e12d5a28ace6a7c7dea93a8bdac54f428fd86a6 +be920a11671840827e97468c07698dc84eababc5 +a7486912a19010be3bbcecc0b4fecea0399dfa54 +b52fee1fd5108268f4932dee2b35fa2119e06f52 +9223eaee2832dd523d725e17d71c1a33b100ea61 +c58936c07db26de619d1c08a97543806651ab754 +6e1e814879b500729f9552543d5cae841e215082 +eea046c1e08ac1f6df0556485915285272962bcb +72c22a08572e0fe313adfdcc8ca5fc4935f744f2 +c96c3e284ac6aa670d4baa7f0b4e835936596b75 +6dd285ea8d093670dc1bb2cfffd661fe5b5f2eb3 +3b008de7f686aa4df91107b6ba6cb1427fcac561 +f06ed72be0325b744a03df621e9cf8ad6dc56a69 +8fac88b037f1498bd06bc0a93e79e52224124486 +73123fa9271aa93e0d6fd72ae3e4c3c871b948c9 +d256e1c01927b3e6b47fbe9b4c912add9f9e315e +649fb64bd1929cf324d6abca4ae23aab24988c03 +67484688d18f102c4bdb085d5ab1e7cbc01c27ee +73c0e6df6587988a68551f2821b9d5a53fd71ff8 +e69d36deb6f6bd0cd890cd972ec795e4d67265bb +de7ac068fac01a183d54ab9e54cba4076e1cc6f4 +610b46a5c313777b2466099859bb97df6ae3907a +b453179833e9bedb48652a7ebbeba49b03f23fed +b3705dc01729fef4e89b69f79cda945513f96fcd +e28bfa5bbb52e40e918ecb36fc47dc1038ad0077 +83c9d7ccfdf4b55ee7d46798c460367cf3536499 +293b3e50cd7e63dc47bc876c70c7d69e702ffdb4 +b35ad105d97dc1d7db93850686db210c95149d16 +3a19770293f53d3f547a616155628c1716611f78 +d93a8b21626e79845e75b21b7fadb0c846aa311f +fa31413eae9fd7b53aeeff01cde5059bb037eb4e +632da4ec3a10c7cb9793d9ea624b05ff6ef4f00a +857cbe71a9783c4fdb23c78d069cae7317591240 +385d8066fc3f4755b56d530947a51f446cb01a82 +244618a743df1f9918368013dc0e5648d7ef8656 +eef0c47265e64ff29bb2a56d63195dcec1c98a62 +3cfb12bc8059c4fa97cb0ed2b1f4f825f27784f2 +4c0d20b4630e4ef069d929492affde067056a9f6 +092ff1194271c4de3c37db3f7fe46274d73e98bd +7d742c164c37a7f2d7d773df593ddea85c5d0dd5 +0d53d924ceac9b3fa38543c5165e67827eab52d2 +e9244a7755fa0b823d0a07294d52695b4b9fd043 +b1504d42062b57fc0010a91f25548f0290fb1339 +700132dce4f66f14a7260f40b2ea259e48dc23e5 +fa89cde4c09635d1883ef5ba426789a0c7cb69b0 +a417bcadd715fd7c8558dbee83aae31d0da7db11 +cf50ec8c011447d4f815949f1407baf33ff79080 +100bd4d87edd959c6e1a334c42a126975f406274 +19d30bc34003285d1ac2e2fff822deee41e9221b +85b245642c8a73863e99e14a06ac40ff8d27b719 +b0ac59a76357e0e76d13e58cfd8842bbdaae85fb +3a12fd3eabca382082844a9aa6debe67e0f451d3 +3e63ed9f458c800b481b179055c623afa15f0ed0 +706a09106a104dbb09c508ea36036894f7fca034 +8895b07d23632b928c4578a2c9a87b2a2746833b +01b8d01cce4482c5d1dd8b3377d690bff6b91e49 +6f5914fb7469cc6733e5419effee0377c9855b28 +41849813dfaa744483b262882d4ac7c23a5b654a +66774cfcbea33c35749a4d7429ab5f58e590cdf4 +55003da4c1a476fbaa775015547853cb4762731b +e573f25bf361f41318ba09e50f23dbcd0a50ed4d +58a5ae40942ffd04e8a1315fa2674bcbcaf2ae10 +fcfa07c2160f92cf8ce420f509714a4d5242017c +994e6840ee189e1808c84b593548d70cae94fccc +e48e4e5b5bace55354dd9620632bb56d5b5f503b +bb722d63077987fdafa9b3e5c23038c895417439 +061bfb5079bfa933f4fa9ec3c2fb48c7068db4c5 +176d990400da1549744af91da7accfb315831f92 +00158379f42c06501f1d342d431589df3ba1071f +22f2ecf035165153a974c99c314c6aff55b2fe4d +f19808bceea7d3a5302a05b5e1cc34ba8d2a57a2 +4403387485622bf75ff5ca8759c5ba7fdd6b6943 +497bc4f3a29e123af9e83bce76b86cb55a9af930 +f95d7af75f433d07cddbc6abdbd3196b45819383 +2fbb52d49883efe9534fe29046dc9aee4d9b0617 +8398e84d2e82479c3a3c3f2fe3314640fc550c01 +fb7a4755a6590eae628ac294a5f798dec6672f27 +cbfd875ddc1b09c7482acdc9e281a374e4aa4ea5 +c5a1ce13712c864226a5ebb87143d54e1d44e6c8 +2a24ac0ff2aafac793593542dfa2a4911667d4d1 +c31c4f67586a34b361b30ce71b1573c969932777 +0e0eba19ac4069575a0fbd21513f42f09a669fde +8c939a46306409731c9097a08ea6bfc27e360418 +6f14bf8b6da830c80272f3e1505e53e762feee2d +013f26592b24faa18fc8d58fa28591f9f882ad28 +40932fdce904b09b5e860b43dcdf3bd1d5240325 +657f3c466006bba6f7c026b5ff42c9d1f6f42f88 +67a088247cf4dedf72e6a7266b8646368a2d5541 +3955ea373e31fcbd75427be7d713d7e5facccce2 +96d67e45222cdca66e36311f7012dfa7c1cb213c +e4527fddadeb0758fa80aec3ab8fc54d66ec3b6e +8329031df011a81746c2921a2abb12c4ee79cb3f +de81f0c517481a6202d0995b5a03ba60f56b945a +1040bc80770060a22a9b15b8a950018be25196f8 +ace893c29d3b9982fe895ce3fc5b53e06ea93ff0 +836290297a575c09afc1692454758f1cbc805116 +42d8336630fb3b51c33f1380d906e7e4e82a98dd +100f076f207bbecae3e5322917ad1f4af2646c59 +6c593496e466042e8e758934acd6560b2dacf4da +7f9517525492d8aa34687525ca53c5a4029fa26b +4eb908c9c8e35fb86636b37fd14f58b7acff493a +18f6f283f61e74d97068ccb8e3ae5e37c13ac24b +2a186bbaa13699d151c503224387e9ed0abc8c9a +26a956499a0db7861e255f2d156850a356d0c75b +e6629253967e71c79bec2041fb5b80f073b9be48 +12a34b2309a60a36c590bb4588f129c136dc46f0 +0bcd5a2e8eb253926889607762412010dec42946 +1059747ca087ac0e6079481e7b8ee6e4e6978eac +ca63c5967d1cec1b886f7dd3a6691a140ba4caf3 +d1966da706317fc7437257d5f90450ce7e53c6d1 +db32ad627c25d0abd470be737cdcdec043855b86 +9de75bd714d573a48dcb1bfeeeb6bfa0752b9118 +43f0c959fd61315495fb9a682c5b739d3ca16a79 +59ec17adb5154e3da8e6b7e643622fe9742387a9 +4e4bdc87870f56768e4a2a8466e8bb7f5f189041 +20c5a8efe5406d68e53d9cedd16d287c9febc999 +04e8e1609f19e8712352ddbb18e5fa70fd6d910a +aa9460e9dd0662126f89005fd063fc8632a84804 +1f4a9f9bf31efc4a78e484b0b09e3f01304ca9ce +cd6a8930b43ba5eda67ad40cd2642545328cc9cc +d1173929dc946dda0cd23c686e37b9f89cf12bbb +df47078f6ddc4d6cde02dc7880d58d08f3c8ba11 +20968c53d24424b01ae6a0f1dd21c7b759b7dd11 +c29ae141ab36ccb4335a7551b51b3c69bfe20111 +2ca29f7dad0683908de942ced3bb1b6a97288765 +b8d432b34d03e84e511b939554159949b7eb234d +f660a18b203d197b8181c9b954663d7626411777 +f21fd4874ebcdbffaaddae2b689111718356a258 +d02bdfcd2347d0ddb3dce8cfedd7b79b4f824031 +5c5b6342c26d5e5a45f84953d319530cca833a71 +78df2eb648d16c87903aee902a65c537d16b2d4d +6cab6bca3080813dc19f4ac3d52b070c38239d5b +b80b10236c2a9a5668fbbef703dcc4d0674817be +a034896bd2fcb2463754fb3e5a0bf68e47636406 +faa2b8cb69902a18f4241857a5941f022d4181f4 +96d52e17cc1952b700206cf89e8948a2dd823b90 +f63d8b42ea05f6ea0e3ee3b9b1ab533c8de33d77 +4e0d9a2a7a75b00fc291c86a771a546aadcdb151 +f7216024c636ed541bd0f621e9aa1605121a7c8c +3f07ccb7dedfcf32932331bb6738048ad6361c7a +fab8290baf3a2b28a3af5240f866c0606da08de4 +272e52a3846df6375d698faf03f1ded98bbd4afe +4c04bf55a78438aece6b5c5e97365860ddcb7f17 +cd75151abc6946b70dd4ac7208a3935b0ef84c46 +99e5e8f3669343c50eb10b5513d11212cddd14c1 +e38970f1a0b1ebd2cd24a81ab6b936e74f0354ab +4c58388c6f00629521ed5a43b7fb4273cda3416f +de6571a8ac6f9c6de26e9cb0253ae789e91e3392 +db2539b49cd01179f580da8a459bf686d125f2cb +fafc5a623662047be3acb7a1224e19c697debd24 +5f05840146aeabeb9608d09ce04e7083a1bfcda6 +7ae91e6f3db2feff15a275af0fd952e0ac5bc87b +336c4115f7985167b7a5c1d9394eff435c419196 +9dc500652ad8ce492980bdc7026179ece09dea06 +53737712ec08c215e2b7134839d83f8f8ddbc291 +cdf17597a4ff06fc1cc158255cf9e73d8a14dbb5 +e35f9279e80ca578aaa068d41bccb20dff0f7532 +ded0783c16ccdf947b1c02def1276575a0829722 +fa44356b940009f963f4c7cbed63a92f6344c15f +fb00d5af129d3a6c839ee09bfe76e01ff2bd752e +d4ec1df712c544c96220b2bbcda1590d4bdd58bf +187834aed9b5cdc63ad074d0fa9fa2b9a98095eb +4f90bc3747ae2fc91ff0b417eed7cff50a57eb13 +d1d13fa379e0448ff5ef1610c6b1d35231da2974 +cf81ccc19742b74560a7cfc07c8b35f378a0d6a6 +fed931e75ee3eb1c8f82b18130cab28192dfda42 +5320d1905c2415a3b9facdb03b5b6a17a6bad58d +16fc5ecf22fdb82363c773fece3161e9df4f9c9e +5b140caf5efa3d7d864d6baa408791f3eeac347b +5d921bfc1ad8a638077ee3023f9a252dfa939cc3 +624e35e36a5e3c46ca70bc87c88cae3ceae8105a +8cd0d3098dedef7f2521f43d222b60756bf8d2c8 +1f29bc27e74488b503a0fa45fc7990104693e892 +90a3f1cef62a05c1618674b3803de9e725ae012b +ddd327928213c0b3db4ca7a3a1d9ca406a7d1745 +0cebac91d4c621b2d0e76e5ac82c2efea78f850e +50c8ba0ecf96acd0668afe3db0c37253ff909304 +ee0fe5ac6adc828ceed86e7f89bd8540a8b43882 +339ad241e7de7764c663413fd5641bb967b0ddb3 +d5bbf6806e5252e5e7377e5a5b29864913080c02 +8852f3c0256128382877fd8246e949a7bf58bac5 +cdf32fa712caa01d872661d8d203325c15d6f87f +24ad5adba44308fdf4f9ddf8e0ac9d63d82980cf +022d62a92498cb7a60bad2bb364dfcf7d0ea9b57 +42663871669d8c4066ff028fddb2c1ddddef13ef +8b7e168b4424409d85e710880271a292be4fa2ff +f5db9244ba896cf0bd480a6498c36204800ccf7d +2857957179b83d6b03682722081ff5bed8d71cce +e49dd5d730d6bc094ca2e27e34c0d1f8704731f0 +b172ab44e6dcb5c4a41d45d2060c7eb60c1906f0 +84a453939ee35b9424283a3064d1113ca2e940fd +ca18168773b3f9019971fa4d91c4d73b3e674908 +2bb9d17cfc324f35ea0b5bad71256fa4a43cb614 +34c34fe3b836ba0358ecfaca563aaa719c58c7d9 +30adb338febf7c35e218ff5e7a260fe8a794a0cb +c18b93014a64ce1c674d5e216637889256fe3095 +8b4aa2c636a75c7e828b4723d5fe844bff4b9dbf +bf4e0a9eb89fbf2c0a937495cc97ca252174e092 +a9733900a4fed78bbafacdc3d68ab33a04495cf7 +ca3b339b14421c18957c346e22d903c974583f3d +6e0ad59c65ee6634b0b097dfc016fce7f6539fb7 +59596336585fcaddee6f23f0df45babe5170c44b +fa0206e2d409df57056feabd4be990f908f787c2 +f9d2e306e644b1da29dbc60ba79925daf86c53cd +ace72a8cbbe23aa202b9bc7a07ff98ce2dd10ea6 +6a03e63b383a3c365ced386bfefddf1e6f7ac709 +6206a826960fe46e0003bc23b4e94945bf122cda +36840493e7776b42024347246bf3eb56de9e4863 +7501c16b281db6d048d9edc34b1b83e5fde7564c +f1586888a4a959cda7bf676694b011d9e5576230 +f42b1d658005216ca023178084e341987050f35c +437c26812d9cf4b9ff6e1ab6895fd5f840a2bf9f +b04f7bc1360f51cd7b41ca166435f9c0b92ef6bc +62212ace4b88857a08828de1dd1105d907629ff9 +af449ca23a3ed6679f15862d6d6d0897f1932485 +025c7371d1ec8c1c082d0acd17bd040480f21914 +79afff1d1faee8c8f3308d4a77638263300b4a30 +b0d00e0ff4446233b35f1c99a81ed99dd2115a15 +0283eca7ba5ea7eda9bf00325484c55848e4fc84 +dc40784c4feaaa51682bc4fc2f3bbab309c28893 +e7de9d2bf2789c2af0ea2defca694ec15d5301c3 +0bbf7b4d89a960b19ed1f3b06f0a3e965737d482 +5d23290ceacd9eb79f6585b4b7dfb4464623619d +f904fc032a7ef5f0e183ccdf53787ef2f4203753 +8ddf407ebb69f231f8cc20929edacdd0e9fb5101 +0777cc39ef84b5183cd838956382d93cb268f13c +124ecca0a35132d2953eedac2c60a3ee3d4079c2 +efd95a014083c5fa5c01871be6f2e3e6a193f61e +dd3b98d6fc57fad20480254145f9ba15bbd8ccce +3f9b0be8261c6e6e1ca2f503cf3f3a6cb7c9e23a +d9822dc3b6e599ee8e26481b8cf578223e039647 +6d682406c7f67fe1a2d38f08cc3d68a8c87b9811 +c0a52cf126b172d260c6dc89991ad8ccf3288e6a +10db3013f840084e2faecd955452959aa71d86a8 +b5a18061c07a75c923e5e06f1363e3c41e903467 +e1bc152e2c9ce119fcbd1b7233c3b0f253de6565 +bc8f29441f4c496956124d536668bd879303afd1 +c38b74c47af947dfef3b1cb27d9fc353a2858da2 +6e1ee5eb1c4ce4eac4d1895a163af059ec043fb3 +19ffe7f92a0c83ae1f6b63a51947e18ef4cad952 +a2488cbc2d0d072e1ac1921c2482bbfb21ec9da7 +e96d1590eca9aff4fad8efdc4eafd9d22c4c8a90 +64318942ab1c13926b716930b077a306592882c9 +fcffa4abda096fa66e59d9c0e90e2a6a1b354df9 +e2b0a0ec0e287118f16596d204f50dda696a3bf5 +144bab1866e12bc5024f07085b4ffbe655c1dd61 +92229d2585813340396cf77370543c9b18cf78cd +27dd974c870cef1770634e0634e9e779bc763c0a +6f94b03efe7719ecdaafdde6a396857ef08f25a0 +e6fcfd3544da0eea5a702b1cc877cd87f8a384fd +c0ddde5c65692169c71258a4c5411c0f19f10c57 +47c4bf4987222951d7a109fd794d4c24f628b281 +508baa823df3f202803a50137fb51fb9fe4ca1ff +01bf37606b3679ac5c575e4a54deea75bd10a384 +185fa7913979d6bb1e1b850f51c3810dc35a134a +f98d38e1d2762efe3fa86f6fb28e4e01a589d1c2 +9ab4a17e59f56bb987ea608c81a947fab449d906 +d4e08b57258c9384a7c8c112d0ada738a59476fd +d736d70573b51d353faa9ecbc530b33076643abf +2f69daa1455a96e8c45f3a23360b1540d078d7e0 +a6c1a354e44c57ad87761720f702f2016ef0e851 +6f4046aa048982f811ee3f7b822fd849a3a6b926 +06eb97b1de53e9409ed274941bed2010c1839860 +b845ba966becf41054496934c09e91cedca18c49 +00779372a0478f99640ab15b595d856beceaf00a +2557afae3af2b61ec6a7e521eb1d269f716a5711 +4df2de8f055cf90d775f8b9c5196202288b55498 +45042584fc4c2c9f6bc0952512cf43135c980e03 +ca85b963897e6906ac1196ba8abbb6f905a880d7 +0e6fb3adb6d2b948acaeb9ca6424b800817fa6ed +3fecb9ec902272b872cd7d469729911e29fe9a3c +fe94c6a85df75ce36fb45380da2a0bb09eb48758 +2bfeff7a1e2cb92128e2f16dde5493b3369cca54 +4870445971d17f02766ed2f8eeca18e7c31ebf5c +0aabae17ebd9fa4abe3a98c68881be3aa46602ba +646ca70942dcc588fe6923630a18b4cc19f897e5 +234e486e087319ad83cb2f7be6a6185473c3b272 +51387bbf6b7a48981c67cc0de376fcf6c494c33c +e40d376e8b251fe391347e67f07981a72166054d +c6dfe91f31048dbea75b718e34d8b645b15e521b +626f10967acc5d03a535087ed3e38ab26448466a +5792f378ab9232e188192416848bb0fbf7ce55df +f03a8cc2e74e08d794b5d6e8fb29126466defcd6 +3652aeb025dc3652cfea9f941df5f84e7f465ddb +37b6a422e71619a96ef449a61537702dc82f3681 +d2b33dca2d715c907f3482780134bccaa8390035 +e11b2af48f4ef8decd350e5949565b38b0c98c74 +6c406edc8bbdf48a3d71f6e6a57769b701d0acf9 +84656765b052cce8ff476dcac152ebed012d8497 +e15a918fc4ec6efda27d218567d32e7a02f937fd +53951eb8dd3cd2fc77c105c152e4cc6ddfacb52c +ecf3338f2a87d3000ba4e48c41e83463c5ee0dc4 +6d27852477f1fd8ee855bceb85cd9180bb2c4e87 +cc62436e1953951ef8e6521814154e766390c65b +3fe9f9541c107d2b035c95376275fbe4941649c8 +cf1d5efe66d24e33d66deebcad35ecf7676ad270 +72331d4c94c5a49c787ba75df74ea7eaf25ba13d +06eeb55fe1adf7518e4c67da9b8ff0b84eff75a5 +b6ea37ca6f2e968b286825731952fde5767a5ccc +7e4bc6f3a742fbe3655f2e2c212ba6ca22b1933f +263fe5e4016ea25fd86a19eea30abf51a9a1f478 +dd57e92d18bd1fa8e656a88cffec6cc625755fd9 +db27fcf16cb47367e561cb03525a0afc9f87f824 +fa3984ce3b60a018461a1eb97bce41b178afd90d +13016a50565568d67d3c8dd32f624aaaf0bbc35a +2221f56d8badda53f4fdd1e9d47a310f8e6135f7 +bc05a865569d5c6e92ad6ddb3c0317fb4cc15a79 +6a4d24c15600896b6a206e5d9c48fffc3aea4307 +037fbaca7444a76ee1934433b3518385e81bed6d +24746291c3f4a0bd128c4d363619a2716f8372a3 +a52256f31e0fc0ffc3cdde7b13eb03c836d0719e +e1da6e8078da1b3f003b7d9b9faf1183bf555579 +c84f0b8494fc05f9bbc5f1aa6ace796d48e852e1 +6e0af2ffad83f96359f8bb4e75b534a232ae2349 +716f936d6079981fd649a2358278e1ef6574eeb7 +75b6c7b34054c961f0b149fd78ca3c3d625624a9 +116740c1fbec3eeb1d367859893c21094382c72d +05fd5cf2883fb148f1082ea2ff36c799315af31b +5367a33c631e6e6b3700ce39217f9120aa40981c +8db920f27034ef5c919015accbdbd077e5cfa625 +c6ada6698ca1340d80cb358da93a38839d331ccd +2a9fee219dda7bfc1f9434662f5e44145c52ee7c +69a7ee86405b73dcd684c757efeda4618ca806df +b3d253b8275470b61d57b871e7184809c4ce3801 +02dfb1d1a3a5d906120f7d524b34ab004e7b8384 +13fe0fa8366f0264e8e63e15f01223236ee7052d +4f7f987518a86bb82fbfadc819bed320abc9d315 +e0a54ef772b18b3641529f3ba30f28b2f68f8edc +9b966252a49f9b8b90440fd47caabd7f7d35b7d3 +0da7f100969948ac9dc60f99712d746d3d1b68df +094294850fa0034bdbbf3be9c1f05b6a1fb7319a +28a6b14520f902c74269f72ed82761e59ba4762e +7be6da6ac223bd91fd645e9e995149b5a4147742 +5dc9ac241048657d5f7a0c8fec39e653af730bf0 +013d99818a06e554f765b628e3f299e9da782fb8 +9404d52f4781850a607b0ba4e5d5701c675691b3 +ace7f3bcf688b62e4307c6392ce56f2952a42a02 +6fa483fb3bddc3bc92dacb131b99df3fb064594b +bb74cc42f52086f31ec32ff5e11a6825c162ade3 +a4b93c633455250afeaf7823ac368e997a3ff899 +31b930bcde93a9b8097d8822e1d60a65450415f4 +5dad7c85963d77db7428931ffa152b10c759db37 +f8bc0d3eaf09a11e925d68784c8e366dd2d84a4b +2802c9eb07af8772d3d3cd094aca1a45dd334a0c +628b885ea76446b7d7dcbfdef967db23423f4411 +2e613412d2ca975ec0acc4ae1e096fdc196e1a5c +8a0ee95b813589aaf57100ab7dd87b7456204561 +9d68780c4e1c68e4d86a2a359a70c0e7372cb83a +c3c085f4f22722fd921629684e45fca768443dc6 +aa9f9b7114c96ecf1bd915183896c58f88a9c66c +225af285bfb9d019ac811796df1779b414a72f59 +19882ff2f12cbe30412cb0e789ac8d6d7e242350 +948029188b53e272e0949264cc516859f93dd172 +fb1db0c1fa7ca1426634e0cc4c8139d89319c66d +0600347010e03305533f598d081f8349fb8dda26 +b063ed024ff8bec787db5129ba9b9a7e642e54f0 +71741c2409b80d179cb16df5b8178d2440a75681 +a3815c90fb9ffc341c6435346f24b19fd8387755 +61714ca674ecf6834fd83db48e463f7d2ad4f5fb +181dd5c0bf31609551a92739af3c939634e7a127 +9605079ebcdec78b4b7b02abcecabc96d98827d8 +5e5121fca72b57a31b895d5bea68cca15c6d8f68 +cd390b74350e91648baad6edc3e84159383f7a6d +61f9b543a518c108664fa8aba0a836327cc09247 +dd5f62dd51fbe52ca1b6d65c78c0fc4d5e86933d +966b00899e7664decec7d43319858647f555c01f +1e051ce4d775e434062b641deac07d98d328489e +f370aeae6fefd92d05c11aba0b2a713da50c94ac +1fcbd0eca1f3748609255219be1e3f2207777650 +0d69cb8e4f1cb1dd4d04185054ab7c3b8a3a371b +421ddf8c6228f0983fc523f0b70c1c711bf7653e +6afaf21cbf0abae4e74eeb08781485a88393e8db +f22c8b66b9cf5d46b4b15d0d6633864172dcc595 +26e137c4b8fa022c9a4cd9a8604342e0bd3b0763 +e98dc4de81f53af886e6b054d5a8a49abf61c20b +cec6c4bdced5938d895bd01e494758cd44a033e3 +e0e7e8cbfe30443f91f1cc84a71bd8e02cff6d6a +7f6dfcdde2309cb299d12b96c1d9bf39ba1592ca +620b7d5cd7c201a327d0fa0dcec51f62755440da +75a328887a99c3fdbdd23912417f15c23a28ceac +6550189411f83db25e7bd8c64f0d16e263746542 +e1b19ef5483f7a5deef455ccdb0ac5c53de0510c +982f383482e9afd6eb1d9284fbab62c028a04c48 +1a9d4798e11ded0b3829df1fa99e17e476853ea7 +bdffd4b33e666766625bfe5659b43f276e2ed60c +9621c2dc37a91b1d5ec71eada7af9ab5c42a00db +07ee9afd8a7b16f989db34249fafc0194559b976 +aaef1f636e63936023aedd00bfcf0986a46d5b4c +6b58c9a7b846ef94c0303550ec75d062ae9e3cd0 +5d58f362b0a2f29811f6502dc1d8f543b9682a86 +eb3a3dc08854b5f93ddcddb3da5c346019cb6c71 +1b783298abe2241bf425fd9bc2bba450f381db70 +b5c6cd9ebe3fd478a86919b9c81f262b539607a3 +e133b9ea6ee752c601316a2763e954af892c4477 +c543834ddc9d3d19a622469bec2b1bd0f0eb7047 +9dbd59ebdec49e5bc93f98d553c1a82fbc8d4878 +d64255c87622d46cb8639bfc6997361a35094e03 +25cc448996822f348274c0ffcd38d24c15564a34 +d7ead30a3e2a65a5bf14e4c9b1d755e828882bd0 +6daa405c2996be596c940641d5011ae625ee8a4b +2e29374b35285624b00d15c952f04750d5640e28 +14c9d188fd52c9553db1d77c2f199d6db4f39bb3 +f3411e2b3484b786181e2991e2aa40c55c31fd8b +57011cfc1bc42a65c5b143633fc071434771a848 +3a72ade8b33f7f972cdfb0486f67da827e032ee2 +87450fd4710b961b03559b706095edf2d4ae3392 +bce5910412fb9a273cb0577ff694fffc4a4b9926 +7b5062f554f1b782e4f6bd6db869f43c1921d881 +ead2488060bf12105b43a8970fa49e30f8be8900 +aefdd29abb99c497372ba80f0113848fffd9ffb5 +1b54f65ded2e128b5f5c815207c3db718d7e3df0 +d9c4d2bd31cdf42e2466de1f5c7867ea1028060c +0f458c126bc478b3ef9c4ff8a100ae9178e45ad1 +a5fed88d8a723defea7d91c6e735a7d21b7c012a +21954890478e86afc7aec2578c9397a7b5fb9860 +00f81704cd5da79f91b49a4cdcb94e70ed51139e +4e2e2652304a45150e32d923d9986b65a34b1f62 +8dc24c4e1ff7973b727fdb6d8537c7da4f900285 +a59c28d6642cf9b42c66c048ec8911570a636c6f +11435b6b80138ecfb53c492fa088b30a1dcafad5 +ebc9c9e8a1fedff1a1d932fa5b6a3ea938d109ea +19f92272e822635d9143808e14e9b6526e932161 +bab90c92008e64b3583a7cfcefea406f69cfcae1 +327e473680903e50f9191f7e16f6d01953bd013a +06d99948b9c2d21530a4772b9fdba46f506890c8 +4f2a70c2f60575eaa7366844a20c10db8742d7d4 +512df8d4db2b286b25f013c833afc34ef2fd4169 +6517dba9360e60f4040eae38e633d710c0fbb0f8 +de158ce2bcc12455778f5949d0d9cf476d6eb23c +8551d387c13d5e66ed0204fb4ab9b6365df3aeb5 +7692b1d874a78509eb36b26e164eb617826aed71 +3a7227691e89166808aa2d5a0e48650bb451b070 +4b6806ced727d253f7a645ae957afc382195feb3 +569c9cc982c52f6a07ccb8c432fa2ec3dd0a9a21 +1ca55bd40256f6fa79bded8fa8fc278c35ec0dad +5985656d0fb27c47467b95a5524b3eb3a9faf6a5 +2e76c48c941ba5c6e67df4c656b4ee346edc0a53 +f455d1aeb29a57fae460344d0f1b5f2849fa791f +4f5e9f91f92e3d52d81915b7dd794fec934808c5 +ce1979312e8d8a30326ce04f2e14ef3d749fbf7b +7c72284916d14c42cb6bf165e9e1f2fd6ab70ea4 +5bb7cc0c81b4e01c277b70d328594e140736976f +de5a91f3670f54d8b6a32314159843829af120ab +4a10a27435b37701147ab5c8f7bfe034e263be0e +d1bb66c3c2190e8d7c40adda92fea3f8474d9fc8 +c39586afcf310f9dbf57403341e1a1a43785eb12 +71b5e1aec86b8eb77395b06ac50524322193e127 +a0db15834d2a98e36c03a49fe7f7dc601e1828df +1166951341442dea5633d0cbb7db4891cdccfe14 +571f49f29816e160ae6171cef37ac4fc96a69ef2 +5afa873d590a1c2f8d6283b2ead42d08e7979c6b +3361729b9e609363b76bfb87b7c68a7be4ef1f8f +415559c8d7a64afc68b44d541ed9e2f5c0339756 +907e42ca016ff391a1560ea8c6af6ac51d277526 +99be66fed6f75cd470f93e09b138fd5c90c52855 +67f13624d94fbd7e22adfe0a08b679e1463a7985 +07305bfc5bdfdee27ab88f520ac9beb3a713be8f +63893e6f9ddd07108f96a7f89f0112a95f9a78e1 +919edba41f6b42843b34ec111c0195b66b9b0e13 +7e563a4578f7f5adb4a62e2ba9d3ac0b14c98adc +a76548ef30ad70c6a44a156825ead2250fc0aa14 +f57243eab5e2edd4685b7adbf70bb04df21790a6 +b9fb5990133a81244935bcb7164d17fcd32283e0 +8915ea734a44ee7ee12316a5c8350d3fa3c5b7fb +63c0b297f9abf40b8bbb514a79203c235abf4032 +0abfc8083c91e053d37b8498e070a145ac3d49d2 +93712d00e96aaa353f4f627a515d97e1e0b9cccc +8f486914596553aac5d9ff2d2b2018116cff41e9 +1137d7e1e7fa3c8206e62c5531ca64e118aaec6e +eb5f036c74b68defd54679bf7344b3227ce18444 +73e3753c3781dc0897434be104a17c28cda4d83d +0619b5f7cb75cf06241ac065ee6ee9901408ddd8 +b77dcbde625f667466d35cf7bf23774cc1a0be44 +8e3e754866fe3ad4b2cf188d5d3432a90e0cdbe9 +7d859698526302c9da733c1bcc044dd678efb536 +8a3ea5bc72148fbfa19598d6bff02ca6323213ea +01e368032f1a6af1080feff4e3f1058b344b3c9e +5c4082f3ef643e7dde9a73d8c1d631c996fea24a +18008b3c787843d3796ee67ccf724ccbd0985d73 +20704a61999880d3075d4cbee2a2f68138bd7a2e +840fc78e3938debb9624654300868ff6c8e97932 +cba71a2cbe9d73f0fbcdce060d7b8221157c6368 +2a0b0a3a7693c0b2ad05a4d4ef1cbeacfc9a5683 +0ebec99884b59f967932f95323bd29cd4308d999 +b13a417992e748428f742b00f67058ca0ee353b3 +3d7e25c4ea93a3fda589fef56604af98f0fb9bc7 +ef749fd446e0a55e3ca6607ca67f243b830fd1c9 +838606aba29939eeaf2f605eacc2e5129f629883 +dcac07d2e107c35dc06128da49fe8bfdeeb3d738 +a82ecddb34a27910a9ba1a001c91b38b39c87563 +c13630d2a92a9ec4f055b994e2df3c30cff5e60b +19ca3b90eb761658cc70bc1a9affac4654aecc55 +104a98d89b611fa6dfcc333a609dd45d4e42005e +4f571f3bfcff011aa23c3163f33bafd91a8538bd +fe5f3f63c28dd72025e612087a61167e931b9a3f +46c5720765435ebffade026845e3b8cdae911b20 +f13206303597bcb5312526b3a68785f8519133c5 +85bb94389fd7b76acf492c0fcdbedc7e57de4d60 +718188c0b357a183604c346b78403a51d581af01 +4e6ebb94cff394f57d9bb57503aef46b30bc4a79 +400961dbb59f78b19a10e527429522b558fe81f7 +ab4f948a301171ecd785dcee5f15a8f28c22c5eb +c523712f12d03cd593066629371235c26e577d72 +a652b9d28cee5879baae21c562e2b1f24cfdc52a +8466dc81bcf4a8ffb4437654488cfb75aee377c9 +edd37bff13fcffb94b483416fcf1a31998315bf8 +d799cce64c6b1b1630ccd5d5f855d05dda0fad4a +805eebcda60a48388e3f5e2bee9b625ed3d78b88 +3aebf8dff1622ca27f0d3dce271f00d0127c1a27 +b5a4f75b1d0743fc348ffcb2599c5b3a387699b2 +bb30ca18977d9920436bca676f76ad27ede0f7a8 +9f940f4cf587ca29884f339bde38b5a6a41020a7 +01fc8e6eebc6a491d05626f5052ca7c28de7cb46 +fc64423e109102aaaf22f92dafe16f01a0179693 +4d27c2bcecdb63b981ff2c9ef2a3f7fa7829ba28 +b2287fbfa741837ad643dae20f866e9b64e7f82b +a0b8d261dfbafc318c86ee4281f2f491dec571cf +3ec9925ca95c66f68baabc65cc3cd81260505fe2 +7bb1d97e0ced8c54af5b32024da4784fccd68738 +72951a860ac41f209692c83edead6af5391f8b8b +354247dbae49a71129a2cfb90af76a91d98e89c3 +ff75af8804fee84ca42c2102078b7f817aa9418a +0f0c57dc66b6a1629c3faedc7a13bcd6a3643669 +3df4ccc0c8eef8e0dc6aa35a6d81ed4e78f33ed0 +1be0dbf0e2bf55e7c0b3682481aeb91e0d86f852 +13dff41edb41fbfee75a69f17bdfc013ba8ac9e5 +4fdcd3ece635eaf911f77cfd1ba5f01da046c889 +87b0d572856b686ae8e0132197fa47330ddc8d0a +0853ab68e90d46f9e382b42e98941f64c56fd71b +47a834420b977333dbae7878020ddf90cf7254ec +19f0ceebc5ab7d35305065cfabd46ccdd3efedb0 +43ca25bcb3441e0318c58f5f0bcae8a460085a45 +1f91b6bdb50987d1b7c3069a85f7d2d72660bb40 +e7e2b4018d01a980a3288dc3f0ca1a5e48dedbc5 +3d10242e38a5ae8448b8482713338bac5056dfae +63a8ed757c14a2fe55f912b8b4c70e833547112d +2ca67d456672528370d12af019ae44096040d54e +5b2456a7f0c1727b17ac27ced198cb870add4ae4 +cca4a9cbca731a5b0adedbf20bbd1450ea5cb332 +433cc095cd9baba6bd5d25df180eeacaeef02f3d +3daf5faec7a9d88e7d6d08361f155297937c0bf2 +4e0530d00e4212f6706ed867fca84e4587a49e21 +d0086af35ddff023dcb04910ac6be8c3e80b756b +390fe61d75f19c1d84a11fbe022cd7c35363e52a +b772c0230c957fa8bbe428526d56f251205b97aa +5999ae27df4942cdf358149badbf70331fa480c2 +b44c13fcb62a396bda7685ca807c073f98d2a39d +ede4e394a119fbcb778917a6c6d10b518389ddd1 +bc927ab266d951f65ef141898902da73d1f1145e +0197bd468857ad4a96c1c3ec40f968aff055fa6e +8ffdee75e7f1f618ad4623ab4ab42954062218b8 +53984580661b1bb8c12cd6e602236b2236269548 +daf7fed0d81c61a5abe0fd214da6a678daa9f4d6 +aed05530b88d844b06e795690aa9958a2219d674 +38c7babfaec51f05f599afc7781f965ee858dbfc +ea9aa40bd050ea90707aff2dd4e08ac23f88cc0e +6aa8a56e7dd5f32580fb0bebf6c5a435d16df5b5 +7b8022fe8e3ac1d2fbbc7a545fa9643f44010f77 +f97585a3b75ec882867b4fe155eb4253e35c4162 +09a55eb9aa7ba1f0fa3cfec6af5be5be0b792b99 +4a5952d3e5490413bc527ac85a05c4d2a025eef4 +ffee03f48fa696152f2a10ca7b7f89d9a3bdbdea +e6049ba75943f315830f7689a8e0f80621452fa7 +dec19ec29ed862b201a625e0e5e852af21c21d7c +656c7bbb7dd325feeba9d1650d8883b2d8f97eb8 +2099f5934b28e0a6d9dfaab4d4ec54546b2c4a48 +e6a1f9545134a22f68f8776f4a83bdba76f46150 +1a9ffa7f0845b5d2a7f8596765a9635e79bbaf84 +fe5011a67667d071d4dd130391da3394db196845 +882f8c2c44c6e30e5fe7c657c661d966cb1c0555 +40280f7329dee933783c8841daa4fd31f61b3fda +e00d18f5d231ff40f3a67925484744f633744369 +cb631a54b4471df30b696fdb37ce5ea5d3520774 +4596094c8362e307fbe09668338f8b20c83059a8 +f1f7f8e571e3615b1256f453ff144a304cd8a9b0 +efc9de7bb17641df5ecd37231b1e649bf05f1952 +bf0c35eccbf55747a4af9259b8f39ed4ade700c4 +5a85372c536a407fc14969051e36b4fa435d4bcf +964b951b213826882bce33cec1d61a309dabd3af +4c6722ccea990c2f666347ce4ac3b62a48b957f5 +04d85377d210e015284a18f53f3f6e66b48dbe5c +3c9471592a36ee92cd331f66c37cdb744ad955d3 +a5a2c131e14b5d0d205c5b23d439068b1f49edd3 +88baafdc601f2515b5a41a374b8244ec1feca2f4 +09c0259b358ef08b7647f4e48301a6b07a2fb568 +7413a4a9554b5e9f78652b60c8f3250dcbf7788f +73755f9f4df9989e701227de4c3ac946eeb63d42 +40f60172a0e280d533bf881d682d7a1b8978ac44 +8a2c990858bd83b55ea532aa1b8125e73879259d +8e7f8d88a519f667387b961884189542ed4b0b2e +a7510dc378c2625635224e3e1e313e5c912eca82 +3193b4101cb7f6b40f71b10ff1b7efbaf2c32821 +56375b2019c90e016b6d6288effc74d2b722908f +795bc544836f5818fadc7c437457f2cc601b8b99 +0aaf10c257c78f1510bc4f978b75474fc3d40893 +eb5fedd031812027f2c9e2439091003fbf6e80a1 +a6cf495b93982c9753609e83ae831457bc772666 +8ef1d58e76b3dd493fbb7bea472281b53d325396 +0d12e25556a43ba4fd7da46d0294f642f289ea53 +8bb5eac718508e5975da12b89ba59157433c11c3 +911e4d4bf9e62cd09c4b668a853f8aa869387c6d +caf9f5dd439211a4e61b2753676c6b3e12eca1cb +70761fb012ac3d07af47f1bee83ad494a1c21611 +8c72a08a3ecf7826202819eb4aa0cfacb885ce25 +5d3510235553c3ed2e92bcb8fc67b01150dc2cde +88d75cbedd07dcf4416239c69cbdba406daa0e0f +29c6152f38a967e23175e9e1a40282eea60ed087 +83c34a91cfde297da6cc25f3f6f37cfdfe977a6f +a4727c50b6f58ba40914a9031c4ad0a2107afd2a +d6712bfdd8145acd6c6fd29b35be20b4c1f32c08 +248154e8aee580802739afc45b1817c75ab2ecfc +1e516bc48005f4528204ad00c38b71e953282ab8 +e3b64ce88385f570a5651d385eca645fb874f203 +3fa1fe6c36c747ae8ef9b9207831c6079b886052 +282d504b8cc9dfdfc35ea7d12e41c3be53f69d8b +b9d232974538233a5cfaf373e03d24fd425a1e08 +c6d45cdcbc0a01a5683b9e207655db24a9c8b33c +905a92f23e665d0f2513f0fdd94d0fe6c9007b36 +f5273a8e532653797f30e756447c139d34a641e8 +7260dc6f91ea649ae6464c50c78dcfa5a5f4a7e0 +4024be91953e1f261151dc31188add5adf54226a +49f4db5444393316b39bed2d4672c1bd036c7e94 +1b77a2e32c3047fbcba413b3c28b42a267ea5288 +f8787b84be29a3beebe093b785e76e6ffc76b589 +53f77f0c66887e4e0f73002319d4a4bcc43a8cad +19ef9bdcb5205d3ed57eb6ef0f805fa1ac2cd188 +2b82d7df6537fc3ac269da857ee6d460dfa2d30d +fb6dfbf28aa35674c1eb9cdef29895fc8cffc395 +ad64e0d6f9a5d0ceff4f69cd7ed7707044f00856 +3137e3d45cd685aef2eea601676974314f59b549 +e77ea86a906a162ea261a5efda389d2153e8668c +9ad36de094dd9271a18adb29e6c305e8c5b60926 +35d0f9f278faa982c9a1d9920a25a1bbbc09cf5c +42b4fb114d6c6b60bbd99ccc1d5f8d2c2d6c4bd4 +0c66cb7fe8b8035f5bf9a07b7d2d29697b975891 +4ab1441342477ba14d5d9d687e7d2ef06aaf13e1 +0457489b08d1bf6acda4de449218e2460a258414 +d7b8cd4dab8f559dfe95b7be2074804e636d5fa4 +73a9633b5578b19f2c91cea6690b7c8ee23d9cda +6b844c875f1f286d186d92e8fcb9146488edd868 +f5dd75c3e4528cd3e18bcc5b9ab4a4d89839e92d +9ceb0b8c7afa90e20c9218c7333a4099ff03cf27 +8a7d855260677accbb03fbc4b8786f798a9327f3 +4278abab2be7cea76af31cd95ffad2816fec68b9 +f21e04a5c0dba50ef7afab7152a9e50032a7079b +c9aba2e3f7317144e99e4b00ed351ecd85d73dd1 +4fae9e4b12740bad9f6988bc6d50f3a929952597 +79f7cf6305d65491e3941807535562dae105373b +d2eb42c91009bf252f6b1fa09e687136eb0c7748 +78f0ddfbdacd3d35aa919d17a40985c36f1dc544 +36099d1e82dbe56578d5b156f7a1780736591e84 +40f8a841df50e71e9921724e2c4f5fc00374742a +2cf88a3ed685aee104cb79ce093435b268748b90 +e27203418d2beede5c0ebc16542aece36927ca90 +879826ce0e37cc03eeffb170bd828c6bf0182d90 +bb94899037b4fc381ed58c2636e1460802353d70 +61ab8891419bb7a0f9a0b9b09dac03484cb3a762 +bd25fb811ac089c63ec8908d64d21379380314d6 +267713486199b30bcae937972f8e792dd72e1b94 +7af40c747b4d8d5f73c36b5135bb369a844b3176 +415f8db52217184876fb2a96d4049969ab8f9922 +68311a2acca072001bc0b5e8967fd08c030f6e31 +540bd947a5b289f97ea4a5bfb0f429455ebdedff +3a71cc505754004d096e7412671439055e594638 +7cd56a51bd3ebfa535aafebe4c7ad15b952468ce +6aca51dc35c79133c53419b512f69b831b4b6144 +e22326a678e7a1c37aa7ac9c1db14927806fcd43 +2fec97f94a34c4a73c21b2bf7916b69d6887c862 +6d4fa9d86017b50a95e5411b0ee75ccf457b0968 +dbc7599d6ba3db72521e38a61e4a9cc6edc3d58a +d245ec36c4493d1a17aa7ed783e7b4090423b9a1 +51d4bb43cf3dc3c464171f023bcac9f049fdaf28 +ea9dad62739006587647b41199682274c9ba05c5 +81b3534ec47458e1e4e0c746054d830616222c62 +59177ae2d1f969ad558b74f135bcb61115547b5c +0aa4b8870a33345b9cce107e01b99a6cfbe2885b +373788feff4312946d763d05f92dbc00b8d2fb69 +2c03759f5e92456d48a2fbd8dc4281aa9422daea +ef3c476a4f47aab0d0248fc4c6a4860e0487ecb0 +981866d2f31ad100964b92f8e43f6bf388a8e787 +ddd3537988a123fb2f97c9cbbb59bbb52046f726 +a8550772d08330e466e732d94e50a4ef1094b76e +690af81d0036639bf2295e7961a53963c6a0a74c +62721667a7de72d1a0014a769f7f1452a9d75487 +c146ac566cfb3cad762c3bc7d37fabe8952ae4ce +538bd4a58c4bad845ebfc37d94637383d7ffed4e +9bdfa2153992ee8c9bffb9e22f5fe98651e11604 +d288c4738b514911c78dbbddf408271480e216e4 +642668bbd5a3fa15e5d07eaaf5356291c6934b4b +6d7b7e5617f10382eb53348871e64a591d7cfabc +52b65da15908da8dc3a05223a3f166bc6c3c426a +55b6f6683d443a3ba0f67ec2495837179388c02c +a83c7322d8da9bd46fc2496457e87c8f3e625fce +f2c99990a0303d7bcce95fc1d99ac74e9cbf7689 +8ed30ab87a18724c6307d2450650c9ec9de9c6a9 +6ef844e462fc566b72a7988a0d6064d09d2cf36f +1cc9bf53887cbdf8e0cbd8270a358c9428123d1b +4ac42dddac1e66a8f17a09d2cef783e7ab458bc5 +48ecd79ad07d0e2b82f2c1becddbbe5ef3be2dff +6d86a9ddaeb121de5ee00348f7c7233e84884076 +a5d79bf783ecd045e017f4324ea777315a866e3b +04ccb58427f8e2817358c6ed864dffbd4624c3f0 +dd4b414b73cdfe08ce5ec0ca917d76163c173dd9 +fd306083badd82f720e1fc4059798297c77990ba +8c55f665e418891152a942ab4e44b9b2feaf9751 +9235393ced0d0567a402be45e9b52dbe606f42d1 +d6c7f69efd33178cfaf3e63bc6457972bd5cff18 +1f291956964ce28a498c1dd50100b822ccd0e646 +1626b2343047b2619c8bc6028401ae9f11c875a1 +80b1d0eed9d87ab1b4e369af78bd2bba60ee3181 +f35a63f602b80a3aba1761b7826e79b3ce55e48d +40f9a6352c7321242e28f4f31ed58dc772b9dba5 +812948a24cbcdfec035cf4531ad5ee7fd45ecc3e +5915e336065eb5ba60d2e9711051a344c86cb77a +8339777589e598021b6011881f28b4176bd5f6c5 +d4e3d4a6ec1696d50d0ae10b6423a4962540855e +cbe90f188006576798c0b7fe2c6b36a286d196a4 +7bc404caddf4c45f6207f0fdbb10f72ade7a8056 +fb939d2cd7bb9ef664b7753176ca394dc6b97c4a +5b65c3362b3445c1f02324551c1485ecaf5d9787 +1851a933f2808bbdf6723bf5b6a466d6992d5ea4 +2a04816c6cef744f50b5a4672db13aba0a829060 +161ed43aa2c9d7354e0fbd80038a8a453d709b6c +06a960512565776d299c131301a820c063ee395f +4cb23e1f4c938666924166d2ef60ec8d1a5d2c0a +fb4e728a8031a13dee10153cd15e1ba697f83d0a +e6e3110c200f3d60870bca2c836ed30e81b74bfe +750d68fb818e5b18c083b80a32694629c56a150d +5d7528978e85e2a33f10473325f77ef48b7f6e90 +93f4877f01c5338976f485d981048263a803423a +ada56cd552d7b291825931355906837c8fb1ef29 +413c9511b3ff3603baa42e1f543153369929ec8e +4fa46b0d75691798a3ee145d6e9f4edc88943de1 +69f4dbf78363957caf1fa4b47cec87bd4b7a19df +f7d4b5b4bc8552e8b4f0dfb131a978d2d2f50cc3 +19dcad0383cd1d26d1ff6427f510a8ac7319c94e +f07d1366ddf564aa1d1134ecc6d6725325cf7793 +fd304ab4be3072b8659490babe3284d87f856e1d +a7c320ad7c01eddf260bd70cbe1ce8e6a00bcc4b +a1ca41e7b38f4b573ee9e66313013a8d7d1d723c +1b07ffe9804b13118f79aa4a02c18f7c1d336015 +5407ea0f7b56614ae07cb3a394de27d3baa31937 +9616de1e6924bbab658145307561363b539a8dc5 +e5e436c096bc1a3d6f429ca00fb53347a061ce4c +3d7935396ce9bd8a4e656b40350fadaf3c8026aa +72143eeee47ec3497500a431678301f558758c56 +bba4e43a708bd578ab8afe9f165ae2aaaecfc25b +3a5140e812f1c68027e814ea8ed3b1ec095b933d +27bceefb07f4afc5e35a3a16e2fd6e2d9befe640 +491950c77bb0244e6efedcd52d2742f99da58a74 +363b7b057a1f26032d276890bc8a740b8aba45e3 +8d9581166026340cd2b4f8d6467d9db74c4f3f2e +688ce9a980b1083eaad8926c4172e1ee65e1427d +4398e8d9be6f2e951588790cb1d396b01db44a85 +97c575089dfbe46a2a08470080545c68690771e5 +76b3acc89f2fa210afc203631eeade1e2b515454 +632d3a8a330f6b744881ace2bd7366351f7286b2 +1b97bb0985d7bfe3aee9d535982421e713195c9e +0fc63e6c24fddc60fd060499b79af93bba809dd4 +0b846650d45dce16787d35a9d92bde94fb75c920 +dbf45702c91fb72a26d3f8b3ab2bb6c07cf69469 +824a3fda4b3fa4c659062a3b20ba8635c8a2190e +40a348f45830e9d468d5acd853316c474bcafb5c +cdc55fefd382a33104e77ba6603a5ccf05d58afe +126ce2bada96a58920d70f07c00c760335ed613d +76701b2c9eadcb987c86c0008ba435236ba7ac59 +46da968de0f1beb4ff3ef907be07b3835a3d0244 +45c4c9b5638a02f8ff7c1ac794bd56b11c4dfdd5 +8e9d2c7c562856b79569d8c448f0bd37064ca0af +8ba84cadb303d99a908544ed4b97c202a8014dc7 +0c04e60d913e69a0caf8eb1d2d270acb5b3b6cb4 +3d48f0129a3305029637625af57a086c76f2613c +47fb106f9afafc723cdfeefee1d86ccee04e901d +393ac75d41e78a4a5381e2d9aa6d47fd2a193b47 +eca0aa6a287222b8a13ac905d3d3e23c73b7ca39 +80e5b10243df93cde6c6472ed532dfc1276373f7 +e759c56c02a516158d910c0371e854b7cecdc0c3 +e6466a1c3a17c4b11f20aada42817ae12bd3b938 +a9ee72c6724db5b722990477118987a32de77bbf +0da5dde52b9c7d0ce51b8f3e179e7b01c78004e4 +3d626f2daecc4008f3f3f6efeaff326c2dd23703 +92a83882d7a65c36b077a92a4a43c48b1e202d20 +f386a01f6884013a6adc7f8aae1f1978ac265e77 +c761dae77728cd1fae607eef267a7999b618a6e2 +d60eaeba5712f0048023da8e59beab7003d8292b +11d5da3c1f87b22c4d75e003e8b239b893e641c2 +a96aff0a0a242aa0f1737f9b6b2a60d2b56312c1 +aa1072f71d66549e507ad9b27dc07d10f493c658 +37a115b56876a21457ccee00a7ec04cc498980ff +03dc5d6f421161ec53fb6208fb024079496ef1aa +eb2ff4cf6961679a90edaa9b774597d2b37509d7 +c545b818b62edccf95365813e00fc6bdbefbbdd1 +7864da056aa82163eea116c943910dac139cebd1 +bb48fc283823020c4a9f47fac92af53fb47193ef +a93e875df3016ed394a7b182a3ecc8145b6f4e92 +e0e9f470dfe49e2150f730044841900c6487db74 +02faed85d5768d5a4fb82a2cafdefbca3b0dda7e +b15779a2371fb8588e511290d49b3d6d77c24d38 +4fb308ef1036b377a49cd17d45394ef3cc621222 +4bd4fdb653d814aa308918fc996346ea9ce05a69 +3684dc1354bdb18d9310a8f450fd5a10914b68a2 +df3650887300897d39b7b9ef9da9481dd52fc668 +5220f44838d328157cf504624413e6b266a2e9ea +8c8b5afcbb1913f0f2ca14120d9df34ef9e8da53 +ff95b5d5ade5241c0973b39b444f8007c17e9468 +638887ccc41c3653fb94dedada07709ffc2e3f98 +586d2e47a3db62c840893e907ccd5da1177e9193 +376ff4f28e9c15caa23ac8eb4b402b96a943085b +978c77b1f0e587a2996adb8bb8e752c8bf1c9b1b +e54f2c356992d5b21e6a4572c7bf6b9b52acbe39 +959012f6e5b853b04ac1f0b9a39f6412a346f2d6 +8ed99f4d63a2cdcfe0068da32299e4c2eb68adb3 +be05e6ce847672442bd0e02a2715813bca2253f1 +a2e1986546658d81e5d5fed0995871e6318393e2 +a50967a7533a7bc4bd291b1701b3a93f408dd8b2 +603e9ee188e70f7e0b062a11ec490a51708e4a45 +65127086a721a84279455c2e6f448605015339cd +943572e38927b68d6d66c47474c021bec121df07 +0ab2b2ec85527b9dd5957310528e10793273a027 +0d07ec944b1667d2bb8e21b63544ffe842038fbf +00054e32ee08612dd5c8fe2214948dcd3617ceef +ee5ab4a91aa8061a7746ff42993ad48844f1d080 +92a582542b10e4f0eb903a5fb550a6053da5e24b +571e958f2e2421f2f71e0bde1351b0e233f15c07 +d8e88ee2d44ab564a216bf522facbab363d0826a +14c8279ff43aaa4139ebf490335c05c0bad3f1a0 +3a9a4d9137b9a97ee7e8afce592e243125dd5289 +f924313338f0ad755ccfb3c0ef9a89c20df8b873 +8094bd572302d5bd55f558b4e00a71ad24639845 +4901352b456042b56ef1ff25aa2959d689fb83d1 +83dd7cc53a3482141bf9ce476d80c141ee736e06 +84576ce21fbc8e16aea629c3c545af7e26d435e8 +6df93732389aef322f38045b39282a5221e48199 +07c1bc5ecebd97cbda34b4b2a28775f9eb6045a9 +783db6975452c1139d334cd4ba3bd4b1df0d6883 +a5f958045ba330ffae93cbcb2188f10f7280a1a2 +a0c70d746c5dcf3d5a44f6d5b228fa96009d87d0 +0dbe7f954dbdfe4011192ba0725248650719802d +13e01977902504e84524a19f3d777d1bdeb2e527 +6e36cc104b218cd9c69cf86a6a5274e3897abe06 +7d2905ed1ef56a716b655f2705a2fc175edde924 +b3975f241cb0285b4fb57a4a8bbc36ef05562797 +e2a92e0a31f181a7333fb142f2c05d493774cfe3 +5f18cf038eece383c8b63b1c8f2d9e05c798a3d2 +6db1565c9e9e17e39514a3c8032e7100195321c1 +ebd0a2a33d574bc8c8f5d65584ba1885c6811e48 +4f11ff8325c42d8da8c6c29be9351fb339022f25 +17773327365bc2036688faa055d76acb270c56d5 +031dc6c6d9e4b16cf4f41da1cfda6edcfe68d2d7 +4d44d476aa485e63c44c64394e84ebb8649ceea2 +ea5730221b1fe211da32fc37cca0bbd09f1ad85a +124cab7a38ab1ff5fa46b9bbdf8366ad5c890574 +c8d5c84d18dc9c84feb31948a9c285a4bc39e5a9 +8c2ec784dc40b0689f83199d3db6eb7c1035b6ef +138aa17ea6b7f25bc0c38d30d97509990c86635f +6e2ccf9ec5e6d3be1468682e4e163d936359895c +c44f1877db50779e9d803f4bdc0c6a1c19ec8ef2 +6496a5b88281de40d7d03e4d20f3e87b0f4ba435 +29f281d5881adf3aeef6ebc5b03336081bafc5c0 +3708af8606bd9009f9aa370b87a44dedd73932a7 +9c4bf4b8fa9388e2d74629dfb490256cbdecfa9a +50404822075da6b834f1ceb9fa6ee6d716aa8f43 +69c03fd680ef04fac2dc172d14dd2b61e56c3631 +95553cc650c8e95eb4721788fd3eee517429dade +52c853db964a03b45e68e702887f3539f06b8a0b +6e8b8c94a9e2f68262d446188361f816e1069828 +77a5954c6f5731165c601340321da9dca5e80c6c +4e37330721faa1b65833a26a4752a243863020eb +e8ba27dc49362e8de1929f5301208008c7be127b +58cbb9c45e037722779647d3d31f6751070e86f2 +d6c456f274546a534578c6612cecb57a65eed50e +df3bbd9e10aa788a6bdcb37d6338fa2696a99fa6 +dfe4003c90badbc9e90b7bfb70835dc8e565a18c +414ad7dd9256578f35effa03a20d665a1fe09d2e diff --git a/.config/insta.yaml b/.config/insta.yaml new file mode 100644 index 000000000..e3d6a23b5 --- /dev/null +++ b/.config/insta.yaml @@ -0,0 +1,2 @@ +test: + auto_review: true diff --git a/.config/nextest.toml b/.config/nextest.toml new file mode 100644 index 000000000..884eacf64 --- /dev/null +++ b/.config/nextest.toml @@ -0,0 +1,5 @@ +[profile.default] +test-threads = 1 +slow-timeout = { period = "250ms", terminate-after = 4 } +status-level = "all" +retries = { backoff = "exponential", count = 4, delay = "1s", max-delay = "10s" } diff --git a/.cspell.json b/.cspell.json new file mode 100644 index 000000000..b798d2932 --- /dev/null +++ b/.cspell.json @@ -0,0 +1,16 @@ +{ + "ignorePaths": [ + "**/node_modules/**", + "**/vscode-extension/**", + "**/.git/**", + "**/.pnpm-lock.json", + ".vscode", + "megalinter", + "package-lock.json", + "report" + ], + "language": "en", + "noConfigSearch": true, + "words": ["megalinter", "oxsecurity"], + "version": "0.2" +} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..8c69da42b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,36 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/rust +{ + "name": "Rust", + + "image": "ghcr.io/jdx/mise:dev", + + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + // "build": { + // "dockerfile": "Dockerfile", + // }, + + // Use 'mounts' to make the cargo cache persistent in a Docker Volume. + // "mounts": [ + // { + // "source": "devcontainer-cargo-cache-${devcontainerId}", + // "target": "/usr/local/cargo", + // "type": "volume" + // } + // ] + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "rustc --version", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + "remoteUser": "root" +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..2f7896d1d --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +target/ diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..83dde2541 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +[*.toml] +indent_style = space +indent_size = 2 + +[{*.sh,.mise/tasks/**/*,e2e/**/*}] +indent_style = space +indent_size = 2 + +# shfmt +switch_case_indent = true +simplify = true diff --git a/.env b/.env new file mode 100644 index 000000000..36973ef1f --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +export FOO_FROM_FILE="foo_from_file" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..f7872486b --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +zipsign.pub binary diff --git a/.github/ISSUE_TEMPLATE/blank.md b/.github/ISSUE_TEMPLATE/blank.md new file mode 100644 index 000000000..612a93fb0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/blank.md @@ -0,0 +1,7 @@ +--- +name: Blank +about: Blank issue template +title: "" +labels: "" +assignees: "" +--- diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..2d7275627 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,25 @@ +--- +name: Bug report +about: Something not working right? +title: "" +labels: bug +assignees: "" +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**`mise doctor` output** + +```text +REPLACE WITH OUTPUT OF `mise doctor` +``` + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..60f49e9f5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,7 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "" +labels: enhancement +assignees: "" +--- diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 000000000..cc3efb4a1 --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,19 @@ +self-hosted-runner: + # Labels of self-hosted runner in array of strings. + labels: + - macos-14 + - buildjet-32vcpu-ubuntu-2204-arm + - buildjet-16vcpu-ubuntu-2204-arm + - buildjet-8vcpu-ubuntu-2204-arm + - buildjet-4vcpu-ubuntu-2204-arm + - buildjet-2vcpu-ubuntu-2204-arm + - buildjet-32vcpu-ubuntu-2204 + - buildjet-16vcpu-ubuntu-2204 + - buildjet-8vcpu-ubuntu-2204 + - buildjet-4vcpu-ubuntu-2204 + - buildjet-2vcpu-ubuntu-2204 + +# Configuration variables in array of strings defined in your repository or +# organization. `null` means disabling configuration variables check. +# Empty array means no configuration variable is allowed. +config-variables: null diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 000000000..53b923020 --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["github>jdx/renovate-config"], + "automerge": false, + "lockFileMaintenance": { + "enabled": false + }, + "excludeCommitPaths": ["registry/**"], + "asdf": { + "enabled": false + }, + "nodenv": { + "enabled": false + } +} diff --git a/.github/restyled.yml b/.github/restyled.yml new file mode 100644 index 000000000..ca41f213f --- /dev/null +++ b/.github/restyled.yml @@ -0,0 +1,5 @@ +enabled: true +restylers: + - "!shellharden" + - "!prettier-markdown" + - "*" diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 000000000..e316f6558 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,120 @@ +name: docker + +on: + push: + tags: ["v*"] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + docker: + name: docker-${{ matrix.flavor }} + strategy: + fail-fast: false + matrix: + flavor: + - alpine + - deb + - rpm + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ghcr.io/jdx/mise:${{ matrix.flavor }} + labels: ${{ steps.meta.outputs.labels }} + file: packaging/${{ matrix.flavor }}/Dockerfile + dev: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: docker/setup-qemu-action@v3 + - uses: docker/setup-buildx-action@v3 + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ghcr.io/jdx/mise:dev + labels: ${{ steps.meta.outputs.labels }} + file: packaging/dev/Dockerfile + platforms: linux/amd64,linux/arm64 + dev-test: + runs-on: ubuntu-latest + container: + image: ghcr.io/jdx/mise:dev + needs: [dev] + steps: + - uses: actions/checkout@v4 + - run: cargo install --path . --debug + - run: mise trust --all + - run: mise install -y + - run: mise run test + dockerhub: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: jdxcode/mise + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: jdxcode/mise:latest,jdxcode/mise:${{ github.ref_name }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/release-plz.yml b/.github/workflows/release-plz.yml new file mode 100644 index 000000000..85bf1cfc0 --- /dev/null +++ b/.github/workflows/release-plz.yml @@ -0,0 +1,51 @@ +name: release-plz + +permissions: + pull-requests: write + contents: write + +on: + workflow_dispatch: + push: + branches: + - main + schedule: + - cron: "0 0 * * *" + +concurrency: + group: release-plz + +env: + MISE_EXPERIMENTAL: 1 + +jobs: + release-plz: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }} + - uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.MISE_GPG_KEY }} + git_user_signingkey: true + git_commit_gpgsign: true + git_tag_gpgsign: true + - uses: actions-rust-lang/setup-rust-toolchain@v1 + - run: mkdir -p "$HOME/bin" && echo "$HOME/bin" >> "$GITHUB_PATH" + - run: cargo build --all-features && cp target/debug/mise "$HOME"/bin + - uses: actions/cache/restore@v4 + with: + path: | + ~/.local/share/mise/installs + ~/.local/share/mise/plugins + key: mise-tools-${{ hashFiles('.mise.toml') }} + restore-keys: mise-tools + - run: mise install + - run: git subtree pull --prefix registry https://github.com/mise-plugins/registry.git main + #- run: git subtree push --prefix registry https://github.com/mise-plugins/registry.git main + - run: mise run release-plz + env: + GITHUB_TOKEN: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }} + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..b70fb06bc --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,295 @@ +name: release + +on: + push: + tags: ["v*"] + branches: ["release"] + workflow_dispatch: + +concurrency: + group: release-${{ github.ref_name }} + +env: + CARGO_TERM_COLOR: always + CARGO_INCREMENTAL: 0 + DRY_RUN: ${{ startsWith(github.event.ref, 'refs/tags/v') && '0' || '1' }} + +jobs: + build-tarball: + name: build-tarball-${{matrix.name}} + runs-on: ${{matrix.runs-on}} + timeout-minutes: 45 + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu + name: linux-x64 + target: x86_64-unknown-linux-gnu + runs-on: ubuntu-latest + - os: ubuntu + name: linux-x64-musl + target: x86_64-unknown-linux-musl + runs-on: ubuntu-latest + - os: ubuntu + name: linux-arm64 + target: aarch64-unknown-linux-gnu + runs-on: ubuntu-latest + - os: ubuntu + name: linux-arm64-musl + target: aarch64-unknown-linux-musl + runs-on: ubuntu-latest + - os: ubuntu + name: linux-armv7 + target: armv7-unknown-linux-gnueabi + runs-on: ubuntu-latest + - os: ubuntu + name: linux-armv7-musl + target: armv7-unknown-linux-musleabi + runs-on: ubuntu-latest + - os: ubuntu + name: linux-armv6 + target: arm-unknown-linux-gnueabi + runs-on: ubuntu-latest + - os: ubuntu + name: linux-armv6-musl + target: arm-unknown-linux-musleabi + runs-on: ubuntu-latest + - os: macos + name: macos-x64 + target: x86_64-apple-darwin + runs-on: macos-14 + - os: macos + name: macos-arm64 + target: aarch64-apple-darwin + runs-on: macos-14 + # - os: macos + # name: macos + # target: universal2-apple-darwin + # runs-on: macos-12 + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: ~/.cargo/bin/zipsign + key: ${{ runner.os }}-cargo-zipsign + - run: rustup target add ${{matrix.target}} + - run: rustup toolchain install stable --profile minimal + - uses: Swatinem/rust-cache@v2 + with: + shared-key: build-tarball + save-if: ${{ matrix.name == 'linux-x64' }} + - if: matrix.os == 'ubuntu' + uses: taiki-e/install-action@cross + - run: scripts/setup-zipsign.sh + env: + ZIPSIGN: ${{ secrets.ZIPSIGN }} + - run: scripts/build-tarball.sh mise --release --features openssl/vendored --target ${{matrix.target}} + - uses: actions/upload-artifact@v4 + with: + name: tarball-${{matrix.target}} + path: | + dist/mise-*.tar.xz + dist/mise-*.tar.gz + if-no-files-found: error + e2e-linux: + name: e2e-linux-${{matrix.tranche}} + runs-on: ubuntu-latest + #container: ghcr.io/jdx/mise:github-actions + needs: [build-tarball] + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + tranche: [0, 1, 2, 3] + steps: + - uses: actions/checkout@v4 + - name: Install zsh/fish/direnv + run: sudo apt-get update; sudo apt-get install zsh fish direnv + - uses: actions/download-artifact@v4 + with: + name: tarball-x86_64-unknown-linux-gnu + path: dist + - uses: taiki-e/install-action@v2 + with: + tool: usage-cli + - run: tar -C "$HOME" -xvJf "dist/mise-$(./scripts/get-version.sh)-linux-x64.tar.xz" + - run: echo "$HOME/mise/bin" >> "$GITHUB_PATH" + - run: mise -v + - name: Run e2e tests + uses: nick-fields/retry@v3 + env: + GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RUST_BACKTRACE: "1" + TEST_TRANCHE: ${{matrix.tranche}} + TEST_TRANCHE_COUNT: 4 + TEST_ALL: 1 + with: + timeout_minutes: 20 + max_attempts: 3 + command: ./e2e/run_all_tests + rpm: + runs-on: ubuntu-22.04 + needs: [build-tarball] + timeout-minutes: 10 + container: ghcr.io/jdx/mise:rpm + steps: + - uses: actions/checkout@v4 + - uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.MISE_GPG_KEY }} + - uses: actions/download-artifact@v4 + with: + name: tarball-x86_64-unknown-linux-gnu + path: dist + - uses: actions/download-artifact@v4 + with: + name: tarball-aarch64-unknown-linux-gnu + path: dist + - run: scripts/build-rpm.sh + - uses: actions/upload-artifact@v4 + with: + name: rpm + path: dist/rpmrepo + if-no-files-found: error + deb: + runs-on: ubuntu-22.04 + container: ghcr.io/jdx/mise:deb + timeout-minutes: 10 + needs: [build-tarball] + steps: + - uses: actions/checkout@v4 + - uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.MISE_GPG_KEY }} + - uses: actions/download-artifact@v4 + with: + name: tarball-x86_64-unknown-linux-gnu + path: dist + - uses: actions/download-artifact@v4 + with: + name: tarball-aarch64-unknown-linux-gnu + path: dist + - run: scripts/build-deb.sh + - uses: actions/upload-artifact@v4 + with: + name: deb + path: dist/deb + if-no-files-found: error + release: + runs-on: ubuntu-latest + #container: ghcr.io/jdx/mise:github-actions + timeout-minutes: 10 + permissions: + contents: write + needs: + - e2e-linux + - build-tarball + - rpm + - deb + steps: + - uses: actions/checkout@v4 + with: + path: mise + - uses: actions/checkout@v4 + with: + repository: jdx/mise-docs + path: mise-docs + token: ${{ secrets.RTX_GITHUB_BOT_TOKEN }} + - name: Install fd-find + run: | + sudo apt-get update + sudo apt-get install fd-find + mkdir -p "$HOME/.local/bin" + ln -s "$(which fdfind)" "$HOME/.local/bin/fd" + echo "$HOME/.local/bin" >> "$GITHUB_PATH" + - uses: actions/setup-node@v4 + with: + node-version: "20.x" + registry-url: "https://registry.npmjs.org" + - uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.RTX_SSH_KEY }} + known_hosts: ${{ secrets.RTX_KNOWN_HOSTS_AUR }} + - uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.MISE_GPG_KEY }} + git_user_signingkey: true + git_commit_gpgsign: true + workdir: mise-docs + - uses: actions/download-artifact@v4 + with: { path: artifacts } + - run: mise/scripts/release.sh + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + CLOUDFLARE_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_ACCESS_KEY_ID }} + CLOUDFLARE_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_SECRET_ACCESS_KEY }} + - name: mise-docs push + if: startsWith(github.event.ref, 'refs/tags/v') + run: git push + working-directory: mise-docs + - name: GitHub Release Assets + uses: softprops/action-gh-release@v2 + if: startsWith(github.event.ref, 'refs/tags/v') + with: + fail_on_unmatched_files: true + draft: false + files: releases/${{github.ref_name}}/* + generate_release_notes: true + token: ${{ secrets.RTX_GITHUB_BOT_TOKEN }} + bump-homebrew-formula: + runs-on: macos-14 + timeout-minutes: 10 + needs: [release] + continue-on-error: true + if: startsWith(github.event.ref, 'refs/tags/v') + steps: + - name: Bump Homebrew formula + uses: dawidd6/action-homebrew-bump-formula@v3 + with: + token: ${{ secrets.RTX_GITHUB_BOT_TOKEN }} + formula: mise + bump-aur: + runs-on: ubuntu-22.04 + timeout-minutes: 30 + needs: [release] + if: startsWith(github.event.ref, 'refs/tags/v') + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.RTX_SSH_KEY }} + known_hosts: ${{ secrets.RTX_KNOWN_HOSTS_AUR }} + - name: Bump aur + run: ./scripts/release-aur.sh + bump-aur-bin: + runs-on: ubuntu-22.04 + timeout-minutes: 30 + needs: [release] + if: startsWith(github.event.ref, 'refs/tags/v') + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - uses: shimataro/ssh-key-action@v2 + with: + key: ${{ secrets.RTX_SSH_KEY }} + known_hosts: ${{ secrets.RTX_KNOWN_HOSTS_AUR }} + - name: Bump aur-bin + run: ./scripts/release-aur-bin.sh + bump-alpine: + runs-on: ubuntu-22.04 + container: ghcr.io/jdx/mise:alpine + timeout-minutes: 30 + needs: [e2e-linux] + if: startsWith(github.event.ref, 'refs/tags/v') + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Bump APKBUILD + run: sudo -Eu packager ./scripts/release-alpine.sh + env: + ALPINE_PUB_KEY: ${{ secrets.ALPINE_PUB_KEY }} + ALPINE_PRIV_KEY: ${{ secrets.ALPINE_PRIV_KEY }} + GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }} diff --git a/.github/workflows/test-plugins.yml b/.github/workflows/test-plugins.yml new file mode 100644 index 000000000..8d91646ed --- /dev/null +++ b/.github/workflows/test-plugins.yml @@ -0,0 +1,190 @@ +name: test-plugins + +# Test Top 50 asdf plugins install correctly and the most common can print their +# current version + +on: + push: + tags: ["v*"] + branches: ["test-plugins"] + schedule: + # run at midnight on sunday (utc?) + - cron: 0 0 * * 0 + # pull_request: + # branches: ["main"] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +env: + CARGO_TERM_COLOR: always + +jobs: + build-linux: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + with: + shared-key: "build-linux-x86_64-unknown-linux-gnu" + save-if: false + - run: scripts/build-tarball.sh mise --release --target x86_64-unknown-linux-gnu + - uses: actions/upload-artifact@v4 + with: + name: tarball-x86_64-unknown-linux-gnu + path: | + dist/*.tar.xz + dist/*.tar.gz + if-no-files-found: error + test-install-and-run: + runs-on: ubuntu-22.04 + needs: [build-linux] + env: + GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + strategy: + fail-fast: false + matrix: + include: + - plugin: node + command: mise exec node@latest -- node -v + - plugin: ruby + command: mise exec ruby@latest -- ruby --version + - plugin: python + command: mise exec python@latest -- python -V + - plugin: direnv + command: mise exec direnv@latest -- direnv --version + - plugin: erlang + command: mise exec erlang@24.3.4.9 -- erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell + - plugin: elixir + command: | + mise use --global erlang@24.3.4.9 + eval "$(mise env bash)" + mise use --global elixir@main-otp-24 + eval "$(mise env bash)" + mise exec -- elixir --version + - plugin: golang + command: mise exec golang@latest -- go version + - plugin: java + command: mise exec java@openjdk -- java -version + - plugin: terraform + command: mise exec terraform@latest -- terraform -v + # - plugin: yarn + # command: mise exec yarn@latest -- yarn --version + - plugin: deno + command: mise exec deno@latest -- deno --version + - plugin: bun + command: mise exec bun@latest -- bun --version + - plugin: kubectl + command: mise exec kubectl@latest -- kubectl version --client + - plugin: dotnet + command: mise exec dotnet@latest -- dotnet --list-sdks + - plugin: flutter + command: mise exec flutter@latest -- flutter --version + - plugin: crystal + command: mise exec crystal@latest -- crystal -v + - plugin: neovim + command: mise exec neovim@latest -- nvim --version + - plugin: php + command: mise exec php@latest -- php -v php + - plugin: rust + command: mise exec rust@nightly -- rustc -V + - plugin: postgres + command: mise exec postgres@latest -- psql -V + steps: + - name: apt-get + run: sudo apt-get update; sudo apt-get install zsh fish direnv re2c libcurl4-openssl-dev libgd-dev libonig-dev autoconf bison build-essential curl gettext git libgd-dev libcurl4-openssl-dev libedit-dev libicu-dev libjpeg-dev libmysqlclient-dev libonig-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libxml2-dev libzip-dev openssl pkg-config re2c zlib1g-dev libwxgtk-webview3.0-gtk3-dev + - uses: actions/download-artifact@v4 + with: + name: tarball-x86_64-unknown-linux-gnu + path: dist + # dist/mise-v1.16.0-linux-x64.tar.xz + # x86_64-unknown-linux-gnu-v1.16.0-linux-x64.tar.xz + - run: tar -C "$HOME" -xvJf dist/mise-*-linux-x64.tar.xz + - run: echo "$HOME/mise/bin" >> "$GITHUB_PATH" + - run: mise -v + - name: ${{matrix.command}} + uses: nick-fields/retry@v3 + with: + timeout_minutes: 20 + max_attempts: 3 + retry_wait_seconds: 30 + command: ${{matrix.command}} + env: + MISE_EXPERIMENTAL: "1" + test-install: + # Tests installing the top 50 plugins not already tested in `test-install-and-run`. + # installing is a better-than-nothing smoke test that the plugin is correctly implemented + # and behaves as expected with mise. + runs-on: ubuntu-22.04 + needs: [build-linux] + env: + GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + strategy: + fail-fast: false + matrix: + plugins: + - waypoint + - vault + - tfc-agent + - terraform-ls + - serf + - sentinel + - packer + - nomad + - levant + - consul + - boundary + - postgres + - rust + - action-validator + - dotnet-core + - neovim + - poetry + # TODO: - haskell not working due to already existing on image + - link + - lua + - redis + - gcloud + - helm + - gleam + - awscli + - dart + - conan + # TODO: - awsebcli fails in asdf and mise the same way + - aws-sam-cli + - ansible-base + - kotlin + - pnpm + - ocaml + # TODO: - rebar install erlang first + # TODO: - julia seems to have quit working, likely an issue with the plugin + - elm + # TODO: - R install libcurl + - nim + - alias + - mysql + - minikube + - gradle + - zig + - shellcheck + - scala + - maven + - kustomize + - graalvm + - sbcl + steps: + - name: Install zsh/fish/direnv + run: sudo apt-get update; sudo apt-get install zsh fish direnv + - uses: actions/download-artifact@v4 + with: + name: tarball-x86_64-unknown-linux-gnu + path: dist + - run: tar -C "$HOME" -xvJf dist/mise-*-linux-x64.tar.xz + - run: echo "$HOME/mise/bin" >> "$GITHUB_PATH" + - name: mise install ${{matrix.plugins}}@latest + uses: nick-fields/retry@v3 + with: + timeout_minutes: 20 + max_attempts: 3 + retry_wait_seconds: 30 + command: mise install ${{matrix.plugins}}@latest diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..d5776d629 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,112 @@ +name: test +on: + push: + tags: ["v*"] + branches: ["main", "mise"] + pull_request: + branches: ["main"] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + CARGO_TERM_COLOR: always + CARGO_INCREMENTAL: 0 + MISE_TRUSTED_CONFIG_PATHS: ${{ github.workspace }} + +jobs: + unit: + runs-on: ubuntu-latest + #container: ghcr.io/jdx/mise:github-actions + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + token: ${{ secrets.RTX_GITHUB_BOT_TOKEN || github.token }} + - uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + components: rustfmt + - uses: taiki-e/install-action@v2 + with: + tool: nextest,just,cargo-deny,cargo-msrv,cargo-machete,usage-cli + - name: Install direnv + run: sudo apt-get update; sudo apt-get install direnv + - run: cargo nextest run --all-features + env: + RUST_BACKTRACE: "1" + - run: cargo deny check + - run: cargo msrv verify + - run: cargo machete --with-metadata + - run: ./scripts/test-standalone.sh + - run: cargo build --all-features + - run: ./target/debug/mise settings set experimental true + - uses: actions/cache@v4 + with: + path: | + ~/.local/share/mise/installs + ~/.local/share/mise/plugins + key: mise-tools-${{ hashFiles('.mise.toml') }} + restore-keys: mise-tools + - run: ./target/debug/mise install + - run: ./target/debug/mise run render + - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'jdx/mise' + run: ./target/debug/mise run lint-fix && git diff HEAD + - if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'jdx/mise' + uses: EndBug/add-and-commit@v9 + with: + push: true + author_name: mise[bot] + author_email: 123107610+mise-en-dev@users.noreply.github.com + - uses: actions-rust-lang/rustfmt@v1 + - run: ./target/debug/mise run lint + + coverage: + name: coverage-${{matrix.tranche}} + #container: ghcr.io/jdx/mise:github-actions + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + tranche: [0, 1, 2, 3] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: Swatinem/rust-cache@v2 + with: + shared-key: coverage + save-if: ${{ github.ref_name == 'main' }} + - run: sudo apt-get update; sudo apt-get install zsh fish direnv + - uses: taiki-e/install-action@v2 + with: + tool: cargo-llvm-cov,mise,usage-cli + - name: Test w/ coverage + uses: nick-fields/retry@v3 + env: + GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RUST_BACKTRACE: "1" + MISE_GITHUB_BOT_TOKEN: ${{ secrets.RTX_GITHUB_BOT_TOKEN }} + MISE_EXPERIMENTAL: "1" + TEST_TRANCHE: ${{matrix.tranche}} + TEST_TRANCHE_COUNT: 4 + TEST_ALL: ${{github.ref_name == 'release' && '1' || '0'}} + with: + timeout_minutes: 30 + max_attempts: 2 + command: mise tasks run test:coverage + - name: Run codacy-coverage-reporter + uses: codacy/codacy-coverage-reporter-action@v1 + continue-on-error: true + with: + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + coverage-reports: lcov.info + # - name: Upload to codecov.io + # uses: codecov/codecov-action@v3 + # with: + # fail_ci_if_error: false + # files: lcov.info diff --git a/.gitignore b/.gitignore index 7ec8c9bd2..e814f45ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,25 @@ -.rtxcache* +.DS_Store +/dist/ +/node_modules/ +package-lock.json + +*.log +*.profraw +lcov.info + +**/snapshots/*.snap.new + +# Generated by Cargo +# will have compiled files and executables +/target/ +# These are backup files generated by rustfmt +**/*.rs.bk + +# alpine +.ash_history +.abuild +/aports +/aur + +megalinter-reports/ +.dev/ diff --git a/.hadolint.yaml b/.hadolint.yaml new file mode 100644 index 000000000..246210584 --- /dev/null +++ b/.hadolint.yaml @@ -0,0 +1,7 @@ +ignored: + - DL3006 + - DL3008 + - DL3015 + - DL3018 + - DL3028 + - DL3041 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..a9d7db9c0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# GitHub Copilot persisted chat sessions +/copilot/chatSessions diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 000000000..a55e7a179 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..c6df57561 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,47 @@ + + + + \ No newline at end of file diff --git a/.idea/mise.iml b/.idea/mise.iml new file mode 100644 index 000000000..26265d4cb --- /dev/null +++ b/.idea/mise.iml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..491999a63 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.idea/modules/fixtures.iml b/.idea/modules/fixtures.iml new file mode 100644 index 000000000..0d39050a2 --- /dev/null +++ b/.idea/modules/fixtures.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 000000000..3464f8d13 --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..617d4b9cd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + diff --git a/.jscpd.json b/.jscpd.json new file mode 100644 index 000000000..2cee5f5d5 --- /dev/null +++ b/.jscpd.json @@ -0,0 +1,15 @@ +{ + "threshold": 0, + "reporters": ["html", "markdown"], + "ignore": [ + "**/node_modules/**", + "**/.git/**", + "**/.rbenv/**", + "**/.venv/**", + "**/*cache*/**", + "**/.github/**", + "**/.idea/**", + "**/report/**", + "**/*.svg" + ] +} diff --git a/.markdown-link-check.json b/.markdown-link-check.json new file mode 100644 index 000000000..2fc2c67da --- /dev/null +++ b/.markdown-link-check.json @@ -0,0 +1,3 @@ +{ + "ignorePatterns": [{ "pattern": "^https://crates.io" }] +} diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 000000000..a36edfc88 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,7 @@ +{ + "MD004": false, + "MD013": false, + "MD033": false, + "MD040": false, + "MD041": false +} diff --git a/.markdownlintignore b/.markdownlintignore new file mode 100644 index 000000000..fc69040eb --- /dev/null +++ b/.markdownlintignore @@ -0,0 +1,3 @@ +registry/ +target/ +CHANGELOG.md diff --git a/.mega-linter.yml b/.mega-linter.yml new file mode 100644 index 000000000..3000aab4c --- /dev/null +++ b/.mega-linter.yml @@ -0,0 +1,38 @@ +# Configuration file for MegaLinter +# +# See all available variables at https://megalinter.io/latest/config-file/ and in +# linters documentation + +# all, none, or list of linter keys +APPLY_FIXES: all + +GITHUB_COMMENT_REPORTER: false + +# If you use ENABLE variable, all other languages/formats/tooling-formats will +# be disabled by default +# ENABLE: +# - RUST + +DISABLE: + - SPELL + +DISABLE_LINTERS: + - COPYPASTE_JSCPD + - JAVASCRIPT_STANDARD + - REPOSITORY_CHECKOV + - REPOSITORY_DEVSKIM + - REPOSITORY_GRYPE + - REPOSITORY_KICS + - REPOSITORY_TRIVY + - REPOSITORY_TRUFFLEHOG + - RUST_CLIPPY + +PRE_COMMANDS: + - command: apk add --no-cache zlib-dev zlib-static openssl-dev libffi-dev + +SHOW_ELAPSED_TIME: true + +#FILEIO_REPORTER: false + +FILTER_REGEX_EXCLUDE: "(completions/|target/|registry/|CHANGELOG.md)" +JSON_JSONLINT_FILTER_REGEX_EXCLUDE: '(\.devcontainer/)' diff --git a/.mise.dev.toml b/.mise.dev.toml new file mode 100644 index 000000000..4dae1552f --- /dev/null +++ b/.mise.dev.toml @@ -0,0 +1,2 @@ +[env] +FOO=".mise.dev.toml" diff --git a/.mise.local.toml b/.mise.local.toml new file mode 100644 index 000000000..6e50f8286 --- /dev/null +++ b/.mise.local.toml @@ -0,0 +1,10 @@ +#:schema ./schema/mise.json + +tasks.a1 = ["echo a1 1>&2 && sleep 1.5"] +tasks.a2 = "echo a2 && sleep 1.0" +tasks.b1 = { run = "echo b1 && sleep 1.0", depends = ["a1", "a2"], hide = true } +tasks.c1 = { run = "echo c1 && sleep 0.5 && echo", depends = ["b1"], hide = true } +#tasks.filetask = "echo local" + +[env] +FOO=".mise.local.toml" diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 000000000..60ed5d6f8 --- /dev/null +++ b/.mise.toml @@ -0,0 +1,114 @@ +#:schema ./schema/mise.json + +min_version = "2024.1.1" +[env] +_.file = [".env"] +_.path = ["./target/debug"] +FOO = "bar" +FOO_NUM = 1 +THIS_PROJECT = "{{config_root}}-{{cwd}}" + +[tools] +#node = 'lts' +tiny = { version = "1", foo = "bar" } +golang = { version = "prefix:1.21", foo = "bar" } +python = { version = "latest" } +shellcheck = "0.10" +shfmt = "3" +"cargo:cargo-edit" = "latest" +"cargo:cargo-show" = "latest" +"cargo:git-cliff" = "latest" +"npm:markdownlint-cli" = "0.38" +"npm:prettier" = "3" +#python = { version = "latest", virtualenv = "{{env.HOME}}/.cache/venv" } +#ruby = "3.1" + +[plugins] +nnnn = 'https://github.com/mise-plugins/rtx-nodejs#main' + +[alias.tiny] +abc = '1' + +[tasks] +format = "cargo fmt -- --emit=files" +clean = "cargo clean" +release = "cargo release" +signal-test = "node ./test/fixtures/signal-test.js" +ci = { depends = ["format", "build", "test"] } +pre-commit = { depends = ["render", "lint"] } + +[tasks.build] +alias = "b" +run = "cargo build --color always --all-features" +#sources = ["Cargo.*", "src/**/*.rs"] +#outputs = ["target/debug/mise"] + +[tasks."render:usage"] +depends = ["build"] +env = { CLICOLOR_FORCE = "0" } +run = "mise usage > mise.usage.kdl" + +[tasks."render:completions"] +depends = ["build", "render:usage"] +env = { NO_COLOR = "1" } +run = ''' +#!/usr/bin/env bash +set -xeuo pipefail +mise completion bash > completions/mise.bash +mise completion zsh > completions/_mise +mise completion fish > completions/mise.fish +''' + +[tasks."render:mangen"] +depends = ["build"] +env = { NO_COLOR = "1" } +run = "mise render-mangen" + +[tasks."render:help"] +depends = ["build"] +env = { NO_COLOR = "1" } +run = [ + "mise render-help", + "mise x node@latest -- npx markdown-magic", +] +sources = ["mise"] +outputs = ["README.md"] + +[tasks.render] +alias = "render" +depends = ["render:*"] + +[tasks.snapshots] +description = "update test snapshots" +run = "cargo insta test --accept --unreferenced delete" + +[tasks.test] +description = "run all tests" +alias = 't' +run = [ + "mise tasks run test:unit", + "mise tasks run test:e2e", +] + +[tasks."test:unit"] +description = "run unit tests" +run = "cargo test" +env = { CARGO_TERM_COLOR = "always", "RUST_TEST_THREADS" = "1" } +depends = ["build"] + +[tasks."docker:image"] +description = "build docker image from Dockerfile" +run = 'docker build $root -f $root/packaging/dev/Dockerfile -t ghcr.io/jdx/mise:dev' + +[tasks."docker:cargo"] +description = "run cargo inside of development docker container" +run = 'docker run -ti --rm -e GITHUB_API_TOKEN -v $root:/mise -w /mise ghcr.io/jdx/mise:dev cargo' +depends = ["docker:image"] + +[tasks."docker:mise"] +description = "run mise inside of development docker container" +run = "mise tasks run -- docker:cargo run --" + +[tasks."docker:e2e"] +description = "run e2e tests inside of development docker container" +run = "mise tasks run docker:mise run test:e2e" diff --git a/.mise/config.toml b/.mise/config.toml new file mode 100644 index 000000000..cc9fde7ef --- /dev/null +++ b/.mise/config.toml @@ -0,0 +1 @@ +tasks.l = "mise run lint" diff --git a/.mise/tasks/filetask b/.mise/tasks/filetask new file mode 100755 index 000000000..1c25bb9b8 --- /dev/null +++ b/.mise/tasks/filetask @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# mise description="This is a test build script" +# mise depends=["lint", "build"] +# mise sources=[".test-tool-versions"] +# mise outputs=["$MISE_PROJECT_ROOT/test/test-build-output.txt"] +# mise env={TEST_BUILDSCRIPT_ENV_VAR = "VALID"} +# mise dir="{{config_root}}" + +set -euxo pipefail +cd "$MISE_PROJECT_ROOT" || exit 1 +echo "running test-build script" +echo "TEST_BUILDSCRIPT_ENV_VAR: $TEST_BUILDSCRIPT_ENV_VAR" > test/test-build-output.txt +echo "ARGS:" "$@" diff --git a/.mise/tasks/lint b/.mise/tasks/lint new file mode 100755 index 000000000..e35d16c23 --- /dev/null +++ b/.mise/tasks/lint @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euxo pipefail + +# Used for shellcheck which needs explicit args +scripts=("$PWD"/scripts/*.sh "$PWD"/e2e/{test_,run_}* "$PWD"/e2e/*.sh) +# Used for shfmt which will run only on files it can +scripts_dirs=("$PWD"/scripts "$PWD"/e2e) + +cargo clippy -- -Dwarnings +cargo fmt --all -- --check +shellcheck -x "${scripts[@]}" +shfmt -d -i 2 -ci -bn "${scripts_dirs[@]}" +prettier -c $(git ls-files '*.yml' '*.yaml') +markdownlint . diff --git a/.mise/tasks/lint-fix b/.mise/tasks/lint-fix new file mode 100755 index 000000000..f75a585ab --- /dev/null +++ b/.mise/tasks/lint-fix @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +# mise alias=["lint:fix"] +set -euxo pipefail + +# Used for shellcheck which needs explicit args +scripts=("$PWD"/scripts/*.sh "$PWD"/e2e/{test_,run_}* "$PWD"/e2e/*.sh) +# Used for shfmt which will run only on files it can +scripts_dirs=("$PWD"/scripts "$PWD"/e2e) +cargo clippy --fix --allow-staged --allow-dirty -- -Dwarnings +cargo fmt --all +shellcheck -x "${scripts[@]}" +shfmt -w -i 2 -ci -bn "${scripts_dirs[@]}" +prettier -w $(git ls-files '*.yml' '*.yaml') +markdownlint --fix . diff --git a/.mise/tasks/release-plz b/.mise/tasks/release-plz new file mode 100755 index 000000000..c21ebeda5 --- /dev/null +++ b/.mise/tasks/release-plz @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +set -euxo pipefail + +git config user.name mise-en-dev +git config user.email release@mise.jdx.dev + +released_versions="$(cargo show mise --json | jq -r '.versions.[].num')" +cur_version="$(cargo pkgid mise | cut -d# -f2)" +if ! echo "$released_versions" | grep -q "^$cur_version$"; then + echo "Releasing $cur_version" + cargo publish + changelog="$(git cliff --tag "v$cur_version" --strip all --unreleased)" + changelog="$(echo "$changelog" | tail -n +3)" + git tag "v$cur_version" -s -m "$changelog" + git push --tags + gh release create "v$cur_version" --title "v$cur_version" --notes "$changelog" + exit 0 +fi + +year="$(date +%Y)" +month="$(date +%-m)" +if echo "$cur_version" | grep -e "^$year\.$month\."; then + cargo set-version --bump patch +elif echo "$cur_version" | grep -e "^$year\."; then + cargo set-version --bump minor +else + cargo set-version "$year.1.0" +fi + +version="$(cargo pkgid mise | cut -d# -f2)" +git cliff --tag "v$version" -o CHANGELOG.md +changelog="$(git cliff --tag "v$version" --unreleased --strip all)" +changelog="$(echo "$changelog" | tail -n +3)" +sed -i.bak "s/^mise [0-9]\+\.[0-9]\+\.[0-9]\+\(-rc\.[0-9]\+\)\?$/mise $version/" README.md +sed -i.bak "s/^Version: [0-9]\+\.[0-9]\+\.[0-9]\+\(-rc\.[0-9]\+\)\?$/Version: $version/" packaging/rpm/mise.spec +sed -i.bak "s/version = \"[0-9]\+\.[0-9]\+\.[0-9]\+\(-rc\.[0-9]\+\)\?\";$/version = \"$version\";/" default.nix + +mise run update-shorthand-repo +mise run render ::: lint-fix + +cargo update +git add \ + Cargo.lock \ + Cargo.toml \ + CHANGELOG.md \ + README.md \ + default.nix \ + packaging/rpm/mise.spec \ + src/default_shorthands.rs \ + mise.usage.kdl \ + completions \ + man/ +git clean -df +git checkout -B release +git commit -m "chore: release $version" +git push origin release --force +gh pr create --title "chore: release $version" --body "$changelog" --label "release" || + gh pr edit --title "chore: release $version" --body "$changelog" diff --git a/.mise/tasks/test/coverage b/.mise/tasks/test/coverage new file mode 100755 index 000000000..3ee43c3c8 --- /dev/null +++ b/.mise/tasks/test/coverage @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# mise depends=["build"] +# mise description="run all tests with coverage report" + +echo "::group::Setup" +set -euxo pipefail +source <(cargo llvm-cov show-env --export-prefix) +cargo llvm-cov clean --workspace +if [[ -n "${MISE_GITHUB_BOT_TOKEN:-}" ]]; then + export GITHUB_API_TOKEN="$MISE_GITHUB_BOT_TOKEN" +fi +export CARGO_TARGET_DIR="${CARGO_TARGET_DIR:-$PWD/target}" +export PATH="${CARGO_TARGET_DIR}/debug:$PATH" + +echo "::group::Build w/ coverage" +cargo build --all-features +echo "::endgroup::" +./e2e/run_all_tests +if [[ "${TEST_TRANCHE:-}" == 0 ]]; then + echo "::group::Unit tests" + cargo test --all-features + echo "::group::render" + MISE_EXPERIMENTAL=1 mise run render + echo "::group::Implode" + mise implode +elif [[ "${TEST_TRANCHE:-}" == 1 ]]; then + echo "::group::Self update" + # TODO: enable this when release-plz is working right + #mise self-update -fy +fi +echo "::group::Render lcov report" +cargo llvm-cov report --lcov --output-path lcov.info diff --git a/.mise/tasks/test/e2e b/.mise/tasks/test/e2e new file mode 100755 index 000000000..1c8fdbb1d --- /dev/null +++ b/.mise/tasks/test/e2e @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# mise depends=["build"] +# mise alias="e" +# mise description="run end-to-end tests" +set -euo pipefail + +export RUST_TEST_THREADS=1 + +if [[ "${1:-all}" == all ]]; then + ./e2e/run_all_tests +else + FILES="$(fd "$1" e2e/)" + for FILE in $FILES; do + ./e2e/run_test "$FILE" + done +fi diff --git a/.mise/tasks/update-shorthand-repo b/.mise/tasks/update-shorthand-repo new file mode 100755 index 000000000..013104e96 --- /dev/null +++ b/.mise/tasks/update-shorthand-repo @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +set -euo pipefail + +rm -f src/default_shorthands.rs + +asdf_plugins=$(ls registry/plugins) +num_plugins=$(echo "$asdf_plugins" | wc -l | tr -d ' ') +trusted=() + +cat >src/default_shorthands.rs <> = + Lazy::new(|| HashMap::from([ +EOF +count=1 +for plugin in $asdf_plugins; do + file="registry/plugins/$plugin" + repository=$(grep -e '^repository = ' "$file") + repository="${repository/#repository = /}" + printf "\033[2K[%03d/%d] %s\r" $((++count)) "$num_plugins" "$repository" + if grep -qe '^first-party = true' "$file"; then + trusted+=("$plugin") + fi + # if [[ $repository == "https://github.com/"* ]]; then + # owner=${repository#*github.com/} + # owner=${owner%/*} + # repo=${repository#*github.com/*/} + # repo=${repo%.git} + # stars["$owner/$repo"]="$plugin" + # fi + echo " (\"$plugin\", \"$repository\")," >>src/default_shorthands.rs +done +echo "]));" >>src/default_shorthands.rs + +cat <>src/default_shorthands.rs + +pub static TRUSTED_SHORTHANDS: Lazy> = + Lazy::new(|| HashSet::from([ +EOF +for plugin in "${trusted[@]}"; do + echo " \"$plugin\"," >>src/default_shorthands.rs +done +echo "]));" >>src/default_shorthands.rs + +#cat <>src/default_shorthands.rs +##[rustfmt::skip] +#pub static GITHUB_STARS: Lazy> = +# Lazy::new(|| HashMap::from([ +#EOF +#for plugin in "${!stars[@]}"; do +# echo " (\"$plugin\", ${stars[$plugin]})," >>src/default_shorthands.rs +#done +#echo "]));" >>src/default_shorthands.rs + +rustfmt src/default_shorthands.rs diff --git a/.node-version b/.node-version new file mode 100644 index 000000000..a77793ecc --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +lts/hydrogen diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..ae0401636 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,16 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-json + - id: check-toml + - id: check-added-large-files + - repo: https://github.com/doublify/pre-commit-rust + rev: v1.0 + hooks: + - id: fmt + - id: clippy diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..46567fa11 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +.venv +registry/ diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 000000000..8cc152d0a --- /dev/null +++ b/.shellcheckrc @@ -0,0 +1,3 @@ +disable=SC1008 +disable=SC2088 +disable=SC2317 diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 000000000..bf5cbb8a3 --- /dev/null +++ b/.tool-versions @@ -0,0 +1,4 @@ +shellcheck 0.9.0 +shfmt sub-1:4 +jq latest +tiny 2 1 3 diff --git a/.yamllint.yml b/.yamllint.yml new file mode 100644 index 000000000..cd310bfaf --- /dev/null +++ b/.yamllint.yml @@ -0,0 +1 @@ +document-start: disable diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..4a0f5c394 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1302 @@ +# Changelog + +## [2024.4.8](https://github.com/jdx/mise/compare/v2024.4.7..v2024.4.8) - 2024-04-23 + +### 🚀 Features + +- add periphery by [@MontakOleg](https://github.com/MontakOleg) in [7f51540](https://github.com/jdx/mise/commit/7f51540695664412dab4008b0d061bfaca5b0bc2) +- add danger-js by [@MontakOleg](https://github.com/MontakOleg) in [6e61cf7](https://github.com/jdx/mise/commit/6e61cf7c97d03094a6ac86656b64fdeb85e84df5) + +### 🐛 Bug Fixes + +- **(exec)** default to @latest version by [@zph](https://github.com/zph) in [#1926](https://github.com/jdx/mise/pull/1926) +- rename bin -> ubi by [@jdx](https://github.com/jdx) in [0843b78](https://github.com/jdx/mise/commit/0843b78e6ab9a3dd2965f0218760c1a3336c4ca5) + +### 📚 Documentation + +- **(changelog)** reorder changelog topics by [@jdx](https://github.com/jdx) in [#1939](https://github.com/jdx/mise/pull/1939) +- fixed asdf-xcbeautify url by [@jdx](https://github.com/jdx) in [d4134bc](https://github.com/jdx/mise/commit/d4134bcb399a8d9da4e9670500e01d832b9a8e46) + +### 🔍 Other Changes + +- use https to get gpgkey by [@sjpalf](https://github.com/sjpalf) in [#1936](https://github.com/jdx/mise/pull/1936) +- Update xcbeautify by [@jdx](https://github.com/jdx) in [cb48b68](https://github.com/jdx/mise/commit/cb48b68bb6a0c7962b1ef95641514ba64ac63bd1) +- Include e2e folder in shfmt editorconfig for 2 spaces indenting by [@zph](https://github.com/zph) in [#1937](https://github.com/jdx/mise/pull/1937) +- disable megalinter by [@jdx](https://github.com/jdx) in [3dd1006](https://github.com/jdx/mise/commit/3dd1006a8367a852a6f415256b8301771f8fa8d6) + +### New Contributors + +* @MontakOleg made their first contribution +* @sjpalf made their first contribution in [#1936](https://github.com/jdx/mise/pull/1936) + +## [2024.4.7](https://github.com/jdx/mise/compare/v2024.4.6..v2024.4.7) - 2024-04-22 + +### 🐛 Bug Fixes + +- **(zig)** make zig core plugin experimental by [@jdx](https://github.com/jdx) in [45274bc](https://github.com/jdx/mise/commit/45274bc1415ac5dc307a82a93db952a1cf811210) + +## [2024.4.6](https://github.com/jdx/mise/compare/v2024.4.5..v2024.4.6) - 2024-04-22 + +### 🚀 Features + +- Pipx Backend by [@zph](https://github.com/zph) in [#1923](https://github.com/jdx/mise/pull/1923) +- ubi backend by [@zph](https://github.com/zph) in [#1932](https://github.com/jdx/mise/pull/1932) + +### 🐛 Bug Fixes + +- **(gleam)** use asdf-community fork by [@jc00ke](https://github.com/jc00ke) in [06599d8](https://github.com/jdx/mise/commit/06599d8977baaa2a2db7e2d144939049bbe9d20b) + +### 🚜 Refactor + +- use a metadata file for forges by [@roele](https://github.com/roele) in [#1909](https://github.com/jdx/mise/pull/1909) + +### 🔍 Other Changes + +- Add Zig language plugin by [@MustCodeAl](https://github.com/MustCodeAl) in [#1927](https://github.com/jdx/mise/pull/1927) + +### 📦️ Dependency Updates + +- update rust crate chrono to 0.4.38 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1907](https://github.com/jdx/mise/pull/1907) +- update rust crate serde_json to 1.0.116 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1908](https://github.com/jdx/mise/pull/1908) +- update rust crate toml_edit to 0.22.11 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1921](https://github.com/jdx/mise/pull/1921) +- bump rustls from 0.21.10 to 0.21.11 by [@dependabot[bot]](https://github.com/dependabot[bot]) in [#1922](https://github.com/jdx/mise/pull/1922) +- update rust crate rmp-serde to 1.2.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1917](https://github.com/jdx/mise/pull/1917) +- update rust crate toml_edit to 0.22.12 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1924](https://github.com/jdx/mise/pull/1924) +- update rust crate usage-lib to 0.1.18 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1896](https://github.com/jdx/mise/pull/1896) +- update rust crate ctor to 0.2.8 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1913](https://github.com/jdx/mise/pull/1913) +- update serde monorepo to 1.0.198 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1914](https://github.com/jdx/mise/pull/1914) +- update rust crate thiserror to 1.0.59 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1929](https://github.com/jdx/mise/pull/1929) +- update rust crate zip to v1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1930](https://github.com/jdx/mise/pull/1930) + +### New Contributors + +* @MustCodeAl made their first contribution in [#1927](https://github.com/jdx/mise/pull/1927) + +## [2024.4.5](https://github.com/jdx/mise/compare/v2024.4.3..v2024.4.5) - 2024-04-15 + +### 🚀 Features + +- **(doctor)** warn if a plugin overwrites a core plugin by [@roele](https://github.com/roele) in [#1900](https://github.com/jdx/mise/pull/1900) +- add option to list installed (backend) binaries by [@roele](https://github.com/roele) in [#1885](https://github.com/jdx/mise/pull/1885) +- add powerpipe by [@jc00ke](https://github.com/jc00ke) in [7369b74](https://github.com/jdx/mise/commit/7369b74550b28b45d7195d0b11c11e98cf5e4d29) +- add xcresultparser by [@nekrich](https://github.com/nekrich) in [92b4aeb](https://github.com/jdx/mise/commit/92b4aeb13e8350a76a9ceae9df1bb6270a2b2182) + +### 🐛 Bug Fixes + +- **(alpine)** use mise docker image by [@jdx](https://github.com/jdx) in [db65c3f](https://github.com/jdx/mise/commit/db65c3f5de1b1117bc6708b881de86f490057b68) +- **(heroku-cli)** use mise-plugins fork by [@jdx](https://github.com/jdx) in [2a92d9d](https://github.com/jdx/mise/commit/2a92d9d1bd0b275c7d27ca020f63e3089d789c8c) +- enable markdown-magic since it is working again by [@jdx](https://github.com/jdx) in [2b7b943](https://github.com/jdx/mise/commit/2b7b943d33ac91ea6eaded7f2fe84b472f73e073) +- mise panics if prefix: is used on certain core plugins by [@roele](https://github.com/roele) in [#1889](https://github.com/jdx/mise/pull/1889) +- go backend naming inconsistency (in mise ls and mise prune) by [@roele](https://github.com/roele) in [#1905](https://github.com/jdx/mise/pull/1905) + +### 🧪 Testing + +- fix github action branch by [@jdx](https://github.com/jdx) in [39eb2ab](https://github.com/jdx/mise/commit/39eb2abbdb7b136c541f84696dc038637280d8a7) + +### 🔍 Other Changes + +- **(move)** added TODO by [@jdx](https://github.com/jdx) in [5ffbcc1](https://github.com/jdx/mise/commit/5ffbcc134f27800109bb65335b4b9423742b6807) +- **(pre-commit)** added pre-commit by [@jdx](https://github.com/jdx) in [b2ff8cd](https://github.com/jdx/mise/commit/b2ff8cd88c5951326781fcc5c1405d3883ef21c1) +- **(pre-commit)** check json and toml files by [@jdx](https://github.com/jdx) in [5281712](https://github.com/jdx/mise/commit/5281712f63bb673b301be139274b5f2eab64c205) +- added podman plugin by [@carlosrtf](https://github.com/carlosrtf) in [24155e8](https://github.com/jdx/mise/commit/24155e8b9d5f342d52ccdd212f187243022efa0b) + +### 📦️ Dependency Updates + +- update rust crate built to 0.7.2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1895](https://github.com/jdx/mise/pull/1895) +- update rust crate either to 1.11.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1899](https://github.com/jdx/mise/pull/1899) + +### New Contributors + +* @carlosrtf made their first contribution + +## [2024.4.3](https://github.com/jdx/mise/compare/v2024.4.2..v2024.4.3) - 2024-04-09 + +### 🐛 Bug Fixes + +- **(docker)** repo fetch by [@jdx](https://github.com/jdx) in [bb68fc3](https://github.com/jdx/mise/commit/bb68fc33f98e5fe4518478f963d448bca61d54fe) +- **(docker)** repo fetch by [@jdx](https://github.com/jdx) in [#1878](https://github.com/jdx/mise/pull/1878) +- asdf-yarn by [@jdx](https://github.com/jdx) in [fc8de34](https://github.com/jdx/mise/commit/fc8de34e2e535ed7262c079087ff444a44dd5731) + +### 🔍 Other Changes + +- **(release-plz)** clean up PR/release description by [@jdx](https://github.com/jdx) in [14b4fc5](https://github.com/jdx/mise/commit/14b4fc5525e06cc150ae160c406ee06b58d95ce5) +- **(release-plz)** clean up PR/release description by [@jdx](https://github.com/jdx) in [769e7fe](https://github.com/jdx/mise/commit/769e7fe16e4f4df7380414f91e67345148e059de) +- **(release-plz)** disable subtree push by [@jdx](https://github.com/jdx) in [c74a12c](https://github.com/jdx/mise/commit/c74a12c3c31ba087a154d7b328374670a675f00a) +- **(sync)** added workflow by [@jdx](https://github.com/jdx) in [b773033](https://github.com/jdx/mise/commit/b7730335949235085001b23ddc382a7c44b18f12) +- **(sync)** pull and push changes by [@jdx](https://github.com/jdx) in [52bb0ae](https://github.com/jdx/mise/commit/52bb0aee4a91c66bb2966cf462c23eedfc0c5058) +- **(sync)** pull and push changes by [@jdx](https://github.com/jdx) in [28b9a52](https://github.com/jdx/mise/commit/28b9a52fce891ab28e9e4d2f7fc1207de07d0a84) +- **(sync)** pull and push changes by [@jdx](https://github.com/jdx) in [202c900](https://github.com/jdx/mise/commit/202c90051a81eff9ed12ef1483bc86cee355371c) +- **(sync)** pull and push changes by [@jdx](https://github.com/jdx) in [e3aefb1](https://github.com/jdx/mise/commit/e3aefb1eb915387ca08b484158e5f13c069912d1) +- **(sync)** pull and push changes by [@jdx](https://github.com/jdx) in [60f5b7a](https://github.com/jdx/mise/commit/60f5b7a44479385650e563d234ceb2ac0e135994) + +## [2024.4.2](https://github.com/jdx/mise/compare/v2024.4.1..v2024.4.2) - 2024-04-09 + +### 🚀 Features + +- **(completions)** switch to usage for zsh completions by [@jdx](https://github.com/jdx) in [#1875](https://github.com/jdx/mise/pull/1875) + +### 🚜 Refactor + +- **(default_shorthands)** automatically mark mise-plugins as trusted by [@jdx](https://github.com/jdx) in [538a90f](https://github.com/jdx/mise/commit/538a90f04447b306c0ea6d8009cdef3f92cd4735) + +### 🔍 Other Changes + +- **(cliff)** ignore previous registry commits by [@jdx](https://github.com/jdx) in [64f326d](https://github.com/jdx/mise/commit/64f326d903e13a104b88eb4b0986285ad2411f19) +- **(cliff)** ignore merge commits by [@jdx](https://github.com/jdx) in [d54b0a2](https://github.com/jdx/mise/commit/d54b0a2cd4d4bd02816719101cbe77905818d07a) +- **(default_shorthands)** fix count by [@jdx](https://github.com/jdx) in [a098228](https://github.com/jdx/mise/commit/a0982283273b4126c2d9b22ac2395de5cd3f73eb) +- **(homebrew)** delete unused script by [@jdx](https://github.com/jdx) in [f3b092f](https://github.com/jdx/mise/commit/f3b092fdaf2bcfc789485543770cc2374a469523) +- **(markdown-magic)** do not fail if markdown-magic fails by [@jdx](https://github.com/jdx) in [073fce7](https://github.com/jdx/mise/commit/073fce750dbe97818db6de5a7ae6482904730de2) +- **(markdownlint)** ignore registry/ files by [@jdx](https://github.com/jdx) in [dd8f47e](https://github.com/jdx/mise/commit/dd8f47e31574e103215b81ee07d19456066c4dfc) +- **(mega-linter)** ignore registry/ files by [@jdx](https://github.com/jdx) in [427574f](https://github.com/jdx/mise/commit/427574f31f976ee6868306807f54db9169b3140d) +- **(prettier)** ignore registry/ files by [@jdx](https://github.com/jdx) in [188c0e4](https://github.com/jdx/mise/commit/188c0e4480dc52eaf4ee782d887bd136f0c6dc42) +- **(python)** added debug info when no precompiled version is found by [@jdx](https://github.com/jdx) in [#1874](https://github.com/jdx/mise/pull/1874) +- **(registry)** auto-update registry subtree by [@jdx](https://github.com/jdx) in [fba690c](https://github.com/jdx/mise/commit/fba690c2185e6c66256203f42ee538e13fba6b83) +- **(release)** fixing registry autosync by [@jdx](https://github.com/jdx) in [266004b](https://github.com/jdx/mise/commit/266004b038588d791d3cefb11ab0094cdf79a929) +- **(release-plz)** push registry subtree changes by [@jdx](https://github.com/jdx) in [076c822](https://github.com/jdx/mise/commit/076c82228b3d79d7e9926c602825d9dbd101bd06) +- **(renovate)** disable lock file maintenance by [@jdx](https://github.com/jdx) in [f919db4](https://github.com/jdx/mise/commit/f919db4588f11b7bd2ba951b77ecf70c15ecbcc4) +- Add 'registry/' from commit 'c5d91ebfbf1b7a03203e8442a3f6348c41ce086d' by [@jdx](https://github.com/jdx) in [d6d46d0](https://github.com/jdx/mise/commit/d6d46d004b02b8dd2947da2314604c870f1221c8) + +## [2024.4.1](https://github.com/jdx/mise/compare/v2024.4.0..v2024.4.1) - 2024-04-08 + +### 🐛 Bug Fixes + +- **(doctor)** sort missing shims by [@jdx](https://github.com/jdx) in [f12d335](https://github.com/jdx/mise/commit/f12d3359b054c9b31a785ed9fdc41e20b317ddb4) +- **(uninstall)** fix uninstall completions by [@jdx](https://github.com/jdx) in [#1869](https://github.com/jdx/mise/pull/1869) + +### 🧪 Testing + +- **(audit)** removed workflow since dependabot is already doing this by [@jdx](https://github.com/jdx) in [9138e2e](https://github.com/jdx/mise/commit/9138e2e6ec09a36c7791c9a6b4e5f7ab138fcb63) +- **(mega-linter)** disable RUST_CLIPPY (slow) by [@jdx](https://github.com/jdx) in [8c64153](https://github.com/jdx/mise/commit/8c64153f7c5b3990d3b857b55fb0a94e7c11a6fc) + +### 📦️ Dependency Updates + +- bump h2 from 0.3.25 to 0.3.26 by [@dependabot[bot]](https://github.com/dependabot[bot]) in [#1866](https://github.com/jdx/mise/pull/1866) + +## [2024.4.0](https://github.com/jdx/mise/compare/v2024.3.11..v2024.4.0) - 2024-04-02 + +### 🐛 Bug Fixes + +- **(python)** install python when pip is disabled outside virtualenv by [@GabDug](https://github.com/GabDug) in [#1847](https://github.com/jdx/mise/pull/1847) + +### 🔍 Other Changes + +- **(release)** only save 1 build cache by [@jdx](https://github.com/jdx) in [f37f11d](https://github.com/jdx/mise/commit/f37f11dd56cb30c1df30d4a2a3df37290ce95a0b) +- **(release-plz)** rebuild release branch daily by [@jdx](https://github.com/jdx) in [3606d96](https://github.com/jdx/mise/commit/3606d9687ec205754269f7402a7f8095533627ae) +- Move logic to set current directory before loading other config by [@joshbode](https://github.com/joshbode) in [#1848](https://github.com/jdx/mise/pull/1848) + +### New Contributors + +* @GabDug made their first contribution in [#1847](https://github.com/jdx/mise/pull/1847) +* @joshbode made their first contribution in [#1848](https://github.com/jdx/mise/pull/1848) + +## [2024.3.11](https://github.com/jdx/mise/compare/v2024.3.10..v2024.3.11) - 2024-03-30 + +### 🚀 Features + +- **(task)** extend mise tasks output by [@roele](https://github.com/roele) in [#1845](https://github.com/jdx/mise/pull/1845) + +### 🐛 Bug Fixes + +- **(self-update)** respect yes setting in config by [@jdx](https://github.com/jdx) in [b4c4608](https://github.com/jdx/mise/commit/b4c4608ff2dbbde071e10acf6931204acf6d7d40) + +### 📚 Documentation + +- **(changelog)** fix commit message for releases by [@jdx](https://github.com/jdx) in [646df55](https://github.com/jdx/mise/commit/646df55f0627c80099026849dc235a8c3076a8e3) +- **(changelog)** fix commit message for releases by [@jdx](https://github.com/jdx) in [00d8728](https://github.com/jdx/mise/commit/00d87283181467e73b01b27179c096bb08203619) +- **(changelog)** fix commit message for releases by [@jdx](https://github.com/jdx) in [c5612f9](https://github.com/jdx/mise/commit/c5612f90b4e47bdf12ee74e7d33412e3c0b6184c) + +### 🔍 Other Changes + +- **(audit)** added workflow by [@jdx](https://github.com/jdx) in [9263fb4](https://github.com/jdx/mise/commit/9263fb4e1bc374145d9eff609e025559f9d4d7d1) +- **(deny)** remove multiple-versions warnings by [@jdx](https://github.com/jdx) in [efa133e](https://github.com/jdx/mise/commit/efa133e1fad5bc97c44f04494e5ce7cb9ccc3033) +- **(release-plz)** improve caching by [@jdx](https://github.com/jdx) in [97c79ee](https://github.com/jdx/mise/commit/97c79ee394c4ae3106cfd4dcfe5ed771b4330d19) +- **(release-plz)** use actions-rust-lang/setup-rust-toolchain@v1 by [@jdx](https://github.com/jdx) in [4813288](https://github.com/jdx/mise/commit/481328895a91eeae0d9a03fc1f0c18b211b491ab) +- **(test)** improve caching by [@jdx](https://github.com/jdx) in [ac919a1](https://github.com/jdx/mise/commit/ac919a1db9e8c03fc92a3077cf04edfda6bb971c) +- **(test)** only run lint-fix on main repo by [@jdx](https://github.com/jdx) in [aee7694](https://github.com/jdx/mise/commit/aee7694b47341baaba9fa5ef628f9540c6f93d72) + +## [2024.3.10](https://github.com/jdx/mise/compare/v2024.3.9..v2024.3.10) - 2024-03-30 + +### 🐛 Bug Fixes + +- use correct type for --cd by [@jdx](https://github.com/jdx) in [cf4f03e](https://github.com/jdx/mise/commit/cf4f03ed0145c5678e1ecbdb98c4426c9428d29a) + +### 🚜 Refactor + +- completions command by [@jdx](https://github.com/jdx) in [#1838](https://github.com/jdx/mise/pull/1838) + +### 📚 Documentation + +- improve CHANGELOG by [@jdx](https://github.com/jdx) in [#1839](https://github.com/jdx/mise/pull/1839) +- improve CHANGELOG by [@jdx](https://github.com/jdx) in [#1841](https://github.com/jdx/mise/pull/1841) +- remove duplicate PR labels in CHANGELOG by [@jdx](https://github.com/jdx) in [a3b27ef](https://github.com/jdx/mise/commit/a3b27efc37191f8be106345586cab08055ea476f) + +## [2024.3.9](https://github.com/jdx/mise/compare/v2024.3.8..v2024.3.9) - 2024-03-24 + +### 🐛 Bug Fixes + +- **(task)** script tasks don't pick up alias from comments by [@roele](https://github.com/roele) in [#1828](https://github.com/jdx/mise/pull/1828) +- downgrade reqwest to fix self-update by [@jdx](https://github.com/jdx) in [2f0820b](https://github.com/jdx/mise/commit/2f0820b8b0438f5224c6b2689f51f43b7f907bf5) + +### 📦️ Dependency Updates + +- update rust crate rayon to 1.10.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1827](https://github.com/jdx/mise/pull/1827) + +## [2024.3.8](https://github.com/jdx/mise/compare/v2024.3.7..v2024.3.8) - 2024-03-23 + +### 🚀 Features + +- use http2 for reqwest by [@jdx](https://github.com/jdx) in [#1825](https://github.com/jdx/mise/pull/1825) + +### 🐛 Bug Fixes + +- **(nu)** Gracefully handle missing `$env.config` by [@texastoland](https://github.com/texastoland) in [#1809](https://github.com/jdx/mise/pull/1809) +- Apple x64 version of mise doesn't work by [@roele](https://github.com/roele) in [#1821](https://github.com/jdx/mise/pull/1821) + +### 🧪 Testing + +- fix warnings by [@jdx](https://github.com/jdx) in [f0604a3](https://github.com/jdx/mise/commit/f0604a3224d5081012101d5266879c6d0af0d39d) + +### 🔍 Other Changes + +- automatically bump minor version if month/year changes by [@mise-en-dev](https://github.com/mise-en-dev) in [96ad08d](https://github.com/jdx/mise/commit/96ad08d8acb6b7a4eff0be2f49022080d10b9b71) +- updated cargo-deny config by [@jdx](https://github.com/jdx) in [#1824](https://github.com/jdx/mise/pull/1824) +- fix version set by [@jdx](https://github.com/jdx) in [2be7fe5](https://github.com/jdx/mise/commit/2be7fe51c0fb9f66c43cd6e940f4eb18ee83c822) + +### 📦️ Dependency Updates + +- update rust crate toml_edit to 0.22.9 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1814](https://github.com/jdx/mise/pull/1814) +- update rust crate toml to 0.8.12 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1813](https://github.com/jdx/mise/pull/1813) +- update rust crate indexmap to 2.2.6 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1815](https://github.com/jdx/mise/pull/1815) +- update rust crate usage-lib to 0.1.17 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1818](https://github.com/jdx/mise/pull/1818) +- update rust crate regex to 1.10.4 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1817](https://github.com/jdx/mise/pull/1817) +- update rust crate which to 6.0.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1820](https://github.com/jdx/mise/pull/1820) +- update rust crate indoc to 2.0.5 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1816](https://github.com/jdx/mise/pull/1816) +- update rust crate versions to 6.2.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1819](https://github.com/jdx/mise/pull/1819) +- update rust crate reqwest to 0.12.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1822](https://github.com/jdx/mise/pull/1822) + +## [2024.3.7](https://github.com/jdx/mise/compare/v2024.3.6..v2024.3.7) - 2024-03-21 + +### 🐛 Bug Fixes + +- **(task)** tasks not working in system config by [@roele](https://github.com/roele) in [#1803](https://github.com/jdx/mise/pull/1803) +- **(xonsh)** `shell` subcommand for xonsh by [@yggdr](https://github.com/yggdr) in [#1801](https://github.com/jdx/mise/pull/1801) +- jq Installed Using x86_64 on Apple Silicon using mise by [@roele](https://github.com/roele) in [#1804](https://github.com/jdx/mise/pull/1804) + +### 📚 Documentation + +- **(changelog)** improve styling by [@jdx](https://github.com/jdx) in [403033d](https://github.com/jdx/mise/commit/403033d269f88aa0c1e571e5613231eca84fbaac) +- **(changelog)** improve styling by [@jdx](https://github.com/jdx) in [cf4811b](https://github.com/jdx/mise/commit/cf4811b0cfa16d7c002e155539eac7a8d5c3912a) + +### 🎨 Styling + +- format default_shorthands.rs by [@jdx](https://github.com/jdx) in [a8ea813](https://github.com/jdx/mise/commit/a8ea81337ffd9cfd9201cc49d6a64ba93e10a9a7) + +### 🧪 Testing + +- install python/poetry at the same time by [@jdx](https://github.com/jdx) in [08a3304](https://github.com/jdx/mise/commit/08a33048b92a8ce3b551d0f7e39a28ac0bc29f07) + +### 🔍 Other Changes + +- **(release-plz)** use different bot email by [@jdx](https://github.com/jdx) in [59b814f](https://github.com/jdx/mise/commit/59b814fae7eedd6565286a6865b6539e2c058a36) +- **(release-plz)** sign release git tags by [@jdx](https://github.com/jdx) in [8ce5d37](https://github.com/jdx/mise/commit/8ce5d371515d287b8e5a5ccdbddeafa6e5d18952) +- **(test)** run all e2e tests on the release pr by [@jdx](https://github.com/jdx) in [f21c84b](https://github.com/jdx/mise/commit/f21c84b5683e986b93cf2f3f16c120a7168aacba) +- **(test)** run all e2e tests on the release pr by [@jdx](https://github.com/jdx) in [cf19dc5](https://github.com/jdx/mise/commit/cf19dc5eac9245a780a9135f7483e431ef686f69) +- **(test)** skip aur/aur-bin on release PR by [@jdx](https://github.com/jdx) in [9ddb424](https://github.com/jdx/mise/commit/9ddb424c133452d4cb1e4304c263ff74ca65811b) +- Refactor Nushell script by [@texastoland](https://github.com/texastoland) in [#1763](https://github.com/jdx/mise/pull/1763) +- rust 1.78 deprecation warning fixes by [@jdx](https://github.com/jdx) in [#1805](https://github.com/jdx/mise/pull/1805) +- Update a few phrases for mise install by [@erickguan](https://github.com/erickguan) in [#1712](https://github.com/jdx/mise/pull/1712) +- fix caching by [@jdx](https://github.com/jdx) in [62cb250](https://github.com/jdx/mise/commit/62cb250007c443dc25e72292b178c5f51cda413c) + +### New Contributors + +* @erickguan made their first contribution in [#1712](https://github.com/jdx/mise/pull/1712) +* @yggdr made their first contribution in [#1801](https://github.com/jdx/mise/pull/1801) + +## [2024.3.6](https://github.com/jdx/mise/compare/v2024.3.2..v2024.3.6) - 2024-03-17 + +### 🚀 Features + +- very basic dependency support by [@jdx](https://github.com/jdx) in [#1788](https://github.com/jdx/mise/pull/1788) + +### 🐛 Bug Fixes + +- update shorthand for rabbitmq by [@roele](https://github.com/roele) in [#1784](https://github.com/jdx/mise/pull/1784) +- display error message from calling usage by [@jdx](https://github.com/jdx) in [#1786](https://github.com/jdx/mise/pull/1786) +- automatically trust config files in CI by [@jdx](https://github.com/jdx) in [#1791](https://github.com/jdx/mise/pull/1791) + +### 🚜 Refactor + +- move lint tasks from just to mise by [@jdx](https://github.com/jdx) in [4f78a8c](https://github.com/jdx/mise/commit/4f78a8cb648246e3f204b426c57662076cc17d5d) + +### 📚 Documentation + +- **(changelog)** use github handles by [@jdx](https://github.com/jdx) in [b5ef2f7](https://github.com/jdx/mise/commit/b5ef2f7976e04bf11889062181fc32574eff834a) + +### 🎨 Styling + +- add mise tasks to editorconfig by [@jdx](https://github.com/jdx) in [dae8ece](https://github.com/jdx/mise/commit/dae8ece2d891100f86cecea5920bc423e0f4d053) +- run lint-fix which has changed slightly by [@jdx](https://github.com/jdx) in [6e8dd2f](https://github.com/jdx/mise/commit/6e8dd2fe24adf6d44a17a460c1054738e58f4306) +- apply editorconfig changes by [@jdx](https://github.com/jdx) in [962bed0](https://github.com/jdx/mise/commit/962bed061ab9218f679f20aa5c53e905981133e0) +- new git-cliff format by [@jdx](https://github.com/jdx) in [854a4fa](https://github.com/jdx/mise/commit/854a4fae9255968887dc0b0647c993f633666442) +- ignore CHANGELOG.md style by [@jdx](https://github.com/jdx) in [790cb91](https://github.com/jdx/mise/commit/790cb91a210f5d1d37f4c933798c1802583db753) + +### 🧪 Testing + +- **(mega-linter)** do not use js-standard linter by [@jdx](https://github.com/jdx) in [6b63346](https://github.com/jdx/mise/commit/6b63346bdd985964bc824eff03973d2d58d1ad28) +- **(mega-linter)** ignore CHANGELOG.md by [@jdx](https://github.com/jdx) in [b63b3ac](https://github.com/jdx/mise/commit/b63b3aca3c597ee95db80613b2ea8ca19f0e74c3) + +### 🔍 Other Changes + +- **(release-plz)** removed some debugging logic by [@jdx](https://github.com/jdx) in [f7d7bea](https://github.com/jdx/mise/commit/f7d7bea616c13b31318f2e7da287aa71face8e57) +- **(release-plz)** show actual version in PR body by [@jdx](https://github.com/jdx) in [e1ef708](https://github.com/jdx/mise/commit/e1ef708745e79bd019c77740820daefca5491b2e) +- **(release-plz)** tweaking logic to prevent extra PR by [@jdx](https://github.com/jdx) in [8673000](https://github.com/jdx/mise/commit/86730008cd2f60d2767296f97175805225c83951) +- **(release-plz)** make logic work for calver by [@jdx](https://github.com/jdx) in [890c919](https://github.com/jdx/mise/commit/890c919081f984f3d506c2b1d2712c8cff6f5e6b) +- **(release-plz)** make logic work for calver by [@jdx](https://github.com/jdx) in [bb5a178](https://github.com/jdx/mise/commit/bb5a178b0642416d0e3dac8a9162a9f0732cf146) +- **(release-plz)** fix git diffs by [@jdx](https://github.com/jdx) in [6c7e779](https://github.com/jdx/mise/commit/6c7e77944a24b289aaba887f64b7f3c63cb9e5ab) +- **(release-plz)** create gh release by [@jdx](https://github.com/jdx) in [f9ff369](https://github.com/jdx/mise/commit/f9ff369eb1176e31044fc463fdca08397def5a81) +- **(release-plz)** fixing gpg key by [@jdx](https://github.com/jdx) in [8286ded](https://github.com/jdx/mise/commit/8286ded8297b858e7136831e75e4c37fa49e6186) +- **(release-plz)** fixing gpg key by [@jdx](https://github.com/jdx) in [abb1dfe](https://github.com/jdx/mise/commit/abb1dfed78e49cf2bee4a137e92879ffd7f2fb03) +- **(release-plz)** do not publish a new release PR immediately by [@jdx](https://github.com/jdx) in [b3ae753](https://github.com/jdx/mise/commit/b3ae753fdde1fef17b4f13a1ecc8b23cb1da575c) +- **(release-plz)** prefix versions with "v" by [@jdx](https://github.com/jdx) in [3354b55](https://github.com/jdx/mise/commit/3354b551adab7082d5cc533e5d9d0bfe272958b4) +- **(test)** cache mise installed tools by [@jdx](https://github.com/jdx) in [0e433b9](https://github.com/jdx/mise/commit/0e433b975a5d8c28ae5c0cbd86d3b19e03146a83) +- Update .mega-linter.yml by [@jdx](https://github.com/jdx) in [831831c](https://github.com/jdx/mise/commit/831831c057d37826b9c34edec659e9836e616ad2) +- add --json flag by [@jdx](https://github.com/jdx) in [#1785](https://github.com/jdx/mise/pull/1785) +- cargo update by [@jdx](https://github.com/jdx) in [6391239](https://github.com/jdx/mise/commit/639123930eec8e057de7da790cb71d4a2b9e17a2) +- install tools before unit tests by [@jdx](https://github.com/jdx) in [f7456eb](https://github.com/jdx/mise/commit/f7456ebc539a4b27ec067bc480bc0aba1466e55b) +- added git-cliff by [@jdx](https://github.com/jdx) in [0ccdf36](https://github.com/jdx/mise/commit/0ccdf36df153ddc3ac1a2714ee9b4a2116dfc918) +- ensure `mise install` is run before lint-fix by [@jdx](https://github.com/jdx) in [e8a172f](https://github.com/jdx/mise/commit/e8a172f98ebc837619f3766777e489f3b99f36f4) +- added release-plz workflow by [@jdx](https://github.com/jdx) in [#1787](https://github.com/jdx/mise/pull/1787) +- set gpg key by [@jdx](https://github.com/jdx) in [467097f](https://github.com/jdx/mise/commit/467097f925053a27f0ede2a506e894562d191a09) +- temporarily disable self-update test by [@jdx](https://github.com/jdx) in [5cb39a4](https://github.com/jdx/mise/commit/5cb39a4259f332e5bccec082f1d7cd6127da5f55) + +### 📦️ Dependency Updates + +- update rust crate clap to 4.5.3 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1778](https://github.com/jdx/mise/pull/1778) +- update rust crate color-eyre to 0.6.3 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1779](https://github.com/jdx/mise/pull/1779) +- update rust crate thiserror to 1.0.58 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1781](https://github.com/jdx/mise/pull/1781) +- update rust crate strum to 0.26.2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1780](https://github.com/jdx/mise/pull/1780) +- update rust crate toml_edit to 0.22.7 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1783](https://github.com/jdx/mise/pull/1783) +- update rust crate toml to 0.8.11 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1782](https://github.com/jdx/mise/pull/1782) +- update rust crate usage-lib to 0.1.10 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1790](https://github.com/jdx/mise/pull/1790) +- update rust crate usage-lib to 0.1.12 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1792](https://github.com/jdx/mise/pull/1792) + +## [2024.3.2](https://github.com/jdx/mise/compare/v2024.3.1..v2024.3.2) - 2024-03-15 + +### 🚀 Features + +- **(task)** add option to show hidden tasks in dependency tree by [@roele](https://github.com/roele) in [#1756](https://github.com/jdx/mise/pull/1756) + +### 🐛 Bug Fixes + +- **(go)** go backend supports versions prefixed with 'v' by [@roele](https://github.com/roele) in [#1753](https://github.com/jdx/mise/pull/1753) +- **(npm)** mise use -g npm:yarn@latest installs wrong version by [@roele](https://github.com/roele) in [#1752](https://github.com/jdx/mise/pull/1752) +- **(task)** document task.hide by [@roele](https://github.com/roele) in [#1754](https://github.com/jdx/mise/pull/1754) +- watch env._.source files by [@nicolas-geniteau](https://github.com/nicolas-geniteau) in [#1770](https://github.com/jdx/mise/pull/1770) +- prepend virtualenv path rather than append by [@kalvinnchau](https://github.com/kalvinnchau) in [#1751](https://github.com/jdx/mise/pull/1751) + +### 🔍 Other Changes + +- bump rust version by [@jdx](https://github.com/jdx) in [0cd890c](https://github.com/jdx/mise/commit/0cd890c04a511b8b82e1e605810ae1081e44fccc) + +### 📦️ Dependency Updates + +- update rust crate chrono to 0.4.35 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1757](https://github.com/jdx/mise/pull/1757) +- update rust crate clap to 4.5.2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1758](https://github.com/jdx/mise/pull/1758) +- update softprops/action-gh-release action to v2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1761](https://github.com/jdx/mise/pull/1761) +- update rust crate simplelog to 0.12.2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1760](https://github.com/jdx/mise/pull/1760) +- update rust crate reqwest to 0.11.26 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1759](https://github.com/jdx/mise/pull/1759) + +### New Contributors + +* @kalvinnchau made their first contribution in [#1751](https://github.com/jdx/mise/pull/1751) +* @nicolas-geniteau made their first contribution in [#1770](https://github.com/jdx/mise/pull/1770) + +## [2024.3.1](https://github.com/jdx/mise/compare/v2024.2.19..v2024.3.1) - 2024-03-04 + +### 🐛 Bug Fixes + +- **(java)** sdkmanrc zulu JVMs are missing in mise by [@roele](https://github.com/roele) in [#1719](https://github.com/jdx/mise/pull/1719) + +### 🔍 Other Changes + +- added back "test:e2e" task by [@jdx](https://github.com/jdx) in [16e7da0](https://github.com/jdx/mise/commit/16e7da08fc135166e0f44e64d44fb3b3325943aa) +- Tiny grammar fix by [@MartyBeGood](https://github.com/MartyBeGood) in [#1744](https://github.com/jdx/mise/pull/1744) + +### 📦️ Dependency Updates + +- bump mio from 0.8.10 to 0.8.11 by [@dependabot[bot]](https://github.com/dependabot[bot]) in [#1747](https://github.com/jdx/mise/pull/1747) +- update rust crate insta to 1.36.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1745](https://github.com/jdx/mise/pull/1745) +- update rust crate walkdir to 2.5.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1736](https://github.com/jdx/mise/pull/1736) +- update rust crate indexmap to 2.2.5 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1730](https://github.com/jdx/mise/pull/1730) +- update rust crate log to 0.4.21 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1732](https://github.com/jdx/mise/pull/1732) +- update rust crate tempfile to 3.10.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1733](https://github.com/jdx/mise/pull/1733) +- update rust crate rayon to 1.9.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1735](https://github.com/jdx/mise/pull/1735) +- update rust crate base64 to 0.22.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1734](https://github.com/jdx/mise/pull/1734) +- update rust crate ctor to 0.2.7 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1729](https://github.com/jdx/mise/pull/1729) + +### New Contributors + +* @MartyBeGood made their first contribution in [#1744](https://github.com/jdx/mise/pull/1744) + +## [2024.2.19](https://github.com/jdx/mise/compare/v2024.2.18..v2024.2.19) - 2024-02-28 + +### 🔍 Other Changes + +- simplify tasks in .mise.toml by [@jdx](https://github.com/jdx) in [5e371e1](https://github.com/jdx/mise/commit/5e371e1d911a08e12ead28dcb14f8436ee4b5ef3) +- Fix MUSL check by [@splinter98](https://github.com/splinter98) in [#1717](https://github.com/jdx/mise/pull/1717) +- use normal mise data dir in justfile by [@jdx](https://github.com/jdx) in [#1718](https://github.com/jdx/mise/pull/1718) + +## [2024.2.18](https://github.com/jdx/mise/compare/v2024.2.17..v2024.2.18) - 2024-02-24 + +### 📚 Documentation + +- make README logo link to site by [@booniepepper](https://github.com/booniepepper) in [#1695](https://github.com/jdx/mise/pull/1695) + +### 🔍 Other Changes + +- Update mise.json - fix missing_tools type by [@fxsalazar](https://github.com/fxsalazar) in [#1699](https://github.com/jdx/mise/pull/1699) +- added env._.python.venv directive by [@jdx](https://github.com/jdx) in [#1706](https://github.com/jdx/mise/pull/1706) +- auto-install plugins by [@jdx](https://github.com/jdx) in [3b665e2](https://github.com/jdx/mise/commit/3b665e238baad818aef8f66c74733d6c4e518312) + +### 📦️ Dependency Updates + +- update rust crate assert_cmd to 2.0.14 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1700](https://github.com/jdx/mise/pull/1700) +- update rust crate serde_json to 1.0.114 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1703](https://github.com/jdx/mise/pull/1703) +- update rust crate openssl to 0.10.64 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1702](https://github.com/jdx/mise/pull/1702) +- update rust crate demand to 1.1.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1705](https://github.com/jdx/mise/pull/1705) +- update serde monorepo to 1.0.197 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1704](https://github.com/jdx/mise/pull/1704) +- update rust crate insta to 1.35.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1701](https://github.com/jdx/mise/pull/1701) + +### New Contributors + +* @fxsalazar made their first contribution in [#1699](https://github.com/jdx/mise/pull/1699) + +## [2024.2.17](https://github.com/jdx/mise/compare/v2024.2.16..v2024.2.17) - 2024-02-22 + +### 🐛 Bug Fixes + +- **(bun)** install bunx symlink by [@booniepepper](https://github.com/booniepepper) in [#1688](https://github.com/jdx/mise/pull/1688) +- **(go)** reflect on proper path for `GOROOT` by [@wheinze](https://github.com/wheinze) in [#1661](https://github.com/jdx/mise/pull/1661) +- allow go forge to install SHA versions when no tagged versions present by [@Ajpantuso](https://github.com/Ajpantuso) in [#1683](https://github.com/jdx/mise/pull/1683) + +### 🚜 Refactor + +- auto-try miseprintln macro by [@jdx](https://github.com/jdx) in [1d0fb78](https://github.com/jdx/mise/commit/1d0fb78377720fac356171ebd8d6cbf29a2f0ad6) + +### 📚 Documentation + +- add missing alt text by [@wheinze](https://github.com/wheinze) in [#1691](https://github.com/jdx/mise/pull/1691) +- improve formatting/colors by [@jdx](https://github.com/jdx) in [5c6e4dc](https://github.com/jdx/mise/commit/5c6e4dc79828b96e5cfb35865a9176670c8f6737) +- revamped output by [@jdx](https://github.com/jdx) in [#1694](https://github.com/jdx/mise/pull/1694) + +### 🧪 Testing + +- **(integration)** introduce rust based integration suite by [@Ajpantuso](https://github.com/Ajpantuso) in [#1612](https://github.com/jdx/mise/pull/1612) + +### 🔍 Other Changes + +- Update README.md by [@jdx](https://github.com/jdx) in [05869d9](https://github.com/jdx/mise/commit/05869d986f9b8543aec760f14a8539ce9ba288b3) +- cargo up by [@jdx](https://github.com/jdx) in [0d716d8](https://github.com/jdx/mise/commit/0d716d862600e0c59b8d4269e48385bf911164b1) +- downgrade openssl due to build failures by [@jdx](https://github.com/jdx) in [8c282b8](https://github.com/jdx/mise/commit/8c282b8a8786c726ed93a733aaf605529e19b172) +- Revert "cargo up" by [@jdx](https://github.com/jdx) in [6fb1fa7](https://github.com/jdx/mise/commit/6fb1fa75cdf8abf6e344e30308685238e9dd5570) +- cargo up (minus cc) by [@jdx](https://github.com/jdx) in [6142403](https://github.com/jdx/mise/commit/6142403894db91b39279e3544bef595bd17c631a) +- Retry with https if request fails by [@grant0417](https://github.com/grant0417) in [#1690](https://github.com/jdx/mise/pull/1690) + +### 📦️ Dependency Updates + +- update rust crate usage-lib to 0.1.9 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1679](https://github.com/jdx/mise/pull/1679) +- update rust crate indexmap to 2.2.3 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1677](https://github.com/jdx/mise/pull/1677) +- update rust crate toml_edit to 0.22.6 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1678](https://github.com/jdx/mise/pull/1678) +- update rust crate demand to 1.0.2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1676](https://github.com/jdx/mise/pull/1676) +- update rust crate clap to 4.5.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1675](https://github.com/jdx/mise/pull/1675) + +### New Contributors + +* @grant0417 made their first contribution in [#1690](https://github.com/jdx/mise/pull/1690) +* @wheinze made their first contribution in [#1691](https://github.com/jdx/mise/pull/1691) + +## [2024.2.16](https://github.com/jdx/mise/compare/v2024.2.15..v2024.2.16) - 2024-02-15 + +### 🔍 Other Changes + +- use dash compatible syntax by [@jdx](https://github.com/jdx) in [10dbf54](https://github.com/jdx/mise/commit/10dbf54650b9ed90eb4a9ba86fe5499db23357d8) +- cargo up by [@jdx](https://github.com/jdx) in [7a02ac3](https://github.com/jdx/mise/commit/7a02ac3cfe4de715f807a0c1f27ac63cf840cf55) + +## [2024.2.15](https://github.com/jdx/mise/compare/v2024.2.14..v2024.2.15) - 2024-02-13 + +### 🔍 Other Changes + +- fish command_not_found handler fix by [@jdx](https://github.com/jdx) in [#1665](https://github.com/jdx/mise/pull/1665) +- cargo up by [@jdx](https://github.com/jdx) in [122a9b2](https://github.com/jdx/mise/commit/122a9b25994adf081e25c15df7b22c80c5517126) +- run commit hook on main branch by [@jdx](https://github.com/jdx) in [7ced699](https://github.com/jdx/mise/commit/7ced699f638716387a3a35935c946d3df26eac49) +- Revert "run commit hook on main branch" by [@jdx](https://github.com/jdx) in [5ec8a5e](https://github.com/jdx/mise/commit/5ec8a5e343b7a6c181f92cb2d5650fe1b0bc5d50) + +### 📦️ Dependency Updates + +- update rust crate thiserror to 1.0.57 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1659](https://github.com/jdx/mise/pull/1659) + +## [2024.2.14](https://github.com/jdx/mise/compare/v2024.2.13..v2024.2.14) - 2024-02-11 + +### 🐛 Bug Fixes + +- fix completions in linux by [@jdx](https://github.com/jdx) in [2822554](https://github.com/jdx/mise/commit/2822554d1d876a80df02abdb7e4ad353416f80af) + +### 📦️ Dependency Updates + +- update rust crate chrono to 0.4.34 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1654](https://github.com/jdx/mise/pull/1654) + +## [2024.2.13](https://github.com/jdx/mise/compare/v2024.2.12..v2024.2.13) - 2024-02-11 + +### 🐛 Bug Fixes + +- fix completion generators if usage is not installed by [@jdx](https://github.com/jdx) in [e46fe04](https://github.com/jdx/mise/commit/e46fe04d1c50f893b6c2aa55222792faf16be64c) + +## [2024.2.12](https://github.com/jdx/mise/compare/v2024.2.11..v2024.2.12) - 2024-02-11 + +### 🔍 Other Changes + +- install usage via cargo-binstall by [@jdx](https://github.com/jdx) in [f3a0117](https://github.com/jdx/mise/commit/f3a0117fea9307d11f2df1540efe6761eec13b66) + +### 📦️ Dependency Updates + +- update rust crate usage-lib to 0.1.8 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1653](https://github.com/jdx/mise/pull/1653) + +## [2024.2.11](https://github.com/jdx/mise/compare/v2024.2.10..v2024.2.11) - 2024-02-10 + +### 🔍 Other Changes + +- default fish+bash to use usage for completions by [@jdx](https://github.com/jdx) in [8399b1f](https://github.com/jdx/mise/commit/8399b1fdbc7e7b507f6e2137d77c685f70b4345d) +- add usage to CI by [@jdx](https://github.com/jdx) in [0bc48ed](https://github.com/jdx/mise/commit/0bc48eddb7ca38f1e13bcbf2286d4e01041a9fc8) +- add usage to CI by [@jdx](https://github.com/jdx) in [4eba7c0](https://github.com/jdx/mise/commit/4eba7c026baa52055d5b5925bb9e5acf37f209af) + +### 📦️ Dependency Updates + +- update rust crate indicatif to 0.17.8 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1651](https://github.com/jdx/mise/pull/1651) + +## [2024.2.10](https://github.com/jdx/mise/compare/v2024.2.9..v2024.2.10) - 2024-02-10 + +### 🔍 Other Changes + +- usage by [@jdx](https://github.com/jdx) in [#1652](https://github.com/jdx/mise/pull/1652) +- cargo up by [@jdx](https://github.com/jdx) in [4292537](https://github.com/jdx/mise/commit/42925377ba5b06d9d9f5402fca3b197b60acda82) + +### 📦️ Dependency Updates + +- update rust crate clap to 4.5.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1644](https://github.com/jdx/mise/pull/1644) +- update rust crate clap_complete to 4.5.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1645](https://github.com/jdx/mise/pull/1645) +- update rust crate clap_mangen to 0.2.20 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1646](https://github.com/jdx/mise/pull/1646) +- update rust crate tempfile to 3.10.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1647](https://github.com/jdx/mise/pull/1647) +- update rust crate either to 1.10.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1649](https://github.com/jdx/mise/pull/1649) +- update rust crate toml to 0.8.10 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1648](https://github.com/jdx/mise/pull/1648) +- update rust crate toml_edit to 0.22.4 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1650](https://github.com/jdx/mise/pull/1650) + +## [2024.2.9](https://github.com/jdx/mise/compare/v2024.2.8..v2024.2.9) - 2024-02-09 + +### 🔍 Other Changes + +- bump msrv for clap compatibility by [@jdx](https://github.com/jdx) in [8a9a284](https://github.com/jdx/mise/commit/8a9a284f1520500a361c1bc2f4db09648a49acd2) + +## [2024.2.8](https://github.com/jdx/mise/compare/v2024.2.7..v2024.2.8) - 2024-02-09 + +### 🐛 Bug Fixes + +- fix support for tera templates in tool version strings by [@jdx](https://github.com/jdx) in [#1643](https://github.com/jdx/mise/pull/1643) + +### 📚 Documentation + +- docs by [@jdx](https://github.com/jdx) in [e291cc3](https://github.com/jdx/mise/commit/e291cc3802d027d9738b5060d9c68be8b20269e3) + +### 🔍 Other Changes + +- ignore non-executable tasks by [@jdx](https://github.com/jdx) in [#1642](https://github.com/jdx/mise/pull/1642) +- save space by [@jdx](https://github.com/jdx) in [638a426](https://github.com/jdx/mise/commit/638a426e636d65f83f7cd1e415c8aba2a71fe562) +- GOROOT/GOBIN/GOPATH changes by [@jdx](https://github.com/jdx) in [#1641](https://github.com/jdx/mise/pull/1641) +- save space by [@jdx](https://github.com/jdx) in [0c59c59](https://github.com/jdx/mise/commit/0c59c5980987f300ef6f3468c9a4d7cead2e1995) + +## [2024.2.7](https://github.com/jdx/mise/compare/v2024.2.6..v2024.2.7) - 2024-02-08 + +### 🐛 Bug Fixes + +- fix task loading by [@jdx](https://github.com/jdx) in [#1625](https://github.com/jdx/mise/pull/1625) + +### 🔍 Other Changes + +- support global file tasks by [@jdx](https://github.com/jdx) in [#1627](https://github.com/jdx/mise/pull/1627) +- add installed/active flags by [@jdx](https://github.com/jdx) in [#1629](https://github.com/jdx/mise/pull/1629) +- fix command not found handler by [@jdx](https://github.com/jdx) in [a30842b](https://github.com/jdx/mise/commit/a30842b5062caca6d07b68307d66ebf376ff01c8) + +## [2024.2.6](https://github.com/jdx/mise/compare/v2024.2.5..v2024.2.6) - 2024-02-07 + +### 🔍 Other Changes + +- calm io by [@jdx](https://github.com/jdx) in [#1621](https://github.com/jdx/mise/pull/1621) +- use OnceLock where possible by [@jdx](https://github.com/jdx) in [92a3e87](https://github.com/jdx/mise/commit/92a3e87b578cc2e7af0b23b5244246a38be3584b) +- automatically try https if http fails by [@jdx](https://github.com/jdx) in [#1622](https://github.com/jdx/mise/pull/1622) +- added optional pre-commit hook by [@jdx](https://github.com/jdx) in [ec03744](https://github.com/jdx/mise/commit/ec0374480d2b94e49fa8e06edbe929e6f6981951) +- reuse existing command_not_found handler by [@jdx](https://github.com/jdx) in [#1624](https://github.com/jdx/mise/pull/1624) + +## [2024.2.5](https://github.com/jdx/mise/compare/v2024.2.4..v2024.2.5) - 2024-02-06 + +### 🐛 Bug Fixes + +- fix lint issues in rust 1.77.0-beta.1 by [@jdx](https://github.com/jdx) in [cb9ab2d](https://github.com/jdx/mise/commit/cb9ab2de6c6d99cb747a3ef1b90dc2e4e84d0a0a) + +### 📚 Documentation + +- add some info by [@jdx](https://github.com/jdx) in [#1614](https://github.com/jdx/mise/pull/1614) +- cli help by [@jdx](https://github.com/jdx) in [6a004a7](https://github.com/jdx/mise/commit/6a004a723d93cc3a253321ab9b83058dea6c6c89) + +### 🔍 Other Changes + +- use serde to parse tools by [@jdx](https://github.com/jdx) in [#1599](https://github.com/jdx/mise/pull/1599) +- support "false" env vars by [@jdx](https://github.com/jdx) in [#1603](https://github.com/jdx/mise/pull/1603) +- add dotenv paths to watch files by [@jdx](https://github.com/jdx) in [#1615](https://github.com/jdx/mise/pull/1615) + +### 📦️ Dependency Updates + +- update rust crate itertools to 0.12.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1604](https://github.com/jdx/mise/pull/1604) +- update nick-fields/retry action to v3 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1610](https://github.com/jdx/mise/pull/1610) +- update rust crate toml_edit to 0.21.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1609](https://github.com/jdx/mise/pull/1609) +- update rust crate toml to 0.8.9 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1608](https://github.com/jdx/mise/pull/1608) +- update peter-evans/create-pull-request action to v6 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1611](https://github.com/jdx/mise/pull/1611) +- update rust crate serde_json to 1.0.113 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1607](https://github.com/jdx/mise/pull/1607) +- update rust crate reqwest to 0.11.24 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1605](https://github.com/jdx/mise/pull/1605) + +## [2024.2.4](https://github.com/jdx/mise/compare/v2024.2.3..v2024.2.4) - 2024-02-03 + +### 🐛 Bug Fixes + +- **(tasks)** fix parsing of alias attribute by [@Ajpantuso](https://github.com/Ajpantuso) in [#1596](https://github.com/jdx/mise/pull/1596) + +### 📦️ Dependency Updates + +- update rust crate clap_mangen to 0.2.19 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1598](https://github.com/jdx/mise/pull/1598) +- update rust crate clap_complete to 4.4.10 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1597](https://github.com/jdx/mise/pull/1597) +- update rust crate eyre to 0.6.12 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1601](https://github.com/jdx/mise/pull/1601) +- update rust crate indexmap to 2.2.2 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1602](https://github.com/jdx/mise/pull/1602) + +## [2024.2.3](https://github.com/jdx/mise/compare/v2024.2.2..v2024.2.3) - 2024-02-02 + +### 🔍 Other Changes + +- show curl progress during install.sh by [@jdx](https://github.com/jdx) in [9e786e8](https://github.com/jdx/mise/commit/9e786e842ff8a1ed25b5d65e76f68ec3ce07850c) +- install tools in order listed in config file when --jobs=1 by [@jdx](https://github.com/jdx) in [#1587](https://github.com/jdx/mise/pull/1587) +- actionlint by [@jdx](https://github.com/jdx) in [8f067cb](https://github.com/jdx/mise/commit/8f067cb79fa0f11c1f81ffe3496be9a91c28403e) +- remove unused property by [@jdx](https://github.com/jdx) in [13d7d29](https://github.com/jdx/mise/commit/13d7d29302004c770a51ff5298a261635460962f) +- property should not be public by [@jdx](https://github.com/jdx) in [fee5b72](https://github.com/jdx/mise/commit/fee5b72fd552e9f00e13fe60f04959eb629147cd) +- remove more unused config file props by [@jdx](https://github.com/jdx) in [13daec0](https://github.com/jdx/mise/commit/13daec0b4b92b51bd3ed4137cd51f665afd3f007) +- allow _.path to have : delimiters by [@jdx](https://github.com/jdx) in [be34b76](https://github.com/jdx/mise/commit/be34b768d9c09feda3c59d9a949a40609c294dcf) +- use serde to parse tasks by [@jdx](https://github.com/jdx) in [#1592](https://github.com/jdx/mise/pull/1592) +- skip running glob if no patterns by [@jdx](https://github.com/jdx) in [0eae892](https://github.com/jdx/mise/commit/0eae892c67598c788b7ca6311aaaac075279717b) +- lazy-load toml_edit by [@jdx](https://github.com/jdx) in [#1594](https://github.com/jdx/mise/pull/1594) + +## [2024.2.2](https://github.com/jdx/mise/compare/v2024.2.1..v2024.2.2) - 2024-02-02 + +### 🔍 Other Changes + +- minor UI tweak by [@jdx](https://github.com/jdx) in [fbe2578](https://github.com/jdx/mise/commit/fbe2578e8770c8913e6bb029ea08ce7b18e6db4a) +- ui tweak by [@jdx](https://github.com/jdx) in [d3748ef](https://github.com/jdx/mise/commit/d3748efb24bb7b7894c5a877e4d49aff1738c0b8) +- clear cache on mise.run by [@jdx](https://github.com/jdx) in [1d00fbd](https://github.com/jdx/mise/commit/1d00fbdb904ce83737898e4dc2f8ba5edbf2a568) +- download progress bars by [@jdx](https://github.com/jdx) in [#1586](https://github.com/jdx/mise/pull/1586) +- improve output of shorthand update script by [@jdx](https://github.com/jdx) in [0633c07](https://github.com/jdx/mise/commit/0633c0790e0858919f0ac2b2c27a3d2d7b836c8a) + +## [2024.2.1](https://github.com/jdx/mise/compare/v2024.2.0..v2024.2.1) - 2024-02-01 + +### 🐛 Bug Fixes + +- fixed ctrlc handler by [@jdx](https://github.com/jdx) in [#1584](https://github.com/jdx/mise/pull/1584) + +### 📚 Documentation + +- add "dr" alias by [@jdx](https://github.com/jdx) in [67e9e30](https://github.com/jdx/mise/commit/67e9e302c979ca16e8e1160e3a7123f08dd1ab82) + +### 🔍 Other Changes + +- use m1 macs by [@jdx](https://github.com/jdx) in [98a6d1f](https://github.com/jdx/mise/commit/98a6d1f2441a8fb839f65a5a66d7053bdffef36b) +- add env.mise.source to schame by [@sirenkovladd](https://github.com/sirenkovladd) in [#1578](https://github.com/jdx/mise/pull/1578) +- improve set/ls commands by [@jdx](https://github.com/jdx) in [#1579](https://github.com/jdx/mise/pull/1579) +- Update README.md by [@jdx](https://github.com/jdx) in [3412fa1](https://github.com/jdx/mise/commit/3412fa19e40ca66c4a1811a226b29804ed1f4d3b) +- added mise.run by [@jdx](https://github.com/jdx) in [9ab7159](https://github.com/jdx/mise/commit/9ab71597c6c3cda0ce500fe9174263ed0c940d44) +- use a bodged loop to handle go forge submodules by [@endigma](https://github.com/endigma) in [#1583](https://github.com/jdx/mise/pull/1583) +- Additional arch install by [@tlockney](https://github.com/tlockney) in [#1562](https://github.com/jdx/mise/pull/1562) + +### New Contributors + +* @tlockney made their first contribution in [#1562](https://github.com/jdx/mise/pull/1562) +* @sirenkovladd made their first contribution in [#1578](https://github.com/jdx/mise/pull/1578) + +## [2024.2.0](https://github.com/jdx/mise/compare/v2024.1.35..v2024.2.0) - 2024-02-01 + +### 🚀 Features + +- **(tasks)** make script task dirs configurable by [@Ajpantuso](https://github.com/Ajpantuso) in [#1571](https://github.com/jdx/mise/pull/1571) + +### 🐛 Bug Fixes + +- **(tasks)** prevent dependency cycles by [@Ajpantuso](https://github.com/Ajpantuso) in [#1575](https://github.com/jdx/mise/pull/1575) + +### 🚜 Refactor + +- refactor task_config by [@jdx](https://github.com/jdx) in [7568969](https://github.com/jdx/mise/commit/7568969f281a428c07144d79643b31699b068c54) + +### 📚 Documentation + +- docker by [@jdx](https://github.com/jdx) in [#1570](https://github.com/jdx/mise/pull/1570) +- fix github action by [@jdx](https://github.com/jdx) in [9adc718](https://github.com/jdx/mise/commit/9adc7186b86a539e6f3e6a358d5822834e8be8fa) +- fix github action by [@jdx](https://github.com/jdx) in [3849cdb](https://github.com/jdx/mise/commit/3849cdb8d0d4396e32fa9f555d03662efb2c41ab) +- skip cargo-msrv by [@jdx](https://github.com/jdx) in [ff3a555](https://github.com/jdx/mise/commit/ff3a5559dde35bd47ed072704bf2bc67478ce307) +- fix test runner by [@jdx](https://github.com/jdx) in [779c484](https://github.com/jdx/mise/commit/779c48491dfc223c2a7c8c80b8396ba9050ec54d) +- fix dev test by [@jdx](https://github.com/jdx) in [b92566f](https://github.com/jdx/mise/commit/b92566ffc2ccf2336fafddff3bb5dd62536b1f5f) + +### 🔍 Other Changes + +- tag version in docker by [@jdx](https://github.com/jdx) in [fda1be6](https://github.com/jdx/mise/commit/fda1be6c61a23361606ce9e87c10d92b5f619344) +- refactor to use BTreeMap instead of sorting by [@jdx](https://github.com/jdx) in [438e6a4](https://github.com/jdx/mise/commit/438e6a4dec10e17b0cffca1d921acedf7d6db324) +- skip checkout for homebrew bump by [@jdx](https://github.com/jdx) in [de5e5b6](https://github.com/jdx/mise/commit/de5e5b6b33063e577f53ceb8f8de14b5035c1c4d) +- make missing tool warning more granular by [@jdx](https://github.com/jdx) in [#1577](https://github.com/jdx/mise/pull/1577) +- default --quiet to error level by [@jdx](https://github.com/jdx) in [50c1468](https://github.com/jdx/mise/commit/50c146802aaf4f5f0046ccac620712a5338b1860) + +## [2024.1.35](https://github.com/jdx/mise/compare/v2024.1.34..v2024.1.35) - 2024-01-31 + +### 🔍 Other Changes + +- use activate_agressive setting by [@jdx](https://github.com/jdx) in [c8837fe](https://github.com/jdx/mise/commit/c8837fea7605167c9be2e964acbb29a6ba4e48aa) + +## [2024.1.34](https://github.com/jdx/mise/compare/v2024.1.33..v2024.1.34) - 2024-01-31 + +### 🐛 Bug Fixes + +- fix bash command not found override by [@jdx](https://github.com/jdx) in [#1564](https://github.com/jdx/mise/pull/1564) + +### 🔍 Other Changes + +- build on macos-latest by [@jdx](https://github.com/jdx) in [3ca3f7e](https://github.com/jdx/mise/commit/3ca3f7eb5fa72b08938262b9665fabc2db650f28) +- removed outdated conditional by [@jdx](https://github.com/jdx) in [7f900c4](https://github.com/jdx/mise/commit/7f900c4326ac50ca2773d320e7bd9b2790063b63) +- update CONTRIBUTING.md by [@jdx](https://github.com/jdx) in [56be60f](https://github.com/jdx/mise/commit/56be60f2dee9398b181f83965d3a1caa8efe7b16) +- label experimental error by [@jdx](https://github.com/jdx) in [0e38477](https://github.com/jdx/mise/commit/0e3847791d59df8eb36249ff8faf2eb13c287aa3) +- convert more things to mise tasks from just by [@jdx](https://github.com/jdx) in [#1566](https://github.com/jdx/mise/pull/1566) +- use Cargo.* as source by [@jdx](https://github.com/jdx) in [ee10dba](https://github.com/jdx/mise/commit/ee10dba7712acb7420ab807331dc5b37216db080) + +## [2024.1.33](https://github.com/jdx/mise/compare/v2024.1.32..v2024.1.33) - 2024-01-30 + +### 🔍 Other Changes + +- treat anything not rtx/mise as a shim by [@jdx](https://github.com/jdx) in [fae51a7](https://github.com/jdx/mise/commit/fae51a7ef38890fbf3f864957e0c0c6f1be0cf65) + +## [2024.1.32](https://github.com/jdx/mise/compare/v2024.1.31..v2024.1.32) - 2024-01-30 + +### 🔍 Other Changes + +- added "plugins up" alias" by [@jdx](https://github.com/jdx) in [f68bf52](https://github.com/jdx/mise/commit/f68bf520fd726544bfbc09ce8fd1035ffc0d7e20) +- fix settings env vars by [@jdx](https://github.com/jdx) in [b122c19](https://github.com/jdx/mise/commit/b122c19935297a3220c438607798fc7fe52df1c1) +- use compiled python by [@jdx](https://github.com/jdx) in [d3020cc](https://github.com/jdx/mise/commit/d3020cc26575864a38dbffd530ad1f7ebff64f64) + +## [2024.1.31](https://github.com/jdx/mise/compare/v2024.1.30..v2024.1.31) - 2024-01-30 + +### 🚀 Features + +- **(tasks)** add task timing to run command by [@Ajpantuso](https://github.com/Ajpantuso) in [#1536](https://github.com/jdx/mise/pull/1536) + +### 🐛 Bug Fixes + +- properly handle executable shims when getting diffs by [@Ajpantuso](https://github.com/Ajpantuso) in [#1545](https://github.com/jdx/mise/pull/1545) +- fix bash not_found handler by [@jdx](https://github.com/jdx) in [#1558](https://github.com/jdx/mise/pull/1558) + +### 🔍 Other Changes + +- updated indexmap by [@jdx](https://github.com/jdx) in [d7cb481](https://github.com/jdx/mise/commit/d7cb4816e9165cde5ac715126a004f924898af0f) +- hide system versions from env/bin_paths by [@jdx](https://github.com/jdx) in [#1553](https://github.com/jdx/mise/pull/1553) +- codacy badge by [@jdx](https://github.com/jdx) in [711d6d7](https://github.com/jdx/mise/commit/711d6d7ced808abd4e24b7dc5952085b9132047d) +- codacy badge by [@jdx](https://github.com/jdx) in [dc76ec4](https://github.com/jdx/mise/commit/dc76ec4288d2b25c37eb2745028f6593c56facf7) +- codacy badge by [@jdx](https://github.com/jdx) in [2e97b24](https://github.com/jdx/mise/commit/2e97b24540c3f020dbb2a650512dc97f78b3f6f1) +- codacy badge by [@jdx](https://github.com/jdx) in [711110c](https://github.com/jdx/mise/commit/711110ca510228df421a584b11e7b62e8590be08) +- only show precompiled warning if going to use precompiled by [@jdx](https://github.com/jdx) in [74fd185](https://github.com/jdx/mise/commit/74fd1852bef8244f2cb4c51b58f11116d10d0c11) +- fix linux precompiled by [@jdx](https://github.com/jdx) in [#1559](https://github.com/jdx/mise/pull/1559) +- clean up e2e tests by [@jdx](https://github.com/jdx) in [2660406](https://github.com/jdx/mise/commit/2660406a4744e789ab39a58e1732f880dcd26b4d) + +### 📦️ Dependency Updates + +- update rust crate serde_json to 1.0.112 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1542](https://github.com/jdx/mise/pull/1542) +- update serde monorepo to 1.0.196 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1543](https://github.com/jdx/mise/pull/1543) +- update rust crate strum to 0.26.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1546](https://github.com/jdx/mise/pull/1546) +- update rust crate strum to 0.26.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1547](https://github.com/jdx/mise/pull/1547) +- update rust crate indexmap to 2.2.0 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1548](https://github.com/jdx/mise/pull/1548) + +## [2024.1.30](https://github.com/jdx/mise/compare/v2024.1.29..v2024.1.30) - 2024-01-27 + +### 🐛 Bug Fixes + +- fix mangen by [@jdx](https://github.com/jdx) in [da2b1c9](https://github.com/jdx/mise/commit/da2b1c9d0bbbeba3e566020c0d48e16f579d8eeb) + +### 🔍 Other Changes + +- default to precompiled python by [@jdx](https://github.com/jdx) in [0fac002](https://github.com/jdx/mise/commit/0fac002dbeba699ae8949c3d94e89d08128dae57) + +## [2024.1.29](https://github.com/jdx/mise/compare/v2024.1.28..v2024.1.29) - 2024-01-27 + +### 🔍 Other Changes + +- use nodejs/golang for writing to .tool-versions by [@jdx](https://github.com/jdx) in [14fb790](https://github.com/jdx/mise/commit/14fb790ac9953430794719b38b83c8c2242f1759) +- read system and local config settings by [@jdx](https://github.com/jdx) in [#1541](https://github.com/jdx/mise/pull/1541) + +## [2024.1.28](https://github.com/jdx/mise/compare/v2024.1.27..v2024.1.28) - 2024-01-27 + +### 🔍 Other Changes + +- added `env._.source` feature by [@jdx](https://github.com/jdx) in [#1538](https://github.com/jdx/mise/pull/1538) +- force update alpine by [@jdx](https://github.com/jdx) in [633c3ff](https://github.com/jdx/mise/commit/633c3ffe139c1201f20ce0e7145cb361d547a39a) + +### 📦️ Dependency Updates + +- update rust crate chrono to 0.4.33 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1539](https://github.com/jdx/mise/pull/1539) +- update rust crate clap_complete to 4.4.9 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1540](https://github.com/jdx/mise/pull/1540) + +## [2024.1.27](https://github.com/jdx/mise/compare/v2024.1.26..v2024.1.27) - 2024-01-26 + +### 🚀 Features + +- **(run)** match tasks to run with glob patterns by [@Ajpantuso](https://github.com/Ajpantuso) in [#1528](https://github.com/jdx/mise/pull/1528) +- **(tasks)** unify glob strategy for tasks and dependencies by [@Ajpantuso](https://github.com/Ajpantuso) in [#1533](https://github.com/jdx/mise/pull/1533) + +### 🐛 Bug Fixes + +- fix global config with asdf_compat by [@jdx](https://github.com/jdx) in [#1534](https://github.com/jdx/mise/pull/1534) + +### 📚 Documentation + +- display missing/extra shims by [@jdx](https://github.com/jdx) in [#1529](https://github.com/jdx/mise/pull/1529) + +### 🔍 Other Changes + +- pass signals to tasks by [@jdx](https://github.com/jdx) in [#1527](https://github.com/jdx/mise/pull/1527) +- added settings_message settings by [@jdx](https://github.com/jdx) in [#1535](https://github.com/jdx/mise/pull/1535) +- resolve env vars in order by [@jdx](https://github.com/jdx) in [#1519](https://github.com/jdx/mise/pull/1519) +- parse alias + plugins with serde by [@jdx](https://github.com/jdx) in [#1537](https://github.com/jdx/mise/pull/1537) + +## [2024.1.26](https://github.com/jdx/mise/compare/v2024.1.25..v2024.1.26) - 2024-01-25 + +### 🚀 Features + +- **(doctor)** identify missing/extra shims by [@Ajpantuso](https://github.com/Ajpantuso) in [#1524](https://github.com/jdx/mise/pull/1524) +- **(tasks)** infer bash task topics from folder structure by [@Ajpantuso](https://github.com/Ajpantuso) in [#1520](https://github.com/jdx/mise/pull/1520) + +### 🚜 Refactor + +- env parsing by [@jdx](https://github.com/jdx) in [#1515](https://github.com/jdx/mise/pull/1515) + +### 🔍 Other Changes + +- use target_feature to use correct precompiled runtimes by [@jdx](https://github.com/jdx) in [#1512](https://github.com/jdx/mise/pull/1512) +- do not follow symbolic links for trusted paths by [@jdx](https://github.com/jdx) in [#1513](https://github.com/jdx/mise/pull/1513) +- refactor min_version logic by [@jdx](https://github.com/jdx) in [#1516](https://github.com/jdx/mise/pull/1516) +- sort env vars coming back from exec-env by [@jdx](https://github.com/jdx) in [#1518](https://github.com/jdx/mise/pull/1518) +- order flags in docs by [@jdx](https://github.com/jdx) in [1018b56](https://github.com/jdx/mise/commit/1018b5622c3bda4d0d9fa36b4fa9c1143aabd676) +- demand 1.0.0 by [@jdx](https://github.com/jdx) in [c97bb79](https://github.com/jdx/mise/commit/c97bb7993aa9432ad38879cdc0ab17f251715feb) + +## [2024.1.25](https://github.com/jdx/mise/compare/v2024.1.24..v2024.1.25) - 2024-01-24 + +### 🚀 Features + +- **(config)** support arrays of env tables by [@Ajpantuso](https://github.com/Ajpantuso) in [#1503](https://github.com/jdx/mise/pull/1503) +- **(template)** add join_path filter by [@Ajpantuso](https://github.com/Ajpantuso) in [#1508](https://github.com/jdx/mise/pull/1508) +- add other arm targets for cargo-binstall by [@yossydev](https://github.com/yossydev) in [#1510](https://github.com/jdx/mise/pull/1510) + +### 🐛 Bug Fixes + +- **(tasks)** prevent implicit globbing of sources/outputs by [@Ajpantuso](https://github.com/Ajpantuso) in [#1509](https://github.com/jdx/mise/pull/1509) +- fix release script by [@jdx](https://github.com/jdx) in [59498ea](https://github.com/jdx/mise/commit/59498ea5a312507535d139957bac90fad2d96ebf) + +### 🔍 Other Changes + +- updated clap_complete by [@jdx](https://github.com/jdx) in [4034674](https://github.com/jdx/mise/commit/4034674436f786691e767c6ac09921b06e968a86) +- allow cargo-binstall from mise itself by [@jdx](https://github.com/jdx) in [#1507](https://github.com/jdx/mise/pull/1507) +- Delete lefthook.yml by [@jdx](https://github.com/jdx) in [a756db4](https://github.com/jdx/mise/commit/a756db4a34afee4d6ce0fcfea4bc016025d1d188) +- turn back on `cargo update` on release by [@jdx](https://github.com/jdx) in [51f269a](https://github.com/jdx/mise/commit/51f269a8d07cf1f34f0d237b17b493986aaa864d) + +### 📦️ Dependency Updates + +- update rust crate regex to 1.10.3 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1496](https://github.com/jdx/mise/pull/1496) + +### New Contributors + +* @yossydev made their first contribution in [#1510](https://github.com/jdx/mise/pull/1510) + +## [2024.1.24](https://github.com/jdx/mise/compare/v2024.1.23..v2024.1.24) - 2024-01-20 + +### 🐛 Bug Fixes + +- fix cwd error by [@jdx](https://github.com/jdx) in [1c0bc12](https://github.com/jdx/mise/commit/1c0bc1236fce943ed9b012e95e3cc047cdc38ab0) + +### 🔍 Other Changes + +- bump demand by [@jdx](https://github.com/jdx) in [5231179](https://github.com/jdx/mise/commit/523117975bbb9c3211f0f438f55d1d7dc392f8b2) +- do not fail if version parsing fails by [@jdx](https://github.com/jdx) in [8d39995](https://github.com/jdx/mise/commit/8d39995e615527ba7187b3d25369a506bcb21e0c) +- added --shims by [@jdx](https://github.com/jdx) in [#1483](https://github.com/jdx/mise/pull/1483) +- use `sort -r` instead of `tac` by [@jdx](https://github.com/jdx) in [#1486](https://github.com/jdx/mise/pull/1486) +- Update README.md by [@jdx](https://github.com/jdx) in [f3291d1](https://github.com/jdx/mise/commit/f3291d15f94c0a0cc602c01d5b7b6ef7c3cb60bf) +- fix conflicts by [@jdx](https://github.com/jdx) in [729de0c](https://github.com/jdx/mise/commit/729de0cb6c27646e30ee7be99d2f478f3431258c) + +### 📦️ Dependency Updates + +- update actions/cache action to v4 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1488](https://github.com/jdx/mise/pull/1488) +- update rust crate which to v6 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1489](https://github.com/jdx/mise/pull/1489) +- update rust crate which to v6 by [@jdx](https://github.com/jdx) in [#1490](https://github.com/jdx/mise/pull/1490) + +## [2024.1.23](https://github.com/jdx/mise/compare/v2024.1.22..v2024.1.23) - 2024-01-18 + +### 🐛 Bug Fixes + +- fix config_root path by [@jdx](https://github.com/jdx) in [#1477](https://github.com/jdx/mise/pull/1477) + +### 🔍 Other Changes + +- use mise to get development dependencies by [@jdx](https://github.com/jdx) in [#1478](https://github.com/jdx/mise/pull/1478) +- improve post-plugin-update script by [@jdx](https://github.com/jdx) in [#1479](https://github.com/jdx/mise/pull/1479) +- only show select if no task specified by [@jdx](https://github.com/jdx) in [#1481](https://github.com/jdx/mise/pull/1481) +- show cursor on ctrl-c by [@jdx](https://github.com/jdx) in [ebc5fe7](https://github.com/jdx/mise/commit/ebc5fe78bc97ecf99251438e6f305908bb134833) +- fix project_root when using .config/mise.toml or .mise/config.toml by [@jdx](https://github.com/jdx) in [#1482](https://github.com/jdx/mise/pull/1482) + +## [2024.1.22](https://github.com/jdx/mise/compare/v2024.1.21..v2024.1.22) - 2024-01-17 + +### 🐛 Bug Fixes + +- no panic on missing current dir by [@tamasfe](https://github.com/tamasfe) in [#1462](https://github.com/jdx/mise/pull/1462) +- fix not_found handler when command start with "--" by [@jdx](https://github.com/jdx) in [#1464](https://github.com/jdx/mise/pull/1464) +- always load global configs by [@tamasfe](https://github.com/tamasfe) in [#1466](https://github.com/jdx/mise/pull/1466) + +### 🔍 Other Changes + +- remove dirs_next in favor of simpler home crate by [@jdx](https://github.com/jdx) in [#1471](https://github.com/jdx/mise/pull/1471) +- rename internal MISE_BIN env var to __MISE_BIN by [@jdx](https://github.com/jdx) in [#1472](https://github.com/jdx/mise/pull/1472) +- allow using templates in task files by [@jdx](https://github.com/jdx) in [#1473](https://github.com/jdx/mise/pull/1473) +- support array of commands directly by [@jdx](https://github.com/jdx) in [#1474](https://github.com/jdx/mise/pull/1474) +- updated dependencies by [@jdx](https://github.com/jdx) in [#1475](https://github.com/jdx/mise/pull/1475) +- add support for installing directly with go modules by [@endigma](https://github.com/endigma) in [#1470](https://github.com/jdx/mise/pull/1470) +- ensure forge type matches by [@jdx](https://github.com/jdx) in [#1476](https://github.com/jdx/mise/pull/1476) + +### New Contributors + +* @tamasfe made their first contribution in [#1466](https://github.com/jdx/mise/pull/1466) + +## [2024.1.21](https://github.com/jdx/mise/compare/v2024.1.20..v2024.1.21) - 2024-01-15 + +### 🐛 Bug Fixes + +- bail out of task suggestion if there are no tasks by [@roele](https://github.com/roele) in [#1460](https://github.com/jdx/mise/pull/1460) +- fixed urls by [@jdx](https://github.com/jdx) in [22265e5](https://github.com/jdx/mise/commit/22265e5ea6d3b9498eb11eef14a77c3ba46cae03) +- fixed urls by [@jdx](https://github.com/jdx) in [8c24e48](https://github.com/jdx/mise/commit/8c24e4873c6fd4f5b94f959c17795ff9f910da0f) +- fixed deprecated plugins migrate by [@jdx](https://github.com/jdx) in [94bfc46](https://github.com/jdx/mise/commit/94bfc46bccb99144a542d5b678b33537a36bea6c) + +### 🔍 Other Changes + +- Update README.md by [@jdx](https://github.com/jdx) in [74c5210](https://github.com/jdx/mise/commit/74c5210b9f35bd05ac53a417ac5e152dda256a9e) + +## [2024.1.20](https://github.com/jdx/mise/compare/v2024.1.19..v2024.1.20) - 2024-01-14 + +### 🚀 Features + +- add command to print task dependency tree by [@roele](https://github.com/roele) in [#1440](https://github.com/jdx/mise/pull/1440) +- add completions for task deps command by [@roele](https://github.com/roele) in [#1456](https://github.com/jdx/mise/pull/1456) +- add interactive selection for tasks if task was not found by [@roele](https://github.com/roele) in [#1459](https://github.com/jdx/mise/pull/1459) + +### 🔍 Other Changes + +- enable stdin under interleaved by [@jdx](https://github.com/jdx) in [b6dfb31](https://github.com/jdx/mise/commit/b6dfb311e412e119e137186d6143644d018a6cfc) +- re-enable standalone test by [@jdx](https://github.com/jdx) in [7e4e79b](https://github.com/jdx/mise/commit/7e4e79bcdcc541027bc3ea2fccc11fb0f0c07a5d) + +## [2024.1.19](https://github.com/jdx/mise/compare/v2024.1.18..v2024.1.19) - 2024-01-13 + +### 🐛 Bug Fixes + +- fix loading npm from mise by [@jdx](https://github.com/jdx) in [#1453](https://github.com/jdx/mise/pull/1453) + +### 🚜 Refactor + +- remove PluginName type alias by [@jdx](https://github.com/jdx) in [dedb762](https://github.com/jdx/mise/commit/dedb7624ad4708ce0434a963737a17754075d3a0) +- rename Plugin trait to Forge by [@jdx](https://github.com/jdx) in [ec4efea](https://github.com/jdx/mise/commit/ec4efea054626f9451bb54831abdd95ff98c64d1) +- clean up arg imports by [@jdx](https://github.com/jdx) in [5091fc6](https://github.com/jdx/mise/commit/5091fc6b04fd1e4795bbd636772c30432b825ef3) +- clean up arg imports by [@jdx](https://github.com/jdx) in [#1451](https://github.com/jdx/mise/pull/1451) + +### 📚 Documentation + +- document npm/cargo by [@jdx](https://github.com/jdx) in [d1e6e4b](https://github.com/jdx/mise/commit/d1e6e4b951637762d3562a89996a2bb3422c3341) + +### 🔍 Other Changes + +- Update nushell.rs - Add explicit spread by [@bnheise](https://github.com/bnheise) in [#1441](https://github.com/jdx/mise/pull/1441) +- allow using "env._.file|env._.path" instead of "env.mise.file|env.mise.path" by [@jdx](https://github.com/jdx) in [cf93693](https://github.com/jdx/mise/commit/cf936931201d6597ad556bd17556d47dc3d125c6) +- added "forge" infra by [@jdx](https://github.com/jdx) in [#1450](https://github.com/jdx/mise/pull/1450) +- added support for installing directly from npm by [@jdx](https://github.com/jdx) in [#1452](https://github.com/jdx/mise/pull/1452) +- testing by [@jdx](https://github.com/jdx) in [2ee66cb](https://github.com/jdx/mise/commit/2ee66cb91837fde144bf7acbb1028372c1cd7d9a) +- skip slow cargo test if TEST_ALL is not set by [@jdx](https://github.com/jdx) in [#1455](https://github.com/jdx/mise/pull/1455) + +### New Contributors + +* @bnheise made their first contribution in [#1441](https://github.com/jdx/mise/pull/1441) + +## [2024.1.18](https://github.com/jdx/mise/compare/v2024.1.17..v2024.1.18) - 2024-01-12 + +### 🔍 Other Changes + +- Revert "miette " by [@jdx](https://github.com/jdx) in [#1446](https://github.com/jdx/mise/pull/1446) +- fix mise-docs publishing by [@jdx](https://github.com/jdx) in [1dcac6d](https://github.com/jdx/mise/commit/1dcac6d4e05c80b56d1371f434776057d3ca9dc7) +- temporarily disable standalone test by [@jdx](https://github.com/jdx) in [d4f54ad](https://github.com/jdx/mise/commit/d4f54adbbf840599aeb4229c9330262569b563b5) + +## [2024.1.17](https://github.com/jdx/mise/compare/v2024.1.16..v2024.1.17) - 2024-01-12 + +### 🚜 Refactor + +- refactor env_var arg by [@jdx](https://github.com/jdx) in [#1443](https://github.com/jdx/mise/pull/1443) +- refactor ToolArg by [@jdx](https://github.com/jdx) in [5b66532](https://github.com/jdx/mise/commit/5b665325e4474f3247242a2d81c860ac17b8af5f) + +### 🔍 Other Changes + +- Fix missing ASDF_PLUGIN_PATH environment variable by [@deriamis](https://github.com/deriamis) in [#1437](https://github.com/jdx/mise/pull/1437) +- remove warning about moving to settings.toml by [@jdx](https://github.com/jdx) in [750141e](https://github.com/jdx/mise/commit/750141eff2721e2fbe4ab116952d04b67d2ee187) +- renovate config by [@jdx](https://github.com/jdx) in [abebe93](https://github.com/jdx/mise/commit/abebe93a3e9d79846cc566b2664451817b1ac47b) +- read from config.toml by [@jdx](https://github.com/jdx) in [#1439](https://github.com/jdx/mise/pull/1439) +- use less aggressive PATH modifications by default by [@jdx](https://github.com/jdx) in [07e1921](https://github.com/jdx/mise/commit/07e19212053bdaf4ea2ca3968e3f3559d6f49668) +- move release from justfile by [@jdx](https://github.com/jdx) in [89c9271](https://github.com/jdx/mise/commit/89c927198cfa66f332929acb9e692296dda13e2e) +- bump local version of shfmt by [@jdx](https://github.com/jdx) in [d4be898](https://github.com/jdx/mise/commit/d4be89844aa462e199d5c7278661650c22d126da) + +### New Contributors + +* @deriamis made their first contribution in [#1437](https://github.com/jdx/mise/pull/1437) + +## [2024.1.16](https://github.com/jdx/mise/compare/v2024.1.15..v2024.1.16) - 2024-01-11 + +### 🐛 Bug Fixes + +- fix test suite on alpine by [@jdx](https://github.com/jdx) in [#1433](https://github.com/jdx/mise/pull/1433) + +### 🔍 Other Changes + +- do not panic if precompiled arch/os is not supported by [@jdx](https://github.com/jdx) in [#1434](https://github.com/jdx/mise/pull/1434) +- improvements by [@jdx](https://github.com/jdx) in [#1435](https://github.com/jdx/mise/pull/1435) + +## [2024.1.15](https://github.com/jdx/mise/compare/v2024.1.14..v2024.1.15) - 2024-01-10 + +### 🐛 Bug Fixes + +- **(python)** fixes #1419 by [@gasuketsu](https://github.com/gasuketsu) in [#1420](https://github.com/jdx/mise/pull/1420) + +### 🔍 Other Changes + +- Update README.md by [@jdx](https://github.com/jdx) in [e3ff351](https://github.com/jdx/mise/commit/e3ff351bce362ec5d8bddd9fb9bb13827fce083d) +- rename rtx-vm -> mise-en-dev by [@jdx](https://github.com/jdx) in [03061f9](https://github.com/jdx/mise/commit/03061f973543c54b5076b26b8611f3ec378e6a61) +- fix some precompiled issues by [@jdx](https://github.com/jdx) in [#1431](https://github.com/jdx/mise/pull/1431) + +## [2024.1.14](https://github.com/jdx/mise/compare/v2024.1.13..v2024.1.14) - 2024-01-09 + +### 🔍 Other Changes + +- Correct PATH for python venvs by [@alikefia](https://github.com/alikefia) in [#1395](https://github.com/jdx/mise/pull/1395) +- downgrade rpm dockerfile by [@jdx](https://github.com/jdx) in [5a0cbe7](https://github.com/jdx/mise/commit/5a0cbe7f250a5d7586c45264e0d4bb1914325748) +- loosen regex for runtime symlink generation by [@jdx](https://github.com/jdx) in [#1392](https://github.com/jdx/mise/pull/1392) + +### New Contributors + +* @alikefia made their first contribution in [#1395](https://github.com/jdx/mise/pull/1395) + +## [2024.1.13](https://github.com/jdx/mise/compare/v2024.1.12..v2024.1.13) - 2024-01-08 + +### 🔍 Other Changes + +- add path separator by [@defhacks](https://github.com/defhacks) in [#1398](https://github.com/jdx/mise/pull/1398) +- prevent adding relative/empty paths during activation by [@defhacks](https://github.com/defhacks) in [#1400](https://github.com/jdx/mise/pull/1400) +- handle 404s by [@jdx](https://github.com/jdx) in [#1408](https://github.com/jdx/mise/pull/1408) +- allow expanding "~" for trusted_config_paths by [@jdx](https://github.com/jdx) in [#1409](https://github.com/jdx/mise/pull/1409) +- disallow [settings] header in settings.toml by [@jdx](https://github.com/jdx) in [#1410](https://github.com/jdx/mise/pull/1410) +- use ~/.tool-versions globally by [@jdx](https://github.com/jdx) in [#1414](https://github.com/jdx/mise/pull/1414) + +### New Contributors + +* @defhacks made their first contribution in [#1400](https://github.com/jdx/mise/pull/1400) + +## [2024.1.12](https://github.com/jdx/mise/compare/v2024.1.11..v2024.1.12) - 2024-01-07 + +### 🔍 Other Changes + +- added missing settings from `mise settings set` by [@jdx](https://github.com/jdx) in [8a7880b](https://github.com/jdx/mise/commit/8a7880bc912bbcef874d7428d6b0f7d772715fc5) +- fixed python_compile and all_compile settings by [@jdx](https://github.com/jdx) in [5ddbf68](https://github.com/jdx/mise/commit/5ddbf68af1f32abbf8cff406a6d17d0898d4c81f) + +## [2024.1.11](https://github.com/jdx/mise/compare/v2024.1.10..v2024.1.11) - 2024-01-07 + +### 🔍 Other Changes + +- check min_version field by [@jdx](https://github.com/jdx) in [8de42a0](https://github.com/jdx/mise/commit/8de42a0be94098c722ba8b9eef8eca505f5838c2) +- add to doctor and fix warning by [@jdx](https://github.com/jdx) in [fcf9173](https://github.com/jdx/mise/commit/fcf91739bc0241114242afb9e8de6bdf819cd7ba) +- publish schema to r2 by [@jdx](https://github.com/jdx) in [3576984](https://github.com/jdx/mise/commit/3576984b0ce89910c7bb4ae63a41b8c82381cc44) + +## [2024.1.10](https://github.com/jdx/mise/compare/v2024.1.9..v2024.1.10) - 2024-01-07 + +### 🐛 Bug Fixes + +- nix flake build errors by [@nokazn](https://github.com/nokazn) in [#1390](https://github.com/jdx/mise/pull/1390) + +### 🔍 Other Changes + +- do not display error if settings is missing by [@jdx](https://github.com/jdx) in [21cb004](https://github.com/jdx/mise/commit/21cb004402a7bfad2c50dbd56e584555715f1597) + +### New Contributors + +* @nokazn made their first contribution in [#1390](https://github.com/jdx/mise/pull/1390) + +## [2024.1.9](https://github.com/jdx/mise/compare/v2024.1.8..v2024.1.9) - 2024-01-07 + +### 🔍 Other Changes + +- sort settings by [@jdx](https://github.com/jdx) in [a8c15bb](https://github.com/jdx/mise/commit/a8c15bb6e84a6e49e4d7660ac4923d8eeaac76cf) +- clean up community-developed plugin warning by [@jdx](https://github.com/jdx) in [92b5188](https://github.com/jdx/mise/commit/92b51884a522dc7991824594e0228f014c7a1413) +- use ~/.config/mise/settings.toml by [@jdx](https://github.com/jdx) in [#1386](https://github.com/jdx/mise/pull/1386) +- add support for precompiled binaries by [@jdx](https://github.com/jdx) in [#1388](https://github.com/jdx/mise/pull/1388) + +## [2024.1.8](https://github.com/jdx/mise/compare/v2024.1.7..v2024.1.8) - 2024-01-06 + +### 🐛 Bug Fixes + +- **(java)** enable macOS integration hint for Zulu distribution by [@roele](https://github.com/roele) in [#1381](https://github.com/jdx/mise/pull/1381) +- fixed config load order by [@jdx](https://github.com/jdx) in [#1377](https://github.com/jdx/mise/pull/1377) + +### 🔍 Other Changes + +- Add `description` to task object in JSON schema by [@fiadliel](https://github.com/fiadliel) in [#1373](https://github.com/jdx/mise/pull/1373) +- added ideavim config by [@jdx](https://github.com/jdx) in [15cfa1e](https://github.com/jdx/mise/commit/15cfa1eebd18ee77b931b5e4343a4ef1d7c2473f) +- paranoid by [@jdx](https://github.com/jdx) in [#1382](https://github.com/jdx/mise/pull/1382) +- miette by [@jdx](https://github.com/jdx) in [#1368](https://github.com/jdx/mise/pull/1368) + +## [2024.1.7](https://github.com/jdx/mise/compare/v2024.1.6..v2024.1.7) - 2024-01-05 + +### 🐛 Bug Fixes + +- fixed migration script by [@jdx](https://github.com/jdx) in [54097ee](https://github.com/jdx/mise/commit/54097eed2050681f6ed74084809a438a70000cab) +- fixed not-found handler by [@jdx](https://github.com/jdx) in [69f354d](https://github.com/jdx/mise/commit/69f354df0e463edcdcbd12364a88013e5f5029f9) + +### 🔍 Other Changes + +- show better error when attemping to install core plugin by [@jdx](https://github.com/jdx) in [#1366](https://github.com/jdx/mise/pull/1366) +- read rtx.plugin.toml if it exists by [@jdx](https://github.com/jdx) in [db19252](https://github.com/jdx/mise/commit/db19252f3c5f23426f2d8c5a899939a575453779) + +## [2024.1.6](https://github.com/jdx/mise/compare/v2024.1.5..v2024.1.6) - 2024-01-04 + +### 🧪 Testing + +- fixed elixir test case by [@jdx](https://github.com/jdx) in [9b596c6](https://github.com/jdx/mise/commit/9b596c6dadcf0f54b3637d10e1885281e1a1b534) + +### 🔍 Other Changes + +- set CLICOLOR_FORCE=1 and FORCE_COLOR=1 by [@jdx](https://github.com/jdx) in [#1364](https://github.com/jdx/mise/pull/1364) +- set --interleaved if graph is linear by [@jdx](https://github.com/jdx) in [#1365](https://github.com/jdx/mise/pull/1365) + +## [2024.1.5](https://github.com/jdx/mise/compare/v2024.1.4..v2024.1.5) - 2024-01-04 + +### 🐛 Bug Fixes + +- fixed man page by [@jdx](https://github.com/jdx) in [581b6e8](https://github.com/jdx/mise/commit/581b6e8aa56476d8d184c2cae2bd7657c8690143) +- remove comma from conflicts by [@pdecat](https://github.com/pdecat) in [#1353](https://github.com/jdx/mise/pull/1353) + +### 🔍 Other Changes + +- skip ruby installs by [@jdx](https://github.com/jdx) in [c23e467](https://github.com/jdx/mise/commit/c23e467717105e34ac805638dfeb5fcac3f991a2) +- Update README.md to link to rtx page by [@silasb](https://github.com/silasb) in [#1352](https://github.com/jdx/mise/pull/1352) +- use "[" instead of "test" by [@jdx](https://github.com/jdx) in [#1355](https://github.com/jdx/mise/pull/1355) +- prevent loading multiple times by [@jdx](https://github.com/jdx) in [#1358](https://github.com/jdx/mise/pull/1358) +- use `mise.file`/`mise.path` config by [@jdx](https://github.com/jdx) in [#1361](https://github.com/jdx/mise/pull/1361) + +### New Contributors + +* @silasb made their first contribution in [#1352](https://github.com/jdx/mise/pull/1352) +* @pdecat made their first contribution in [#1353](https://github.com/jdx/mise/pull/1353) + +## [2024.1.4](https://github.com/jdx/mise/compare/v2024.1.3..v2024.1.4) - 2024-01-04 + +### 🐛 Bug Fixes + +- **(java)** use tar.gz archives to enable symlink support by [@roele](https://github.com/roele) in [#1343](https://github.com/jdx/mise/pull/1343) + +### 🔍 Other Changes + +- rtx-plugins -> mise-plugins by [@jdx](https://github.com/jdx) in [04f55cd](https://github.com/jdx/mise/commit/04f55cd677a3041232887c2f3731d17f775e3627) +- rtx -> mise by [@jdx](https://github.com/jdx) in [ed794d1](https://github.com/jdx/mise/commit/ed794d15cf035a993e0c286e84dac0335ffe8967) +- add "replaces" field by [@jdx](https://github.com/jdx) in [#1345](https://github.com/jdx/mise/pull/1345) +- Add additional conflicts by [@inverse](https://github.com/inverse) in [#1346](https://github.com/jdx/mise/pull/1346) +- docs by [@jdx](https://github.com/jdx) in [eb73edf](https://github.com/jdx/mise/commit/eb73edfab75d8a2b5bd58be71b2ccbd172b92413) +- demo by [@jdx](https://github.com/jdx) in [#1348](https://github.com/jdx/mise/pull/1348) +- fix ssh urls by [@jdx](https://github.com/jdx) in [#1349](https://github.com/jdx/mise/pull/1349) + +### New Contributors + +* @inverse made their first contribution in [#1346](https://github.com/jdx/mise/pull/1346) + +## [2024.1.3](https://github.com/jdx/mise/compare/v2024.1.2..v2024.1.3) - 2024-01-03 + +### 🔍 Other Changes + +- use mise docker containers by [@jdx](https://github.com/jdx) in [d5d2d39](https://github.com/jdx/mise/commit/d5d2d39aa1a44a6421dff150da42083c4247cff9) +- skip committing docs if no changes by [@jdx](https://github.com/jdx) in [7f6545c](https://github.com/jdx/mise/commit/7f6545c2630a1f54b864903851c24e68b3da3d2f) +- use ~/.local/bin/mise instead of ~/.local/share/mise/bin/mise by [@jdx](https://github.com/jdx) in [cd2045d](https://github.com/jdx/mise/commit/cd2045d793c76b9dcf7d26c567cf163a6138f408) + +## [2024.1.2](https://github.com/jdx/mise/compare/v2024.1.1..v2024.1.2) - 2024-01-03 + +### 🔍 Other Changes + +- fix venv python path by [@jdx](https://github.com/jdx) in [e2d50a2](https://github.com/jdx/mise/commit/e2d50a2f25c0c64c207f82e957e691671d52ddbd) + +## [2024.1.1](https://github.com/jdx/mise/compare/v2024.1.0..v2024.1.1) - 2024-01-03 + +### 🐛 Bug Fixes + +- fixed email addresses by [@jdx](https://github.com/jdx) in [b5e9d3c](https://github.com/jdx/mise/commit/b5e9d3cc3a2500c932593d7931647fbc3d972708) +- fixed crate badge by [@jdx](https://github.com/jdx) in [c4bb224](https://github.com/jdx/mise/commit/c4bb224acb197e9f67eda56a4be3c7f3c5bdcee6) + +### 📚 Documentation + +- tweak cli reference by [@jdx](https://github.com/jdx) in [ba5f610](https://github.com/jdx/mise/commit/ba5f6108b1b91952295e4871f63c559ff01c7c64) +- fixed reading settings from config by [@jdx](https://github.com/jdx) in [a30a5f1](https://github.com/jdx/mise/commit/a30a5f104da41794aa8a2813919f046945ed9ae6) + +### 🔍 Other Changes + +- rtx -> mise by [@jdx](https://github.com/jdx) in [9b7975e](https://github.com/jdx/mise/commit/9b7975e5cd43121d22436893acdc7dbfe36ee960) +- readme by [@jdx](https://github.com/jdx) in [7d3a2ca](https://github.com/jdx/mise/commit/7d3a2ca707a7779041df559bba23bd552ef01775) +- Update README.md by [@jdx](https://github.com/jdx) in [884147b](https://github.com/jdx/mise/commit/884147b16e94880e915a53291af21647546d6a04) +- fail on r2 error by [@jdx](https://github.com/jdx) in [c4011da](https://github.com/jdx/mise/commit/c4011da5261f254f118c3cd5740bbf8d50ac8733) +- update CONTRIBUTING.md by [@jdx](https://github.com/jdx) in [91e9bef](https://github.com/jdx/mise/commit/91e9befabec3f87dec4f2c6513f52b29ca53f5b8) +- 2024 by [@jdx](https://github.com/jdx) in [fbcc3ee](https://github.com/jdx/mise/commit/fbcc3ee610f38633e2ce583d9c43fc9df8c4f368) +- auto-publish cli reference to docs by [@jdx](https://github.com/jdx) in [a2f59c6](https://github.com/jdx/mise/commit/a2f59c6933833e0a2f15066d952ce1119a0928c8) +- fix MISE_ASDF_COMPAT=1 by [@jdx](https://github.com/jdx) in [#1340](https://github.com/jdx/mise/pull/1340) +- migrate improvements by [@jdx](https://github.com/jdx) in [2c0ccf4](https://github.com/jdx/mise/commit/2c0ccf43fd23de03c25a872fe6d91f1d63c77c1a) + +## [2024.1.0] - 2024-01-02 + +### 🔍 Other Changes + +- added "ev" alias by [@jdx](https://github.com/jdx) in [8d98b91](https://github.com/jdx/mise/commit/8d98b9158b6dc4d6c36332a5f52061e81cc87d91) +- added "ev" alias by [@jdx](https://github.com/jdx) in [4bfe580](https://github.com/jdx/mise/commit/4bfe580eef8a8192f621ea729c8013ef141dacf3) +- added RTX_ENV_FILE config by [@jdx](https://github.com/jdx) in [#1305](https://github.com/jdx/mise/pull/1305) +- Update CONTRIBUTING.md by [@jdx](https://github.com/jdx) in [0737393](https://github.com/jdx/mise/commit/0737393b7b167fd57d168dfbf886405bb0a8cecb) +- Configure Renovate by [@renovate[bot]](https://github.com/renovate[bot]) in [#1307](https://github.com/jdx/mise/pull/1307) +- consistent dependency versions by [@jdx](https://github.com/jdx) in [43b37bc](https://github.com/jdx/mise/commit/43b37bc2296460e8b222ab0cbb815ac457717074) +- ignore asdf/nodejs by [@jdx](https://github.com/jdx) in [acc9a68](https://github.com/jdx/mise/commit/acc9a6803d6d3087a847529baa7d7e341ef46cc2) +- ignore nodenv by [@jdx](https://github.com/jdx) in [4d921c7](https://github.com/jdx/mise/commit/4d921c7608e4807ae765383253e100763d04bd75) +- tuck away by [@jdx](https://github.com/jdx) in [4361f03](https://github.com/jdx/mise/commit/4361f0385a82da470cfe47a5044a00ca783c9ddc) +- disable dashboard by [@jdx](https://github.com/jdx) in [2c569fc](https://github.com/jdx/mise/commit/2c569fc01a77987e6823dc749eb917f1fe5a0cf0) +- disable auto package updates by [@jdx](https://github.com/jdx) in [e00fb1f](https://github.com/jdx/mise/commit/e00fb1fde649ecc85aa40ac8846f71316d679e54) +- disable dashboard by [@jdx](https://github.com/jdx) in [400ac0a](https://github.com/jdx/mise/commit/400ac0a0ff64cf5a6846f662df5dc432237e87b2) +- updated description by [@jdx](https://github.com/jdx) in [83c0ffc](https://github.com/jdx/mise/commit/83c0ffcf210c51228f82e9eb586d09a5ea7933f4) +- rtx -> mise by [@jdx](https://github.com/jdx) in [e5897d0](https://github.com/jdx/mise/commit/e5897d097c1f90c8a263f0e685a56908e2c023da) + +### 📦️ Dependency Updates + +- update rust crate indexmap to 2.1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1308](https://github.com/jdx/mise/pull/1308) +- update rust crate num_cpus to 1.16 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1309](https://github.com/jdx/mise/pull/1309) +- update rust crate once_cell to 1.19 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1311](https://github.com/jdx/mise/pull/1311) +- update rust crate regex to 1.10 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1312](https://github.com/jdx/mise/pull/1312) +- update rust crate url to 2.5 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1315](https://github.com/jdx/mise/pull/1315) +- update actions/upload-artifact action to v4 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1320](https://github.com/jdx/mise/pull/1320) +- update actions/download-artifact action to v4 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1319](https://github.com/jdx/mise/pull/1319) +- update fedora docker tag to v40 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1322](https://github.com/jdx/mise/pull/1322) +- update mcr.microsoft.com/devcontainers/rust docker tag to v1 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1323](https://github.com/jdx/mise/pull/1323) +- update stefanzweifel/git-auto-commit-action action to v5 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1324](https://github.com/jdx/mise/pull/1324) +- update actions/checkout action to v4 by [@renovate[bot]](https://github.com/renovate[bot]) in [#1318](https://github.com/jdx/mise/pull/1318) + + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..38c6ee7fb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1 @@ + diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 000000000..37d4aa304 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3469 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi-str" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1d" +dependencies = [ + "ansitok", +] + +[[package]] +name = "ansitok" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83" +dependencies = [ + "nom", + "vte", +] + +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "assert_cmd" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" +dependencies = [ + "anstyle", + "bstr", + "doc-comment", + "predicates", + "predicates-core", + "predicates-tree", + "wait-timeout", +] + +[[package]] +name = "async-compression" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07dbbf24db18d609b1462965249abdf49129ccad073ec257da372adc83259c60" +dependencies = [ + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bstr" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +dependencies = [ + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "built" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41bfbdb21256b87a8b5e80fab81a8eed158178e812fd7ba451907518b2742f16" +dependencies = [ + "chrono", + "git2", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytecount" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "calm_io" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ea0608700fe42d90ec17ad0f86335cf229b67df2e34e7f463e8241ce7b8fa5f" +dependencies = [ + "calmio_filters", +] + +[[package]] +name = "calmio_filters" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "846501f4575cd66766a40bb7ab6d8e960adc7eb49f753c8232bd8e0e09cf6ca2" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "cc" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "windows-targets 0.52.5", +] + +[[package]] +name = "ci_info" +version = "0.14.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840dbb7bdd1f2c4d434d6b08420ef204e0bfad0ab31a07a80a1248d24cc6e38b" +dependencies = [ + "envmnt", +] + +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "clap_mangen" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1dd95b5ebb5c1c54581dd6346f3ed6a79a3eef95dd372fc2ac13d535535300e" +dependencies = [ + "clap", + "roff", +] + +[[package]] +name = "color-eyre" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-print" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee543c60ff3888934877a5671f45494dd27ed4ba25c6670b9a7576b7ed7a8c0" +dependencies = [ + "color-print-proc-macro", +] + +[[package]] +name = "color-print-proc-macro" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ff1a80c5f3cb1ca7c06ffdd71b6a6dd6d8f896c42141fbd43f50ed28dcdb93" +dependencies = [ + "nom", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "color-spantrace" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "confique" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c37945ed2efccb10339a12eea282a5af9ebac77720d088723b2bbbdc44eca964" +dependencies = [ + "confique-macro", + "serde", +] + +[[package]] +name = "confique-macro" +version = "0.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3821efdaaab3c5297054a90201cc3afa2061fc6ba2bc5d2fa558b850a7dabefe" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "contracts" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1d1429e3bd78171c65aa010eabcdf8f863ba3254728dbfb0ad4b1545beac15c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctor" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" +dependencies = [ + "quote", + "syn 2.0.60", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "demand" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab03fe34612975349a625c59d99b1027a5c7544a8ce7a4a33b3269da8b85c3cb" +dependencies = [ + "console", + "once_cell", + "termcolor", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "duct" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ab5718d1224b63252cd0c6f74f6480f9ffeb117438a2e0f5cf6d9a4798929c" +dependencies = [ + "libc", + "once_cell", + "os_pipe", + "shared_child", +] + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "serde", + "sha2", + "signature", + "subtle", + "zeroize", +] + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +dependencies = [ + "serde", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "envmnt" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d73999a2b8871e74c8b8bc23759ee9f3d85011b24fafc91a4b3b5c8cc8185501" +dependencies = [ + "fsio", + "indexmap 1.9.3", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "exec" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "886b70328cba8871bfc025858e1de4be16b1d5088f2ba50b57816f4210672615" +dependencies = [ + "errno 0.2.8", + "libc", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" + +[[package]] +name = "fiat-crypto" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e" + +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.52.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[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 = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fsio" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad0ce30be0cc441b325c5d705c8b613a0ca0d92b6a8953d41bd236dc09a36d0" +dependencies = [ + "dunce", +] + +[[package]] +name = "fslock" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "git2" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" +dependencies = [ + "bitflags 2.5.0", + "libc", + "libgit2-sys", + "log", + "url", +] + +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "globwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" +dependencies = [ + "bitflags 1.3.2", + "ignore", + "walkdir", +] + +[[package]] +name = "globwalk" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" +dependencies = [ + "bitflags 2.5.0", + "ignore", + "walkdir", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-segmentation", + "unicode-width", +] + +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "insta" +version = "1.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eab73f58e59ca6526037208f0e98851159ec1633cf17b6cd2e1f2c3fd5d53cc" +dependencies = [ + "console", + "lazy_static", + "linked-hash-map", + "regex", + "serde", + "similar", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kdl" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "062c875482ccb676fd40c804a40e3824d4464c18c364547456d1c8e8e951ae47" +dependencies = [ + "miette", + "nom", + "thiserror", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libgit2-sys" +version = "0.16.2+1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libz-sys" +version = "1.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "miette" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" +dependencies = [ + "miette-derive", + "once_cell", + "thiserror", + "unicode-width", +] + +[[package]] +name = "miette-derive" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "mise" +version = "2024.4.8" +dependencies = [ + "assert_cmd", + "base64 0.22.0", + "built", + "calm_io", + "chrono", + "ci_info", + "clap", + "clap_mangen", + "color-eyre", + "color-print", + "confique", + "console", + "contracts", + "ctor", + "demand", + "dotenvy", + "duct", + "either", + "exec", + "eyre", + "filetime", + "flate2", + "fslock", + "globset", + "globwalk 0.9.1", + "home", + "humantime", + "indenter", + "indexmap 2.2.6", + "indicatif", + "indoc", + "insta", + "itertools", + "log", + "num_cpus", + "once_cell", + "openssl", + "path-absolutize", + "petgraph", + "predicates", + "pretty_assertions", + "rand", + "rayon", + "regex", + "reqwest", + "rmp-serde", + "self_update", + "serde", + "serde_derive", + "serde_json", + "sha2", + "shell-escape", + "shell-words", + "signal-hook", + "simplelog", + "strum", + "sys-info", + "tabled", + "tar", + "tempfile", + "tera", + "terminal_size", + "test-case", + "thiserror", + "toml", + "toml_edit", + "url", + "usage-lib", + "versions", + "walkdir", + "which", + "zip", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.5.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_pipe" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + +[[package]] +name = "papergrid" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ad43c07024ef767f9160710b3a6773976194758c7919b17e63b863db0bdf7fb" +dependencies = [ + "ansi-str", + "ansitok", + "bytecount", + "fnv", + "unicode-width", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[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 = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "pest_meta" +version = "2.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.2.6", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "predicates" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +dependencies = [ + "anstyle", + "difflib", + "float-cmp", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + +[[package]] +name = "predicates-tree" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "async-compression", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rmp" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938a142ab806f18b88a97b0dea523d39e0fd730a064b035726adcfc58a8a5188" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + +[[package]] +name = "roff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno 0.3.8", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "self-replace" +version = "1.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525db198616b2bcd0f245daf7bfd8130222f7ee6af9ff9984c19a61bf1160c55" +dependencies = [ + "fastrand 1.9.0", + "tempfile", + "windows-sys 0.48.0", +] + +[[package]] +name = "self_update" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a34ad8e4a86884ab42e9b8690e9343abdcfe5fa38a0318cfe1565ba9ad437b4" +dependencies = [ + "either", + "flate2", + "hyper", + "indicatif", + "log", + "quick-xml", + "regex", + "reqwest", + "self-replace", + "semver", + "serde_json", + "tar", + "tempfile", + "urlencoding", + "zipsign-api", +] + +[[package]] +name = "semver" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" + +[[package]] +name = "serde" +version = "1.0.198" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.198" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "serde_json" +version = "1.0.116" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared_child" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "shell-escape" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "similar" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" + +[[package]] +name = "simplelog" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0" +dependencies = [ + "log", + "termcolor", + "time", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.60", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sys-info" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tabled" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c998b0c8b921495196a48aabaf1901ff28be0760136e31604f7967b0792050e" +dependencies = [ + "ansi-str", + "ansitok", + "papergrid", + "tabled_derive", + "unicode-width", +] + +[[package]] +name = "tabled_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c138f99377e5d653a371cdad263615634cfc8467685dfe8e73e2b8e98f44b17" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand 2.0.2", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "tera" +version = "1.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970dff17c11e884a4a09bc76e3a17ef71e01bb13447a11e85226e254fe6d10b8" +dependencies = [ + "globwalk 0.8.1", + "lazy_static", + "pest", + "pest_derive", + "regex", + "serde", + "serde_json", + "unic-segment", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +dependencies = [ + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", + "test-case-core", +] + +[[package]] +name = "thiserror" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +dependencies = [ + "indexmap 2.2.6", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "sharded-slab", + "thread_local", + "tracing-core", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" +dependencies = [ + "unic-ucd-segment", +] + +[[package]] +name = "unic-ucd-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "usage-lib" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f939231931f7e0581372e5543bf9957f26b87a97e5382c2b837e0c611f784eb4" +dependencies = [ + "clap", + "heck 0.5.0", + "indexmap 2.2.6", + "itertools", + "kdl", + "log", + "miette", + "once_cell", + "serde", + "shell-escape", + "strum", + "thiserror", + "xx", +] + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "versions" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38a8931f8d167b6448076020e70b9de46dcf5ea1731212481a092d0071c4ac5b" +dependencies = [ + "itertools", + "nom", + "serde", +] + +[[package]] +name = "vte" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" +dependencies = [ + "arrayvec", + "utf8parse", + "vte_generate_state_changes", +] + +[[package]] +name = "vte_generate_state_changes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[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.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.60", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + +[[package]] +name = "which" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8211e4f58a2b2805adfbefbc07bab82958fc91e3836339b1ab7ae32465dce0d7" +dependencies = [ + "either", + "home", + "rustix", + "winsafe", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winnow" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "winsafe" +version = "0.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "xx" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6c82f8a59dddf27110090af5ef62f75f44d20d15d15b46113e5aee214ae5fd9" +dependencies = [ + "log", + "miette", + "regex", + "thiserror", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + +[[package]] +name = "zip" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2655979068a1f8fa91cb9e8e5b9d3ee54d18e0ddc358f2f4a395afc0929a84b" +dependencies = [ + "arbitrary", + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + +[[package]] +name = "zipsign-api" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba5aa1827d6b1a35a29b3413ec69ce5f796e4d897e3e5b38f461bef41d225ea" +dependencies = [ + "base64 0.21.7", + "ed25519-dalek", + "thiserror", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 000000000..a0242c83d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,147 @@ +[package] +name = "mise" +version = "2024.4.8" +edition = "2021" +description = "The front-end to your dev env" +authors = ["Jeff Dickey (@jdx)"] +homepage = "https://mise.jdx.dev" +documentation = "https://mise.jdx.dev" +repository = "https://github.com/jdx/mise" +readme = "README.md" +license = "MIT" +keywords = ["mise"] +categories = ["command-line-utilities"] +include = [ + "src/**/*.rs", + "src/plugins/core/assets/**", + "src/assets/**", + "/completions/*", + "/Cargo.lock", + "/LICENSE", + "/README.md", + "/build.rs", + "/zipsign.pub", +] +rust-version = "1.74.0" +build = "build.rs" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bin]] +name = "mise" +path = "src/main.rs" + +#[[bench]] +#name = "config_bench" +#harness = false + +[profile.release] +lto = true + +[dependencies] +base64 = "0.22.0" +calm_io = "0.1.1" +chrono = { version = "0.4.38", default-features = false, features = ["std", "clock"] } +ci_info = "0.14.14" +clap = { version = "4.5.4", features = ["env", "derive", "string"] } +clap_mangen = { version = "0.2.20", optional = true } +color-eyre = "0.6.3" +color-print = "0.3.6" +confique = { version = "0.2.5", default-features = false } +console = "0.15.8" +contracts = "0.6.3" +demand = "1.1.1" +dotenvy = "0.15.7" +duct = "0.13.7" +either = { version = "1.11.0", features = ["serde"] } +eyre = "0.6.12" +filetime = "0.2.23" +flate2 = "1.0.28" +fslock = "0.2.1" +globset = "0.4.14" +globwalk = "0.9.1" +home = "0.5.9" +humantime = "2.1.0" +indenter = "0.3.3" +indexmap = { version = "2.2.6", features = ["serde"] } +indicatif = { version = "0.17.8", features = ["default", "improved_unicode"] } +indoc = "2.0.5" +itertools = "0.12.1" +log = "0.4.21" +num_cpus = "1.16.0" +once_cell = "1.19.0" +openssl = { version = "0.10.64", optional = true } +path-absolutize = "3.1.1" +petgraph = "0.6.4" +rand = "0.8.5" +rayon = "1.10.0" +regex = "1.10.4" +reqwest = { version = "<0.12", default-features = false, features = ["blocking", "json", "gzip"] } +rmp-serde = "1.2.0" +self_update = { version = "0.39.0", default-features = false, features = [ + "archive-tar", + "compression-flate2", + "signatures", +] } +serde = "1.0.198" +serde_derive = "1.0.198" +serde_json = { version = "1.0.116", features = [] } +sha2 = "0.10.8" +shell-escape = "0.1.5" +shell-words = "1.1.0" +signal-hook = "0.3.17" +simplelog = { version = "0.12.2" } +strum = { version = "0.26.2", features = ["derive"] } +sys-info = "0.9.1" +tabled = { version = "0.15.0", features = ["ansi"] } +tar = "0.4.40" +tempfile = "3.10.1" +tera = { version = "1.19.1", default-features = false } +terminal_size = "0.3.0" +thiserror = "1.0.59" +toml = { version = "0.8.12", features = ["parse"] } +toml_edit = { version = "0.22.12", features = ["parse"] } +url = "2.5.0" +usage-lib = { version = "0.1.18", features = ["clap"] } +versions = { version = "6.2.0", features = ["serde"] } +walkdir = "2.5.0" +which = "6.0.1" +zip = { version = "1.1.1", default-features = false, features = ["deflate"] } + +[target.'cfg(unix)'.dependencies] +exec = "0.3.1" + +[build-dependencies] +built = { version = "0.7.2", features = ["chrono", "git2"] } + +[dev-dependencies] +assert_cmd = "2.0.14" +ctor = "0.2.8" +insta = { version = "1.38.0", features = ["filters", "json"] } +predicates = "3.1.0" +pretty_assertions = "1.4.0" +test-case = "3.3.1" + +[features] +default = ["native-tls"] +native-tls = ["reqwest/native-tls"] +rustls = ["reqwest/rustls-tls", "self_update/rustls"] +rustls-native-roots = ["reqwest/rustls-tls-native-roots", "self_update/rustls"] + +[package.metadata.binstall] +bin-dir = "mise/bin/mise" +[package.metadata.binstall.overrides.aarch64-apple-darwin] +pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-macos-arm64{ archive-suffix }" +[package.metadata.binstall.overrides.x86_64-apple-darwin] +pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-macos-x64{ archive-suffix }" +[package.metadata.binstall.overrides.aarch64-unknown-linux-gnu] +pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-linux-arm64{ archive-suffix }" +[package.metadata.binstall.overrides.x86_64-unknown-linux-gnu] +pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-linux-x64{ archive-suffix }" +[package.metadata.binstall.overrides.armv7-unknown-linux-gnueabihf] +pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-linux-armv7{ archive-suffix }" +[package.metadata.binstall.overrides.armv6-unknown-linux-gnueabihf] +pkg-url = "{ repo }/releases/download/v{ version }/mise-v{version}-linux-armv6{ archive-suffix }" + +[package.metadata.cargo-machete] +ignored = ["built", "openssl"] diff --git a/Dockerfile b/Dockerfile new file mode 120000 index 000000000..42899face --- /dev/null +++ b/Dockerfile @@ -0,0 +1 @@ +./packaging/mise/Dockerfile \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..f5997f2a5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jeff Dickey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 000000000..f5ba76811 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +
+

+ mise-logo
+ mise-en-place +

+ + + + +Crates.io +GitHub +GitHub Workflow Status +Codacy coverage (branch) +Discord +

The front-end to your dev env. (formerly called "rtx")

+
+ +## What is it? + +- Like [asdf](https://asdf-vm.com) (or [nvm](https://github.com/nvm-sh/nvm) or [pyenv](https://github.com/pyenv/pyenv) but for any language) it manages [dev tools](https://mise.jdx.dev/dev-tools/) like node, python, cmake, terraform, and [hundreds more](https://mise.jdx.dev/plugins.html). +- Like [direnv](https://github.com/direnv/direnv) it manages [environment variables](https://mise.jdx.dev/environments.html) for different project directories. +- Like [make](https://www.gnu.org/software/make/manual/make.html) it manages [tasks](https://mise.jdx.dev/tasks/) used to build and test projects. + +## Migrating from rtx + +mise will attempt to migrate most of its internal files making the transition as easy as possible. That said, it's worth reading the [migration guide](https://mise.jdx.dev/rtx.html) because there are a few things to watch out for. + +## 30 Second Demo + +The following shows using mise to install different versions +of [node](https://nodejs.org). +Note that calling `which node` gives us a real path to node, not a shim. + +[![demo](./docs/demo.gif)](./docs/demo.gif) + +## Quickstart + +Install mise (other methods [here](https://mise.jdx.dev/getting-started.html)): + +```sh-session +$ curl https://mise.run | sh +$ ~/.local/bin/mise --version +mise 2024.4.8 +``` + +Hook mise into your shell (pick the right one for your shell): + +```sh-session +# note this assumes mise is located at ~/.local/bin/mise +# which is what https://mise.run does by default +echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc +echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc +echo '~/.local/bin/mise activate fish | source' >> ~/.config/fish/config.fish +``` + +Install a runtime and set it as the global default: + +```sh-session +$ mise use --global node@20 +$ node -v +v20.0.0 +``` + +## Full Documentation + +See [mise.jdx.dev](https://mise.jdx.dev) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..ef0505e7c --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,128 @@ +# Security Policy + +mise is a convenient tool to manage developer tools, however its model is also open to potential risks. The following +are major areas of mise and the security considerations currently being made and what needs to be made in the future. + +Please open a ticket or send me an email if you have thoughts on how mise can be made more secure. + +## Core CLI Security + +Development of the "core CLI" is done on jdx/mise which only a single developer (me, @jdx) has access to. +Other contributors may only submit contributions via public Pull Requests. Reducing the number +of developers with access down to 1 minimizes the chance of keys being leaked. + +This does create a [bus factor](https://en.wikipedia.org/wiki/Bus_factor) problem. If I suddenly died one day +or otherwise wasn't able to continue development at all there are some successors listed in my GitHub account +that can take over my account if need be. + +The dependencies in the core CLI are a security vector. I've tried to be judicious about what dependencies make it into +the project. I only select dependencies with broad usage across the Rust community where possible. +I'm open to PRs or suggestions on reducing dependency count even at the cost of functionality because it will make +mise more secure. + +## mise.jdx.dev + +mise.jdx.dev is the asset host for mise. It's used to host precompiled mise CLI binaries, and hosts a "[VERSION](https://mise.jdx.dev/VERSION)" +which mise uses to occasionally check for a new version being released. Everything hosted there uses a single +vendor to reduce surface area. + +## mise plugins + +Plugins are by far the biggest source of potential problems and where the most work still needs to be made. + +There are 3 types of plugins: + +- [core](https://github.com/jdx/mise/issues/236) - plugins that are hardcoded into the CLI. + These are official plugins for the most common languages written in Rust. +- community - plugins in the [mise-plugins](https://github.com/mise-plugins) GitHub Org. [See below](#mise-plugins-github-org) for details. +- external - plugins owned by other parties, these include plugins in the shorthand registry. These are no more + secure than installing any random tool from the internet. These receive a warning dialog when installed in mise. + +Just because a plugin is inside of the shorthand registry (so you can run `mise install foo@`, does not mean +I vouch for it. I have no idea who almost anyone that builds those plugins are. If it's coming from the mise-plugins +GitHub org, you can have more trust in it. (See the owners with `mise plugins ls-remote --urls`). + +Over time we should be able to move more plugins into being fully maintained by mise. I plan to add an +`MISE_PARANOID=1` env var that, when set, will make changes to make mise behave as securely as possible +(e.g.: only using core/mise-plugins plugins, only allowing plugins that use GPG verification of assets). + +## [mise-plugins](https://github.com/mise-plugins) GitHub org + +This is similar to but with the advantage of being more secure by keeping the +contributor count minimal—currently only @jdx will be allowed to merge PRs. For this reason, plugins using this +organization will not receive a confirmation warning dialog when installed with mise as they've been vetted by a +trusted source. + +If you're a plugin maintainer that would like to move your repo to this org [please let me know](https://github.com/orgs/mise-plugins/discussions). +Plugins can either retain compatibility with asdf or use mise specific functionality—that's up to you. asdf-compatible plugins should use "asdf-" as the prefix and "mise-" prefixed-plugins denote mise-only compatibility. + +## Supported Versions + +The only supported version is the most recent one. + +## Reporting a Vulnerability + +Send an email to security@ + +If you want, you may encrypt the message with GPG: + +
+ @jdx's public key + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBGQfPjUBEADAtjLxcoJlHYNwvN8xYEai/waWZpnKvNWP86kYuX5xqb/GR1wZ +TQ4usQPcpTj60XQaF3jUwtW8/1PH/gQv0516qAIlqHVvvMyGD/u2iwr+U8JtIGWf +B87mL2aMvg6GqXoR3dgCtYkHd839Z0wVFOvgkzWdx3jOWE73KQpN0PeunBNsCw/K +4wR/gEBNfiAbi0i3RIbpSKHTtRZ1e/1+1o2jxz48a/IdCzFzN9zOplfhASo0C/AB +PSjlFnvlB5jjWqyGln6ycunEn0dhdzi7f1MdfNmj19tqqQYKYIy3AOFiRNqKLlWo +dOPTJMYdCD8CkLh5GTOWq0xZZ/s5bHiw2KuQxyZsm2eo4MH7pOEHuH1yFjyrbli7 +/8/iLfaGx89aK7Krt+dd60XMPQh8rGjClVdC8GQS8XMjerjdk5g22dd7s5n7shGm +gZalidw3CFppO2po1YR8yNc5UJz7gzGCZsQfyC1Ao376BFM/cXlnje6RG2Unsy8O +uKE2O5vFOmppoWmaM5KcCFLa7NP2Wu8Y8CaoDZaBZeGFHffvxSKh/J69ECVvTM91 +Xn8B0COiiqkYKpqNf+KgGXzQvj3ABKG0Q27T5VUHW3F1jdPKjbMmdbqorRDr7v0a +PZSwqrlTenZVCVdEsRHsHevIZ6+neZ3hHEk66EtaG45Qkna2EahhS+IPGQARAQAB +tCBKZWZmcmV5IERpY2tleSA8Z3BnQGpkeGNvZGUuY29tPokCVAQTAQgAPhYhBDFB +ttCiFJlyWolR/FCs4PPr5+BHBQJkHz41AhsDBQkHhh9cBQsJCAcCBhUKCQgLAgQW +AgMBAh4BAheAAAoJEFCs4PPr5+BHUsIP/0AL/lTNZ22yynIE7EXwWsLTolrNHiaz +79s/MH04i1IazkElvY7MVL0iTqozYnSaEJ7BhtNPUkoCX79cLHKv/nD9CJF8qwcK +GgYCirXGEol30P1s2K2c1Rr4wcul+SamQ2vHrBes+/0ksuvK9yAZV6y8nWCukO4Z +5B4DVHuvQ0UmJ6tWf53sFpRnLWB+8VB1n931uZXeHjxo2s5/x3E2FknH6/l8/+Ey +d9T44RzlOwkZYTrw08O1PLLNGkOxdD3sGi7Q/JSPHmlhBBqpnqxT4wOFJQnluJji +ed4qlB4oXa2CM2VkbSdmQ6ls67Qju0/LKsYwd7QNpo/fODXR3MLIQDUo9ZzKmvgB +r9L2BQDz4vOKdYSm2MLyGsB6W9GsVHVjnGnZWhiKOOH1jxnI2y6btJZNQYemMtLo +Y7DlTogRaq1h62WHkm3cbPqXYpfEBH9AJRAZgyUbc703BJfr5i8epoRajP/jxTVi +PtIak2/kJu6adxJ+nutz+1ycc8XBlfAnSTj87wKXM0nsboK3Kyd5cZ2m7CFF7tIY +y/Ti7jVbVNMH6OugoCLYXnINIW3QFBKhM7/uouukN3ww5zJ58w0mqkySzxiY4jr8 +OOLW9oARmq4gvevRmnd97hmmu1h0A3TPOzbr97zF8xCjKkf04IpdfMPEccNg1jWK +QEqn+1m3XNdDuQINBGQfPjUBEACu7zv4/gNxUDCwbnkkK7wQL3sX7yZKkhGZgpXR +H9h+mAf/DlhKo8yqJiR0C6z+QcsSM1a3RvHHBdRnsun/jEzScP2o5ShQKLCq68qb +JlSh/FSQQTYTEjC/t4ccMLIYbsccJd+Xg9cRuqGN/jE/SWNwUGrf2FuKQQkTTcrN +tiHwXHLxUlIHYckyKq4UggL8icaONSpwAWLEwi0u2muMMZHzFnHT33W8+iFHmjCd +osHZaArWXiQlYQFeoxvnT2hkUK/uQC7ZANup4ebuQr4ZLgo7kWUOKlwpucNFscFy +oIVuNeVYq0ijz1urNMnzGF6Pz0SVjr91lyHGmAdODpYz6vZZ5ipDDrXXDHTyET5c +j8zUYkbbtxEaE0+MpAN8wrtxmtXt3QMV4MfncJzvKmhFcaRFjvgG+PtC4cxVsmLK +BD9WKxni0e1jcWPtoRw5LvAinqgTzCF4iw9rUwITWBVg+T2d6kTokTW7J2mrGNSp +WiE/Gq2+3kzs0BOIPc9h2tzTkhHbsZz9ZTFXLzutxKzfamBVGr0B7MR9wnOyVgQW +cohmCEhcEIgKiPnmcobXiWE/NpvbtyE7KBVXVFEDvIdpWUf9OaUZNau5gwg6MJRF +zdWLj2Y7LYK1NbmJWrzg8V3KeBCMxKlVS463DPWMQzfmpMYYravpW1gkekXqxMP6 +gBvRfwARAQABiQI8BBgBCAAmFiEEMUG20KIUmXJaiVH8UKzg8+vn4EcFAmQfPjUC +GwwFCQeGH1wACgkQUKzg8+vn4EdAbxAAr4SMo8VvAhFlJd/WQlifgREj0On6UFee +YCKNA8/1cJnXCxb+kQJXLCcYBHGq07NV9OkzCZBLiGM13f0DF/YfcDbUq1ISivoo +JwTUII48Q1aQseWc3JxkgLPi9CjxE48ynEeFi582Bsz0auzUGk1dbVfJbbpDKd83 +/vZImxN+sfa9no/7l5wsNVIOhPSQrv3BDjMAuqkUIZHNYsp6i3Fo4cj7e6qy4HpG +XaUnyTsivI2ifr3AYgbg6sgcXmgi0WRipnrX9D99usXfNxi5PNEI3mJF8Tq8bOjy +JDZd5duJ2Or4yH/LrAOmrCQxC5nNmsHm2uGHRcab4lUDMoPWkDFOzbtY/iAJtQGZ +Vg9o7cVhAXFSgHzSwC8bjGwPwNdmL719wzAvpOB0qmeHo5oqrKcCyz7qgryYvOhH +ZjHmfc++FDuQGhYv8yNAMpPkg2ZfZSD7AM0KigNp0bsOYPhM6n0EqCzoX5SjzSp3 +v+asbUPbVC5G7/YbkNhyohf9iNXqyMrWnYL86LnXIMTi6Sto01BLfRs0QiqztahQ +JuSHoeBpoXY/yMoHYQCd/O7D12Ha5XDdYfXP0Yf9glS+r+YaVYXxcJ6O/DfV6QEk +MFPobhR7zlCShd7TdY1a41uxTGB+Wmn4DO0s/wzSgdgxIzG+TM1X47owe7l5RiI1 +1wxfuzN2+ao= +=/CHf +-----END PGP PUBLIC KEY BLOCK----- + +``` + +
diff --git a/build.rs b/build.rs new file mode 100644 index 000000000..d8f91cb91 --- /dev/null +++ b/build.rs @@ -0,0 +1,3 @@ +fn main() { + built::write_built_file().expect("Failed to acquire build-time information"); +} diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 000000000..019af83f7 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,131 @@ +# git-cliff ~ default configuration file +# https://git-cliff.org/docs/configuration +# +# Lines starting with "#" are comments. +# Configuration options are organized into tables and keys. +# See documentation for more information on available options. + +[changelog] +# changelog header +header = """ +# Changelog\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{% if version %}\ + {% if previous.version %}\ + ## [{{ version | trim_start_matches(pat="v") }}]($REPO/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }} + {% else %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} + {% endif %}\ +{% else %}\ + ## [unreleased] +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + + {% for commit in commits + | filter(attribute="scope") + | sort(attribute="scope") -%} + {% if commit.scope -%} + - {{self::commit(commit=commit)}}\ + {% endif -%} + {% endfor -%} + {% for commit in commits -%} + {% if commit.scope -%} + {% else -%} + - {{self::commit(commit=commit)}}\ + {% endif -%} + {% endfor -%} +{% endfor %} +{% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 -%} +### New Contributors +{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} + * @{{ contributor.username }} made their first contribution + {%- if contributor.pr_number %} in \ + [#{{ contributor.pr_number }}]($REPO/pull/{{ contributor.pr_number }})\ + {% endif %}\ +{% endfor %} + +{% endif -%} +{% macro commit(commit) -%} +{% if commit.scope %}**({{commit.scope}})** {% endif -%} +{% if commit.breaking %}**breaking** {% endif -%} +{{ commit.message | split(pat="\n") | first | trim }} by \ +{% if commit.github.username %}[@{{commit.github.username}}](https://github.com/{{commit.github.username}})\ +{% else %}{{commit.author.name}}{% endif %} in \ +{% if commit.github.pr_number %}[#{{ commit.github.pr_number }}]($REPO/pull/{{ commit.github.pr_number }})\ +{% else %}[{{ commit.id | truncate(length=7, end="") }}]($REPO/commit/{{ commit.id }})\ +{%- endif %} +{% endmacro commit -%} +""" +# template for the changelog footer +footer = """ + +""" +# remove the leading and trailing whitespace from the template +trim = true +postprocessors = [ + { pattern = '\$REPO', replace = "https://github.com/jdx/mise" }, +] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = false +# process each line of a commit as an individual commit +split_commits = false +# regex for preprocessing the commit messages +commit_preprocessors = [ + # remove PR labels from commits + { pattern = '\(#([0-9]+)\)', replace = "" }, + # Check spelling of the commit with https://github.com/crate-ci/typos + # If the spelling is incorrect, it will be automatically fixed. + #{ pattern = '.*', replace_command = 'typos --write-changes -' }, +] +# regex for parsing and grouping commits +commit_parsers = [ + { message = '^chore\(release\): prepare for', skip = true }, + { message = '^chore\(pr\)', skip = true }, + { message = '^chore\(pull\)', skip = true }, + { message = '^chore: (release|Release)', skip = true }, + { message = '^Release', skip = true }, + { message = "^Merge commit", skip = true }, + { body = '.*security', group = "🛡️ Security" }, + { message = '^(chore|fix)\(deps\):', group = "📦️ Dependency Updates", scope = "" }, + { message = '^feat', group = "🚀 Features" }, + { message = '^fix', group = "🐛 Bug Fixes" }, + { message = '^refactor', group = "🚜 Refactor" }, + { message = '^doc', group = "📚 Documentation" }, + { message = '^style', group = "🎨 Styling" }, + { message = '^perf', group = "⚡ Performance" }, + { message = '^test', group = "🧪 Testing" }, + { message = '^revert', group = "◀️ Revert" }, + { message = '.', group = "🔍 Other Changes" }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = false +# regex for matching git tags +tag_pattern = '^v\d+\.\d+\.\d+$' +# regex for skipping tags +skip_tags = '^v(1|2023|2024\.0)\.' +# regex for ignoring tags +# ignore_tags = "" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest" +# limit the number of commits included in the changelog. +# limit_commits = 42 + +[bump] +features_always_bump_minor = false +breaking_always_bump_major = false + +[remote.github] +owner = "jdx" +repo = "mise" diff --git a/completions/_mise b/completions/_mise new file mode 100644 index 000000000..1771c9c99 --- /dev/null +++ b/completions/_mise @@ -0,0 +1,47 @@ +#compdef mise +local curcontext="$curcontext" + +# caching config +_usage_mise_cache_policy() { + if [[ -z "${lifetime}" ]]; then + lifetime=$((60*60*4)) # 4 hours + fi + local -a oldp + oldp=( "$1"(Nms+${lifetime}) ) + (( $#oldp )) +} + +_mise() { + typeset -A opt_args + local curcontext="$curcontext" spec cache_policy + + if ! command -v usage &> /dev/null; then + echo >&2 + echo "Error: usage CLI not found. This is required for completions to work in mise." >&2 + echo "See https://usage.jdx.dev for more information." >&2 + return 1 + fi + + zstyle -s ":completion:${curcontext}:" cache-policy cache_policy + if [[ -z $cache_policy ]]; then + zstyle ":completion:${curcontext}:" cache-policy _usage_mise_cache_policy + fi + + if ( [[ -z "${_usage_mise_spec:-}" ]] || _cache_invalid _usage_mise_spec ) \ + && ! _retrieve_cache _usage_mise_spec; + then + spec="$(mise usage)" + _store_cache _usage_mise_spec spec + fi + + _arguments '*: :($(usage complete-word -s "$spec" -- "${words[@]}" ))' + return 0 +} + +if [ "$funcstack[1]" = "_mise" ]; then + _mise "$@" +else + compdef _mise mise +fi + +# vim: noet ci pi sts=0 sw=4 ts=4 diff --git a/completions/mise.bash b/completions/mise.bash new file mode 100644 index 000000000..50258940d --- /dev/null +++ b/completions/mise.bash @@ -0,0 +1,21 @@ +_mise() { + if ! command -v usage &> /dev/null; then + echo >&2 + echo "Error: usage CLI not found. This is required for completions to work in mise." >&2 + echo "See https://usage.jdx.dev for more information." >&2 + return 1 + fi + + if [[ -z ${_USAGE_SPEC_MISE:-} ]]; then + _USAGE_SPEC_MISE="$(mise usage)" + fi + + COMPREPLY=( $(usage complete-word -s "${_USAGE_SPEC_MISE}" --cword="$COMP_CWORD" -- "${COMP_WORDS[@]}" ) ) + if [[ $? -ne 0 ]]; then + unset COMPREPLY + fi + return 0 +} + +shopt -u hostcomplete && complete -o nospace -o bashdefault -o nosort -F _mise mise +# vim: noet ci pi sts=0 sw=4 ts=4 ft=sh diff --git a/completions/mise.fish b/completions/mise.fish new file mode 100644 index 000000000..87f982803 --- /dev/null +++ b/completions/mise.fish @@ -0,0 +1,13 @@ +# if "usage" is not installed show an error +if ! command -v usage &> /dev/null + # Try to enable usage through mise + if ! mise use -g usage &> /dev/null + echo >&2 + echo "Error: usage CLI not found. This is required for completions to work in mise." >&2 + echo "See https://usage.jdx.dev for more information." >&2 + return 1 + end +end + +set _usage_spec_mise (mise usage | string collect) +complete -xc mise -a '(usage complete-word -s "$_usage_spec_mise" -- (commandline -cop) (commandline -t))' diff --git a/default.nix b/default.nix new file mode 100644 index 000000000..e6ba19ecb --- /dev/null +++ b/default.nix @@ -0,0 +1,50 @@ +{ pkgs, lib, stdenv, fetchFromGitHub, rustPlatform, coreutils, bash, direnv, openssl }: + +rustPlatform.buildRustPackage { + pname = "mise"; + version = "2024.4.8"; + + src = lib.cleanSource ./.; + + cargoLock = { + lockFile = ./Cargo.lock; + }; + + nativeBuildInputs = with pkgs; [ pkg-config ]; + buildInputs = with pkgs; [ + coreutils + bash + direnv + gnused + git + gawk + openssl + ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security darwin.apple_sdk.frameworks.SystemConfiguration ]; + + prePatch = '' + substituteInPlace ./test/data/plugins/**/bin/* \ + --replace '#!/usr/bin/env bash' '#!${bash}/bin/bash' + substituteInPlace ./src/fake_asdf.rs ./src/cli/reshim.rs \ + --replace '#!/bin/sh' '#!${bash}/bin/sh' + substituteInPlace ./src/env_diff.rs \ + --replace '"bash"' '"${bash}/bin/bash"' + substituteInPlace ./test/cwd/.mise/tasks/filetask \ + --replace '#!/usr/bin/env bash' '#!${bash}/bin/bash' + substituteInPlace ./src/cli/direnv/exec.rs \ + --replace '"env"' '"${coreutils}/bin/env"' \ + --replace 'cmd!("direnv"' 'cmd!("${direnv}/bin/direnv"' + ''; + + # Skip the test_plugin_list_urls as it uses the .git folder, which + # is excluded by default from Nix. + checkPhase = '' + RUST_BACKTRACE=full cargo test --all-features -- \ + --skip cli::plugins::ls::tests::test_plugin_list_urls + ''; + + meta = with lib; { + description = "The front-end to your dev env"; + homepage = "https://github.com/jdx/mise"; + license = licenses.mit; + }; +} diff --git a/deny.toml b/deny.toml new file mode 100644 index 000000000..ab9c956f4 --- /dev/null +++ b/deny.toml @@ -0,0 +1,232 @@ +# This template contains all of the possible sections and their default values + +# Note that all fields that take a lint level have these possible values: +# * deny - An error will be produced and the check will fail +# * warn - A warning will be produced, but the check will not fail +# * allow - No warning or error will be produced, though in some cases a note +# will be + +# The values provided in this template are the default values that will be used +# when any section or field is not specified in your own configuration + +# Root options + +# The graph table configures how the dependency graph is constructed and thus +# which crates the checks are performed against +[graph] +# If 1 or more target triples (and optionally, target_features) are specified, +# only the specified targets will be checked when running `cargo deny check`. +# This means, if a particular package is only ever used as a target specific +# dependency, such as, for example, the `nix` crate only being used via the +# `target_family = "unix"` configuration, that only having windows targets in +# this list would mean the nix crate, as well as any of its exclusive +# dependencies not shared by any other crates, would be ignored, as the target +# list here is effectively saying which targets you are building for. +targets = [ + # The triple can be any string, but only the target triples built in to + # rustc (as of 1.40) can be checked against actual config expressions + #"x86_64-unknown-linux-musl", + # You can also specify which target_features you promise are enabled for a + # particular target. target_features are currently not validated against + # the actual valid features supported by the target architecture. + #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, +] +# When creating the dependency graph used as the source of truth when checks are +# executed, this field can be used to prune crates from the graph, removing them +# from the view of cargo-deny. This is an extremely heavy hammer, as if a crate +# is pruned from the graph, all of its dependencies will also be pruned unless +# they are connected to another crate in the graph that hasn't been pruned, +# so it should be used with care. The identifiers are [Package ID Specifications] +# (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html) +#exclude = [] +# If true, metadata will be collected with `--all-features`. Note that this can't +# be toggled off if true, if you want to conditionally enable `--all-features` it +# is recommended to pass `--all-features` on the cmd line instead +all-features = true +# If true, metadata will be collected with `--no-default-features`. The same +# caveat with `all-features` applies +no-default-features = false +# If set, these feature will be enabled when collecting metadata. If `--features` +# is specified on the cmd line they will take precedence over this option. +#features = [] + +# The output table provides options for how/if diagnostics are outputted +[output] +# When outputting inclusion graphs in diagnostics that include features, this +# option can be used to specify the depth at which feature edges will be added. +# This option is included since the graphs can be quite large and the addition +# of features from the crate(s) to all of the graph roots can be far too verbose. +# This option can be overridden via `--feature-depth` on the cmd line +feature-depth = 1 + +# This section is considered when running `cargo deny check advisories` +# More documentation for the advisories section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html +[advisories] +# The path where the advisory databases are cloned/fetched into +#db-path = "$CARGO_HOME/advisory-dbs" +# The url(s) of the advisory databases to use +#db-urls = ["https://github.com/rustsec/advisory-db"] +# A list of advisory IDs to ignore. Note that ignored advisories will still +# output a note when they are encountered. +ignore = [ + #"RUSTSEC-0000-0000", + #{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" }, + #"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish + #{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" }, +] +# If this is true, then cargo deny will use the git executable to fetch advisory database. +# If this is false, then it uses a built-in git library. +# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support. +# See Git Authentication for more information about setting up git authentication. +#git-fetch-with-cli = true + +# This section is considered when running `cargo deny check licenses` +# More documentation for the licenses section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html +[licenses] +# List of explicitly allowed licenses +# See https://spdx.org/licenses/ for list of possible licenses +# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. +allow = [ + "Apache-2.0 WITH LLVM-exception", + "Apache-2.0", + "BSD-3-Clause", + "ISC", + "MIT", + "MPL-2.0", + "OpenSSL", + "Unicode-DFS-2016", +] +# The confidence threshold for detecting a license from license text. +# The higher the value, the more closely the license text must be to the +# canonical license text of a valid SPDX license file. +# [possible values: any between 0.0 and 1.0]. +confidence-threshold = 0.8 +# Allow 1 or more licenses on a per-crate basis, so that particular licenses +# aren't accepted for every possible crate as with the normal allow list +exceptions = [ + # Each entry is the crate and version constraint, and its specific allow + # list + #{ allow = ["Zlib"], crate = "adler32" }, +] + +# Some crates don't have (easily) machine readable licensing information, +# adding a clarification entry for it allows you to manually specify the +# licensing information +[[licenses.clarify]] +# The package spec the clarification applies to +crate = "ring" +# The SPDX expression for the license requirements of the crate +expression = "MIT AND ISC AND OpenSSL" +# One or more files in the crate's source used as the "source of truth" for +# the license expression. If the contents match, the clarification will be used +# when running the license check, otherwise the clarification will be ignored +# and the crate will be checked normally, which may produce warnings or errors +# depending on the rest of your configuration +license-files = [ + # Each entry is a crate relative path, and the (opaque) hash of its contents + { path = "LICENSE", hash = 0xbd0eed23 } +] + +[licenses.private] +# If true, ignores workspace crates that aren't published, or are only +# published to private registries. +# To see how to mark a crate as unpublished (to the official registry), +# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field. +ignore = false +# One or more private registries that you might publish crates to, if a crate +# is only published to private registries, and ignore is true, the crate will +# not have its license(s) checked +registries = [ + #"https://sekretz.com/registry +] + +# This section is considered when running `cargo deny check bans`. +# More documentation about the 'bans' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html +[bans] +# Lint level for when multiple versions of the same crate are detected +multiple-versions = "allow" +# Lint level for when a crate version requirement is `*` +wildcards = "allow" +# The graph highlighting used when creating dotgraphs for crates +# with multiple versions +# * lowest-version - The path to the lowest versioned duplicate is highlighted +# * simplest-path - The path to the version with the fewest edges is highlighted +# * all - Both lowest-version and simplest-path are used +highlight = "all" +# The default lint level for `default` features for crates that are members of +# the workspace that is being checked. This can be overridden by allowing/denying +# `default` on a crate-by-crate basis if desired. +workspace-default-features = "allow" +# The default lint level for `default` features for external crates that are not +# members of the workspace. This can be overridden by allowing/denying `default` +# on a crate-by-crate basis if desired. +external-default-features = "allow" +# List of crates that are allowed. Use with care! +allow = [ + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" }, +] +# List of crates to deny +deny = [ + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" }, + # Wrapper crates can optionally be specified to allow the crate when it + # is a direct dependency of the otherwise banned crate + #{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] }, +] + +# List of features to allow/deny +# Each entry the name of a crate and a version range. If version is +# not specified, all versions will be matched. +#[[bans.features]] +#crate = "reqwest" +# Features to not allow +#deny = ["json"] +# Features to allow +#allow = [ +# "rustls", +# "__rustls", +# "__tls", +# "hyper-rustls", +# "rustls", +# "rustls-pemfile", +# "rustls-tls-webpki-roots", +# "tokio-rustls", +# "webpki-roots", +#] +# If true, the allowed features must exactly match the enabled feature set. If +# this is set there is no point setting `deny` +#exact = true + +# Certain crates/versions that will be skipped when doing duplicate detection. +skip = [ + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" }, +] +# Similarly to `skip` allows you to skip certain crates during duplicate +# detection. Unlike skip, it also includes the entire tree of transitive +# dependencies starting at the specified crate, up to a certain depth, which is +# by default infinite. +skip-tree = [ + #"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies + #{ crate = "ansi_term@0.11.0", depth = 20 }, +] + +# This section is considered when running `cargo deny check sources`. +# More documentation about the 'sources' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html +[sources] +# Lint level for what to happen when a crate from a crate registry that is not +# in the allow list is encountered +unknown-registry = "warn" +# Lint level for what to happen when a crate from a git repository that is not +# in the allow list is encountered +unknown-git = "warn" +# List of URLs for allowed crate registries. Defaults to the crates.io index +# if not specified. If it is specified but empty, no registries are allowed. +allow-registry = ["https://github.com/rust-lang/crates.io-index"] +# List of URLs for allowed Git repositories +allow-git = [] diff --git a/docs/bun.md b/docs/bun.md new file mode 100644 index 000000000..052b9204e --- /dev/null +++ b/docs/bun.md @@ -0,0 +1 @@ +See [mise.jdx.dev](https://mise.jdx.dev/lang/bun.html) for more information. diff --git a/docs/cli-reference.md b/docs/cli-reference.md new file mode 100644 index 000000000..f5dff2ab3 --- /dev/null +++ b/docs/cli-reference.md @@ -0,0 +1,1733 @@ + + +# Commands + +## `mise activate [OPTIONS] [SHELL_TYPE]` + +```text +Initializes mise in the current shell session + +This should go into your shell's rc file. +Otherwise, it will only take effect in the current session. +(e.g. ~/.zshrc, ~/.bashrc) + +This is only intended to be used in interactive sessions, not scripts. +mise is only capable of updating PATH when the prompt is displayed to the user. +For non-interactive use-cases, use shims instead. + +Typically this can be added with something like the following: + + echo 'eval "$(mise activate)"' >> ~/.zshrc + +However, this requires that "mise" is in your PATH. If it is not, you need to +specify the full path like this: + + echo 'eval "$(/path/to/mise activate)"' >> ~/.zshrc + +Customize status output with `status` settings. + +Usage: activate [OPTIONS] [SHELL_TYPE] + +Arguments: + [SHELL_TYPE] + Shell type to generate the script for + + [possible values: bash, fish, nu, xonsh, zsh] + +Options: + --shims + Use shims instead of modifying PATH + Effectively the same as: + PATH="$HOME/.local/share/mise/shims:$PATH" + + -q, --quiet + Suppress non-error messages + +Examples: + + $ eval "$(mise activate bash)" + $ eval "$(mise activate zsh)" + $ mise activate fish | source + $ execx($(mise activate xonsh)) +``` + +## `mise alias get ` + +```text +Show an alias for a plugin + +This is the contents of an alias. entry in ~/.config/mise/config.toml + +Usage: alias get + +Arguments: + + The plugin to show the alias for + + + The alias to show + +Examples: + $ mise alias get node lts-hydrogen + 20.0.0 +``` + +## `mise alias ls [OPTIONS] [PLUGIN]` + +**Aliases:** `list` + +```text +List aliases +Shows the aliases that can be specified. +These can come from user config or from plugins in `bin/list-aliases`. + +For user config, aliases are defined like the following in `~/.config/mise/config.toml`: + + [alias.node] + lts = "20.0.0" + +Usage: alias ls [OPTIONS] [PLUGIN] + +Arguments: + [PLUGIN] + Show aliases for + +Options: + --no-header + Don't show table header + +Examples: + + $ mise aliases + node lts-hydrogen 20.0.0 +``` + +## `mise alias set ` + +**Aliases:** `add, create` + +```text +Add/update an alias for a plugin + +This modifies the contents of ~/.config/mise/config.toml + +Usage: alias set + +Arguments: + + The plugin to set the alias for + + + The alias to set + + + The value to set the alias to + +Examples: + + $ mise alias set node lts-hydrogen 18.0.0 +``` + +## `mise alias unset ` + +**Aliases:** `del, delete, remove, rm` + +```text +Clears an alias for a plugin + +This modifies the contents of ~/.config/mise/config.toml + +Usage: alias unset + +Arguments: + + The plugin to remove the alias from + + + The alias to remove + +Examples: + + $ mise alias unset node lts-hydrogen +``` + +## `mise bin-paths` + +```text +List all the active runtime bin paths + +Usage: bin-paths +``` + +## `mise cache clear [PLUGIN]...` + +**Aliases:** `c` + +```text +Deletes all cache files in mise + +Usage: cache clear [PLUGIN]... + +Arguments: + [PLUGIN]... + Plugin(s) to clear cache for e.g.: node, python +``` + +## `mise completion [SHELL]` + +```text +Generate shell completions + +Usage: completion [SHELL] + +Arguments: + [SHELL] + Shell type to generate completions for + + [possible values: bash, fish, zsh] + +Examples: + + $ mise completion bash > /etc/bash_completion.d/mise + $ mise completion zsh > /usr/local/share/zsh/site-functions/_mise + $ mise completion fish > ~/.config/fish/completions/mise.fish +``` + +## `mise config ls [OPTIONS]` + +```text +[experimental] List config files currently in use + +Usage: config ls [OPTIONS] + +Options: + --no-header + Do not print table header + +Examples: + + $ mise config ls +``` + +## `mise config generate [OPTIONS]` + +**Aliases:** `g` + +```text +[experimental] Generate an .mise.toml file + +Usage: config generate [OPTIONS] + +Options: + -o, --output + Output to file instead of stdout + +Examples: + + $ mise cf generate > .mise.toml + $ mise cf generate --output=.mise.toml +``` + +## `mise current [PLUGIN]` + +```text +Shows current active and installed runtime versions + +This is similar to `mise ls --current`, but this only shows the runtime +and/or version. It's designed to fit into scripts more easily. + +Usage: current [PLUGIN] + +Arguments: + [PLUGIN] + Plugin to show versions of e.g.: ruby, node, cargo:eza, npm:prettier, etc + +Examples: + # outputs `.tool-versions` compatible format + $ mise current + python 3.11.0 3.10.0 + shfmt 3.6.0 + shellcheck 0.9.0 + node 20.0.0 + + $ mise current node + 20.0.0 + + # can output multiple versions + $ mise current python + 3.11.0 3.10.0 +``` + +## `mise deactivate` + +```text +Disable mise for current shell session + +This can be used to temporarily disable mise in a shell session. + +Usage: deactivate + +Examples: + + $ mise deactivate bash + $ mise deactivate zsh + $ mise deactivate fish + $ execx($(mise deactivate xonsh)) +``` + +## `mise direnv activate` + +```text +Output direnv function to use mise inside direnv + +See https://mise.jdx.dev/direnv.html for more information + +Because this generates the legacy files based on currently installed plugins, +you should run this command after installing new plugins. Otherwise +direnv may not know to update environment variables when legacy file versions change. + +Usage: direnv activate + +Examples: + + $ mise direnv activate > ~/.config/direnv/lib/use_mise.sh + $ echo 'use mise' > .envrc + $ direnv allow +``` + +## `mise doctor` + +**Aliases:** `dr` + +```text +Check mise installation for possible problems + +Usage: doctor + +Examples: + + $ mise doctor + [WARN] plugin node is not installed +``` + +## `mise env [OPTIONS] [TOOL@VERSION]...` + +**Aliases:** `e` + +```text +Exports env vars to activate mise a single time + +Use this if you don't want to permanently install mise. It's not necessary to +use this if you have `mise activate` in your shell rc file. + +Usage: env [OPTIONS] [TOOL@VERSION]... + +Arguments: + [TOOL@VERSION]... + Tool(s) to use + +Options: + -J, --json + Output in JSON format + + -s, --shell + Shell type to generate environment variables for + + [possible values: bash, fish, nu, xonsh, zsh] + +Examples: + + $ eval "$(mise env -s bash)" + $ eval "$(mise env -s zsh)" + $ mise env -s fish | source + $ execx($(mise env -s xonsh)) +``` + +## `mise exec [OPTIONS] [TOOL@VERSION]... [-- ...]` + +**Aliases:** `x` + +```text +Execute a command with tool(s) set + +use this to avoid modifying the shell session or running ad-hoc commands with mise tools set. + +Tools will be loaded from .mise.toml/.tool-versions, though they can be overridden with args +Note that only the plugin specified will be overridden, so if a `.tool-versions` file +includes "node 20" but you run `mise exec python@3.11`; it will still load node@20. + +The "--" separates runtimes from the commands to pass along to the subprocess. + +Usage: exec [OPTIONS] [TOOL@VERSION]... [-- ...] + +Arguments: + [TOOL@VERSION]... + Tool(s) to start e.g.: node@20 python@3.10 + + [COMMAND]... + Command string to execute (same as --command) + +Options: + -c, --command + Command string to execute + + -j, --jobs + Number of jobs to run in parallel + [default: 4] + + [env: MISE_JOBS=] + + --raw + Directly pipe stdin/stdout/stderr from plugin to user Sets --jobs=1 + +Examples: + + $ mise exec node@20 -- node ./app.js # launch app.js using node-20.x + $ mise x node@20 -- node ./app.js # shorter alias + + # Specify command as a string: + $ mise exec node@20 python@3.11 --command "node -v && python -V" + + # Run a command in a different directory: + $ mise x -C /path/to/project node@20 -- node ./app.js +``` + +## `mise implode [OPTIONS]` + +```text +Removes mise CLI and all related data + +Skips config directory by default. + +Usage: implode [OPTIONS] + +Options: + --config + Also remove config directory + + -n, --dry-run + List directories that would be removed without actually removing them +``` + +## `mise install [OPTIONS] [TOOL@VERSION]...` + +**Aliases:** `i` + +```text +Install a tool version + +Installs a tool version to `~/.local/share/mise/installs//` +Installing alone will not activate the tools so they won't be in PATH. +To install and/or activate in one command, use `mise use` which will create a `.mise.toml` file +in the current directory to activate this tool when inside the directory. +Alternatively, run `mise exec @ -- ` to execute a tool without creating config files. + +Tools will be installed in parallel. To disable, set `--jobs=1` or `MISE_JOBS=1` + +Usage: install [OPTIONS] [TOOL@VERSION]... + +Arguments: + [TOOL@VERSION]... + Tool(s) to install e.g.: node@20 + +Options: + -f, --force + Force reinstall even if already installed + + -j, --jobs + Number of jobs to run in parallel + [default: 4] + + [env: MISE_JOBS=] + + --raw + Directly pipe stdin/stdout/stderr from plugin to user Sets --jobs=1 + + -v, --verbose... + Show installation output + + This argument will print plugin output such as download, configuration, and compilation output. + +Examples: + + $ mise install node@20.0.0 # install specific node version + $ mise install node@20 # install fuzzy node version + $ mise install node # install version specified in .tool-versions or .mise.toml + $ mise install # installs everything specified in .tool-versions or .mise.toml +``` + +## `mise latest [OPTIONS] ` + +```text +Gets the latest available version for a plugin + +Usage: latest [OPTIONS] + +Arguments: + + Tool to get the latest version of + +Options: + -i, --installed + Show latest installed instead of available version + +Examples: + + $ mise latest node@20 # get the latest version of node 20 + 20.0.0 + + $ mise latest node # get the latest stable version of node + 20.0.0 +``` + +## `mise link [OPTIONS] ` + +**Aliases:** `ln` + +```text +Symlinks a tool version into mise + +Use this for adding installs either custom compiled outside +mise or built with a different tool. + +Usage: link [OPTIONS] + +Arguments: + + Tool name and version to create a symlink for + + + The local path to the tool version + e.g.: ~/.nvm/versions/node/v20.0.0 + +Options: + -f, --force + Overwrite an existing tool version if it exists + +Examples: + # build node-20.0.0 with node-build and link it into mise + $ node-build 20.0.0 ~/.nodes/20.0.0 + $ mise link node@20.0.0 ~/.nodes/20.0.0 + + # have mise use the python version provided by Homebrew + $ brew install node + $ mise link node@brew $(brew --prefix node) + $ mise use node@brew +``` + +## `mise ls [OPTIONS] [PLUGIN]...` + +**Aliases:** `list` + +```text +List installed and active tool versions + +This command lists tools that mise "knows about". +These may be tools that are currently installed, or those +that are in a config file (active) but may or may not be installed. + +It's a useful command to get the current state of your tools. + +Usage: ls [OPTIONS] [PLUGIN]... + +Arguments: + [PLUGIN]... + Only show tool versions from [PLUGIN] + +Options: + -c, --current + Only show tool versions currently specified in a .tool-versions/.mise.toml + + -g, --global + Only show tool versions currently specified in a the global .tool-versions/.mise.toml + + -i, --installed + Only show tool versions that are installed (Hides tools defined in .tool-versions/.mise.toml but not installed) + + -J, --json + Output in JSON format + + -m, --missing + Display missing tool versions + + --prefix + Display versions matching this prefix + + --no-header + Don't display headers + +Examples: + + $ mise ls + node 20.0.0 ~/src/myapp/.tool-versions latest + python 3.11.0 ~/.tool-versions 3.10 + python 3.10.0 + + $ mise ls --current + node 20.0.0 ~/src/myapp/.tool-versions 20 + python 3.11.0 ~/.tool-versions 3.11.0 + + $ mise ls --json + { + "node": [ + { + "version": "20.0.0", + "install_path": "/Users/jdx/.mise/installs/node/20.0.0", + "source": { + "type": ".mise.toml", + "path": "/Users/jdx/.mise.toml" + } + } + ], + "python": [...] + } +``` + +## `mise ls-remote [OPTIONS] [TOOL@VERSION] [PREFIX]` + +```text +List runtime versions available for install + +note that the results are cached for 24 hours +run `mise cache clean` to clear the cache and get fresh results + +Usage: ls-remote [OPTIONS] [TOOL@VERSION] [PREFIX] + +Arguments: + [TOOL@VERSION] + Plugin to get versions for + + [PREFIX] + The version prefix to use when querying the latest version + same as the first argument after the "@" + +Options: + --all + Show all installed plugins and versions + +Examples: + + $ mise ls-remote node + 18.0.0 + 20.0.0 + + $ mise ls-remote node@20 + 20.0.0 + 20.1.0 + + $ mise ls-remote node 20 + 20.0.0 + 20.1.0 +``` + +## `mise outdated [OPTIONS] [TOOL@VERSION]...` + +```text +Shows outdated tool versions + +Usage: outdated [OPTIONS] [TOOL@VERSION]... + +Arguments: + [TOOL@VERSION]... + Tool(s) to show outdated versions for + e.g.: node@20 python@3.10 + If not specified, all tools in global and local configs will be shown + +Options: + -J, --json + Output in JSON format + +Examples: + + $ mise outdated + Plugin Requested Current Latest + python 3.11 3.11.0 3.11.1 + node 20 20.0.0 20.1.0 + + $ mise outdated node + Plugin Requested Current Latest + node 20 20.0.0 20.1.0 + + $ mise outdated --json + {"python": {"requested": "3.11", "current": "3.11.0", "latest": "3.11.1"}, ...} +``` + +## `mise plugins install [OPTIONS] [NEW_PLUGIN] [GIT_URL]` + +**Aliases:** `a, add, i` + +```text +Install a plugin + +note that mise automatically can install plugins when you install a tool +e.g.: `mise install node@20` will autoinstall the node plugin + +This behavior can be modified in ~/.config/mise/config.toml + +Usage: plugins install [OPTIONS] [NEW_PLUGIN] [GIT_URL] + +Arguments: + [NEW_PLUGIN] + The name of the plugin to install + e.g.: node, ruby + Can specify multiple plugins: `mise plugins install node ruby python` + + [GIT_URL] + The git url of the plugin + +Options: + -f, --force + Reinstall even if plugin exists + + -a, --all + Install all missing plugins + This will only install plugins that have matching shorthands. + i.e.: they don't need the full git repo url + + -v, --verbose... + Show installation output + +Examples: + # install the node via shorthand + $ mise plugins install node + + # install the node plugin using a specific git url + $ mise plugins install node https://github.com/mise-plugins/rtx-nodejs.git + + # install the node plugin using the git url only + # (node is inferred from the url) + $ mise plugins install https://github.com/mise-plugins/rtx-nodejs.git + + # install the node plugin using a specific ref + $ mise plugins install node https://github.com/mise-plugins/rtx-nodejs.git#v1.0.0 +``` + +## `mise plugins link [OPTIONS] [PATH]` + +**Aliases:** `ln` + +```text +Symlinks a plugin into mise + +This is used for developing a plugin. + +Usage: plugins link [OPTIONS] [PATH] + +Arguments: + + The name of the plugin + e.g.: node, ruby + + [PATH] + The local path to the plugin + e.g.: ./mise-node + +Options: + -f, --force + Overwrite existing plugin + +Examples: + # essentially just `ln -s ./mise-node ~/.local/share/mise/plugins/node` + $ mise plugins link node ./mise-node + + # infer plugin name as "node" + $ mise plugins link ./mise-node +``` + +## `mise plugins ls [OPTIONS]` + +**Aliases:** `list` + +```text +List installed plugins + +Can also show remotely available plugins to install. + +Usage: plugins ls [OPTIONS] + +Options: + -c, --core + The built-in plugins only + Normally these are not shown + + --user + List installed plugins + + This is the default behavior but can be used with --core + to show core and user plugins + + -u, --urls + Show the git url for each plugin + e.g.: https://github.com/asdf-vm/asdf-nodejs.git + +Examples: + + $ mise plugins ls + node + ruby + + $ mise plugins ls --urls + node https://github.com/asdf-vm/asdf-nodejs.git + ruby https://github.com/asdf-vm/asdf-ruby.git +``` + +## `mise plugins ls-remote [OPTIONS]` + +**Aliases:** `list-all, list-remote` + +```text +List all available remote plugins + +The full list is here: https://github.com/jdx/mise/blob/main/src/default_shorthands.rs + +Examples: + $ mise plugins ls-remote + + +Usage: plugins ls-remote [OPTIONS] + +Options: + -u, --urls + Show the git url for each plugin e.g.: https://github.com/mise-plugins/rtx-nodejs.git + + --only-names + Only show the name of each plugin by default it will show a "*" next to installed plugins +``` + +## `mise plugins uninstall [OPTIONS] [PLUGIN]...` + +**Aliases:** `remove, rm` + +```text +Removes a plugin + +Usage: plugins uninstall [OPTIONS] [PLUGIN]... + +Arguments: + [PLUGIN]... + Plugin(s) to remove + +Options: + -p, --purge + Also remove the plugin's installs, downloads, and cache + + -a, --all + Remove all plugins + +Examples: + + $ mise uninstall node +``` + +## `mise plugins update [OPTIONS] [PLUGIN]...` + +**Aliases:** `up, upgrade` + +```text +Updates a plugin to the latest version + +note: this updates the plugin itself, not the runtime versions + +Usage: plugins update [OPTIONS] [PLUGIN]... + +Arguments: + [PLUGIN]... + Plugin(s) to update + +Options: + -j, --jobs + Number of jobs to run in parallel + Default: 4 + +Examples: + + $ mise plugins update # update all plugins + $ mise plugins update node # update only node + $ mise plugins update node#beta # specify a ref +``` + +## `mise prune [OPTIONS] [PLUGIN]...` + +```text +Delete unused versions of tools + +mise tracks which config files have been used in ~/.local/share/mise/tracked_config_files +Versions which are no longer the latest specified in any of those configs are deleted. +Versions installed only with environment variables (`MISE__VERSION`) will be deleted, +as will versions only referenced on the command line (`mise exec @`). + +Usage: prune [OPTIONS] [PLUGIN]... + +Arguments: + [PLUGIN]... + Prune only versions from this plugin(s) + +Options: + -n, --dry-run + Do not actually delete anything + +Examples: + + $ mise prune --dry-run + rm -rf ~/.local/share/mise/versions/node/20.0.0 + rm -rf ~/.local/share/mise/versions/node/20.0.1 +``` + +## `mise reshim` + +```text +rebuilds the shim farm + +This creates new shims in ~/.local/share/mise/shims for CLIs that have been added. +mise will try to do this automatically for commands like `npm i -g` but there are +other ways to install things (like using yarn or pnpm for node) that mise does +not know about and so it will be necessary to call this explicitly. + +If you think mise should automatically call this for a particular command, please +open an issue on the mise repo. You can also setup a shell function to reshim +automatically (it's really fast so you don't need to worry about overhead): + +npm() { + command npm "$@" + mise reshim +} + +Usage: reshim + +Examples: + + $ mise reshim + $ ~/.local/share/mise/shims/node -v + v20.0.0 +``` + +## `mise run [OPTIONS] [TASK] [ARGS]...` + +**Aliases:** `r` + +```text +[experimental] Run a tasks + +This command will run a tasks, or multiple tasks in parallel. +Tasks may have dependencies on other tasks or on source files. +If source is configured on a tasks, it will only run if the source +files have changed. + +Tasks can be defined in .mise.toml or as standalone scripts. +In .mise.toml, tasks take this form: + + [tasks.build] + run = "npm run build" + sources = ["src/**/*.ts"] + outputs = ["dist/**/*.js"] + +Alternatively, tasks can be defined as standalone scripts. +These must be located in the `.mise/tasks` directory. +The name of the script will be the name of the tasks. + + $ cat .mise/tasks/build< + Change to this directory before executing the command + + -n, --dry-run + Don't actually run the tasks(s), just print them in order of execution + + -f, --force + Force the tasks to run even if outputs are up to date + + -p, --prefix + Print stdout/stderr by line, prefixed with the tasks's label + Defaults to true if --jobs > 1 + Configure with `task_output` config or `MISE_TASK_OUTPUT` env var + + -i, --interleave + Print directly to stdout/stderr instead of by line + Defaults to true if --jobs == 1 + Configure with `task_output` config or `MISE_TASK_OUTPUT` env var + + -t, --tool + Tool(s) to also add e.g.: node@20 python@3.10 + + -j, --jobs + Number of tasks to run in parallel + [default: 4] + Configure with `jobs` config or `MISE_JOBS` env var + + [env: MISE_JOBS=] + + -r, --raw + Read/write directly to stdin/stdout/stderr instead of by line + Configure with `raw` config or `MISE_RAW` env var + + --timings + Shows elapsed time after each tasks + +Examples: + + # Runs the "lint" tasks. This needs to either be defined in .mise.toml + # or as a standalone script. See the project README for more information. + $ mise run lint + + # Forces the "build" tasks to run even if its sources are up-to-date. + $ mise run build --force + + # Run "test" with stdin/stdout/stderr all connected to the current terminal. + # This forces `--jobs=1` to prevent interleaving of output. + $ mise run test --raw + + # Runs the "lint", "test", and "check" tasks in parallel. + $ mise run lint ::: test ::: check + + # Execute multiple tasks each with their own arguments. + $ mise tasks cmd1 arg1 arg2 ::: cmd2 arg1 arg2 +``` + +## `mise self-update [OPTIONS] [VERSION]` + +```text +Updates mise itself + +Uses the GitHub Releases API to find the latest release and binary +By default, this will also update any installed plugins + +Usage: self-update [OPTIONS] [VERSION] + +Arguments: + [VERSION] + Update to a specific version + +Options: + -f, --force + Update even if already up to date + + --no-plugins + Disable auto-updating plugins + + -y, --yes + Skip confirmation prompt +``` + +## `mise set [OPTIONS] [ENV_VARS]...` + +```text +Manage environment variables + +By default this command modifies ".mise.toml" in the current directory. + +Usage: set [OPTIONS] [ENV_VARS]... + +Arguments: + [ENV_VARS]... + Environment variable(s) to set + e.g.: NODE_ENV=production + +Options: + --file + The TOML file to update + + Defaults to MISE_DEFAULT_CONFIG_FILENAME environment variable, or ".mise.toml". + + -g, --global + Set the environment variable in the global config file + +Examples: + + $ mise set NODE_ENV=production + + $ mise set NODE_ENV + production + + $ mise set + key value source + NODE_ENV production ~/.config/mise/config.toml +``` + +## `mise settings get ` + +```text +Show a current setting + +This is the contents of a single entry in ~/.config/mise/config.toml + +Note that aliases are also stored in this file +but managed separately with `mise aliases get` + +Usage: settings get + +Arguments: + + The setting to show + +Examples: + + $ mise settings get legacy_version_file + true +``` + +## `mise settings ls [OPTIONS]` + +**Aliases:** `list` + +```text +Show current settings + +This is the contents of ~/.config/mise/config.toml + +Note that aliases are also stored in this file +but managed separately with `mise aliases` + +Usage: settings ls [OPTIONS] + +Options: + --keys + Only display key names for each setting + +Examples: + + $ mise settings + legacy_version_file = false +``` + +## `mise settings set ` + +**Aliases:** `add, create` + +```text +Add/update a setting + +This modifies the contents of ~/.config/mise/config.toml + +Usage: settings set + +Arguments: + + The setting to set + + + The value to set + +Examples: + + $ mise settings set legacy_version_file true +``` + +## `mise settings unset ` + +**Aliases:** `del, delete, remove, rm` + +```text +Clears a setting + +This modifies the contents of ~/.config/mise/config.toml + +Usage: settings unset + +Arguments: + + The setting to remove + +Examples: + + $ mise settings unset legacy_version_file +``` + +## `mise shell [OPTIONS] [TOOL@VERSION]...` + +**Aliases:** `sh` + +```text +Sets a tool version for the current session + +Only works in a session where mise is already activated. + +This works by setting environment variables for the current shell session +such as `MISE_NODE_VERSION=20` which is "eval"ed as a shell function created +by `mise activate`. + +Usage: shell [OPTIONS] [TOOL@VERSION]... + +Arguments: + [TOOL@VERSION]... + Tool(s) to use + +Options: + -j, --jobs + Number of jobs to run in parallel + [default: 4] + + [env: MISE_JOBS=] + + --raw + Directly pipe stdin/stdout/stderr from plugin to user Sets --jobs=1 + + -u, --unset + Removes a previously set version + +Examples: + + $ mise shell node@20 + $ node -v + v20.0.0 +``` + +## `mise sync node <--brew|--nvm|--nodenv>` + +```text +Symlinks all tool versions from an external tool into mise + +For example, use this to import all Homebrew node installs into mise + +Usage: sync node <--brew|--nvm|--nodenv> + +Options: + --brew + Get tool versions from Homebrew + + --nvm + Get tool versions from nvm + + --nodenv + Get tool versions from nodenv + +Examples: + + $ brew install node@18 node@20 + $ mise sync node --brew + $ mise use -g node@18 - uses Homebrew-provided node +``` + +## `mise sync python --pyenv` + +```text +Symlinks all tool versions from an external tool into mise + +For example, use this to import all pyenv installs into mise + +Usage: sync python --pyenv + +Options: + --pyenv + Get tool versions from pyenv + +Examples: + + $ pyenv install 3.11.0 + $ mise sync python --pyenv + $ mise use -g python@3.11.0 - uses pyenv-provided python +``` + +## `mise tasks deps [OPTIONS] [TASKS]...` + +```text +[experimental] Display a tree visualization of a dependency graph + +Usage: tasks deps [OPTIONS] [TASKS]... + +Arguments: + [TASKS]... + Tasks to show dependencies for + Can specify multiple tasks by separating with spaces + e.g.: mise tasks deps lint test check + +Options: + --hidden + Show hidden tasks + + --dot + Display dependencies in DOT format + +Examples: + + # Show dependencies for all tasks + $ mise tasks deps + + # Show dependencies for the "lint", "test" and "check" tasks + $ mise tasks deps lint test check + + # Show dependencies in DOT format + $ mise tasks deps --dot +``` + +## `mise tasks edit [OPTIONS] ` + +```text +[experimental] Edit a tasks with $EDITOR + +The tasks will be created as a standalone script if it does not already exist. + +Usage: tasks edit [OPTIONS] + +Arguments: + + Tasks to edit + +Options: + -p, --path + Display the path to the tasks instead of editing it + +Examples: + + $ mise tasks edit build + $ mise tasks edit test +``` + +## `mise tasks ls [OPTIONS]` + +```text +[experimental] List available tasks to execute +These may be included from the config file or from the project's .mise/tasks directory +mise will merge all tasks from all parent directories into this list. + +So if you have global tasks in ~/.config/mise/tasks/* and project-specific tasks in +~/myproject/.mise/tasks/*, then they'll both be available but the project-specific +tasks will override the global ones if they have the same name. + +Usage: tasks ls [OPTIONS] + +Options: + --no-header + Do not print table header + + -x, --extended + Show all columns + + --hidden + Show hidden tasks + + --sort + Sort by column. Default is name. + + [possible values: name, alias, description, source] + + --sort-order + Sort order. Default is asc. + + [possible values: asc, desc] + +Examples: + + $ mise tasks ls +``` + +## `mise tasks run [OPTIONS] [TASK] [ARGS]...` + +**Aliases:** `r` + +```text +[experimental] Run a tasks + +This command will run a tasks, or multiple tasks in parallel. +Tasks may have dependencies on other tasks or on source files. +If source is configured on a tasks, it will only run if the source +files have changed. + +Tasks can be defined in .mise.toml or as standalone scripts. +In .mise.toml, tasks take this form: + + [tasks.build] + run = "npm run build" + sources = ["src/**/*.ts"] + outputs = ["dist/**/*.js"] + +Alternatively, tasks can be defined as standalone scripts. +These must be located in the `.mise/tasks` directory. +The name of the script will be the name of the tasks. + + $ cat .mise/tasks/build< + Change to this directory before executing the command + + -n, --dry-run + Don't actually run the tasks(s), just print them in order of execution + + -f, --force + Force the tasks to run even if outputs are up to date + + -p, --prefix + Print stdout/stderr by line, prefixed with the tasks's label + Defaults to true if --jobs > 1 + Configure with `task_output` config or `MISE_TASK_OUTPUT` env var + + -i, --interleave + Print directly to stdout/stderr instead of by line + Defaults to true if --jobs == 1 + Configure with `task_output` config or `MISE_TASK_OUTPUT` env var + + -t, --tool + Tool(s) to also add e.g.: node@20 python@3.10 + + -j, --jobs + Number of tasks to run in parallel + [default: 4] + Configure with `jobs` config or `MISE_JOBS` env var + + [env: MISE_JOBS=] + + -r, --raw + Read/write directly to stdin/stdout/stderr instead of by line + Configure with `raw` config or `MISE_RAW` env var + + --timings + Shows elapsed time after each tasks + +Examples: + + # Runs the "lint" tasks. This needs to either be defined in .mise.toml + # or as a standalone script. See the project README for more information. + $ mise run lint + + # Forces the "build" tasks to run even if its sources are up-to-date. + $ mise run build --force + + # Run "test" with stdin/stdout/stderr all connected to the current terminal. + # This forces `--jobs=1` to prevent interleaving of output. + $ mise run test --raw + + # Runs the "lint", "test", and "check" tasks in parallel. + $ mise run lint ::: test ::: check + + # Execute multiple tasks each with their own arguments. + $ mise tasks cmd1 arg1 arg2 ::: cmd2 arg1 arg2 +``` + +## `mise trust [OPTIONS] [CONFIG_FILE]` + +```text +Marks a config file as trusted + +This means mise will parse the file with potentially dangerous +features enabled. + +This includes: +- environment variables +- templates +- `path:` plugin versions + +Usage: trust [OPTIONS] [CONFIG_FILE] + +Arguments: + [CONFIG_FILE] + The config file to trust + +Options: + -a, --all + Trust all config files in the current directory and its parents + + --untrust + No longer trust this config + +Examples: + # trusts ~/some_dir/.mise.toml + $ mise trust ~/some_dir/.mise.toml + + # trusts .mise.toml in the current or parent directory + $ mise trust +``` + +## `mise uninstall [OPTIONS] [INSTALLED_TOOL@VERSION]...` + +**Aliases:** `remove, rm` + +```text +Removes runtime versions + +Usage: uninstall [OPTIONS] [INSTALLED_TOOL@VERSION]... + +Arguments: + [INSTALLED_TOOL@VERSION]... + Tool(s) to remove + +Options: + -a, --all + Delete all installed versions + + -n, --dry-run + Do not actually delete anything + +Examples: + + $ mise uninstall node@18.0.0 # will uninstall specific version + $ mise uninstall node # will uninstall current node version + $ mise uninstall --all node@18.0.0 # will uninstall all node versions +``` + +## `mise unset [OPTIONS] [KEYS]...` + +```text +Remove environment variable(s) from the config file + +By default this command modifies ".mise.toml" in the current directory. + +Usage: unset [OPTIONS] [KEYS]... + +Arguments: + [KEYS]... + Environment variable(s) to remove + e.g.: NODE_ENV + +Options: + -f, --file + Specify a file to use instead of ".mise.toml" + + -g, --global + Use the global config file +``` + +## `mise upgrade [OPTIONS] [TOOL@VERSION]...` + +**Aliases:** `up` + +```text +Upgrades outdated tool versions + +Usage: upgrade [OPTIONS] [TOOL@VERSION]... + +Arguments: + [TOOL@VERSION]... + Tool(s) to upgrade + e.g.: node@20 python@3.10 + If not specified, all current tools will be upgraded + +Options: + -n, --dry-run + Just print what would be done, don't actually do it + + -j, --jobs + Number of jobs to run in parallel + [default: 4] + + [env: MISE_JOBS=] + + -i, --interactive + Display multiselect menu to choose which tools to upgrade + + --raw + Directly pipe stdin/stdout/stderr from plugin to user Sets --jobs=1 +``` + +## `mise usage` + +```text +Generate a usage CLI spec + +See https://usage.jdx.dev for more information + +Usage: usage +``` + +## `mise use [OPTIONS] [TOOL@VERSION]...` + +**Aliases:** `u` + +```text +Install tool version and add it to config + +This will install the tool if it is not already installed. +By default, this will use an `.mise.toml` file in the current directory. +Use the --global flag to use the global config file instead. +This replaces asdf's `local` and `global` commands, however those are still available in mise. + +Usage: use [OPTIONS] [TOOL@VERSION]... + +Arguments: + [TOOL@VERSION]... + Tool(s) to add to config file + e.g.: node@20, cargo:ripgrep@latest npm:prettier@3 + If no version is specified, it will default to @latest + +Options: + -f, --force + Force reinstall even if already installed + + --fuzzy + Save fuzzy version to config file + e.g.: `mise use --fuzzy node@20` will save 20 as the version + this is the default behavior unless MISE_ASDF_COMPAT=1 + + -g, --global + Use the global config file (~/.config/mise/config.toml) instead of the local one + + -e, --env + Modify an environment-specific config file like .mise..toml + + -j, --jobs + Number of jobs to run in parallel + [default: 4] + + [env: MISE_JOBS=] + + --raw + Directly pipe stdin/stdout/stderr from plugin to user Sets --jobs=1 + + --remove + Remove the plugin(s) from config file + + -p, --path + Specify a path to a config file or directory If a directory is specified, it will look for .mise.toml (default) or .tool-versions + + --pin + Save exact version to config file + e.g.: `mise use --pin node@20` will save 20.0.0 as the version + Set MISE_ASDF_COMPAT=1 to make this the default behavior + +Examples: + + # set the current version of node to 20.x in .mise.toml of current directory + # will write the fuzzy version (e.g.: 20) + $ mise use node@20 + + # set the current version of node to 20.x in ~/.config/mise/config.toml + # will write the precise version (e.g.: 20.0.0) + $ mise use -g --pin node@20 + + # sets .mise.local.toml (which is intended not to be committed to a project) + $ mise use --env local node@20 + + # sets .mise.staging.toml (which is used if MISE_ENV=staging) + $ mise use --env staging node@20 +``` + +## `mise version` + +```text +Show mise version + +Usage: version +``` + +## `mise watch [OPTIONS] [ARGS]...` + +**Aliases:** `w` + +```text +[experimental] Run a tasks watching for changes + +Usage: watch [OPTIONS] [ARGS]... + +Arguments: + [ARGS]... + Extra arguments + +Options: + -t, --task + Tasks to run + + [default: default] + + -g, --glob + Files to watch + Defaults to sources from the tasks(s) + +Examples: + $ mise watch -t build + Runs the "build" tasks. Will re-run the tasks when any of its sources change. + Uses "sources" from the tasks definition to determine which files to watch. + + $ mise watch -t build --glob src/**/*.rs + Runs the "build" tasks but specify the files to watch with a glob pattern. + This overrides the "sources" from the tasks definition. + + $ mise run -t build --clear + Extra arguments are passed to watchexec. See `watchexec --help` for details. +``` + +## `mise where ` + +```text +Display the installation path for a runtime + +Must be installed. + +Usage: where + +Arguments: + + Tool(s) to look up + e.g.: ruby@3 + if "@" is specified, it will show the latest installed version + that matches the prefix + otherwise, it will show the current, active installed version + +Examples: + # Show the latest installed version of node + # If it is is not installed, errors + $ mise where node@20 + /home/jdx/.local/share/mise/installs/node/20.0.0 + + # Show the current, active install directory of node + # Errors if node is not referenced in any .tool-version file + $ mise where node + /home/jdx/.local/share/mise/installs/node/20.0.0 +``` + +## `mise which [OPTIONS] ` + +```text +Shows the path that a bin name points to + +Usage: which [OPTIONS] + +Arguments: + + The bin name to look up + +Options: + --plugin + Show the plugin name instead of the path + + --version + Show the version instead of the path + + -t, --tool + Use a specific tool@version + e.g.: `mise which npm --tool=node@20` + +Examples: + + $ mise which node + /home/username/.local/share/mise/installs/node/20.0.0/bin/node + $ mise which node --plugin + node + $ mise which node --version + 20.0.0 +``` + + diff --git a/docs/demo.gif b/docs/demo.gif new file mode 100644 index 000000000..7e11432be Binary files /dev/null and b/docs/demo.gif differ diff --git a/docs/demo.sh b/docs/demo.sh new file mode 100755 index 000000000..f60cbf288 --- /dev/null +++ b/docs/demo.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -e + +cd +mkdir -p ~/myproj +rm -rf ~/myproj/.* ~/.mise/installs ~/.config/mise +PATH="$HOME/.cargo/bin:$PATH" vhs <~/src/mise/docs/demo.tape +rm -rf ~/myproj diff --git a/docs/demo.tape b/docs/demo.tape new file mode 100644 index 000000000..521b76f58 --- /dev/null +++ b/docs/demo.tape @@ -0,0 +1,87 @@ +# VHS documentation +# +# Output: +# Output .gif Create a GIF output at the given +# Output .mp4 Create an MP4 output at the given +# Output .webm Create a WebM output at the given +# +# Require: +# Require Ensure a program is on the $PATH to proceed +# +# Settings: +# Set FontSize Set the font size of the terminal +# Set FontFamily Set the font family of the terminal +# Set Height Set the height of the terminal +# Set Width Set the width of the terminal +# Set LetterSpacing Set the font letter spacing (tracking) +# Set LineHeight Set the font line height +# Set LoopOffset % Set the starting frame offset for the GIF loop +# Set Theme Set the theme of the terminal +# Set Padding Set the padding of the terminal +# Set Framerate Set the framerate of the recording +# Set PlaybackSpeed Set the playback speed of the recording +# +# Sleep: +# Sleep