From d9891d9f0c492b8440140dcc74b7999341a555cb Mon Sep 17 00:00:00 2001 From: mrxiaozhuox Date: Thu, 18 Aug 2022 15:54:42 -0700 Subject: [PATCH] feat: commit `build` field --- Cargo.lock | 333 +++++++++++++++--------------------- src/cli/build/mod.rs | 6 +- src/cli/mod.rs | 14 ++ src/main.rs | 4 +- src/plugin/argument/mod.rs | 0 src/plugin/interface/mod.rs | 77 ++++++--- src/plugin/interface/os.rs | 2 - src/plugin/mod.rs | 55 ++++-- src/server/mod.rs | 6 +- 9 files changed, 249 insertions(+), 248 deletions(-) create mode 100644 src/plugin/argument/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 97e4d0a6f..a7644663c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,7 +26,7 @@ dependencies = [ "cfg-if", "cipher", "cpufeatures", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] @@ -39,10 +39,19 @@ dependencies = [ ] [[package]] -name = "anyhow" -version = "1.0.58" +name = "android_system_properties" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" +checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "508b352bb5c066aac251f6daf6b36eccd03e8a88e8081cd44959ea277a3af9a8" [[package]] name = "arrayref" @@ -58,9 +67,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "async-trait" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" dependencies = [ "proc-macro2", "quote", @@ -86,9 +95,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c943a505c17b494638a38a9af129067f760c9c06794b9f57d499266909be8e72" +checksum = "9de18bc5f2e9df8f52da03856bf40e29b747de5a84e43aefff90e3dc4a21529b" dependencies = [ "async-trait", "axum-core", @@ -109,7 +118,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sha-1 0.10.0", + "sha-1", "sync_wrapper", "tokio", "tokio-tungstenite", @@ -204,34 +213,13 @@ dependencies = [ "constant_time_eq", ] -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] - [[package]] name = "block-buffer" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" dependencies = [ - "generic-array 0.14.5", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", + "generic-array", ] [[package]] @@ -249,12 +237,6 @@ version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - [[package]] name = "byteorder" version = "1.4.3" @@ -263,9 +245,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" [[package]] name = "bzip2" @@ -290,9 +272,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.0.9" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "869119e97797867fd90f5e22af7d0bd274bd4635ebb9eb68c04f3f513ae6c412" +checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" dependencies = [ "serde", ] @@ -347,14 +329,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" dependencies = [ - "libc", + "iana-time-zone", + "js-sys", "num-integer", "num-traits", "time 0.1.44", + "wasm-bindgen", "winapi", ] @@ -364,14 +348,14 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.5", + "generic-array", ] [[package]] name = "clap" -version = "3.2.15" +version = "3.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bbe24bbd31a185bc2c4f7c2abe80bea13a20d57ee4e55be70ac512bdc76417" +checksum = "29e724a68d9319343bb3328c9cc2dfde263f4b3142ee1059a9980580171c954b" dependencies = [ "atty", "bitflags", @@ -386,9 +370,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.2.15" +version = "3.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba52acd3b0a5c33aeada5cdaa3267cdc7c594a98731d4268cdc1532f4264cb4" +checksum = "13547f7012c01ab4a0e8f8967730ada8f9fdf419e8b6c792788f39cf4e46eefa" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -430,14 +414,13 @@ dependencies = [ [[package]] name = "console" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28b32d32ca44b70c3e4acd7db1babf555fa026e385fb95f18028f88848b3c31" +checksum = "89eab4d20ce20cea182308bca13088fecea9c05f6776cf287205d41a0ed3c847" dependencies = [ "encode_unicode", "libc", "once_cell", - "regex", "terminal_size", "unicode-width", "winapi", @@ -515,7 +498,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.5", + "generic-array", "typenum", ] @@ -589,22 +572,13 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - [[package]] name = "digest" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ - "block-buffer 0.10.2", + "block-buffer", "crypto-common", "subtle", ] @@ -612,7 +586,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.2.4" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "dioxus-core", "dioxus-core-macro", @@ -670,7 +644,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.2.1" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "backtrace", "bumpalo", @@ -689,7 +663,7 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.2.1" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "dioxus-rsx", "dioxus-rsx-interpreter", @@ -701,7 +675,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.2.1" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "dioxus-core", "futures-channel", @@ -711,7 +685,7 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.2.1" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "dioxus-core", "enumset", @@ -722,7 +696,7 @@ dependencies = [ [[package]] name = "dioxus-rsx" version = "0.0.0" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "proc-macro2", "quote", @@ -732,7 +706,7 @@ dependencies = [ [[package]] name = "dioxus-rsx-interpreter" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "dioxus-core", "dioxus-hooks", @@ -750,7 +724,7 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.2.1" -source = "git+https://github.com/dioxuslabs/dioxus/#15e9aa1958d45438a537a4bb01da0b79c5a3d54d" +source = "git+https://github.com/dioxuslabs/dioxus/#baf180733871848a178a5397a1e1934c768e04e8" dependencies = [ "dioxus-core", ] @@ -865,12 +839,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fastrand" version = "1.8.0" @@ -960,9 +928,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +checksum = "ab30e97ab6aacfe635fad58f22c2bb06c8b685f7421eb1e064a729e2a5f481fa" dependencies = [ "futures-channel", "futures-core", @@ -975,9 +943,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "2bfc52cbddcfd745bf1740338492bb0bd83d76c67b445f91c5fb29fae29ecaa1" dependencies = [ "futures-core", "futures-sink", @@ -985,15 +953,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "d2acedae88d38235936c3922476b10fced7b2b68136f5e3c03c2d5be348a1115" [[package]] name = "futures-executor" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +checksum = "1d11aa21b5b587a64682c0094c2bdd4df0076c5324961a40cc3abd7f37930528" dependencies = [ "futures-core", "futures-task", @@ -1002,15 +970,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "93a66fc6d035a26a3ae255a6d2bca35eda63ae4c5512bef54449113f7a1228e5" [[package]] name = "futures-macro" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +checksum = "0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045d" dependencies = [ "proc-macro2", "quote", @@ -1019,21 +987,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "ca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "842fc63b931f4056a24d59de13fb1272134ce261816e063e634ad0c15cdc5306" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "f0828a5471e340229c11c77ca80017937ce3c58cb788a17e5f1c2d5c485a9577" dependencies = [ "futures-channel", "futures-core", @@ -1058,18 +1026,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.12.4" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -1141,7 +1100,7 @@ dependencies = [ "http", "httpdate", "mime", - "sha-1 0.10.0", + "sha-1", ] [[package]] @@ -1189,7 +1148,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.3", + "digest", ] [[package]] @@ -1307,6 +1266,19 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf7d67cf4a22adc5be66e75ebdf769b3f2ea032041437a7061f97a63dad4b" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "js-sys", + "wasm-bindgen", + "winapi", +] + [[package]] name = "id-arena" version = "2.2.1" @@ -1342,9 +1314,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.0-rc.11" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017d0ce94b8e91e29d2c78ed891e57e5ec3dc4371820a9d96abab4af09eb8ad" +checksum = "fcc42b206e70d86ec03285b123e65a5458c92027d1fb2ae3555878b8113b3ddf" dependencies = [ "console", "number_prefix", @@ -1409,9 +1381,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "jobserver" @@ -1476,9 +1448,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.126" +version = "0.2.131" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "04c3b4822ccebfa39c02fc03d1534441b22ead323fa0f48bb7ddd8e6ba076a40" [[package]] name = "libz-sys" @@ -1543,19 +1515,13 @@ dependencies = [ [[package]] name = "luajit-src" -version = "210.4.0+resty124ff8d" +version = "210.4.1+restyaa7a722" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f76fb2e2c0c7192e18719d321c9a148f7625c4dcbe3df5f4c19e685e4c286f6c" +checksum = "c92879345f9a97ee140cfe2e08eff49b101533d784527d46ce6d2dc0096d27b3" dependencies = [ "cc", ] -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - [[package]] name = "match_cfg" version = "0.1.0" @@ -1619,9 +1585,9 @@ dependencies = [ [[package]] name = "mlua" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb4815a6d6a3bd1c23e6c647f7df18c9800c12e80526a98e18d7decd7cedcd" +checksum = "10277581090f5cb7ecf814bc611152ce4db6dc8deffcaa08e24ed4c5197d9186" dependencies = [ "bstr", "cc", @@ -1656,9 +1622,9 @@ dependencies = [ [[package]] name = "notify" -version = "5.0.0-pre.15" +version = "5.0.0-pre.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "553f9844ad0b0824605c20fb55a661679782680410abfb1a8144c2e7e437e7a7" +checksum = "530f6314d6904508082f4ea424a0275cf62d341e118b313663f266429cb19693" dependencies = [ "bitflags", "crossbeam-channel", @@ -1732,12 +1698,6 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - [[package]] name = "opaque-debug" version = "0.3.0" @@ -1791,9 +1751,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.2.0" +version = "6.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" [[package]] name = "parking_lot" @@ -1835,7 +1795,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" dependencies = [ - "digest 0.10.3", + "digest", "hmac", "password-hash", "sha2", @@ -1849,18 +1809,19 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pest" -version = "2.1.3" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +checksum = "69486e2b8c2d2aeb9762db7b4e00b0331156393555cff467f4163ff06821eef8" dependencies = [ + "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" +checksum = "b13570633aff33c6d22ce47dd566b10a3b9122c2fe9d8e7501895905be532b91" dependencies = [ "pest", "pest_generator", @@ -1868,9 +1829,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.1.3" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" +checksum = "b3c567e5702efdc79fb18859ea74c3eb36e14c43da7b8c1f098a4ed6514ec7a0" dependencies = [ "pest", "pest_meta", @@ -1881,13 +1842,13 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.1.3" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" +checksum = "5eb32be5ee3bbdafa8c7a18b0a8a8d962b66cfa2ceee4037f49267a50ee821fe" dependencies = [ - "maplit", + "once_cell", "pest", - "sha-1 0.8.2", + "sha-1", ] [[package]] @@ -1960,9 +1921,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -1975,9 +1936,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] @@ -2182,18 +2143,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7522c9de787ff061458fe9a829dc790a3f5b22dc571694fc5883f448b94d9a9" +checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" dependencies = [ "base64 0.13.0", ] [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "safemem" @@ -2261,27 +2222,27 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1" +checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.140" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" +checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.140" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" +checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391" dependencies = [ "proc-macro2", "quote", @@ -2290,9 +2251,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" dependencies = [ "itoa", "ryu", @@ -2311,18 +2272,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - [[package]] name = "sha-1" version = "0.10.0" @@ -2331,7 +2280,7 @@ checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.3", + "digest", ] [[package]] @@ -2342,7 +2291,7 @@ checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.3", + "digest", ] [[package]] @@ -2353,7 +2302,7 @@ checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.3", + "digest", ] [[package]] @@ -2416,9 +2365,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -2495,18 +2444,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" dependencies = [ "proc-macro2", "quote", @@ -2526,9 +2475,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +checksum = "db76ff9fa4b1458b3c7f077f3ff9887394058460d21e634355b273aaf11eea45" dependencies = [ "itoa", "libc", @@ -2719,9 +2668,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" dependencies = [ "cfg-if", "log", @@ -2731,9 +2680,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" dependencies = [ "once_cell", ] @@ -2802,7 +2751,7 @@ dependencies = [ "httparse", "log", "rand", - "sha-1 0.10.0", + "sha-1", "thiserror", "url", "utf-8", @@ -2837,9 +2786,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "unicode-normalization" @@ -3363,7 +3312,7 @@ dependencies = [ "hmac", "pbkdf2", "sha1", - "time 0.3.11", + "time 0.3.13", "zstd", ] diff --git a/src/cli/build/mod.rs b/src/cli/build/mod.rs index f857bfc13..42fcc4c0a 100644 --- a/src/cli/build/mod.rs +++ b/src/cli/build/mod.rs @@ -1,3 +1,5 @@ +use crate::plugin::PluginManager; + use super::*; /// Build the Rust WASM app and all of its assets. @@ -9,7 +11,7 @@ pub struct Build { } impl Build { - pub fn build(self) -> Result<()> { + pub fn build(self, plugin_manager: PluginManager) -> Result<()> { let mut crate_config = crate::CrateConfig::new()?; // change the release state. @@ -32,6 +34,8 @@ impl Build { .clone() }); + let _ = plugin_manager.on_build_event(&crate_config, &platform); + match platform.as_str() { "web" => { crate::builder::build(&crate_config, false)?; diff --git a/src/cli/mod.rs b/src/cli/mod.rs index b456d4705..818b3fa8f 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -56,3 +56,17 @@ pub enum Commands { #[clap(subcommand)] Tool(tool::Tool), } + +impl Commands { + pub fn to_string(&self) -> String { + match self { + Commands::Build(_) => "build", + Commands::Translate(_) => "translate", + Commands::Serve(_) => "sevre", + Commands::Create(_) => "create", + Commands::Clean(_) => "clean", + Commands::Config(_) => "config", + Commands::Tool(_) => "tool", + }.to_string() + } +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index bc36e1071..7758c6a63 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,8 +11,6 @@ async fn main() -> Result<()> { required: vec![], }).unwrap(); - plugin_manager.load_all_plugins().unwrap(); - match args.action { Commands::Translate(opts) => { if let Err(e) = opts.translate() { @@ -21,7 +19,7 @@ async fn main() -> Result<()> { } Commands::Build(opts) => { - if let Err(e) = opts.build() { + if let Err(e) = opts.build(plugin_manager) { log::error!("🚫 Build project failed: {}", e); } } diff --git a/src/plugin/argument/mod.rs b/src/plugin/argument/mod.rs new file mode 100644 index 000000000..e69de29bb diff --git a/src/plugin/interface/mod.rs b/src/plugin/interface/mod.rs index 6ac9730e1..e5abeafb6 100644 --- a/src/plugin/interface/mod.rs +++ b/src/plugin/interface/mod.rs @@ -1,12 +1,12 @@ use mlua::{FromLua, Function, ToLua}; -pub mod log; pub mod command; -pub mod fs; -pub mod network; pub mod dirs; -pub mod path; +pub mod fs; +pub mod log; +pub mod network; pub mod os; +pub mod path; #[derive(Debug, Clone)] pub struct PluginInfo<'lua> { @@ -16,9 +16,7 @@ pub struct PluginInfo<'lua> { pub version: String, pub on_init: Option>, - pub on_load: Option>, - pub on_build_start: Option>, - pub on_build_finish: Option>, + pub build: PluginBuildInfo<'lua>, } impl<'lua> FromLua<'lua> for PluginInfo<'lua> { @@ -30,9 +28,7 @@ impl<'lua> FromLua<'lua> for PluginInfo<'lua> { version: String::from("0.1.0"), on_init: None, - on_load: None, - on_build_start: None, - on_build_finish: None, + build: Default::default(), }; if let mlua::Value::Table(tab) = lua_value { if let Ok(v) = tab.get::<_, String>("name") { @@ -51,16 +47,6 @@ impl<'lua> FromLua<'lua> for PluginInfo<'lua> { if let Ok(v) = tab.get::<_, Function>("on_init") { res.on_init = Some(v); } - if let Ok(v) = tab.get::<_, Function>("on_load") { - res.on_load = Some(v); - } - if let Ok(v) = tab.get::<_, Function>("on_build_start") { - res.on_build_start = Some(v); - } - if let Ok(v) = tab.get::<_, Function>("on_build_finish") { - res.on_build_finish = Some(v); - } - } Ok(res) @@ -69,9 +55,8 @@ impl<'lua> FromLua<'lua> for PluginInfo<'lua> { impl<'lua> ToLua<'lua> for PluginInfo<'lua> { fn to_lua(self, lua: &'lua mlua::Lua) -> mlua::Result> { - let res = lua.create_table()?; - + res.set("name", self.name.to_string())?; res.set("repository", self.repository.to_string())?; res.set("author", self.author.to_string())?; @@ -80,14 +65,50 @@ impl<'lua> ToLua<'lua> for PluginInfo<'lua> { if let Some(e) = self.on_init { res.set("on_init", e)?; } - if let Some(e) = self.on_load { - res.set("on_load", e)?; + res.set("build", self.build)?; + + Ok(mlua::Value::Table(res)) + } +} + +#[derive(Debug, Clone, Default)] +pub struct PluginBuildInfo<'lua> { + pub on_start: Option>, + pub on_finish: Option>, +} + +impl<'lua> FromLua<'lua> for PluginBuildInfo<'lua> { + fn from_lua(lua_value: mlua::Value<'lua>, _lua: &'lua mlua::Lua) -> mlua::Result { + let mut res = Self { + on_start: None, + on_finish: None, + }; + + if let mlua::Value::Table(t) = lua_value { + if let Ok(v) = t.get::<_, Function>("on_start") { + res.on_start = Some(v); + } + if let Ok(v) = t.get::<_, Function>("on_finish") { + res.on_finish = Some(v); + } } - if let Some(e) = self.on_build_start { - res.set("on_build_start", e)?; + + Ok(res) + } +} + +impl<'lua> ToLua<'lua> for PluginBuildInfo<'lua> { + fn to_lua(self, lua: &'lua mlua::Lua) -> mlua::Result> { + + let res = lua.create_table()?; + + + if let Some(v) = self.on_start { + res.set("on_start", v)?; } - if let Some(e) = self.on_build_finish { - res.set("on_build_finish", e)?; + + if let Some(v) = self.on_finish { + res.set("on_finish", v)?; } Ok(mlua::Value::Table(res)) diff --git a/src/plugin/interface/os.rs b/src/plugin/interface/os.rs index f533a0ae9..33368f38a 100644 --- a/src/plugin/interface/os.rs +++ b/src/plugin/interface/os.rs @@ -1,5 +1,3 @@ -use std::path::PathBuf; - use mlua::UserData; pub struct PluginOS; diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs index 7bca24c97..b4de68d4c 100644 --- a/src/plugin/mod.rs +++ b/src/plugin/mod.rs @@ -3,20 +3,21 @@ use std::{ path::PathBuf, }; -use mlua::{Lua, Table}; +use mlua::{AsChunk, Lua, Table}; use serde::{Deserialize, Serialize}; use serde_json::json; -use crate::tools::{app_path, clone_repo}; +use crate::{tools::{app_path, clone_repo}, CrateConfig}; use self::{ interface::PluginInfo, interface::{ command::PluginCommander, dirs::PluginDirs, fs::PluginFileSystem, log::PluginLogger, - network::PluginNetwork, + network::PluginNetwork, os::PluginOS, path::PluginPath, }, }; +pub mod argument; pub mod interface; #[derive(Debug, Clone, Serialize, Deserialize)] @@ -38,6 +39,7 @@ impl PluginManager { let lua = Lua::new(); let manager = lua.create_table().unwrap(); + let plugin_dir = Self::init_plugin_dir(); let api = lua.create_table().unwrap(); @@ -46,20 +48,14 @@ impl PluginManager { api.set("network", PluginNetwork).unwrap(); api.set("dirs", PluginDirs).unwrap(); api.set("fs", PluginFileSystem).unwrap(); + api.set("path", PluginPath).unwrap(); + api.set("os", PluginOS).unwrap(); lua.globals().set("plugin_lib", api).unwrap(); + lua.globals() + .set("library_dir", plugin_dir.to_str().unwrap()) + .unwrap(); - // lua.globals().set("PLUGIN_LOGGER", PluginLogger).unwrap(); - // lua.globals() - // .set("PLUGIN_COMMAND", PluginCommander) - // .unwrap(); - // lua.globals().set("PLUGIN_FS", PluginFileSystem).unwrap(); - // lua.globals() - // .set("PLUGIN_DOWNLOAD", PluginDownloader) - // .unwrap(); - // lua.globals().set("PLUGIN_DIRS", PluginDirs).unwrap(); - - let plugin_dir = Self::init_plugin_dir(); let mut index: u32 = 1; let mut init_list: Vec<(u32, PathBuf, PluginInfo)> = Vec::new(); for entry in std::fs::read_dir(&plugin_dir).ok()? { @@ -77,6 +73,9 @@ impl PluginManager { let info = lua.load(&buffer).eval::().unwrap(); let _ = manager.set(index, info.clone()); + let dir_name_str = plugin_dir.name().unwrap().to_string(); + lua.globals().set("current_dir_name", dir_name_str).unwrap(); + // call `on_init` if file "dcp.json" not exists let dcp_file = plugin_dir.join("dcp.json"); if !dcp_file.is_file() { @@ -88,9 +87,6 @@ impl PluginManager { } } - lua.globals() - .set("LIBDIR", plugin_dir.join("library").to_str().unwrap()) - .unwrap(); lua.globals().set("manager", manager).unwrap(); for (idx, path, info) in init_list { @@ -113,14 +109,35 @@ impl PluginManager { Some(Self { lua }) } - pub fn load_all_plugins(&self) -> anyhow::Result<()> { + // pub fn load_all_plugins(&self) -> anyhow::Result<()> { + // let lua = &self.lua; + // let manager = lua.globals().get::<_, Table>("manager")?; + // for i in 1..(manager.len()? as i32 + 1) { + // let _ = manager.get::(i)?; + // let code = format!("manager[{i}].on_load()"); + // lua.load(&code).exec()?; + // } + // Ok(()) + // } + + pub fn on_build_event(&self, crate_config: &CrateConfig, platform: &str) -> anyhow::Result<()> { let lua = &self.lua; + let manager = lua.globals().get::<_, Table>("manager")?; + + let info = json!({ + "name": crate_config.dioxus_config.application.name, + "platform": platform, + "out_dir": crate_config.out_dir.to_str().unwrap(), + "asset_dir": crate_config.asset_dir.to_str().unwrap(), + }); + for i in 1..(manager.len()? as i32 + 1) { let _ = manager.get::(i)?; - let code = format!("manager[{i}].on_load()"); + let code = format!("manager[{i}].build.on_start({})", info.to_string()); lua.load(&code).exec()?; } + Ok(()) } diff --git a/src/server/mod.rs b/src/server/mod.rs index 8acf17848..2298960ff 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -9,7 +9,7 @@ use axum::{ use cargo_metadata::diagnostic::Diagnostic; use colored::Colorize; use dioxus_rsx_interpreter::SetRsxMessage; -use notify::{RecommendedWatcher, Watcher}; +use notify::Watcher; use syn::spanned::Spanned; use std::{net::UdpSocket, path::PathBuf, process::Command, sync::Arc}; @@ -98,7 +98,7 @@ pub async fn startup_hot_reload(port: u16, config: CrateConfig) -> Result<()> { .unwrap_or_else(|| vec![PathBuf::from("src")]); let watcher_config = config.clone(); - let mut watcher = RecommendedWatcher::new(move |evt: notify::Result| { + let mut watcher = notify::recommended_watcher(move |evt: notify::Result| { let config = watcher_config.clone(); if chrono::Local::now().timestamp() > last_update_time { // Give time for the change to take effect before reading the file @@ -304,7 +304,7 @@ pub async fn startup_default(port: u16, config: CrateConfig) -> Result<()> { .unwrap_or_else(|| vec![PathBuf::from("src")]); let watcher_config = config.clone(); - let mut watcher = RecommendedWatcher::new(move |info: notify::Result| { + let mut watcher = notify::recommended_watcher(move |info: notify::Result| { let config = watcher_config.clone(); if info.is_ok() { if chrono::Local::now().timestamp() > last_update_time {