From 864fdfcba525d6410960ee9e41d710f2fd4dfeed Mon Sep 17 00:00:00 2001 From: scarf Date: Mon, 11 Mar 2024 19:19:32 +0900 Subject: [PATCH 1/4] build: only check PR titles it's not very practical to validate individual commits when it's getting squash merged anyway. --- .github/semantic.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/semantic.yml b/.github/semantic.yml index cba6ef7..9e5cf32 100644 --- a/.github/semantic.yml +++ b/.github/semantic.yml @@ -1,6 +1,6 @@ # https://github.com/Ezard/semantic-prs#configuration -# Validate the PR title and all commit messages -titleAndCommits: true +# Validate the PR title only +titleOnly: true scopes: [github, README, L10n] From f5a2adc074b572017445d7b4924eb5cfe4784b57 Mon Sep 17 00:00:00 2001 From: scarf Date: Mon, 11 Mar 2024 19:41:11 +0900 Subject: [PATCH 2/4] build: use `gradle.properties` --- .gitignore | 4 ++++ README.md | 9 +++++++++ build.gradle.kts | 33 +++++++++++++++++++-------------- gradle.properties | 3 --- gradle.properties.example | 7 +++++++ 5 files changed, 39 insertions(+), 17 deletions(-) delete mode 100644 gradle.properties create mode 100644 gradle.properties.example diff --git a/.gitignore b/.gitignore index 01ea8e6..c5db3b5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# gradle.properties +# use gradle.properties.example to fill in paths +gradle.properties + # custom cache .cache diff --git a/README.md b/README.md index 4b9b8f3..dedd6e4 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,15 @@ git clone repository `https://github.com/scarf005/Marisa.git` setup java, kotlin, and gradle in your intellij. language version must be 8. +``` +# fill in your steam directory ending with '/steamapps' +userSteamDir=/home/scarf/.local/share/Steam/steamapps +# default: "$userSteamDir/workshop/content/$gameSteamId" +workshopDir= +``` + +copy `gradle.properties.example` to `gradle.properties` and provide path to your steam directory. + ```sh gradle changelog # install once ./gradlew -t changelog --warning-mode all # dev mode: recompile on changes diff --git a/build.gradle.kts b/build.gradle.kts index 92a2e97..f2446e6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,18 +7,24 @@ val changelog = File("docs/changelog/changelog.md").readText() val changeBBCode = File("docs/changelog/changelog.bbcode").readText() val changeSts = File("docs/changelog/changelog.sts.txt").readText() -val (gameDir, modTheSpireDir, basemodDir) = run { - val homeDir = System.getProperty("user.home")!! - val steamDir = "$homeDir/.local/share/Steam/steamapps" - val workShopDir = "$steamDir/workshop/content/Slay the Spire" - val mod = 1605060445 - val base = 1605833019 - Triple( - "$steamDir/common/SlayTheSpire", - "$workShopDir/$mod", - "$workShopDir/$base", - ) -} +val userSteamDir = property("userSteamDir") ?: throw error("userSteamDir is not set") +val gameDir = "$userSteamDir/common/SlayTheSpire" + +/** [store link](https://store.steampowered.com/app/646570/Slay_the_Spire/) */ +val gameSteamId = 646570 + +/** [workshop link](https://steamcommunity.com/sharedfiles/filedetails?id=1605833019) */ +val baseModId = 1605833019 + +/** [workshop link](https://steamcommunity.com/sharedfiles/filedetails?id=1605060445) */ +val modTheSpireId = 1605060445 + +/** [workshop link](https://steamcommunity.com/sharedfiles/filedetails?id=2902980404) */ +val marisaModId = 2902980404 + +val workShopDir = project.properties["workshopDir"] ?: "$userSteamDir/workshop/content/$gameSteamId" +val modTheSpireDir = "$workShopDir/$modTheSpireId" +val basemodDir = "$workShopDir/$baseModId" buildscript { repositories { mavenCentral() } @@ -47,7 +53,7 @@ kotlin { plugins { application java - kotlin("jvm") version "1.9.0" + kotlin("jvm") version "1.9.23" } repositories { @@ -75,7 +81,6 @@ sourceSets { exclude("**/*.ts", "**/deno.*", "schemas/**") } } - } @Suppress("PropertyName", "LongLine") diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 57876d6..0000000 --- a/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.caching=true -org.gradle.parallel=true -kotlin.experimental.tryK2=true diff --git a/gradle.properties.example b/gradle.properties.example new file mode 100644 index 0000000..40e8e92 --- /dev/null +++ b/gradle.properties.example @@ -0,0 +1,7 @@ +org.gradle.caching=true +org.gradle.parallel=true +kotlin.experimental.tryK2=true +# fill in your steam directory ending with '/steamapps' +userSteamDir= +# default: "$userSteamDir/workshop/content/$gameSteamId" +workshopDir= From 1456a1ff23d4c3368415d0a757dd06a7b16b5baf Mon Sep 17 00:00:00 2001 From: scarf Date: Mon, 11 Mar 2024 20:08:54 +0900 Subject: [PATCH 3/4] test: rename --- .../localization/{dirEntries.test.ts => dirEntries_test.ts} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/marisa/localization/{dirEntries.test.ts => dirEntries_test.ts} (93%) diff --git a/src/main/resources/marisa/localization/dirEntries.test.ts b/src/main/resources/marisa/localization/dirEntries_test.ts similarity index 93% rename from src/main/resources/marisa/localization/dirEntries.test.ts rename to src/main/resources/marisa/localization/dirEntries_test.ts index 746da75..b15b3f6 100644 --- a/src/main/resources/marisa/localization/dirEntries.test.ts +++ b/src/main/resources/marisa/localization/dirEntries_test.ts @@ -2,7 +2,7 @@ import { assertEquals } from "https://deno.land/std@0.178.0/testing/asserts.ts" import { dirEntries } from "./dirEntries.ts" Deno.test(async function testDirEntries() { - const path = Deno.cwd().endsWith("localization") ? "." : "src/main/resources/localization" + const path = Deno.cwd().endsWith("localization") ? "." : "src/main/resources/marisa/localization/" const entries = (await dirEntries(`${path}/ENG`)) .map((x) => x.name) From dc904c9549dc4c05cf758803d3f4fb373517f7d5 Mon Sep 17 00:00:00 2001 From: scarf Date: Mon, 11 Mar 2024 20:09:16 +0900 Subject: [PATCH 4/4] refactor: migrate `release.py` to typescript --- deno.lock | 321 +++++++++++++++++++++++++++++++++++++++++--- releases.py | 153 --------------------- releases.ts | 36 +++++ releases_test.ts | 29 ++++ scripts/link/mod.ts | 27 ++-- 5 files changed, 383 insertions(+), 183 deletions(-) delete mode 100755 releases.py create mode 100644 releases.ts create mode 100644 releases_test.ts diff --git a/deno.lock b/deno.lock index 506d38f..eaf29f3 100644 --- a/deno.lock +++ b/deno.lock @@ -1,6 +1,48 @@ { - "version": "2", + "version": "3", + "packages": { + "specifiers": { + "npm:@types/node": "npm:@types/node@18.16.19", + "npm:iter-ops": "npm:iter-ops@3.1.1", + "npm:outdent": "npm:outdent@0.8.0", + "npm:ts-pattern": "npm:ts-pattern@4.1.4" + }, + "npm": { + "@types/node@18.16.19": { + "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==", + "dependencies": {} + }, + "iter-ops@3.1.1": { + "integrity": "sha512-PelZCVYx+R7MEY6DykEXBANPT2I+Hrdz/Xk9G1vQvZlf+ORdoakNUrSbnvdQGx6AlxojziOnFHRrNEU7QllxAQ==", + "dependencies": {} + }, + "outdent@0.8.0": { + "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==", + "dependencies": {} + }, + "ts-pattern@4.1.4": { + "integrity": "sha512-Mcw65oUd1w5ktKi5BRwrnz16Otwk9iv7P0dKgvbi+A1albCDgnixohSqNLuFwIp5dzxPmTPm0iDQ6p1ZJr9uGw==", + "dependencies": {} + } + } + }, + "redirects": { + "https://deno.land/x/dax/mod.ts": "https://deno.land/x/dax@0.39.2/mod.ts", + "https://deno.land/x/jszip/mod.ts": "https://deno.land/x/jszip@0.11.0/mod.ts" + }, "remote": { + "https://deno.land/std@0.116.0/_util/assert.ts": "2f868145a042a11d5ad0a3c748dcf580add8a0dbc0e876eaa0026303a5488f58", + "https://deno.land/std@0.116.0/_util/os.ts": "dfb186cc4e968c770ab6cc3288bd65f4871be03b93beecae57d657232ecffcac", + "https://deno.land/std@0.116.0/fs/walk.ts": "31464d75099aa3fc7764212576a8772dfabb2692783e6eabb910f874a26eac54", + "https://deno.land/std@0.116.0/path/_constants.ts": "1247fee4a79b70c89f23499691ef169b41b6ccf01887a0abd131009c5581b853", + "https://deno.land/std@0.116.0/path/_interface.ts": "1fa73b02aaa24867e481a48492b44f2598cd9dfa513c7b34001437007d3642e4", + "https://deno.land/std@0.116.0/path/_util.ts": "2e06a3b9e79beaf62687196bd4b60a4c391d862cfa007a20fc3a39f778ba073b", + "https://deno.land/std@0.116.0/path/common.ts": "f41a38a0719a1e85aa11c6ba3bea5e37c15dd009d705bd8873f94c833568cbc4", + "https://deno.land/std@0.116.0/path/glob.ts": "ea87985765b977cc284b92771003b2070c440e0807c90e1eb0ff3e095911a820", + "https://deno.land/std@0.116.0/path/mod.ts": "4465dc494f271b02569edbb4a18d727063b5dbd6ed84283ff906260970a15d12", + "https://deno.land/std@0.116.0/path/posix.ts": "34349174b9cd121625a2810837a82dd8b986bbaaad5ade690d1de75bbb4555b2", + "https://deno.land/std@0.116.0/path/separator.ts": "8fdcf289b1b76fd726a508f57d3370ca029ae6976fcde5044007f062e643ff1c", + "https://deno.land/std@0.116.0/path/win32.ts": "11549e8c6df8307a8efcfa47ad7b2a75da743eac7d4c89c9723a944661c8bd2e", "https://deno.land/std@0.170.0/fmt/colors.ts": "03ad95e543d2808bc43c17a3dd29d25b43d0f16287fe562a0be89bf632454a12", "https://deno.land/std@0.178.0/fmt/colors.ts": "938c5d44d889fb82eff6c358bea8baa7e85950a16c9f6dae3ec3a7a729164471", "https://deno.land/std@0.178.0/testing/_diff.ts": "1a3c044aedf77647d6cac86b798c6417603361b66b54c53331b312caeb447aea", @@ -18,6 +60,207 @@ "https://deno.land/std@0.183.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", "https://deno.land/std@0.183.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", "https://deno.land/std@0.183.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", + "https://deno.land/std@0.213.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", + "https://deno.land/std@0.213.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", + "https://deno.land/std@0.213.0/bytes/concat.ts": "9cac3b4376afbef98ff03588eb3cf948e0d1eb6c27cfe81a7651ab6dd3adc54a", + "https://deno.land/std@0.213.0/bytes/copy.ts": "f29c03168853720dfe82eaa57793d0b9e3543ebfe5306684182f0f1e3bfd422a", + "https://deno.land/std@0.213.0/fmt/colors.ts": "aeaee795471b56fc62a3cb2e174ed33e91551b535f44677f6320336aabb54fbb", + "https://deno.land/std@0.213.0/fs/_create_walk_entry.ts": "5d9d2aaec05bcf09a06748b1684224d33eba7a4de24cf4cf5599991ca6b5b412", + "https://deno.land/std@0.213.0/fs/_get_file_info_type.ts": "da7bec18a7661dba360a1db475b826b18977582ce6fc9b25f3d4ee0403fe8cbd", + "https://deno.land/std@0.213.0/fs/_is_same_path.ts": "709c95868345fea051c58b9e96af95cff94e6ae98dfcff2b66dee0c212c4221f", + "https://deno.land/std@0.213.0/fs/_is_subdir.ts": "c68b309d46cc8568ed83c000f608a61bbdba0943b7524e7a30f9e450cf67eecd", + "https://deno.land/std@0.213.0/fs/_to_path_string.ts": "29bfc9c6c112254961d75cbf6ba814d6de5349767818eb93090cecfa9665591e", + "https://deno.land/std@0.213.0/fs/copy.ts": "dc0f68c4b6c3b090bfdb909387e309f6169b746bd713927c9507c9ef545d71f6", + "https://deno.land/std@0.213.0/fs/empty_dir.ts": "4f01e6d56e2aa8d90ad60f20bc25601f516b00f6c3044cdf6863a058791d91aa", + "https://deno.land/std@0.213.0/fs/ensure_dir.ts": "dffff68de0d10799b5aa9e39dec4e327e12bbd29e762292193684542648c4aeb", + "https://deno.land/std@0.213.0/fs/ensure_file.ts": "ac5cfde94786b0284d2c8e9f7f9425269bea1b2140612b4aea1f20b508870f59", + "https://deno.land/std@0.213.0/fs/ensure_link.ts": "d42af2edefeaa9817873ec6e46dc5d209ac4d744f8c69c5ecc2dffade78465b6", + "https://deno.land/std@0.213.0/fs/ensure_symlink.ts": "aee3f1655700f60090b4a3037f5b6c07ab37c36807cccad746ce89987719e6d2", + "https://deno.land/std@0.213.0/fs/eol.ts": "c9807291f78361d49fd986a9be04654610c615c5e2ec63d748976197d30ff206", + "https://deno.land/std@0.213.0/fs/exists.ts": "d2757ef764eaf5c6c5af7228e8447db2de42ab084a2dae540097f905723d83f5", + "https://deno.land/std@0.213.0/fs/expand_glob.ts": "a64e4ab51f62780f764789c9cdeacc862d221e35207fb81170a980ccc22868e3", + "https://deno.land/std@0.213.0/fs/mod.ts": "107f5afa4424c2d3ce2f7e9266173198da30302c69af662c720115fe504dc5ee", + "https://deno.land/std@0.213.0/fs/move.ts": "39e0d7ccb88a566d20b949712020e766b15ef1ec19159573d11f949bd677909c", + "https://deno.land/std@0.213.0/fs/walk.ts": "f04cc83ad3b27b5a5d078c831a01c7406069474bf280d5db015d937149a60128", + "https://deno.land/std@0.213.0/io/_constants.ts": "3c7ad4695832e6e4a32e35f218c70376b62bc78621ef069a4a0a3d55739f8856", + "https://deno.land/std@0.213.0/io/buf_reader.ts": "ccbd43ace0a9eebbd5e1b4765724b79da79d1e28b90c2b08537b99192da4a1f7", + "https://deno.land/std@0.213.0/io/buffer.ts": "79182995c8340ece2fa8763a8da86d282c507e854921d0a4c2ba7425c63609ef", + "https://deno.land/std@0.213.0/io/read_all.ts": "876c1cb20adea15349c72afc86cecd3573335845ae778967aefb5e55fe5a8a4a", + "https://deno.land/std@0.213.0/io/types.ts": "748bbb3ac96abda03594ef5a0db15ce5450dcc6c0d841c8906f8b10ac8d32c96", + "https://deno.land/std@0.213.0/io/write_all.ts": "24aac2312bb21096ae3ae0b102b22c26164d3249dff96dbac130958aa736f038", + "https://deno.land/std@0.213.0/path/_common/assert_path.ts": "2ca275f36ac1788b2acb60fb2b79cb06027198bc2ba6fb7e163efaedde98c297", + "https://deno.land/std@0.213.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", + "https://deno.land/std@0.213.0/path/_common/common.ts": "6157c7ec1f4db2b4a9a187efd6ce76dcaf1e61cfd49f87e40d4ea102818df031", + "https://deno.land/std@0.213.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", + "https://deno.land/std@0.213.0/path/_common/dirname.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", + "https://deno.land/std@0.213.0/path/_common/format.ts": "92500e91ea5de21c97f5fe91e178bae62af524b72d5fcd246d6d60ae4bcada8b", + "https://deno.land/std@0.213.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", + "https://deno.land/std@0.213.0/path/_common/glob_to_reg_exp.ts": "2007aa87bed6eb2c8ae8381adcc3125027543d9ec347713c1ad2c68427330770", + "https://deno.land/std@0.213.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", + "https://deno.land/std@0.213.0/path/_common/normalize_string.ts": "dfdf657a1b1a7db7999f7c575ee7e6b0551d9c20f19486c6c3f5ff428384c965", + "https://deno.land/std@0.213.0/path/_common/relative.ts": "faa2753d9b32320ed4ada0733261e3357c186e5705678d9dd08b97527deae607", + "https://deno.land/std@0.213.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", + "https://deno.land/std@0.213.0/path/_common/to_file_url.ts": "7f76adbc83ece1bba173e6e98a27c647712cab773d3f8cbe0398b74afc817883", + "https://deno.land/std@0.213.0/path/_interface.ts": "a1419fcf45c0ceb8acdccc94394e3e94f99e18cfd32d509aab514c8841799600", + "https://deno.land/std@0.213.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", + "https://deno.land/std@0.213.0/path/basename.ts": "5d341aadb7ada266e2280561692c165771d071c98746fcb66da928870cd47668", + "https://deno.land/std@0.213.0/path/common.ts": "03e52e22882402c986fe97ca3b5bb4263c2aa811c515ce84584b23bac4cc2643", + "https://deno.land/std@0.213.0/path/constants.ts": "0c206169ca104938ede9da48ac952de288f23343304a1c3cb6ec7625e7325f36", + "https://deno.land/std@0.213.0/path/dirname.ts": "85bd955bf31d62c9aafdd7ff561c4b5fb587d11a9a5a45e2b01aedffa4238a7c", + "https://deno.land/std@0.213.0/path/extname.ts": "593303db8ae8c865cbd9ceec6e55d4b9ac5410c1e276bfd3131916591b954441", + "https://deno.land/std@0.213.0/path/format.ts": "98fad25f1af7b96a48efb5b67378fcc8ed77be895df8b9c733b86411632162af", + "https://deno.land/std@0.213.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", + "https://deno.land/std@0.213.0/path/glob.ts": "04510962905d4b1513b44da9cb195914e0fa46c24359f6feaca20848d797dcb0", + "https://deno.land/std@0.213.0/path/glob_to_regexp.ts": "83c5fd36a8c86f5e72df9d0f45317f9546afa2ce39acaafe079d43a865aced08", + "https://deno.land/std@0.213.0/path/is_absolute.ts": "4791afc8bfd0c87f0526eaa616b0d16e7b3ab6a65b62942e50eac68de4ef67d7", + "https://deno.land/std@0.213.0/path/is_glob.ts": "a65f6195d3058c3050ab905705891b412ff942a292bcbaa1a807a74439a14141", + "https://deno.land/std@0.213.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", + "https://deno.land/std@0.213.0/path/join_globs.ts": "e9589869a33dc3982101898ee50903db918ca00ad2614dbe3934d597d7b1fbea", + "https://deno.land/std@0.213.0/path/mod.ts": "ffeaccb713dbe6c72e015b7c767f753f8ec5fbc3b621ff5eeee486ffc2c0ddda", + "https://deno.land/std@0.213.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", + "https://deno.land/std@0.213.0/path/normalize_glob.ts": "98ee8268fad271193603271c203ae973280b5abfbdd2cbca1053fd2af71869ca", + "https://deno.land/std@0.213.0/path/parse.ts": "65e8e285f1a63b714e19ef24b68f56e76934c3df0b6e65fd440d3991f4f8aefb", + "https://deno.land/std@0.213.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", + "https://deno.land/std@0.213.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", + "https://deno.land/std@0.213.0/path/posix/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", + "https://deno.land/std@0.213.0/path/posix/constants.ts": "93481efb98cdffa4c719c22a0182b994e5a6aed3047e1962f6c2c75b7592bef1", + "https://deno.land/std@0.213.0/path/posix/dirname.ts": "6535d2bdd566118963537b9dda8867ba9e2a361015540dc91f5afbb65c0cce8b", + "https://deno.land/std@0.213.0/path/posix/extname.ts": "8d36ae0082063c5e1191639699e6f77d3acf501600a3d87b74943f0ae5327427", + "https://deno.land/std@0.213.0/path/posix/format.ts": "185e9ee2091a42dd39e2a3b8e4925370ee8407572cee1ae52838aed96310c5c1", + "https://deno.land/std@0.213.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", + "https://deno.land/std@0.213.0/path/posix/glob_to_regexp.ts": "54d3ff40f309e3732ab6e5b19d7111d2d415248bcd35b67a99defcbc1972e697", + "https://deno.land/std@0.213.0/path/posix/is_absolute.ts": "cebe561ad0ae294f0ce0365a1879dcfca8abd872821519b4fcc8d8967f888ede", + "https://deno.land/std@0.213.0/path/posix/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", + "https://deno.land/std@0.213.0/path/posix/join.ts": "aef88d5fa3650f7516730865dbb951594d1a955b785e2450dbee93b8e32694f3", + "https://deno.land/std@0.213.0/path/posix/join_globs.ts": "ee2f4676c5b8a0dfa519da58b8ade4d1c4aa8dd3fe35619edec883ae9df1f8c9", + "https://deno.land/std@0.213.0/path/posix/mod.ts": "563a18c2b3ddc62f3e4a324ff0f583e819b8602a72ad880cb98c9e2e34f8db5b", + "https://deno.land/std@0.213.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", + "https://deno.land/std@0.213.0/path/posix/normalize_glob.ts": "65f0138fa518ef9ece354f32889783fc38cdf985fb02dcf1c3b14fa47d665640", + "https://deno.land/std@0.213.0/path/posix/parse.ts": "d5bac4eb21262ab168eead7e2196cb862940c84cee572eafedd12a0d34adc8fb", + "https://deno.land/std@0.213.0/path/posix/relative.ts": "3907d6eda41f0ff723d336125a1ad4349112cd4d48f693859980314d5b9da31c", + "https://deno.land/std@0.213.0/path/posix/resolve.ts": "bac20d9921beebbbb2b73706683b518b1d0c1b1da514140cee409e90d6b2913a", + "https://deno.land/std@0.213.0/path/posix/separator.ts": "c9ecae5c843170118156ac5d12dc53e9caf6a1a4c96fc8b1a0ab02dff5c847b0", + "https://deno.land/std@0.213.0/path/posix/to_file_url.ts": "7aa752ba66a35049e0e4a4be5a0a31ac6b645257d2e031142abb1854de250aaf", + "https://deno.land/std@0.213.0/path/posix/to_namespaced_path.ts": "28b216b3c76f892a4dca9734ff1cc0045d135532bfd9c435ae4858bfa5a2ebf0", + "https://deno.land/std@0.213.0/path/relative.ts": "ab739d727180ed8727e34ed71d976912461d98e2b76de3d3de834c1066667add", + "https://deno.land/std@0.213.0/path/resolve.ts": "a6f977bdb4272e79d8d0ed4333e3d71367cc3926acf15ac271f1d059c8494d8d", + "https://deno.land/std@0.213.0/path/separator.ts": "c6c890507f944a1f5cb7d53b8d638d6ce3cf0f34609c8d84a10c1eaa400b77a9", + "https://deno.land/std@0.213.0/path/to_file_url.ts": "88f049b769bce411e2d2db5bd9e6fd9a185a5fbd6b9f5ad8f52bef517c4ece1b", + "https://deno.land/std@0.213.0/path/to_namespaced_path.ts": "b706a4103b104cfadc09600a5f838c2ba94dbcdb642344557122dda444526e40", + "https://deno.land/std@0.213.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", + "https://deno.land/std@0.213.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", + "https://deno.land/std@0.213.0/path/windows/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", + "https://deno.land/std@0.213.0/path/windows/constants.ts": "5afaac0a1f67b68b0a380a4ef391bf59feb55856aa8c60dfc01bd3b6abb813f5", + "https://deno.land/std@0.213.0/path/windows/dirname.ts": "33e421be5a5558a1346a48e74c330b8e560be7424ed7684ea03c12c21b627bc9", + "https://deno.land/std@0.213.0/path/windows/extname.ts": "165a61b00d781257fda1e9606a48c78b06815385e7d703232548dbfc95346bef", + "https://deno.land/std@0.213.0/path/windows/format.ts": "bbb5ecf379305b472b1082cd2fdc010e44a0020030414974d6029be9ad52aeb6", + "https://deno.land/std@0.213.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", + "https://deno.land/std@0.213.0/path/windows/glob_to_regexp.ts": "6dcd1242bd8907aa9660cbdd7c93446e6927b201112b0cba37ca5d80f81be51b", + "https://deno.land/std@0.213.0/path/windows/is_absolute.ts": "4a8f6853f8598cf91a835f41abed42112cebab09478b072e4beb00ec81f8ca8a", + "https://deno.land/std@0.213.0/path/windows/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", + "https://deno.land/std@0.213.0/path/windows/join.ts": "e0b3356615c1a75c56ebb6a7311157911659e11fd533d80d724800126b761ac3", + "https://deno.land/std@0.213.0/path/windows/join_globs.ts": "ee2f4676c5b8a0dfa519da58b8ade4d1c4aa8dd3fe35619edec883ae9df1f8c9", + "https://deno.land/std@0.213.0/path/windows/mod.ts": "7d6062927bda47c47847ffb55d8f1a37b0383840aee5c7dfc93984005819689c", + "https://deno.land/std@0.213.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", + "https://deno.land/std@0.213.0/path/windows/normalize_glob.ts": "179c86ba89f4d3fe283d2addbe0607341f79ee9b1ae663abcfb3439db2e97810", + "https://deno.land/std@0.213.0/path/windows/parse.ts": "b9239edd892a06a06625c1b58425e199f018ce5649ace024d144495c984da734", + "https://deno.land/std@0.213.0/path/windows/relative.ts": "3e1abc7977ee6cc0db2730d1f9cb38be87b0ce4806759d271a70e4997fc638d7", + "https://deno.land/std@0.213.0/path/windows/resolve.ts": "75b2e3e1238d840782cee3d8864d82bfaa593c7af8b22f19c6422cf82f330ab3", + "https://deno.land/std@0.213.0/path/windows/separator.ts": "e51c5522140eff4f8402617c5c68a201fdfa3a1a8b28dc23587cff931b665e43", + "https://deno.land/std@0.213.0/path/windows/to_file_url.ts": "1cd63fd35ec8d1370feaa4752eccc4cc05ea5362a878be8dc7db733650995484", + "https://deno.land/std@0.213.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", + "https://deno.land/std@0.213.0/streams/reader_from_stream_reader.ts": "f981cf94a42133e5c6ace8c3b500565750806c4fc9802262ee63746abc528b0d", + "https://deno.land/std@0.213.0/streams/writer_from_stream_writer.ts": "b0e39ef607dfdc5abdfb627edf61a9672809463e2bb022afcbaf0cd006c40feb", + "https://deno.land/std@0.219.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975", + "https://deno.land/std@0.219.0/assert/_diff.ts": "dcc63d94ca289aec80644030cf88ccbf7acaa6fbd7b0f22add93616b36593840", + "https://deno.land/std@0.219.0/assert/_format.ts": "0ba808961bf678437fb486b56405b6fefad2cf87b5809667c781ddee8c32aff4", + "https://deno.land/std@0.219.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5", + "https://deno.land/std@0.219.0/assert/assert_equals.ts": "4497c56fe7d2993b0d447926702802fc0becb44e319079e8eca39b482ee01b4e", + "https://deno.land/std@0.219.0/assert/assert_string_includes.ts": "dfb072a890167146f8e5bdd6fde887ce4657098e9f71f12716ef37f35fb6f4a7", + "https://deno.land/std@0.219.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8", + "https://deno.land/std@0.219.0/assert/equal.ts": "fae5e8a52a11d3ac694bbe1a53e13a7969e3f60791262312e91a3e741ae519e2", + "https://deno.land/std@0.219.0/cli/parse_args.ts": "475b3edc8105c9acea09b83b100afc383d7bddbba9828da3f0c4adced006607a", + "https://deno.land/std@0.219.0/fmt/colors.ts": "d239d84620b921ea520125d778947881f62c50e78deef2657073840b8af9559a", + "https://deno.land/std@0.219.0/fs/_create_walk_entry.ts": "5d9d2aaec05bcf09a06748b1684224d33eba7a4de24cf4cf5599991ca6b5b412", + "https://deno.land/std@0.219.0/fs/_to_path_string.ts": "29bfc9c6c112254961d75cbf6ba814d6de5349767818eb93090cecfa9665591e", + "https://deno.land/std@0.219.0/fs/walk.ts": "78e1d01a9f75715614bf8d6e58bd77d9fafb1222c41194e607cd3849d7a0e771", + "https://deno.land/std@0.219.0/path/_common/assert_path.ts": "dbdd757a465b690b2cc72fc5fb7698c51507dec6bfafce4ca500c46b76ff7bd8", + "https://deno.land/std@0.219.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", + "https://deno.land/std@0.219.0/path/_common/common.ts": "ef73c2860694775fe8ffcbcdd387f9f97c7a656febf0daa8c73b56f4d8a7bd4c", + "https://deno.land/std@0.219.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", + "https://deno.land/std@0.219.0/path/_common/dirname.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", + "https://deno.land/std@0.219.0/path/_common/format.ts": "92500e91ea5de21c97f5fe91e178bae62af524b72d5fcd246d6d60ae4bcada8b", + "https://deno.land/std@0.219.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", + "https://deno.land/std@0.219.0/path/_common/glob_to_reg_exp.ts": "6cac16d5c2dc23af7d66348a7ce430e5de4e70b0eede074bdbcf4903f4374d8d", + "https://deno.land/std@0.219.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", + "https://deno.land/std@0.219.0/path/_common/normalize_string.ts": "dfdf657a1b1a7db7999f7c575ee7e6b0551d9c20f19486c6c3f5ff428384c965", + "https://deno.land/std@0.219.0/path/_common/relative.ts": "faa2753d9b32320ed4ada0733261e3357c186e5705678d9dd08b97527deae607", + "https://deno.land/std@0.219.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", + "https://deno.land/std@0.219.0/path/_common/to_file_url.ts": "7f76adbc83ece1bba173e6e98a27c647712cab773d3f8cbe0398b74afc817883", + "https://deno.land/std@0.219.0/path/_interface.ts": "a1419fcf45c0ceb8acdccc94394e3e94f99e18cfd32d509aab514c8841799600", + "https://deno.land/std@0.219.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", + "https://deno.land/std@0.219.0/path/basename.ts": "5d341aadb7ada266e2280561692c165771d071c98746fcb66da928870cd47668", + "https://deno.land/std@0.219.0/path/common.ts": "03e52e22882402c986fe97ca3b5bb4263c2aa811c515ce84584b23bac4cc2643", + "https://deno.land/std@0.219.0/path/constants.ts": "0c206169ca104938ede9da48ac952de288f23343304a1c3cb6ec7625e7325f36", + "https://deno.land/std@0.219.0/path/dirname.ts": "85bd955bf31d62c9aafdd7ff561c4b5fb587d11a9a5a45e2b01aedffa4238a7c", + "https://deno.land/std@0.219.0/path/extname.ts": "593303db8ae8c865cbd9ceec6e55d4b9ac5410c1e276bfd3131916591b954441", + "https://deno.land/std@0.219.0/path/format.ts": "42a2f3201343df77061207e6aaf78c95bafce7f711dcb7fe1e5840311c505778", + "https://deno.land/std@0.219.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", + "https://deno.land/std@0.219.0/path/glob_to_regexp.ts": "7f30f0a21439cadfdae1be1bf370880b415e676097fda584a63ce319053b5972", + "https://deno.land/std@0.219.0/path/is_absolute.ts": "4791afc8bfd0c87f0526eaa616b0d16e7b3ab6a65b62942e50eac68de4ef67d7", + "https://deno.land/std@0.219.0/path/is_glob.ts": "a65f6195d3058c3050ab905705891b412ff942a292bcbaa1a807a74439a14141", + "https://deno.land/std@0.219.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", + "https://deno.land/std@0.219.0/path/join_globs.ts": "5b3bf248b93247194f94fa6947b612ab9d3abd571ca8386cf7789038545e54a0", + "https://deno.land/std@0.219.0/path/mod.ts": "2821a1bb3a4148a0ffe79c92aa41aa9319fef73c6d6f5178f52b2c720d3eb02d", + "https://deno.land/std@0.219.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", + "https://deno.land/std@0.219.0/path/normalize_glob.ts": "cc89a77a7d3b1d01053b9dcd59462b75482b11e9068ae6c754b5cf5d794b374f", + "https://deno.land/std@0.219.0/path/parse.ts": "65e8e285f1a63b714e19ef24b68f56e76934c3df0b6e65fd440d3991f4f8aefb", + "https://deno.land/std@0.219.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", + "https://deno.land/std@0.219.0/path/posix/basename.ts": "39ee27a29f1f35935d3603ccf01d53f3d6e0c5d4d0f84421e65bd1afeff42843", + "https://deno.land/std@0.219.0/path/posix/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", + "https://deno.land/std@0.219.0/path/posix/constants.ts": "93481efb98cdffa4c719c22a0182b994e5a6aed3047e1962f6c2c75b7592bef1", + "https://deno.land/std@0.219.0/path/posix/dirname.ts": "6535d2bdd566118963537b9dda8867ba9e2a361015540dc91f5afbb65c0cce8b", + "https://deno.land/std@0.219.0/path/posix/extname.ts": "8d36ae0082063c5e1191639699e6f77d3acf501600a3d87b74943f0ae5327427", + "https://deno.land/std@0.219.0/path/posix/format.ts": "185e9ee2091a42dd39e2a3b8e4925370ee8407572cee1ae52838aed96310c5c1", + "https://deno.land/std@0.219.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", + "https://deno.land/std@0.219.0/path/posix/glob_to_regexp.ts": "76f012fcdb22c04b633f536c0b9644d100861bea36e9da56a94b9c589a742e8f", + "https://deno.land/std@0.219.0/path/posix/is_absolute.ts": "cebe561ad0ae294f0ce0365a1879dcfca8abd872821519b4fcc8d8967f888ede", + "https://deno.land/std@0.219.0/path/posix/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", + "https://deno.land/std@0.219.0/path/posix/join.ts": "744fadcbee7047688696455c7cbb368a9625ffde67fc3058a61c98948fcd04de", + "https://deno.land/std@0.219.0/path/posix/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", + "https://deno.land/std@0.219.0/path/posix/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", + "https://deno.land/std@0.219.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", + "https://deno.land/std@0.219.0/path/posix/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", + "https://deno.land/std@0.219.0/path/posix/parse.ts": "0b1fc4cb890dbb699ec1d2c232d274843b4a7142e1ad976b69fe51c954eb6080", + "https://deno.land/std@0.219.0/path/posix/relative.ts": "3907d6eda41f0ff723d336125a1ad4349112cd4d48f693859980314d5b9da31c", + "https://deno.land/std@0.219.0/path/posix/resolve.ts": "08b699cfeee10cb6857ccab38fa4b2ec703b0ea33e8e69964f29d02a2d5257cf", + "https://deno.land/std@0.219.0/path/posix/to_file_url.ts": "7aa752ba66a35049e0e4a4be5a0a31ac6b645257d2e031142abb1854de250aaf", + "https://deno.land/std@0.219.0/path/posix/to_namespaced_path.ts": "28b216b3c76f892a4dca9734ff1cc0045d135532bfd9c435ae4858bfa5a2ebf0", + "https://deno.land/std@0.219.0/path/relative.ts": "ab739d727180ed8727e34ed71d976912461d98e2b76de3d3de834c1066667add", + "https://deno.land/std@0.219.0/path/resolve.ts": "a6f977bdb4272e79d8d0ed4333e3d71367cc3926acf15ac271f1d059c8494d8d", + "https://deno.land/std@0.219.0/path/to_file_url.ts": "88f049b769bce411e2d2db5bd9e6fd9a185a5fbd6b9f5ad8f52bef517c4ece1b", + "https://deno.land/std@0.219.0/path/to_namespaced_path.ts": "b706a4103b104cfadc09600a5f838c2ba94dbcdb642344557122dda444526e40", + "https://deno.land/std@0.219.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", + "https://deno.land/std@0.219.0/path/windows/basename.ts": "e2dbf31d1d6385bfab1ce38c333aa290b6d7ae9e0ecb8234a654e583cf22f8fe", + "https://deno.land/std@0.219.0/path/windows/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", + "https://deno.land/std@0.219.0/path/windows/constants.ts": "5afaac0a1f67b68b0a380a4ef391bf59feb55856aa8c60dfc01bd3b6abb813f5", + "https://deno.land/std@0.219.0/path/windows/dirname.ts": "33e421be5a5558a1346a48e74c330b8e560be7424ed7684ea03c12c21b627bc9", + "https://deno.land/std@0.219.0/path/windows/extname.ts": "165a61b00d781257fda1e9606a48c78b06815385e7d703232548dbfc95346bef", + "https://deno.land/std@0.219.0/path/windows/format.ts": "bbb5ecf379305b472b1082cd2fdc010e44a0020030414974d6029be9ad52aeb6", + "https://deno.land/std@0.219.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", + "https://deno.land/std@0.219.0/path/windows/glob_to_regexp.ts": "e45f1f89bf3fc36f94ab7b3b9d0026729829fabc486c77f414caebef3b7304f8", + "https://deno.land/std@0.219.0/path/windows/is_absolute.ts": "4a8f6853f8598cf91a835f41abed42112cebab09478b072e4beb00ec81f8ca8a", + "https://deno.land/std@0.219.0/path/windows/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", + "https://deno.land/std@0.219.0/path/windows/join.ts": "8d03530ab89195185103b7da9dfc6327af13eabdcd44c7c63e42e27808f50ecf", + "https://deno.land/std@0.219.0/path/windows/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", + "https://deno.land/std@0.219.0/path/windows/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", + "https://deno.land/std@0.219.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", + "https://deno.land/std@0.219.0/path/windows/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", + "https://deno.land/std@0.219.0/path/windows/parse.ts": "dbdfe2bc6db482d755b5f63f7207cd019240fcac02ad2efa582adf67ff10553a", + "https://deno.land/std@0.219.0/path/windows/relative.ts": "3e1abc7977ee6cc0db2730d1f9cb38be87b0ce4806759d271a70e4997fc638d7", + "https://deno.land/std@0.219.0/path/windows/resolve.ts": "8dae1dadfed9d46ff46cc337c9525c0c7d959fb400a6308f34595c45bdca1972", + "https://deno.land/std@0.219.0/path/windows/to_file_url.ts": "40e560ee4854fe5a3d4d12976cef2f4e8914125c81b11f1108e127934ced502e", + "https://deno.land/std@0.219.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", "https://deno.land/x/cliffy@v0.25.7/_utils/distance.ts": "02af166952c7c358ac83beae397aa2fbca4ad630aecfcd38d92edb1ea429f004", "https://deno.land/x/cliffy@v0.25.7/command/_errors.ts": "a9bd23dc816b32ec96c9b8f3057218241778d8c40333b43341138191450965e5", "https://deno.land/x/cliffy@v0.25.7/command/_utils.ts": "9ab3d69fabab6c335b881b8a5229cbd5db0c68f630a1c307aff988b6396d9baf", @@ -72,6 +315,46 @@ "https://deno.land/x/copb@v1.0.1/lib/copb.ts": "49c807431a38eda063b2f99f69c8ebdb9c316a7fc3957b618932e78bee3361fb", "https://deno.land/x/copb@v1.0.1/mod.ts": "664b6af5d0bf0339e3461ac69e6b06f052a322b7bfc1ec2fbc701fb525c56ba3", "https://deno.land/x/copb@v1.0.1/version.ts": "e1ce0be2da17592e301891cbffa0f00490c987be292434b852022c81d4d6800e", + "https://deno.land/x/dax@0.39.2/mod.ts": "309f96ce11fa8a1bb244fdfdcb60fa66f092200a72295402094aab88bdf02bdd", + "https://deno.land/x/dax@0.39.2/src/command.ts": "01980353fec193bbc7f1c3690bb87472607d0b1b7d9844d17904920b907cd0de", + "https://deno.land/x/dax@0.39.2/src/command_handler.ts": "a9e40f0f1ec57318e62904b5785fede82dcdf1101922ebb3ebfad8f1c4d9c8df", + "https://deno.land/x/dax@0.39.2/src/commands/args.ts": "a138aef24294e3cbf13cef08f4836d018e8dd99fd06ad82e7e7f08ef680bbc1d", + "https://deno.land/x/dax@0.39.2/src/commands/cat.ts": "ac42675faaf87609fd5d4bff9a7741cef7fd4465d6de709b8ccabe70f7fd4c98", + "https://deno.land/x/dax@0.39.2/src/commands/cd.ts": "32533465933fada680c1fc887e24b65c8d4de3f5f98d0f55950dcead64da445c", + "https://deno.land/x/dax@0.39.2/src/commands/cp_mv.ts": "29a11a0f6c81e9a19b897c9b3178594f06a55a00ca28cb63c17773e154b34299", + "https://deno.land/x/dax@0.39.2/src/commands/echo.ts": "4672ad44a39fdcb3f9d9296a7c5773895bfae0f50a617fd999d1f0ca62a6aa36", + "https://deno.land/x/dax@0.39.2/src/commands/exit.ts": "508a388671240381a2a9a8910d4bf068421ace27ae1cc10c056df48cf9d23334", + "https://deno.land/x/dax@0.39.2/src/commands/export.ts": "c10d1dc6a45fd00e40afa6b19d7ecd29d09333f422b5b0fc75863baf13350969", + "https://deno.land/x/dax@0.39.2/src/commands/mkdir.ts": "28220eae8d7e872dca26b8217ad1b7e15eacf24e92d80277201caacbbecb8232", + "https://deno.land/x/dax@0.39.2/src/commands/printenv.ts": "8e1210b01ef5fcb8de71623f1195aab6ee034dbe684cd08e068ab855f9133ff9", + "https://deno.land/x/dax@0.39.2/src/commands/pwd.ts": "113af521c5dc257310c26815295c691b8f894051249d1eb8ba49a46965e28c68", + "https://deno.land/x/dax@0.39.2/src/commands/rm.ts": "a3441ddf9cb8f07fdf1657cb475caefcae71b71378681f4948e8ada93ef4478d", + "https://deno.land/x/dax@0.39.2/src/commands/sleep.ts": "2ba65ab19ae0f78709070f43d588c8fd3ff76d0299d2485e587aaaed7b86dd51", + "https://deno.land/x/dax@0.39.2/src/commands/test.ts": "336008d64d9737474ee225be9f8bd6fbad3f1c2128ba427e1b42d2c98366554f", + "https://deno.land/x/dax@0.39.2/src/commands/touch.ts": "b8229c2c38b56ebff054dd8dc70109cb85bcef5aaf160193fd80ac93924aa7ad", + "https://deno.land/x/dax@0.39.2/src/commands/unset.ts": "a85e9aca0606fd582114c5fc1f97fd6838a766110bad72dce7bd386172c1fbbb", + "https://deno.land/x/dax@0.39.2/src/common.ts": "7a96f3e4d576f92be12364d520107cff54b3d1a98124b5a88538494c5109c6e6", + "https://deno.land/x/dax@0.39.2/src/console/confirm.ts": "d9128d10b77fcc0a8df2784f71c79df68f5c8e00a34b04547b9ba9ddf1c97f96", + "https://deno.land/x/dax@0.39.2/src/console/logger.ts": "e0ab5025915cef70df03681c756e211f25bb2e4331f82ed4256b17ddd9e794ea", + "https://deno.land/x/dax@0.39.2/src/console/mod.ts": "de8af7d646f6cb222eee6560171993690247941b13ed9d757789d16f019d73ee", + "https://deno.land/x/dax@0.39.2/src/console/multiSelect.ts": "31003744e58f45f720271bd034d8cfba1055c954ba02d77a2f2eb21e4c1ed55a", + "https://deno.land/x/dax@0.39.2/src/console/progress/format.ts": "15ddbb8051580f88ed499281e12ca6f881f875ab73268d7451d7113ee130bd7d", + "https://deno.land/x/dax@0.39.2/src/console/progress/interval.ts": "54ffc8c7501f8ab0b6370e120c00e9e2d3e9b0640fc2dc2989bbf22855172ed0", + "https://deno.land/x/dax@0.39.2/src/console/progress/mod.ts": "dd9330c3edd1790d70808d043f417f0eaf80a4442a945545c38e47ce11e907b6", + "https://deno.land/x/dax@0.39.2/src/console/prompt.ts": "1ad65c8a5a27fb58ce6138f8ebefe2fca4cd12015fea550fbdc62f875d4b31f7", + "https://deno.land/x/dax@0.39.2/src/console/select.ts": "c9d7124d975bf34d52ea1ac88fd610ed39db8ee6505b9bb53f371cef2f56c6ab", + "https://deno.land/x/dax@0.39.2/src/console/utils.ts": "6f2c4d7c98c13d40b0a16af622d654495eace06778343eb1507ecd0f3875d3ab", + "https://deno.land/x/dax@0.39.2/src/deps.ts": "c6f4195419244d38879d4dd14de5190a507818ac62a5a992493c7567a1235f7d", + "https://deno.land/x/dax@0.39.2/src/lib/mod.ts": "7d9d0cf99ecd3ff5c3e5329ea9e456b737581afb4a5c94c3f90244c990b5630d", + "https://deno.land/x/dax@0.39.2/src/lib/rs_lib.generated.js": "0a1a482c4387379106ef0da69534ebc5b0c2a1ec9f6dab76833fe84a7e6bbdf6", + "https://deno.land/x/dax@0.39.2/src/path.ts": "a1ca507225a516336f083432b992d83ad4cddeea9a91eef69abbbebb729721ae", + "https://deno.land/x/dax@0.39.2/src/pipes.ts": "5ed17dc0aea34d219568d59c826c04e319a91497cac2be7c51a99603a3771c70", + "https://deno.land/x/dax@0.39.2/src/request.ts": "21de624bc21155cf6143ea5eddf4de706944e26af10219957da4b8b20c7104ce", + "https://deno.land/x/dax@0.39.2/src/result.ts": "719a9b4bc6bafeec785106744381cd5f37927c973334fcba6a33b6418fb9e7be", + "https://deno.land/x/dax@0.39.2/src/runtimes/process.common.ts": "692afd5fa15f40ce452904fa5ce380462cee56fbee7abe271e509e78da997200", + "https://deno.land/x/dax@0.39.2/src/runtimes/process.deno.ts": "50f85a086a9208b26c10dc2c1406fd9274226401f670d6862fdee05433c9ea4e", + "https://deno.land/x/dax@0.39.2/src/shell.ts": "b95677094cc553c987f0f113a95a45d72f2896ef82754f9831029efbbafea5d5", + "https://deno.land/x/dax@0.39.2/src/vendor/outdent.ts": "4d0283726579688c50b20c4b779e068acd3fa159a8784a4549e5e21bbef0ae64", "https://deno.land/x/fun@v2.0.0-alpha.10/alt.ts": "b61816a6a848b40eb40ec4548c4c00496dbc8df5f25d2e49fb35164fbd2d3ca3", "https://deno.land/x/fun@v2.0.0-alpha.10/applicative.ts": "123483ae07379c29784a1a254b05c35ba50f3091f121a3257c03592d181bcb99", "https://deno.land/x/fun@v2.0.0-alpha.10/apply.ts": "e2349f7b784525ecbad506325e106916c5290f1c65ef879dbf8ced5d3ed94858", @@ -108,22 +391,24 @@ "https://deno.land/x/fun@v2.0.0-alpha.10/show.ts": "a14a323dab7981f1b1a59d9a6f6181ec9cb8ad3a71ae9f9bea8ae429145f6886", "https://deno.land/x/fun@v2.0.0-alpha.10/sync.ts": "818b0629de01c78cb689dfa15ab0324bae3af3ee0f874254f1ad8b5f9b873664", "https://deno.land/x/fun@v2.0.0-alpha.10/traversable.ts": "932fa7238440ca1efbca4ff7ed8df1126c126018838c355a055edae60898e337", - "https://deno.land/x/promise_object@v0.10.0/index.ts": "095e9fed1c0948110c8ded200814b051ac105ec2315b7ffc2c8ab51250d5a82b" - }, - "npm": { - "specifiers": { - "outdent": "outdent@0.8.0", - "ts-pattern": "ts-pattern@4.1.4" - }, - "packages": { - "outdent@0.8.0": { - "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==", - "dependencies": {} - }, - "ts-pattern@4.1.4": { - "integrity": "sha512-Mcw65oUd1w5ktKi5BRwrnz16Otwk9iv7P0dKgvbi+A1albCDgnixohSqNLuFwIp5dzxPmTPm0iDQ6p1ZJr9uGw==", - "dependencies": {} - } - } + "https://deno.land/x/jszip@0.11.0/mod.ts": "5661ddc18e9ac9c07e3c5d2483bc912a7022b6af0d784bb7b05035973e640ba1", + "https://deno.land/x/jszip@0.11.0/types.ts": "1528d1279fbb64dd118c371331c641a3a5eff2b594336fb38a7659cf4c53b2d1", + "https://deno.land/x/promise_object@v0.10.0/index.ts": "095e9fed1c0948110c8ded200814b051ac105ec2315b7ffc2c8ab51250d5a82b", + "https://deno.land/x/which@0.3.0/mod.ts": "3e10d07953c14e4ddc809742a3447cef14202cdfe9be6678a1dfc8769c4487e6", + "https://deno.land/x/zod@v3.20.5/ZodError.ts": "10bb0d014b0ece532c3bc395c50ae25996315a5897c0216517d9174c2fb570b5", + "https://deno.land/x/zod@v3.20.5/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef", + "https://deno.land/x/zod@v3.20.5/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe", + "https://deno.land/x/zod@v3.20.5/helpers/enumUtil.ts": "54efc393cc9860e687d8b81ff52e980def00fa67377ad0bf8b3104f8a5bf698c", + "https://deno.land/x/zod@v3.20.5/helpers/errorUtil.ts": "7a77328240be7b847af6de9189963bd9f79cab32bbc61502a9db4fe6683e2ea7", + "https://deno.land/x/zod@v3.20.5/helpers/parseUtil.ts": "51a76c126ee212be86013d53a9d07f87e9ae04bb1496f2558e61b62cb74a6aa8", + "https://deno.land/x/zod@v3.20.5/helpers/partialUtil.ts": "8dc921a02b47384cf52217c7e539268daf619f89319b75bdf13ea178815725df", + "https://deno.land/x/zod@v3.20.5/helpers/typeAliases.ts": "0fda31a063c6736fc3cf9090dd94865c811dfff4f3cb8707b932bf937c6f2c3e", + "https://deno.land/x/zod@v3.20.5/helpers/util.ts": "0e7366354b1a5070408c1c48d01c7e33d374ca70806f5003b12ff527795c578c", + "https://deno.land/x/zod@v3.20.5/index.ts": "035a7422d9f2be54daa0fe464254b69225b443000673e4794095d672471e8792", + "https://deno.land/x/zod@v3.20.5/locales/en.ts": "ac7210faad6e67ec4f6dbe7062886f04db79ce91ae5ee6c9f64cbdf6221bc80e", + "https://deno.land/x/zod@v3.20.5/mod.ts": "64e55237cb4410e17d968cd08975566059f27638ebb0b86048031b987ba251c4", + "https://deno.land/x/zod@v3.20.5/types.ts": "6ddc4608e70d75f2e06f9cc14aa406df4d80f420c0eef64f2f02d429853c0c38", + "https://esm.sh/jszip@3.7.1": "f3872a819b015715edb05f81d973b5cd05d3d213d8eb28293ca5471fe7a71773", + "https://esm.sh/v135/jszip@3.7.1/denonext/jszip.mjs": "d31d7f9e0de9c6db3c07ca93f7301b756273d4dccb41b600461978fc313504c9" } } diff --git a/releases.py b/releases.py deleted file mode 100755 index 31c8ba5..0000000 --- a/releases.py +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env python3 - -""" -github: publish to github releases using github cli interface. -steam: publish to steam workshop using mod-uploader.jar -""" - -import json -import sys -import zipfile -from concurrent.futures import ProcessPoolExecutor -from dataclasses import dataclass -from enum import StrEnum, auto -from pathlib import Path -from subprocess import run -from typing import Callable, Self, TypeVar - -from typer import Argument, Option, Typer - -BASE = Path("docs/changelog") - -CHANGELOG = BASE / "changelog.md" -VERSION = (BASE / "version.txt").read_text().strip() - -CHANGELOG_TEXT = CHANGELOG.read_text() - -TITLE = CHANGELOG_TEXT.splitlines()[0].strip("# ") -BODY = "\n".join(CHANGELOG_TEXT.splitlines()[2:]) - -JAR = zipfile.Path("build/libs/MarisaContinued.jar") -MODINFO = JAR / "ModTheSpire.json" -STS = Path().home() / ".steam/steam/steamapps/common/" / "SlayTheSpire" - - -@dataclass -class Context: - verify_tag: bool - - -T = TypeVar("T") -Fn = Callable[[Context], T] - - -@dataclass -class Runner: - ctx: Context - - def __call__(self, x: Fn[T]) -> T: - print(f"Running {x.__name__}") - return x(self.ctx) - - -def wait(): - try: - input("Press any key to continue...") - except KeyboardInterrupt: - sys.exit(0) - - -def verify_hard_links(): - run_command(["deno", "task", "--quiet", "link", "--check", "--quiet"]) - - -def verify_jar_version(): - """Verify modjson.json""" - text = MODINFO.read_text() - modjson = json.loads(text) - expected = VERSION - actual = modjson["version"] - assert expected == actual, f"{expected = } {actual = }" - - -def verify_changelog_version(): - """Verify changelog.md""" - CONFIG = (STS / "MarisaContinued" / "config.json").read_text() - - assert VERSION in CONFIG - assert VERSION in (BASE / "changelog.bbcode").read_text() - assert VERSION in (BASE / "changelog.sts.txt").read_text() - assert VERSION in CHANGELOG_TEXT - - -def run_command(command: list[str], *, cwd=Path()): - print(" ".join(command)) - run(command, cwd=cwd, check=True) - - -def github(ctx: Context): - GH = "gh release create".split() - VERIFY = ["--verify-tag"] if ctx.verify_tag else [] - ARTIFACT = f"{str(JAR).removesuffix('/')}#MarisaContinued-{VERSION}.jar" - # fmt: off - COMMAND = GH + VERIFY + [ - "--title", TITLE, - "--notes", BODY, - f"v{VERSION}", - ARTIFACT, - ] - # fmt: on - run_command(COMMAND) - - -def steam(_: Context): - COMMAND = "java -jar mod-uploader.jar upload -w MarisaContinued/".split( - " " - ) - run_command(COMMAND, cwd=STS) - - -class Command(StrEnum): - STEAM = auto() - GITHUB = auto() - BOTH = auto() - - @classmethod - def to_func(cls, command: Self) -> list[Fn[None]]: - match command: - case cls.STEAM: - return [steam] - case cls.GITHUB: - return [github] - case cls.BOTH: - return [steam, github] - - -app = Typer() - - -@app.command(context_settings=dict(help_option_names=["-h", "--help"])) -def main( - command: Command = Argument(..., help=__doc__), - verify_tag: bool = Option(True, help="Enforce tags to be in origin"), -): - verify_hard_links() - verify_jar_version() - verify_changelog_version() - - fx = Command.to_func(command) - ctx = Context(verify_tag=verify_tag) - runner = Runner(ctx) - # pylint: disable-next=not-an-iterable - names = ", ".join(f.__name__ for f in fx) - print(f"Will run the following commands: {names}") - wait() - with ProcessPoolExecutor() as executor: - result = executor.map(runner, fx) - - for r in result: - print(r) - - -if __name__ == "__main__": - app() diff --git a/releases.ts b/releases.ts new file mode 100644 index 0000000..bb52f88 --- /dev/null +++ b/releases.ts @@ -0,0 +1,36 @@ +import { join } from "https://deno.land/std@0.219.0/path/join.ts" +import { verifyHardLink } from "./scripts/link/mod.ts" +import { steam as SteamPath } from "./scripts/paths.ts" +import $ from "https://deno.land/x/dax/mod.ts" + +export const basePath = "docs/changelog" + +export const changelogPath = join(basePath, "changelog.md") +export const version = (await Deno.readTextFile(join(basePath, "version.txt"))).trim() + +const changelogText = await Deno.readTextFile(changelogPath) +const title = changelogText.split("\n")[0].replace("# ", "") +const body = changelogText.split("\n").slice(1).join("\n") + +export const jarPath = "build/libs/MarisaContinued.jar" +export const stsPath = join(SteamPath, "SlayTheSpire") + +const github = async () => { + const artifact = `${jarPath}#MarisaContinued-${version}.jar` + const command = + $`gh release create --verify-tag --title ${title} --notes ${body} v${version} ${artifact}` + await command.printCommand() + await command.text() +} + +if (import.meta.main) { + switch (Deno.args[0]) { + case "github": { + await github() + break + } + case "steam": { + await $`java -jar mod-uploader.jar upload -w MarisaContinued/`.cwd(stsPath) + } + } +} diff --git a/releases_test.ts b/releases_test.ts new file mode 100644 index 0000000..1db7c16 --- /dev/null +++ b/releases_test.ts @@ -0,0 +1,29 @@ +import { join } from "https://deno.land/std@0.219.0/path/join.ts" +import { basePath, changelogPath, jarPath, stsPath, version } from "./releases.ts" +import { verifyHardLink } from "./scripts/link/mod.ts" +import { assertEquals } from "https://deno.land/std@0.219.0/assert/assert_equals.ts" +import { assertStringIncludes } from "https://deno.land/std@0.219.0/assert/assert_string_includes.ts" +import { readZip } from "https://deno.land/x/jszip@0.11.0/mod.ts" + +Deno.test("hardlinks are verified", async () => { + await verifyHardLink({ quiet: true, check: true }) +}) + +Deno.test("modjson.json has correct version", async () => { + const zip = await readZip(jarPath) + const modinfo = JSON.parse(await zip.file("ModTheSpire.json").async("text")) + + assertEquals(modinfo["version"], version) +}) + +Deno.test("changelog.md has correct version", async () => { + const paths = [ + join(stsPath, "MarisaContinued", "config.json"), + join(basePath, "changelog.bbcode"), + join(basePath, "changelog.sts.txt"), + changelogPath, + ] + const configs = await Promise.all(paths.map((x) => Deno.readTextFile(x))) + + configs.forEach((config) => assertStringIncludes(config, version)) +}) diff --git a/scripts/link/mod.ts b/scripts/link/mod.ts index 9b57905..9be9c06 100755 --- a/scripts/link/mod.ts +++ b/scripts/link/mod.ts @@ -8,23 +8,26 @@ import { image, jar, mod } from "../paths.ts" import { noop } from "./noop.ts" import { createHardLink, forceCreateLinkTo, hardlinkError } from "./hardlink.ts" +export const verifyHardLink = async ( + { quiet, check }: { quiet?: true | undefined; check?: true | undefined }, +) => { + const log = quiet ? noop : console.log + const action = check ? hardlinkError : createHardLink + const linkTo = forceCreateLinkTo(log)(action) + + await Promise.all([ + linkTo(jar)(join(mod, "content")), + linkTo(image)(mod), + ]) +} + const main = () => new Command() .description("Hard link mod jar and image to steam's slay the spire folder") .option("-q, --quiet", "Do not output to console. Used in gradle task.") .option("-c, --check", "Exit with code 1 on failure instead.") - .action(async ({ quiet, check }) => { - const log = quiet ? noop : console.log - const action = check ? hardlinkError : createHardLink - const linkTo = forceCreateLinkTo(log)(action) - - await Promise.all([ - linkTo(jar)(join(mod, "content")), - linkTo(image)(mod), - ]) - }) - .parse(Deno.args) + .action(verifyHardLink) if (import.meta.main) { - main() + await main().parse(Deno.args) }