this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add Nix flake to enable Star Rod in DX build system (#13)

* add nix flake

* create main config file without prompting

* update to gradle 8.7

* move main.cfg to user.home

On macOS and Linux: ~/.config/star-rod, or XDG_CONFIG_HOME/star-rod
On Windows: ~/AppData/Local/StarRod

* use current directory as project, if it is one

* flake: use jdk17

Overlay was misbehaving

* add ci for nix flake

* add poms to verification-metadata.xml

* read derivation version from app.properties

* move database to XDG_STATE_HOME

* support darwin

* revert rename of output zip to StarRod.zip

* fix arm64 by upgrading to lwjgl3-awt 0.2.2

authored by

Alex Bates and committed by
GitHub
7452ec0c a0eabe5c

+1358 -96
+1
.envrc
··· 1 + use flake
+14
.github/workflows/validate.yml
··· 19 19 uses: gradle/actions/setup-gradle@v3 20 20 - name: Build 21 21 run: ./gradlew createReleaseZip 22 + build-nix-flake: 23 + runs-on: ubuntu-latest 24 + steps: 25 + - name: Checkout 26 + uses: actions/checkout@v4 27 + - name: Setup Nix 28 + uses: cachix/install-nix-action@v25 29 + - name: Setup Cachix 30 + uses: cachix/cachix-action@v15 31 + with: 32 + name: papermario-dx 33 + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 34 + - name: Build 35 + run: nix build
+4 -1
.gitignore
··· 21 21 22 22 # Eclipse settings 23 23 .settings/* 24 - !.settings/org.eclipse.buildship.core.prefs 25 24 !.settings/org.eclipse.core.resources.prefs 26 25 !.settings/org.eclipse.jdt.core.prefs 27 26 !.settings/org.eclipse.jdt.ui.prefs ··· 29 28 # Vscode settings 30 29 .vscode/* 31 30 !.vscode/settings.json 31 + 32 + # Nix 33 + .direnv 34 + result
-13
.settings/org.eclipse.buildship.core.prefs
··· 1 - arguments= 2 - auto.sync=false 3 - build.scans.enabled=false 4 - connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) 5 - connection.project.dir= 6 - eclipse.preferences.version=1 7 - gradle.user.home= 8 - java.home= 9 - jvm.arguments= 10 - offline.mode=false 11 - override.workspace.settings=false 12 - show.console.view=false 13 - show.executions.view=false
+4
.settings/org.eclipse.jdt.core.prefs
··· 1 1 eclipse.preferences.version=1 2 2 org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled 3 + org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=ignore 3 4 org.eclipse.jdt.core.codeComplete.argumentPrefixes= 4 5 org.eclipse.jdt.core.codeComplete.argumentSuffixes= 5 6 org.eclipse.jdt.core.codeComplete.fieldPrefixes= ··· 19 20 org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable 20 21 org.eclipse.jdt.core.compiler.annotation.nullable.secondary= 21 22 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled 23 + org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 24 + org.eclipse.jdt.core.compiler.compliance=17 22 25 org.eclipse.jdt.core.compiler.problem.APILeak=warning 23 26 org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info 24 27 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning ··· 112 115 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore 113 116 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning 114 117 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning 118 + org.eclipse.jdt.core.compiler.source=17 115 119 org.eclipse.jdt.core.formatter.align_arrows_in_switch_on_columns=false 116 120 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false 117 121 org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+2 -1
.vscode/settings.json
··· 4 4 "editor.formatOnSave": true, 5 5 "editor.rulers": [ 6 6 150 7 - ] 7 + ], 8 + "java.configuration.updateBuildConfiguration": "automatic" 8 9 }
+3 -1
build.gradle.kts
··· 71 71 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-linux") 72 72 runtimeOnly("org.lwjgl:lwjgl-assimp::natives-linux-arm64") 73 73 74 - implementation("org.lwjglx:lwjgl3-awt:0.1.8") 74 + implementation("org.lwjglx:lwjgl3-awt:0.2.2") { 75 + exclude(group = "org.lwjgl") // https://github.com/LWJGLX/lwjgl3-awt/issues/74 76 + } 75 77 76 78 implementation("commons-io:commons-io:2.16.1") 77 79 implementation("org.apache.commons:commons-text:1.12.0")
+58
flake.lock
··· 1 + { 2 + "nodes": { 3 + "gradle-dot-nix": { 4 + "inputs": { 5 + "nixpkgs": "nixpkgs" 6 + }, 7 + "locked": { 8 + "lastModified": 1730301489, 9 + "narHash": "sha256-59k5AuQ+qn3El6AseUmtN0MMadBVzNj0Lmh81MdKavM=", 10 + "owner": "CrazyChaoz", 11 + "repo": "gradle-dot-nix", 12 + "rev": "7c7aef4e7cf60c4fd1922d08b3e710186b741fa8", 13 + "type": "github" 14 + }, 15 + "original": { 16 + "owner": "CrazyChaoz", 17 + "repo": "gradle-dot-nix", 18 + "type": "github" 19 + } 20 + }, 21 + "nixpkgs": { 22 + "locked": { 23 + "lastModified": 0, 24 + "narHash": "sha256-FVZKU8VYNST8+LKQBt1Nij9FAXEDufXGgFbg26wqmZk=", 25 + "path": "/nix/store/fgwbzb1zisl9kjfqnbhkpyk71xfsg6qa-source", 26 + "type": "path" 27 + }, 28 + "original": { 29 + "id": "nixpkgs", 30 + "type": "indirect" 31 + } 32 + }, 33 + "nixpkgs_2": { 34 + "locked": { 35 + "lastModified": 1735563628, 36 + "narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=", 37 + "owner": "NixOS", 38 + "repo": "nixpkgs", 39 + "rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798", 40 + "type": "github" 41 + }, 42 + "original": { 43 + "owner": "NixOS", 44 + "ref": "nixos-24.05", 45 + "repo": "nixpkgs", 46 + "type": "github" 47 + } 48 + }, 49 + "root": { 50 + "inputs": { 51 + "gradle-dot-nix": "gradle-dot-nix", 52 + "nixpkgs": "nixpkgs_2" 53 + } 54 + } 55 + }, 56 + "root": "root", 57 + "version": 7 58 + }
+99
flake.nix
··· 1 + rec { 2 + description = "Paper Mario (N64) asset editor"; 3 + inputs = { 4 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; 5 + gradle-dot-nix.url = "github:CrazyChaoz/gradle-dot-nix"; 6 + }; 7 + outputs = { nixpkgs, gradle-dot-nix, ... }: 8 + let 9 + javaVersion = 17; 10 + supportedSystems = [ "x86_64-linux" "x86_64-darwin" "x86_64-darwin" "aarch64-darwin" ]; 11 + forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f { 12 + pkgs = import nixpkgs { inherit system; }; 13 + }); 14 + in { 15 + devShells = forEachSupportedSystem ({ pkgs }: let 16 + jdk = pkgs."jdk${toString javaVersion}"; 17 + gradle = pkgs.gradle.override { java = jdk; }; 18 + lombok = pkgs.lombok.override { inherit jdk; }; 19 + in { 20 + default = pkgs.mkShell { 21 + packages = [ 22 + gradle 23 + jdk 24 + ]; 25 + shellHook = 26 + let 27 + loadLombok = "-javaagent:${lombok}/share/java/lombok.jar"; 28 + prev = "\${JAVA_TOOL_OPTIONS:+ $JAVA_TOOL_OPTIONS}"; 29 + in 30 + '' 31 + export JAVA_TOOL_OPTIONS="${loadLombok}${prev}" 32 + ''; 33 + }; 34 + }); 35 + packages = forEachSupportedSystem ({ pkgs }: 36 + let 37 + gradle-init-script = (import gradle-dot-nix { 38 + inherit pkgs; 39 + gradle-verification-metadata-file = ./gradle/verification-metadata.xml; # generated by `gradle -M sha256 createReleaseZip` 40 + }).gradle-init; 41 + pname = "star-rod"; 42 + desktopItem = pkgs.makeDesktopItem { 43 + name = pname; 44 + desktopName = "Star Rod"; 45 + exec = pname; 46 + comment = description; 47 + type = "Application"; 48 + categories = [ "Development" "3DGraphics" "Java" ]; 49 + keywords = [ "Paper Mario" "Nintendo 64" "ROM Hacking" "Modding" ]; 50 + icon = "star-rod"; 51 + terminal = false; 52 + startupWMClass = "app-StarRodMain"; 53 + }; 54 + in { 55 + default = pkgs.stdenv.mkDerivation rec { 56 + inherit pname; 57 + version = builtins.elemAt (builtins.match "^.*version=([[:digit:].]+).*$" (builtins.readFile ./app.properties)) 0; 58 + src = ./.; 59 + nativeBuildInputs = let 60 + jdk = pkgs."jdk${toString javaVersion}"; 61 + gradle = pkgs.gradle.override { java = jdk; }; 62 + in [ 63 + pkgs.makeWrapper 64 + pkgs.unzip 65 + 66 + gradle 67 + jdk 68 + ]; 69 + buildPhase = '' 70 + export GRADLE_USER_HOME="/tmp" # https://github.com/NixOS/nixpkgs/issues/34707 71 + gradle createReleaseZip --info -I ${gradle-init-script} --offline --full-stacktrace 72 + ''; 73 + installPhase = '' 74 + unzip -d $out build/release/StarRod-*.zip 75 + rm $out/StarRod.bat 76 + 77 + mkdir -p $out/share/java 78 + mv $out/StarRod.jar $out/share/java 79 + mv $out/database $out/share/java 80 + 81 + mkdir -p $out/bin 82 + makeWrapper ${pkgs.jre}/bin/java $out/bin/${pname} \ 83 + --add-flags "-cp $out/share/java/StarRod.jar app.StarRodMain" 84 + 85 + # TODO: icon 86 + #install -Dm444 logo_512.png $out/share/icons/hicolor/512x512/apps/${pname}.png 87 + install -Dm444 -t $out/share/applications ${desktopItem}/share/applications/* 88 + ''; 89 + meta = with pkgs.lib; { 90 + homepage = "https://github.com/z64a/star-rod"; 91 + inherit description; 92 + mainProgram = pname; 93 + license = licenses.mit; 94 + platforms = supportedSystems; 95 + }; 96 + }; 97 + }); 98 + }; 99 + }
+1054
gradle/verification-metadata.xml
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <verification-metadata xmlns="https://schema.gradle.org/dependency-verification" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schema.gradle.org/dependency-verification https://schema.gradle.org/dependency-verification/dependency-verification-1.3.xsd"> 3 + <configuration> 4 + <verify-metadata>true</verify-metadata> 5 + <verify-signatures>false</verify-signatures> 6 + </configuration> 7 + <components> 8 + <component group="com.alexandriasoftware.swing" name="jsplitbutton" version="1.3.1"> 9 + <artifact name="jsplitbutton-1.3.1.jar"> 10 + <sha256 value="249d1981c7edffc293d8b82ed784113ee1be878a5f63a28876bab8a1f327eada" origin="Generated by Gradle"/> 11 + </artifact> 12 + <artifact name="jsplitbutton-1.3.1.pom"> 13 + <sha256 value="4599b2e333b5cb4a3dcad74bbaa4a562715e5df651826911a7f831919fb0cde0" origin="Generated by Gradle"/> 14 + </artifact> 15 + </component> 16 + <component group="com.alexdupre" name="pngj" version="2.1.2.1"> 17 + <artifact name="pngj-2.1.2.1.jar"> 18 + <sha256 value="bff31eb6934d031dc1312481614116ee272bd7c5db45cf3bf8ab4296364926d8" origin="Generated by Gradle"/> 19 + </artifact> 20 + <artifact name="pngj-2.1.2.1.pom"> 21 + <sha256 value="5d8d938f962fc64cfcb3dc749b817e2d40ee89c014ebdbe7aefed4ac75aaedac" origin="Generated by Gradle"/> 22 + </artifact> 23 + </component> 24 + <component group="com.cmgapps" name="gradle-licenses-plugin" version="4.8.0"> 25 + <artifact name="gradle-licenses-plugin-4.8.0.jar"> 26 + <sha256 value="92fa2610565bde2c2361f200ce62d1ed99ad0beca6840f7976b06eeec9e3953c" origin="Generated by Gradle"/> 27 + </artifact> 28 + <artifact name="gradle-licenses-plugin-4.8.0.module"> 29 + <sha256 value="8ae00df26531c88288b1eb66d172cbc115f63b164323f8a455c7db6d6b536df7" origin="Generated by Gradle"/> 30 + </artifact> 31 + </component> 32 + <component group="com.cmgapps.licenses" name="com.cmgapps.licenses.gradle.plugin" version="4.8.0"> 33 + <artifact name="com.cmgapps.licenses.gradle.plugin-4.8.0.pom"> 34 + <sha256 value="acf7c6217fe774ea1ed286952d3348293d7f0792b5348e3a6985f0f0f35dddcd" origin="Generated by Gradle"/> 35 + </artifact> 36 + </component> 37 + <component group="com.fasterxml" name="oss-parent" version="48"> 38 + <artifact name="oss-parent-48.pom"> 39 + <sha256 value="11bba22d8631816e09b623a200747453d6491a66eac8f5c089c73da2b749014f" origin="Generated by Gradle"/> 40 + </artifact> 41 + </component> 42 + <component group="com.fasterxml.jackson" name="jackson-bom" version="2.14.1"> 43 + <artifact name="jackson-bom-2.14.1.pom"> 44 + <sha256 value="78fdf99e5050fc485f4117dab8cccbfb6fa6c68385eb5f38a09b655371d4a6cc" origin="Generated by Gradle"/> 45 + </artifact> 46 + </component> 47 + <component group="com.fasterxml.jackson" name="jackson-parent" version="2.14"> 48 + <artifact name="jackson-parent-2.14.pom"> 49 + <sha256 value="0906add855ae39f92357d63f485889b08fca4c43a5fe433522d75344e0757b19" origin="Generated by Gradle"/> 50 + </artifact> 51 + </component> 52 + <component group="com.formdev" name="flatlaf" version="3.4.1"> 53 + <artifact name="flatlaf-3.4.1.jar"> 54 + <sha256 value="8b4bbd34727f80e74555b2be3d8dcb994434654986c64f4298162247a9d35ffc" origin="Generated by Gradle"/> 55 + </artifact> 56 + <artifact name="flatlaf-3.4.1.module"> 57 + <sha256 value="e74da47d450b148b99ea7350645e7d7aaea0a305516fe4b402a29e3472eb76e8" origin="Generated by Gradle"/> 58 + </artifact> 59 + <artifact name="flatlaf-3.4.1.pom"> 60 + <sha256 value="fd3cdf9107fb92f39f921dd5ae336e75d34a422cf79210bb7735f86b57288871" origin="Generated by Gradle"/> 61 + </artifact> 62 + </component> 63 + <component group="com.formdev" name="flatlaf-intellij-themes" version="3.4.1"> 64 + <artifact name="flatlaf-intellij-themes-3.4.1.jar"> 65 + <sha256 value="56e4d68b9b5156b9b707b6fd715f03a115efe7e062f5ea79e23db51e342f7d52" origin="Generated by Gradle"/> 66 + </artifact> 67 + <artifact name="flatlaf-intellij-themes-3.4.1.module"> 68 + <sha256 value="b6a5ce2b3fb3b804553127ed25dc9b6ef6fd4f935a8390ec561772993df40d67" origin="Generated by Gradle"/> 69 + </artifact> 70 + <artifact name="flatlaf-intellij-themes-3.4.1.pom"> 71 + <sha256 value="091fb40ae322934d42918b62bd4b0b32be3c604fe72f86e788501d44c90a5b00" origin="Generated by Gradle"/> 72 + </artifact> 73 + </component> 74 + <component group="com.github.johnrengelman" name="shadow" version="8.1.1"> 75 + <artifact name="shadow-8.1.1.jar"> 76 + <sha256 value="084197555590a53bb21b59508a3330559f536ddb448eafd1ec675f5462036fcf" origin="Generated by Gradle"/> 77 + </artifact> 78 + <artifact name="shadow-8.1.1.module"> 79 + <sha256 value="9d0f3b4aaa67898723eaf6c5e9cd273878f9574ddacd64aa370243620ce02e4a" origin="Generated by Gradle"/> 80 + </artifact> 81 + </component> 82 + <component group="com.github.johnrengelman.shadow" name="com.github.johnrengelman.shadow.gradle.plugin" version="8.1.1"> 83 + <artifact name="com.github.johnrengelman.shadow.gradle.plugin-8.1.1.pom"> 84 + <sha256 value="3cb3886b97df6e066f108c316b219f262c97c3cb2df6da78927e645deb643cb0" origin="Generated by Gradle"/> 85 + </artifact> 86 + </component> 87 + <component group="com.google.code.gson" name="gson" version="2.10.1"> 88 + <artifact name="gson-2.10.1.jar"> 89 + <sha256 value="4241c14a7727c34feea6507ec801318a3d4a90f070e4525681079fb94ee4c593" origin="Generated by Gradle"/> 90 + </artifact> 91 + <artifact name="gson-2.10.1.pom"> 92 + <sha256 value="d2b115634f5c085db4b9c9ffc2658e89e231fdbfbe2242121a1cd95d4d948dd7" origin="Generated by Gradle"/> 93 + </artifact> 94 + </component> 95 + <component group="com.google.code.gson" name="gson-parent" version="2.10.1"> 96 + <artifact name="gson-parent-2.10.1.pom"> 97 + <sha256 value="4248e0882426c615182385d6086c3ef3262e769957189e29306280b85482b833" origin="Generated by Gradle"/> 98 + </artifact> 99 + </component> 100 + <component group="com.googlecode.javaewah" name="JavaEWAH" version="1.1.13"> 101 + <artifact name="JavaEWAH-1.1.13.jar"> 102 + <sha256 value="4c0fda2b1d317750d7ea324e36c70b2bc48310c0aaae67b98df0915d696d7111" origin="Generated by Gradle"/> 103 + </artifact> 104 + <artifact name="JavaEWAH-1.1.13.pom"> 105 + <sha256 value="9725b1fe9c6810d977750bb84415ea1082c4b488d4a839f9704bb4f5e8fc17f4" origin="Generated by Gradle"/> 106 + </artifact> 107 + </component> 108 + <component group="com.jaredsburrows" name="gradle-license-plugin" version="0.9.7"> 109 + <artifact name="gradle-license-plugin-0.9.7.jar"> 110 + <sha256 value="06895528c4a6d6285497f8a49fdaee58d51a8ba5e201bf0d4108a68dfd379fdd" origin="Generated by Gradle"/> 111 + </artifact> 112 + <artifact name="gradle-license-plugin-0.9.7.module"> 113 + <sha256 value="dea6729f226c5492d554d8c5a8efc8ac5b55e55914c391fda59ea8383a73549a" origin="Generated by Gradle"/> 114 + </artifact> 115 + </component> 116 + <component group="com.jaredsburrows.license" name="com.jaredsburrows.license.gradle.plugin" version="0.9.7"> 117 + <artifact name="com.jaredsburrows.license.gradle.plugin-0.9.7.pom"> 118 + <sha256 value="a26dd210e21126be25e77602aa633146e526c982a43f15636188ea81ec2793c6" origin="Generated by Gradle"/> 119 + </artifact> 120 + </component> 121 + <component group="com.jcraft" name="jsch.agentproxy" version="0.0.7"> 122 + <artifact name="jsch.agentproxy-0.0.7.pom"> 123 + <sha256 value="4a2170c4ec7de446d643acaec05febb8bc52c0cd0f5fead9f486f7551192d11d" origin="Generated by Gradle"/> 124 + </artifact> 125 + </component> 126 + <component group="com.jcraft" name="jsch.agentproxy.connector-factory" version="0.0.7"> 127 + <artifact name="jsch.agentproxy.connector-factory-0.0.7.jar"> 128 + <sha256 value="b576930d6a822761123365358d90281351d88cec2dd845912873c1696184d6cb" origin="Generated by Gradle"/> 129 + </artifact> 130 + <artifact name="jsch.agentproxy.connector-factory-0.0.7.pom"> 131 + <sha256 value="945e7a638d38302ee2f340067de88caed2400e9a25799df2a64c52893fc19f87" origin="Generated by Gradle"/> 132 + </artifact> 133 + </component> 134 + <component group="com.jcraft" name="jsch.agentproxy.core" version="0.0.7"> 135 + <artifact name="jsch.agentproxy.core-0.0.7.jar"> 136 + <sha256 value="c5cb21fed78fd2c581e40276e428b6407e4801edb0baa1f7ef0c1025d06a3a7f" origin="Generated by Gradle"/> 137 + </artifact> 138 + <artifact name="jsch.agentproxy.core-0.0.7.pom"> 139 + <sha256 value="4ea68183c5a4394f574dd1d611becd54fb85cdc37f25b624b145e81176da9b24" origin="Generated by Gradle"/> 140 + </artifact> 141 + </component> 142 + <component group="com.jcraft" name="jsch.agentproxy.pageant" version="0.0.7"> 143 + <artifact name="jsch.agentproxy.pageant-0.0.7.jar"> 144 + <sha256 value="609b7b9d00b29021397544652b649045209c41165790612b2b0df6f74c8dfb27" origin="Generated by Gradle"/> 145 + </artifact> 146 + <artifact name="jsch.agentproxy.pageant-0.0.7.pom"> 147 + <sha256 value="bc87288609d59650853ff19911c556c8053eb0e05dbd200b260dc620d81d6a77" origin="Generated by Gradle"/> 148 + </artifact> 149 + </component> 150 + <component group="com.jcraft" name="jsch.agentproxy.sshagent" version="0.0.7"> 151 + <artifact name="jsch.agentproxy.sshagent-0.0.7.jar"> 152 + <sha256 value="fd03fdeb40312846a0827cce1b2f93773d0d1ccc134bdb953dfac2d2cd44b321" origin="Generated by Gradle"/> 153 + </artifact> 154 + <artifact name="jsch.agentproxy.sshagent-0.0.7.pom"> 155 + <sha256 value="ea21683913c1dd50db36112c8973086a6e60cfd95bb79dbbcb9b786e237469eb" origin="Generated by Gradle"/> 156 + </artifact> 157 + </component> 158 + <component group="com.jcraft" name="jsch.agentproxy.svnkit-trilead-ssh2" version="0.0.7"> 159 + <artifact name="jsch.agentproxy.svnkit-trilead-ssh2-0.0.7.jar"> 160 + <sha256 value="d0f54fa650ef7130046dd752c1cf46b2dd1f1009632cf82ad0a2dc6e7dde0f57" origin="Generated by Gradle"/> 161 + </artifact> 162 + <artifact name="jsch.agentproxy.svnkit-trilead-ssh2-0.0.7.pom"> 163 + <sha256 value="bbd8123fbc9ff8b9cba0b5144fce5717b9b6525f02905cde7c163dc300952e2e" origin="Generated by Gradle"/> 164 + </artifact> 165 + </component> 166 + <component group="com.jcraft" name="jsch.agentproxy.usocket-jna" version="0.0.7"> 167 + <artifact name="jsch.agentproxy.usocket-jna-0.0.7.jar"> 168 + <sha256 value="57b8169c4877a4820a57df9ec5e5306d195d633d90672d3cc05ea876ba6d4999" origin="Generated by Gradle"/> 169 + </artifact> 170 + <artifact name="jsch.agentproxy.usocket-jna-0.0.7.pom"> 171 + <sha256 value="a5e1f612d4f5724295fb386f2039b545c5ee91d018e8c7853a814a7eed969223" origin="Generated by Gradle"/> 172 + </artifact> 173 + </component> 174 + <component group="com.jcraft" name="jsch.agentproxy.usocket-nc" version="0.0.7"> 175 + <artifact name="jsch.agentproxy.usocket-nc-0.0.7.jar"> 176 + <sha256 value="231294f658fb855c0c8d070fc1c654d2b82772acc092e8d5ba53e9ae717a7096" origin="Generated by Gradle"/> 177 + </artifact> 178 + <artifact name="jsch.agentproxy.usocket-nc-0.0.7.pom"> 179 + <sha256 value="a7845f1420b046a1dc2df4849a67e8e2677126de699baf3c5f4bd3cb797dab8c" origin="Generated by Gradle"/> 180 + </artifact> 181 + </component> 182 + <component group="com.miglayout" name="miglayout-core" version="11.3"> 183 + <artifact name="miglayout-core-11.3.jar"> 184 + <sha256 value="b420e2d42a2de60a97e0ec826e9a46b970d694711729c47a60b8960551b6494b" origin="Generated by Gradle"/> 185 + </artifact> 186 + <artifact name="miglayout-core-11.3.pom"> 187 + <sha256 value="72829588fe9eb4c06b5b145a83c272ba8d367c65017520ea72188302bb90d89f" origin="Generated by Gradle"/> 188 + </artifact> 189 + </component> 190 + <component group="com.miglayout" name="miglayout-parent" version="11.3"> 191 + <artifact name="miglayout-parent-11.3.pom"> 192 + <sha256 value="b5f4a8f9d27ddebb6eb61ddada82eede55ae80f57c1c3c444f2b76ea70dbe85c" origin="Generated by Gradle"/> 193 + </artifact> 194 + </component> 195 + <component group="com.miglayout" name="miglayout-swing" version="11.3"> 196 + <artifact name="miglayout-swing-11.3.jar"> 197 + <sha256 value="2ef1e358777566fc21b3eae89b65124100e677dec8da0889a3c0676522ee0df0" origin="Generated by Gradle"/> 198 + </artifact> 199 + <artifact name="miglayout-swing-11.3.pom"> 200 + <sha256 value="b5847bc3391b60a3f7e1ac56161a46362ec5157c2722da514b80c96023e1c837" origin="Generated by Gradle"/> 201 + </artifact> 202 + </component> 203 + <component group="com.squareup.moshi" name="moshi" version="1.15.0"> 204 + <artifact name="moshi-1.15.0.jar"> 205 + <sha256 value="350d48c34df4a8ef4f1475aa65ef0e54c4d8302a71efc9f6c09d0e98fd4c63c6" origin="Generated by Gradle"/> 206 + </artifact> 207 + <artifact name="moshi-1.15.0.module"> 208 + <sha256 value="22a95e85511bbc20237570a138d0bad1ed140c6a6806de1e714f4a1c7e2205a9" origin="Generated by Gradle"/> 209 + </artifact> 210 + </component> 211 + <component group="com.squareup.okio" name="okio" version="2.10.0"> 212 + <artifact name="okio-2.10.0.module"> 213 + <sha256 value="11cbeabc3a765c9a803242fa2024a11853eb0865da536c4b05afdcdbb2346370" origin="Generated by Gradle"/> 214 + </artifact> 215 + <artifact name="okio-jvm-2.10.0.jar"> 216 + <sha256 value="a27f091d34aa452e37227e2cfa85809f29012a8ef2501a9b5a125a978e4fcbc1" origin="Generated by Gradle"/> 217 + </artifact> 218 + </component> 219 + <component group="com.trilead" name="trilead-ssh2" version="1.0.0-build222"> 220 + <artifact name="trilead-ssh2-1.0.0-build222.jar"> 221 + <sha256 value="563dc40f5b17f4e2154fa41a16ae7f40cc49011bc5400b0870ebaf61a47b9c22" origin="Generated by Gradle"/> 222 + </artifact> 223 + <artifact name="trilead-ssh2-1.0.0-build222.pom"> 224 + <sha256 value="ef91b2f5719c9b26c23aa545c218eb8b0b9aaf8d75fd24043665506fb9b419c9" origin="Generated by Gradle"/> 225 + </artifact> 226 + </component> 227 + <component group="commons-codec" name="commons-codec" version="1.16.1"> 228 + <artifact name="commons-codec-1.16.1.jar"> 229 + <sha256 value="ec87bfb55f22cbd1b21e2190eeda28b2b312ed2a431ee49fbdcc01812d04a5e4" origin="Generated by Gradle"/> 230 + </artifact> 231 + <artifact name="commons-codec-1.16.1.pom"> 232 + <sha256 value="b826ddd92f9d7cc64371a02fa0830c154d67c98370ea54a2d196e72eb590ad28" origin="Generated by Gradle"/> 233 + </artifact> 234 + </component> 235 + <component group="commons-io" name="commons-io" version="2.11.0"> 236 + <artifact name="commons-io-2.11.0.jar"> 237 + <sha256 value="961b2f6d87dbacc5d54abf45ab7a6e2495f89b75598962d8c723cea9bc210908" origin="Generated by Gradle"/> 238 + </artifact> 239 + <artifact name="commons-io-2.11.0.pom"> 240 + <sha256 value="2e016fd7e3244b5f2c20acad834d93aa4790486ee1e4564641361a3e831eef59" origin="Generated by Gradle"/> 241 + </artifact> 242 + </component> 243 + <component group="commons-io" name="commons-io" version="2.16.1"> 244 + <artifact name="commons-io-2.16.1.jar"> 245 + <sha256 value="f41f7baacd716896447ace9758621f62c1c6b0a91d89acee488da26fc477c84f" origin="Generated by Gradle"/> 246 + </artifact> 247 + <artifact name="commons-io-2.16.1.pom"> 248 + <sha256 value="5777d292251c7895c04a4c57015683ec3b353a12486c9b3e7178e9b0b3c38fff" origin="Generated by Gradle"/> 249 + </artifact> 250 + </component> 251 + <component group="de.regnis.q.sequence" name="sequence-library" version="1.0.4"> 252 + <artifact name="sequence-library-1.0.4.jar"> 253 + <sha256 value="53079f6e7d8ba224a77387d9b7fa3ee8b36f9f482a2f186bee235474db0cd282" origin="Generated by Gradle"/> 254 + </artifact> 255 + <artifact name="sequence-library-1.0.4.pom"> 256 + <sha256 value="4adee65d24ef4b03ed9ebbff7fbefe4e90a6919d6e2066d0875facd360111338" origin="Generated by Gradle"/> 257 + </artifact> 258 + </component> 259 + <component group="gradle.plugin.net.nemerosa" name="versioning" version="3.1.0"> 260 + <artifact name="versioning-3.1.0.jar"> 261 + <sha256 value="8a8378477cf61621a2db34daf84e5252e0ecb3440709a7a598613e77c1e55c74" origin="Generated by Gradle"/> 262 + </artifact> 263 + <artifact name="versioning-3.1.0.pom"> 264 + <sha256 value="e388ae1f2cd18832095bbc3b43f8d9608c290de164a875c58e84ac5045a501a1" origin="Generated by Gradle"/> 265 + </artifact> 266 + </component> 267 + <component group="io.fabric8" name="kubernetes-client-bom" version="5.12.2"> 268 + <artifact name="kubernetes-client-bom-5.12.2.pom"> 269 + <sha256 value="eaa03c16956568d54a6ba437d49d40cbf0dd8e93977f984318242576b650bc3b" origin="Generated by Gradle"/> 270 + </artifact> 271 + </component> 272 + <component group="io.netty" name="netty-bom" version="4.1.86.Final"> 273 + <artifact name="netty-bom-4.1.86.Final.pom"> 274 + <sha256 value="12716c1fe64cf5bdaa7044d37d13aae3a88821b91d4798420c46a74769178afd" origin="Generated by Gradle"/> 275 + </artifact> 276 + </component> 277 + <component group="jakarta.platform" name="jakarta.jakartaee-bom" version="9.0.0"> 278 + <artifact name="jakarta.jakartaee-bom-9.0.0.pom"> 279 + <sha256 value="91903d0dd876dec67f8b923f1332ba72bf295b06bd397d18f3af19307ce1a2ce" origin="Generated by Gradle"/> 280 + </artifact> 281 + </component> 282 + <component group="jakarta.platform" name="jakartaee-api-parent" version="9.0.0"> 283 + <artifact name="jakartaee-api-parent-9.0.0.pom"> 284 + <sha256 value="f65dcf14b6e1d9148e198a390fafe155faca093253dde900307f3e0ea82cad3b" origin="Generated by Gradle"/> 285 + </artifact> 286 + </component> 287 + <component group="net.i2p.crypto" name="eddsa" version="0.3.0"> 288 + <artifact name="eddsa-0.3.0.jar"> 289 + <sha256 value="4dda1120db856640dbec04140ed23242215a075fe127bdefa0dcfa29fb31267d" origin="Generated by Gradle"/> 290 + </artifact> 291 + <artifact name="eddsa-0.3.0.pom"> 292 + <sha256 value="b6b13878e4bae8b768d7ea5732cb4d66ab2f5e9fe707c0a1a776cde9de52051b" origin="Generated by Gradle"/> 293 + </artifact> 294 + </component> 295 + <component group="net.java.dev.jna" name="jna" version="5.6.0"> 296 + <artifact name="jna-5.6.0.jar"> 297 + <sha256 value="5557e235a8aa2f9766d5dc609d67948f2a8832c2d796cea9ef1d6cbe0b3b7eaf" origin="Generated by Gradle"/> 298 + </artifact> 299 + <artifact name="jna-5.6.0.pom"> 300 + <sha256 value="5fe81b0255978f24616d37b10608b79498a5f3073e1d9b2038d8736a831f2608" origin="Generated by Gradle"/> 301 + </artifact> 302 + </component> 303 + <component group="net.java.dev.jna" name="jna-platform" version="5.6.0"> 304 + <artifact name="jna-platform-5.6.0.jar"> 305 + <sha256 value="9ecea8bf2b1b39963939d18b70464eef60c508fed8820f9dcaba0c35518eabf7" origin="Generated by Gradle"/> 306 + </artifact> 307 + <artifact name="jna-platform-5.6.0.pom"> 308 + <sha256 value="1beb35cb4184e6c906a7e32eaebd852dd3da0a263962e99134ab945832394e28" origin="Generated by Gradle"/> 309 + </artifact> 310 + </component> 311 + <component group="net.java.dev.jna" name="platform" version="3.4.0"> 312 + <artifact name="platform-3.4.0.jar"> 313 + <sha256 value="ea89d5090c8303ba4e9a0056e6d8a20429f3e021411e950bfd9eba3b6e6cf15c" origin="Generated by Gradle"/> 314 + </artifact> 315 + <artifact name="platform-3.4.0.pom"> 316 + <sha256 value="8f0c14f62912c089d81386015e78cf212f9e96f675b3bc0e519c1e2d92aa8950" origin="Generated by Gradle"/> 317 + </artifact> 318 + </component> 319 + <component group="net.nemerosa.versioning" name="net.nemerosa.versioning.gradle.plugin" version="3.1.0"> 320 + <artifact name="net.nemerosa.versioning.gradle.plugin-3.1.0.pom"> 321 + <sha256 value="dcea69ecd851f5d3da132a2c550ca5e087a44b61eba9b8f29cdd8ff1f39c5420" origin="Generated by Gradle"/> 322 + </artifact> 323 + </component> 324 + <component group="org.ahocorasick" name="ahocorasick" version="0.6.3"> 325 + <artifact name="ahocorasick-0.6.3.jar"> 326 + <sha256 value="80bc42edaf2d8ec2d0b665c8c344012006cf2bd00279b10b2df871184f809194" origin="Generated by Gradle"/> 327 + </artifact> 328 + <artifact name="ahocorasick-0.6.3.pom"> 329 + <sha256 value="24b59f55b84f23f51a314ff659563d34a57ac399a629db6e4eefabcd2ae6e156" origin="Generated by Gradle"/> 330 + </artifact> 331 + </component> 332 + <component group="org.ajoberstar.grgit" name="grgit-core" version="4.1.1"> 333 + <artifact name="grgit-core-4.1.1.jar"> 334 + <sha256 value="c626aa433d6d13f245bd2c865bf46f1aa3457540bfd05aa84474b3a1ee4c2319" origin="Generated by Gradle"/> 335 + </artifact> 336 + <artifact name="grgit-core-4.1.1.module"> 337 + <sha256 value="180e750b87be263edf3a40844d03e567b5e502ec109c539417e3d6bc561b23e3" origin="Generated by Gradle"/> 338 + </artifact> 339 + </component> 340 + <component group="org.antlr" name="antlr-master" version="3.4"> 341 + <artifact name="antlr-master-3.4.pom"> 342 + <sha256 value="0328b31d9f1c7f063e37e00f62c56c8e5d03fea1d572982c1ad8e6f1872f0eee" origin="Generated by Gradle"/> 343 + </artifact> 344 + </component> 345 + <component group="org.antlr" name="antlr-runtime" version="3.4"> 346 + <artifact name="antlr-runtime-3.4.jar"> 347 + <sha256 value="5b7cf53b7b30b034023f58030c8147c433f2bee0fe7dec8fae6bebf3708c5a63" origin="Generated by Gradle"/> 348 + </artifact> 349 + <artifact name="antlr-runtime-3.4.pom"> 350 + <sha256 value="95e403c15c7ca0caa9ed2f84c756c9b01293ee89db702cd8985a8a38e11ffefa" origin="Generated by Gradle"/> 351 + </artifact> 352 + </component> 353 + <component group="org.apache" name="apache" version="23"> 354 + <artifact name="apache-23.pom"> 355 + <sha256 value="bc10624e0623f36577fac5639ca2936d3240ed152fb6d8d533ab4d270543491c" origin="Generated by Gradle"/> 356 + </artifact> 357 + </component> 358 + <component group="org.apache" name="apache" version="27"> 359 + <artifact name="apache-27.pom"> 360 + <sha256 value="b2b0fc69e22a650c3892f1c366d77076f29575c6738df4c7a70a44844484cdf9" origin="Generated by Gradle"/> 361 + </artifact> 362 + </component> 363 + <component group="org.apache" name="apache" version="30"> 364 + <artifact name="apache-30.pom"> 365 + <sha256 value="63dd4a393a9c0dfcb314efe83871a41d243bc8d200cbc7f2d197f30da78239d8" origin="Generated by Gradle"/> 366 + </artifact> 367 + </component> 368 + <component group="org.apache" name="apache" version="31"> 369 + <artifact name="apache-31.pom"> 370 + <sha256 value="555d0c9eaa69c042aff924927b9381e8f8174136d355eead445224452e6291cc" origin="Generated by Gradle"/> 371 + </artifact> 372 + </component> 373 + <component group="org.apache" name="apache" version="32"> 374 + <artifact name="apache-32.pom"> 375 + <sha256 value="cfd872c0ec27f53ae68f43dbc0fecded8add773079a53afbd390e407b42ce72f" origin="Generated by Gradle"/> 376 + </artifact> 377 + </component> 378 + <component group="org.apache.ant" name="ant" version="1.10.13"> 379 + <artifact name="ant-1.10.13.jar"> 380 + <sha256 value="befbfc79e744e9892cfa7db96df3b6e82dc17d2571af42aa427976fc22299838" origin="Generated by Gradle"/> 381 + </artifact> 382 + <artifact name="ant-1.10.13.pom"> 383 + <sha256 value="279351eed90b8f741bb48c95be61c3ec2454e3c8a9afb43bcc1d0bac1dda137a" origin="Generated by Gradle"/> 384 + </artifact> 385 + </component> 386 + <component group="org.apache.ant" name="ant-launcher" version="1.10.13"> 387 + <artifact name="ant-launcher-1.10.13.jar"> 388 + <sha256 value="cd7695b3bfb6964ab71b6a0b31dad60005ae77fe502132364679aacf08f77970" origin="Generated by Gradle"/> 389 + </artifact> 390 + <artifact name="ant-launcher-1.10.13.pom"> 391 + <sha256 value="02992fbc38055356f3c94d01eaa24999cb02a09baa9c1fdf5eac76b7c31563ca" origin="Generated by Gradle"/> 392 + </artifact> 393 + </component> 394 + <component group="org.apache.ant" name="ant-parent" version="1.10.13"> 395 + <artifact name="ant-parent-1.10.13.pom"> 396 + <sha256 value="6e5bfc870822143f1ffbb2c6f08ec488772db314a5283302f4814b126b346939" origin="Generated by Gradle"/> 397 + </artifact> 398 + </component> 399 + <component group="org.apache.commons" name="commons-csv" version="1.11.0"> 400 + <artifact name="commons-csv-1.11.0.jar"> 401 + <sha256 value="b697fe3f94cfc4f7e2a87bddf78d15cd10d8c86cbe56ae9196a62d6edbf6b76d" origin="Generated by Gradle"/> 402 + </artifact> 403 + <artifact name="commons-csv-1.11.0.pom"> 404 + <sha256 value="f081c42a9a33370fd4c6ea0640c05baf08eeac71cf570f9aebf35a9f61d64479" origin="Generated by Gradle"/> 405 + </artifact> 406 + </component> 407 + <component group="org.apache.commons" name="commons-lang3" version="3.14.0"> 408 + <artifact name="commons-lang3-3.14.0.jar"> 409 + <sha256 value="7b96bf3ee68949abb5bc465559ac270e0551596fa34523fddf890ec418dde13c" origin="Generated by Gradle"/> 410 + </artifact> 411 + <artifact name="commons-lang3-3.14.0.pom"> 412 + <sha256 value="110438863bad37c28f906bf87016e38c7a8c758ba321e09d11dc5a2363a8e79e" origin="Generated by Gradle"/> 413 + </artifact> 414 + </component> 415 + <component group="org.apache.commons" name="commons-parent" version="52"> 416 + <artifact name="commons-parent-52.pom"> 417 + <sha256 value="75dbe8f34e98e4c3ff42daae4a2f9eb4cbcd3b5f1047d54460ace906dbb4502e" origin="Generated by Gradle"/> 418 + </artifact> 419 + </component> 420 + <component group="org.apache.commons" name="commons-parent" version="64"> 421 + <artifact name="commons-parent-64.pom"> 422 + <sha256 value="6f19638994e8357b4ed734696f992057efaafa1235673998133299798e2ccddb" origin="Generated by Gradle"/> 423 + </artifact> 424 + </component> 425 + <component group="org.apache.commons" name="commons-parent" version="66"> 426 + <artifact name="commons-parent-66.pom"> 427 + <sha256 value="48fd6dc846e56b1f408660d163e75300f9e384bb63be482a8082a21d72a8db9c" origin="Generated by Gradle"/> 428 + </artifact> 429 + </component> 430 + <component group="org.apache.commons" name="commons-parent" version="69"> 431 + <artifact name="commons-parent-69.pom"> 432 + <sha256 value="d50da9c39bdca823d618d1b4a03b73f196497fcb8616fd0da727c8623592a9bb" origin="Generated by Gradle"/> 433 + </artifact> 434 + </component> 435 + <component group="org.apache.commons" name="commons-text" version="1.12.0"> 436 + <artifact name="commons-text-1.12.0.jar"> 437 + <sha256 value="de023257ff166044a56bd1aa9124e843cd05dac5806cc705a9311f3556d5a15f" origin="Generated by Gradle"/> 438 + </artifact> 439 + <artifact name="commons-text-1.12.0.pom"> 440 + <sha256 value="b2d4341c921981cb35d5570f4fc9732a08a34b1528dee84c0507c7f2719a334f" origin="Generated by Gradle"/> 441 + </artifact> 442 + </component> 443 + <component group="org.apache.logging" name="logging-parent" version="7"> 444 + <artifact name="logging-parent-7.pom"> 445 + <sha256 value="e58911dc9fc6b173a10e5aa9edb93c7994ad06602705dd067edcfc6e1e9e172b" origin="Generated by Gradle"/> 446 + </artifact> 447 + </component> 448 + <component group="org.apache.logging.log4j" name="log4j" version="2.20.0"> 449 + <artifact name="log4j-2.20.0.pom"> 450 + <sha256 value="9a37b4a8f67e8d41bc2473717a3021633d6a3c3f310579db9ad0be3f24659c69" origin="Generated by Gradle"/> 451 + </artifact> 452 + </component> 453 + <component group="org.apache.logging.log4j" name="log4j-api" version="2.20.0"> 454 + <artifact name="log4j-api-2.20.0.jar"> 455 + <sha256 value="2f43eea679ea66f14ca0f13fec2a8600ac124f5a5231dcb4df8393eddcb97550" origin="Generated by Gradle"/> 456 + </artifact> 457 + <artifact name="log4j-api-2.20.0.pom"> 458 + <sha256 value="cd45832a3d6cd2194435c0d63ca015f194968f2fbea4f291553bf7afb84e1637" origin="Generated by Gradle"/> 459 + </artifact> 460 + </component> 461 + <component group="org.apache.logging.log4j" name="log4j-bom" version="2.20.0"> 462 + <artifact name="log4j-bom-2.20.0.pom"> 463 + <sha256 value="f8bb692e95a6b7bda601e87100958e83d0061b7f123250b68128943a195e9da1" origin="Generated by Gradle"/> 464 + </artifact> 465 + </component> 466 + <component group="org.apache.logging.log4j" name="log4j-core" version="2.20.0"> 467 + <artifact name="log4j-core-2.20.0.jar"> 468 + <sha256 value="6137df848cdaed9f4d5076f75513c6c85da80b953f4e7acca38098b770763f55" origin="Generated by Gradle"/> 469 + </artifact> 470 + <artifact name="log4j-core-2.20.0.pom"> 471 + <sha256 value="de71ac100551f4a077aecad077bd153e71df7aa69c3042d76516cc5cce0871ee" origin="Generated by Gradle"/> 472 + </artifact> 473 + </component> 474 + <component group="org.apache.maven" name="maven" version="3.9.6"> 475 + <artifact name="maven-3.9.6.pom"> 476 + <sha256 value="ba0bf325c52954058e9a7029e40273a1fe06be4a50530f6a4eba46c558a1e4ac" origin="Generated by Gradle"/> 477 + </artifact> 478 + </component> 479 + <component group="org.apache.maven" name="maven" version="3.9.8"> 480 + <artifact name="maven-3.9.8.pom"> 481 + <sha256 value="0703e9c7a9f802eb779bbe2aff742f94f6f3d0ba837c4b7be589eb50ee0d767d" origin="Generated by Gradle"/> 482 + </artifact> 483 + </component> 484 + <component group="org.apache.maven" name="maven-artifact" version="3.9.8"> 485 + <artifact name="maven-artifact-3.9.8.jar"> 486 + <sha256 value="5e2f3cda004182fc815d48b70bc0d144cb128230a841dc711357d57c76c95972" origin="Generated by Gradle"/> 487 + </artifact> 488 + <artifact name="maven-artifact-3.9.8.pom"> 489 + <sha256 value="7ff69555cd2cf92a41cecd936a83a7247e46c188f432ab62f435b28dcd02010a" origin="Generated by Gradle"/> 490 + </artifact> 491 + </component> 492 + <component group="org.apache.maven" name="maven-model" version="3.9.6"> 493 + <artifact name="maven-model-3.9.6.jar"> 494 + <sha256 value="4f8f07fdb6b8701fa89a23a2edf830808fd65892d90cce40c0e6df7c8f2fcb62" origin="Generated by Gradle"/> 495 + </artifact> 496 + <artifact name="maven-model-3.9.6.pom"> 497 + <sha256 value="c4d7eccb285e621113e543ef293fd27dfa8d12ea06121f357bcb11ebd807ae75" origin="Generated by Gradle"/> 498 + </artifact> 499 + </component> 500 + <component group="org.apache.maven" name="maven-model" version="3.9.8"> 501 + <artifact name="maven-model-3.9.8.jar"> 502 + <sha256 value="9b4be46c55f0720162664615d4fe8468f99866697a484e1652a19189656cb37d" origin="Generated by Gradle"/> 503 + </artifact> 504 + <artifact name="maven-model-3.9.8.pom"> 505 + <sha256 value="85f965a61726c78c6ce0ceff24807a391dfa856cbbfc3852a044eedb74bc1170" origin="Generated by Gradle"/> 506 + </artifact> 507 + </component> 508 + <component group="org.apache.maven" name="maven-parent" version="41"> 509 + <artifact name="maven-parent-41.pom"> 510 + <sha256 value="762fcdd4ce8621c5fa0a2cf6495ad26972a8093eb432aa3e402bc2d4e2500c53" origin="Generated by Gradle"/> 511 + </artifact> 512 + </component> 513 + <component group="org.apache.maven" name="maven-parent" version="42"> 514 + <artifact name="maven-parent-42.pom"> 515 + <sha256 value="04534dea350a2187970a5b74444338bcf78ba8e537d44f262acfba16ebb33056" origin="Generated by Gradle"/> 516 + </artifact> 517 + </component> 518 + <component group="org.apache.sshd" name="sshd" version="2.8.0"> 519 + <artifact name="sshd-2.8.0.pom"> 520 + <sha256 value="89a06085968ddfe8e30429ef5089dcb716b70ccd846827e00283443ffda153c9" origin="Generated by Gradle"/> 521 + </artifact> 522 + </component> 523 + <component group="org.apache.sshd" name="sshd-common" version="2.8.0"> 524 + <artifact name="sshd-common-2.8.0.jar"> 525 + <sha256 value="81d0a62744c1491e77bdc8cba8787567802f5e341cfba4c85c6900a033d92354" origin="Generated by Gradle"/> 526 + </artifact> 527 + <artifact name="sshd-common-2.8.0.pom"> 528 + <sha256 value="248ab0dd5911f378bde7f171818d121badd968b7dc282cf2a4a3815c17264f9a" origin="Generated by Gradle"/> 529 + </artifact> 530 + </component> 531 + <component group="org.apache.sshd" name="sshd-core" version="2.8.0"> 532 + <artifact name="sshd-core-2.8.0.jar"> 533 + <sha256 value="2ef62f1fafb83cb22bf01eed634bbde60e170f505df30ccd4bd8b2506a19656e" origin="Generated by Gradle"/> 534 + </artifact> 535 + <artifact name="sshd-core-2.8.0.pom"> 536 + <sha256 value="b477dc18545f3c26c82a3c8557ffca48a81f20dc9a7da08c2b542a4b08934e91" origin="Generated by Gradle"/> 537 + </artifact> 538 + </component> 539 + <component group="org.codehaus.groovy" name="groovy-bom" version="3.0.14"> 540 + <artifact name="groovy-bom-3.0.14.pom"> 541 + <sha256 value="24e0e9b738de7118de9e73560ffd06034bb5cf07ca13a7e03459e88ba9d1ae27" origin="Generated by Gradle"/> 542 + </artifact> 543 + </component> 544 + <component group="org.codehaus.plexus" name="plexus" version="10"> 545 + <artifact name="plexus-10.pom"> 546 + <sha256 value="bba9c521064b9ca132ce97cc1cc7eb4afc2dbe32bc88cb872c88e99f6162301f" origin="Generated by Gradle"/> 547 + </artifact> 548 + </component> 549 + <component group="org.codehaus.plexus" name="plexus-utils" version="3.5.1"> 550 + <artifact name="plexus-utils-3.5.1.jar"> 551 + <sha256 value="86e0255d4c879c61b4833ed7f13124e8bb679df47debb127326e7db7dd49a07b" origin="Generated by Gradle"/> 552 + </artifact> 553 + <artifact name="plexus-utils-3.5.1.pom"> 554 + <sha256 value="94ff68edeb48204d12c99189c767164d3a9f778a1372d1dce11a41462e6236f2" origin="Generated by Gradle"/> 555 + </artifact> 556 + </component> 557 + <component group="org.eclipse.ee4j" name="project" version="1.0.6"> 558 + <artifact name="project-1.0.6.pom"> 559 + <sha256 value="4e7d8329d8da7dcf30779d824241be145f27108932f5a5a24eb907677bc8d72d" origin="Generated by Gradle"/> 560 + </artifact> 561 + </component> 562 + <component group="org.eclipse.jetty" name="jetty-bom" version="9.4.50.v20221201"> 563 + <artifact name="jetty-bom-9.4.50.v20221201.pom"> 564 + <sha256 value="4cde6e533d601eaf8b65acee956b7706c18192f2755d023d7e8d19bb7d5b3943" origin="Generated by Gradle"/> 565 + </artifact> 566 + </component> 567 + <component group="org.eclipse.jgit" name="org.eclipse.jgit" version="6.1.0.202203080745-r"> 568 + <artifact name="org.eclipse.jgit-6.1.0.202203080745-r.jar"> 569 + <sha256 value="b54f9fb14f62554a131bee6dd2a6dfaac82762037be5f2d78003d4ddd67c7e67" origin="Generated by Gradle"/> 570 + </artifact> 571 + <artifact name="org.eclipse.jgit-6.1.0.202203080745-r.pom"> 572 + <sha256 value="2e4a5f4659aaacdb26953d1f411ec2a3fa49589b83c8cb0a7c96a4518521e538" origin="Generated by Gradle"/> 573 + </artifact> 574 + </component> 575 + <component group="org.eclipse.jgit" name="org.eclipse.jgit-parent" version="6.1.0.202203080745-r"> 576 + <artifact name="org.eclipse.jgit-parent-6.1.0.202203080745-r.pom"> 577 + <sha256 value="dff81ba1c89ffdbb64edd3ffb89f6479704657ec29b91c5f01d9aab83a5a4b51" origin="Generated by Gradle"/> 578 + </artifact> 579 + </component> 580 + <component group="org.eclipse.jgit" name="org.eclipse.jgit.ui" version="6.1.0.202203080745-r"> 581 + <artifact name="org.eclipse.jgit.ui-6.1.0.202203080745-r.jar"> 582 + <sha256 value="65ba410de01a557518bd598e8077402ef3e21db7beb84e29716bac104430c123" origin="Generated by Gradle"/> 583 + </artifact> 584 + <artifact name="org.eclipse.jgit.ui-6.1.0.202203080745-r.pom"> 585 + <sha256 value="dce4582f4c671ac74477fb4fdf86ca67c199d7a4a02cec494e36246d5910dfa0" origin="Generated by Gradle"/> 586 + </artifact> 587 + </component> 588 + <component group="org.jdom" name="jdom2" version="2.0.6.1"> 589 + <artifact name="jdom2-2.0.6.1.jar"> 590 + <sha256 value="0b20f45e3a0fd8f0d12cdc5316b06776e902b1365db00118876f9175c60f302c" origin="Generated by Gradle"/> 591 + </artifact> 592 + <artifact name="jdom2-2.0.6.1.pom"> 593 + <sha256 value="55795e1018b8ae647b937967cf810a99b08582c2374e7873c128734c8c914bf3" origin="Generated by Gradle"/> 594 + </artifact> 595 + </component> 596 + <component group="org.jetbrains" name="annotations" version="13.0"> 597 + <artifact name="annotations-13.0.jar"> 598 + <sha256 value="ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478" origin="Generated by Gradle"/> 599 + </artifact> 600 + <artifact name="annotations-13.0.pom"> 601 + <sha256 value="965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397" origin="Generated by Gradle"/> 602 + </artifact> 603 + </component> 604 + <component group="org.jetbrains.kotlin" name="kotlin-bom" version="1.9.22"> 605 + <artifact name="kotlin-bom-1.9.22.pom"> 606 + <sha256 value="188095a8341d66d22cf4b49944c0054e15a94bb8fb9b4eab2f661a6cb8c3e17e" origin="Generated by Gradle"/> 607 + </artifact> 608 + </component> 609 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.9.0"> 610 + <artifact name="kotlin-stdlib-1.9.0.jar"> 611 + <sha256 value="35aeffbe2db5aa446072cee50fcee48b7fa9e2fc51ca37c0cc7d7d0bc39d952e" origin="Generated by Gradle"/> 612 + </artifact> 613 + <artifact name="kotlin-stdlib-1.9.0.pom"> 614 + <sha256 value="37752263f62cc3e3250856e288ee4a73d4102d726a77627034f94806c8c10aca" origin="Generated by Gradle"/> 615 + </artifact> 616 + </component> 617 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.9.22"> 618 + <artifact name="kotlin-stdlib-1.9.22.jar"> 619 + <sha256 value="6abe146c27864138b874ccccfe5f534e3eb923c99a1b7b5d45494ee5694f3e0a" origin="Generated by Gradle"/> 620 + </artifact> 621 + <artifact name="kotlin-stdlib-1.9.22.module"> 622 + <sha256 value="f482314b5079c1455f6fb0d4257a745d101c6124ce961522ba86f9dc90901e47" origin="Generated by Gradle"/> 623 + </artifact> 624 + </component> 625 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.9.24"> 626 + <artifact name="kotlin-stdlib-1.9.24.jar"> 627 + <sha256 value="858b902696da9cf585ab9d98ffc1c2712269828354dfe9107e3711b084a36468" origin="Generated by Gradle"/> 628 + </artifact> 629 + <artifact name="kotlin-stdlib-1.9.24.module"> 630 + <sha256 value="f2e2a6573b5b5265c412d5c581fbf8ea00c62b10b9c92d5674c9e97f2f3335b3" origin="Generated by Gradle"/> 631 + </artifact> 632 + </component> 633 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="1.9.0"> 634 + <artifact name="kotlin-stdlib-common-1.9.0.jar"> 635 + <sha256 value="283274204bd7c020789ec46f8f8e72af4244d7f550b3392a57e5ca006ad7aa2c" origin="Generated by Gradle"/> 636 + </artifact> 637 + <artifact name="kotlin-stdlib-common-1.9.0.pom"> 638 + <sha256 value="3660d36a70feb3abe49f11b90633e41d36273576f071b0e109da9b3a0df082a5" origin="Generated by Gradle"/> 639 + </artifact> 640 + </component> 641 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="1.9.22"> 642 + <artifact name="kotlin-stdlib-common-1.9.22.module"> 643 + <sha256 value="f93c9e9abf8d52d8e8fd8e851aa802ecec55132161c4aeee7d3cd924bf794246" origin="Generated by Gradle"/> 644 + </artifact> 645 + </component> 646 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="1.9.24"> 647 + <artifact name="kotlin-stdlib-common-1.9.24.module"> 648 + <sha256 value="e98ea8c44fb36820d01bb8b003168e23a221b401cb43256d723a3f0b77d616c2" origin="Generated by Gradle"/> 649 + </artifact> 650 + </component> 651 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-common" version="2.0.0"> 652 + <artifact name="kotlin-stdlib-common-2.0.0.module"> 653 + <sha256 value="2335187440c51d0d69e1b906fefc31f6169691c8598177b0e610c9b9a92ce6b5" origin="Generated by Gradle"/> 654 + </artifact> 655 + </component> 656 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.9.0"> 657 + <artifact name="kotlin-stdlib-jdk7-1.9.0.jar"> 658 + <sha256 value="b7979a7aac94055f0d9f1fd3b47ce5ffe1cb6032a842ba9fbe7186f085289178" origin="Generated by Gradle"/> 659 + </artifact> 660 + <artifact name="kotlin-stdlib-jdk7-1.9.0.pom"> 661 + <sha256 value="c11074f0c898a98b863c614471d438d3df92a1ec3382a6e37f935d7d71954b5a" origin="Generated by Gradle"/> 662 + </artifact> 663 + </component> 664 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.9.22"> 665 + <artifact name="kotlin-stdlib-jdk7-1.9.22.jar"> 666 + <sha256 value="f91f24cfad3a756688a35129e5f335480d0eb408f1568a17f707c289f8769bdd" origin="Generated by Gradle"/> 667 + </artifact> 668 + <artifact name="kotlin-stdlib-jdk7-1.9.22.pom"> 669 + <sha256 value="4879ca8102833c8ada3f46c77a9ffafae1970cafc0bc621f51201b6ad974ce9d" origin="Generated by Gradle"/> 670 + </artifact> 671 + </component> 672 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.9.0"> 673 + <artifact name="kotlin-stdlib-jdk8-1.9.0.jar"> 674 + <sha256 value="a59fa24fdf1ffb594baecdbf0fd10010f977cea10236d487fe3464977a7377fa" origin="Generated by Gradle"/> 675 + </artifact> 676 + <artifact name="kotlin-stdlib-jdk8-1.9.0.pom"> 677 + <sha256 value="64d598dd88e250466731e20304ab6f06cbbbbab7ee322b4703b6b59f881c4f92" origin="Generated by Gradle"/> 678 + </artifact> 679 + </component> 680 + <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.9.22"> 681 + <artifact name="kotlin-stdlib-jdk8-1.9.22.jar"> 682 + <sha256 value="47046c3edc32fe0db1a36bfe3d3822958bb5be4411c5ba80f3ae895a3ec27291" origin="Generated by Gradle"/> 683 + </artifact> 684 + <artifact name="kotlin-stdlib-jdk8-1.9.22.pom"> 685 + <sha256 value="c94048259c6d0007578baafeb71ef8ff7badeb08f2d59437fc39651e0fb7f7ab" origin="Generated by Gradle"/> 686 + </artifact> 687 + </component> 688 + <component group="org.jetbrains.kotlinx" name="kotlinx-html-jvm" version="0.11.0"> 689 + <artifact name="kotlinx-html-jvm-0.11.0.jar"> 690 + <sha256 value="e276fd903e32532ff63744713a3d1025e7a50f0f78ac46fbe5910e1596fd1c3d" origin="Generated by Gradle"/> 691 + </artifact> 692 + <artifact name="kotlinx-html-jvm-0.11.0.module"> 693 + <sha256 value="5fb1e415d898a068cd3ee1f97c403ca8c83b3ed03bfd679c3f606ce7038a770f" origin="Generated by Gradle"/> 694 + </artifact> 695 + </component> 696 + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-bom" version="1.7.1"> 697 + <artifact name="kotlinx-serialization-bom-1.7.1.pom"> 698 + <sha256 value="95651ff1e717ad3122639d7341b01c286f7a008693b83e9e289740d15c7c3dca" origin="Generated by Gradle"/> 699 + </artifact> 700 + </component> 701 + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core" version="1.7.1"> 702 + <artifact name="kotlinx-serialization-core-1.7.1.module"> 703 + <sha256 value="ea812d1916e5471d648bdeb930e42703efc2fc6d2409381fd8381f2fc8770813" origin="Generated by Gradle"/> 704 + </artifact> 705 + </component> 706 + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-core-jvm" version="1.7.1"> 707 + <artifact name="kotlinx-serialization-core-jvm-1.7.1.jar"> 708 + <sha256 value="73ddb8dc2c3033f1ebccfe56377ca1321b78afd2c1c65bfbf62195f1c7a09345" origin="Generated by Gradle"/> 709 + </artifact> 710 + <artifact name="kotlinx-serialization-core-jvm-1.7.1.module"> 711 + <sha256 value="c34d582248cb63bff7f035319844269ec40d9310b08bc39e27ee6b71516d2424" origin="Generated by Gradle"/> 712 + </artifact> 713 + </component> 714 + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json" version="1.7.1"> 715 + <artifact name="kotlinx-serialization-json-1.7.1.module"> 716 + <sha256 value="5901386b5cb9e04e4b706c6e468c0126951372d4307203bdefa03e3b57fbf06a" origin="Generated by Gradle"/> 717 + </artifact> 718 + </component> 719 + <component group="org.jetbrains.kotlinx" name="kotlinx-serialization-json-jvm" version="1.7.1"> 720 + <artifact name="kotlinx-serialization-json-jvm-1.7.1.jar"> 721 + <sha256 value="ab6f1b6e8c70899d8c41f2be5c391d357840f1429b151f4dfb07271029083316" origin="Generated by Gradle"/> 722 + </artifact> 723 + <artifact name="kotlinx-serialization-json-jvm-1.7.1.module"> 724 + <sha256 value="2dba77d35bc3638758021b8100b91fbddc0b250234885987a1e7f1fd715017bd" origin="Generated by Gradle"/> 725 + </artifact> 726 + </component> 727 + <component group="org.junit" name="junit-bom" version="5.10.0"> 728 + <artifact name="junit-bom-5.10.0.pom"> 729 + <sha256 value="e006dd8894f9fc7b75fc32bb12fe5ed8be65667d5b454f99e2e0b8c5bb8d30b3" origin="Generated by Gradle"/> 730 + </artifact> 731 + </component> 732 + <component group="org.junit" name="junit-bom" version="5.10.1"> 733 + <artifact name="junit-bom-5.10.1.module"> 734 + <sha256 value="21b0afcfffe2ecb3770f5eb00ae7a19feaee94e771fa3918173850dae78067b7" origin="Generated by Gradle"/> 735 + </artifact> 736 + <artifact name="junit-bom-5.10.1.pom"> 737 + <sha256 value="21c4b0286f4b20069577ff4b20978a85c100ac8a46b6f1c8672fbaab337bc3f2" origin="Generated by Gradle"/> 738 + </artifact> 739 + </component> 740 + <component group="org.junit" name="junit-bom" version="5.10.2"> 741 + <artifact name="junit-bom-5.10.2.module"> 742 + <sha256 value="de23b114b3e4119a8fe6eb17bed5a3852816698bace67071579d6d927ebb080a" origin="Generated by Gradle"/> 743 + </artifact> 744 + <artifact name="junit-bom-5.10.2.pom"> 745 + <sha256 value="169dd904a4b0f6520cffe658cc62292bfe9f3c14a989fa92120724cde43a9968" origin="Generated by Gradle"/> 746 + </artifact> 747 + </component> 748 + <component group="org.junit" name="junit-bom" version="5.7.2"> 749 + <artifact name="junit-bom-5.7.2.pom"> 750 + <sha256 value="cd14aaa869991f82021c585d570d31ff342bcba58bb44233b70193771b96487b" origin="Generated by Gradle"/> 751 + </artifact> 752 + </component> 753 + <component group="org.junit" name="junit-bom" version="5.9.1"> 754 + <artifact name="junit-bom-5.9.1.pom"> 755 + <sha256 value="b163c1cfc8fc1fd58b457a00d586c04c46e986d75904e9ca54c03a97d65b496c" origin="Generated by Gradle"/> 756 + </artifact> 757 + </component> 758 + <component group="org.lwjgl" name="lwjgl" version="3.3.3"> 759 + <artifact name="lwjgl-3.3.3-natives-linux-arm64.jar"> 760 + <sha256 value="397a79a5d8907286d4018d026cbc37358c53bbb6aabc3a1534f19ff23b7f8558" origin="Generated by Gradle"/> 761 + </artifact> 762 + <artifact name="lwjgl-3.3.3-natives-linux.jar"> 763 + <sha256 value="e663738c519a06f6d659882fa8e4e09af7f10e921929ee5cc54a7587f62ed4c9" origin="Generated by Gradle"/> 764 + </artifact> 765 + <artifact name="lwjgl-3.3.3-natives-macos-arm64.jar"> 766 + <sha256 value="50ac9ca09e59f051dcacf4dc0b2145e9e916e6ab14633b75694231bfe59314a8" origin="Generated by Gradle"/> 767 + </artifact> 768 + <artifact name="lwjgl-3.3.3-natives-macos.jar"> 769 + <sha256 value="0294ee4e2dd7ef6befaffafc0bb99a2a89b76070b5cd8302f3d75624b6786d03" origin="Generated by Gradle"/> 770 + </artifact> 771 + <artifact name="lwjgl-3.3.3-natives-windows-arm64.jar"> 772 + <sha256 value="d35582ca7edff59d4a5c8f4a0edec779caea4ca8e26c9aff8244710049bb4350" origin="Generated by Gradle"/> 773 + </artifact> 774 + <artifact name="lwjgl-3.3.3-natives-windows.jar"> 775 + <sha256 value="5ee63a19187efe5bb8747fd24f7b13257db348df5ad641113a3695e43f213959" origin="Generated by Gradle"/> 776 + </artifact> 777 + <artifact name="lwjgl-3.3.3.jar"> 778 + <sha256 value="dc9c7b2d48e8396d68895f8902ffa01e46253de44dfe927533ff09457ebfeec4" origin="Generated by Gradle"/> 779 + </artifact> 780 + <artifact name="lwjgl-3.3.3.pom"> 781 + <sha256 value="831d466fc01629452b46137311e15823c096c7d6fae95298c647b9fbf5d681f4" origin="Generated by Gradle"/> 782 + </artifact> 783 + </component> 784 + <component group="org.lwjgl" name="lwjgl-assimp" version="3.3.3"> 785 + <artifact name="lwjgl-assimp-3.3.3-natives-linux-arm64.jar"> 786 + <sha256 value="5572148ac4f86e220d5662fe984931608fc8f8f6c1245bea8366fd0486809529" origin="Generated by Gradle"/> 787 + </artifact> 788 + <artifact name="lwjgl-assimp-3.3.3-natives-linux.jar"> 789 + <sha256 value="d30a283642fdba85fb0183bcb382c3875a19945267a6695af02c0af0f240f2e4" origin="Generated by Gradle"/> 790 + </artifact> 791 + <artifact name="lwjgl-assimp-3.3.3-natives-macos-arm64.jar"> 792 + <sha256 value="9a528593d353a976b2e132e8d963a17bbac569836b6f42663b4fbaf2d5fcbadb" origin="Generated by Gradle"/> 793 + </artifact> 794 + <artifact name="lwjgl-assimp-3.3.3-natives-macos.jar"> 795 + <sha256 value="a48084efd4c2e953e8f68519df78e351c7cd4ecf4dfd63a9d60ded2501b7c5a5" origin="Generated by Gradle"/> 796 + </artifact> 797 + <artifact name="lwjgl-assimp-3.3.3-natives-windows-arm64.jar"> 798 + <sha256 value="ce9d45fb2c115c2a0bebff3ee58541ffdeb6ca48445a2bdab92e7e7bc6e4df77" origin="Generated by Gradle"/> 799 + </artifact> 800 + <artifact name="lwjgl-assimp-3.3.3-natives-windows.jar"> 801 + <sha256 value="23733b72d338011b5504bb45052c907ce31e94a7bc3a39811788c23af57c392c" origin="Generated by Gradle"/> 802 + </artifact> 803 + <artifact name="lwjgl-assimp-3.3.3.jar"> 804 + <sha256 value="8b6b472dffbe3a83f967904212644b04a7836c0a911597cdbde4e0c4fabce144" origin="Generated by Gradle"/> 805 + </artifact> 806 + <artifact name="lwjgl-assimp-3.3.3.pom"> 807 + <sha256 value="e890a2653872fa288cd2c425d9fbd3051b996e06d90556fce30ab908be6c92e4" origin="Generated by Gradle"/> 808 + </artifact> 809 + </component> 810 + <component group="org.lwjgl" name="lwjgl-bom" version="3.3.3"> 811 + <artifact name="lwjgl-bom-3.3.3.module"> 812 + <sha256 value="d67acea17a200a6df63f6e5c1856b64ea402fa1736ae13532350f4d126f1817c" origin="Generated by Gradle"/> 813 + </artifact> 814 + <artifact name="lwjgl-bom-3.3.3.pom"> 815 + <sha256 value="cca6b7cd0e7c46de78e7d1f143864e3153352eaefec6e66cb24a0bb4e8f2163a" origin="Generated by Gradle"/> 816 + </artifact> 817 + </component> 818 + <component group="org.lwjgl" name="lwjgl-glfw" version="3.3.3"> 819 + <artifact name="lwjgl-glfw-3.3.3-natives-linux-arm64.jar"> 820 + <sha256 value="cc6139c83f799d0e1484ea4c201c8ce6d57c8c7a244a5217116a806b1eb4179b" origin="Generated by Gradle"/> 821 + </artifact> 822 + <artifact name="lwjgl-glfw-3.3.3-natives-linux.jar"> 823 + <sha256 value="b8306062b17741f34269088751421f1ac21a597bfbbd0c6c61226301cde744b8" origin="Generated by Gradle"/> 824 + </artifact> 825 + <artifact name="lwjgl-glfw-3.3.3-natives-macos-arm64.jar"> 826 + <sha256 value="b9451d67bc17c906fb8282a5522f258b022f30569e0b62da001d590a17b45e19" origin="Generated by Gradle"/> 827 + </artifact> 828 + <artifact name="lwjgl-glfw-3.3.3-natives-macos.jar"> 829 + <sha256 value="a89b55362aec9e5a3bbd1364601bb85b147db6bae68891ca9a232d6cfb2d55ec" origin="Generated by Gradle"/> 830 + </artifact> 831 + <artifact name="lwjgl-glfw-3.3.3-natives-windows-arm64.jar"> 832 + <sha256 value="70ca9db0d2764cb9dbc8fb5fd425318c5af597173b134d03259e2030652e94b5" origin="Generated by Gradle"/> 833 + </artifact> 834 + <artifact name="lwjgl-glfw-3.3.3-natives-windows.jar"> 835 + <sha256 value="98155b451dfc6f585089dec77a12f9c05789c4dceb8da472f9d308160101a70d" origin="Generated by Gradle"/> 836 + </artifact> 837 + <artifact name="lwjgl-glfw-3.3.3.jar"> 838 + <sha256 value="bedc757fd2b1b255146db26b74b9cbd1fcf5644b89b47b104fa721c741604259" origin="Generated by Gradle"/> 839 + </artifact> 840 + <artifact name="lwjgl-glfw-3.3.3.pom"> 841 + <sha256 value="7c9b8f586ac4cf7e9eb2f367ae9854ccaee2d8d7f62e2387c49d2c1afaed8ab3" origin="Generated by Gradle"/> 842 + </artifact> 843 + </component> 844 + <component group="org.lwjgl" name="lwjgl-jawt" version="3.3.3"> 845 + <artifact name="lwjgl-jawt-3.3.3.jar"> 846 + <sha256 value="33cdf48d8e0711111b78b2cd17455885f61f85151f0bea8b3f0c0f9315143e11" origin="Generated by Gradle"/> 847 + </artifact> 848 + <artifact name="lwjgl-jawt-3.3.3.pom"> 849 + <sha256 value="4e3bb7c40e19aa2f8fdb3dd76ceafa036e65020390691ff2d080d9cf10c94d7c" origin="Generated by Gradle"/> 850 + </artifact> 851 + </component> 852 + <component group="org.lwjgl" name="lwjgl-opengl" version="3.3.3"> 853 + <artifact name="lwjgl-opengl-3.3.3-natives-linux-arm64.jar"> 854 + <sha256 value="0b2b75327d47451634123348d55503ae03e51551b0c8879ae90c8e4b4e1a4f9c" origin="Generated by Gradle"/> 855 + </artifact> 856 + <artifact name="lwjgl-opengl-3.3.3-natives-linux.jar"> 857 + <sha256 value="d823a92c6a2810b5112da304dcc6abcd4cb102706f74f7e934a223cea2051250" origin="Generated by Gradle"/> 858 + </artifact> 859 + <artifact name="lwjgl-opengl-3.3.3-natives-macos-arm64.jar"> 860 + <sha256 value="f1b3f1de83f973abae3a4bc32db5b229ae5d55cc80dbbc5f7c841812fe20b5fe" origin="Generated by Gradle"/> 861 + </artifact> 862 + <artifact name="lwjgl-opengl-3.3.3-natives-macos.jar"> 863 + <sha256 value="4c1073d0e5ae99966d0ef1d6a7795758476d247d930fdc5ec1865e38cb847cce" origin="Generated by Gradle"/> 864 + </artifact> 865 + <artifact name="lwjgl-opengl-3.3.3-natives-windows-arm64.jar"> 866 + <sha256 value="68c8dbc41436e421ff0b3927e62d2aa533552d8f02d73de3fd928d7a51fd797a" origin="Generated by Gradle"/> 867 + </artifact> 868 + <artifact name="lwjgl-opengl-3.3.3-natives-windows.jar"> 869 + <sha256 value="f45e5f60596b03b2e3d8b98a123c855ebd0b5154c8155dc2a56b890ccc907477" origin="Generated by Gradle"/> 870 + </artifact> 871 + <artifact name="lwjgl-opengl-3.3.3.jar"> 872 + <sha256 value="5062da750e5f7ec89e27e8b67b7d40fa8c4b16890159e35f828116ce6c8eca1e" origin="Generated by Gradle"/> 873 + </artifact> 874 + <artifact name="lwjgl-opengl-3.3.3.pom"> 875 + <sha256 value="443925b5642ad318d49dfae97bae9cdd09e49025b302a94b0107fc8889be6cdd" origin="Generated by Gradle"/> 876 + </artifact> 877 + </component> 878 + <component group="org.lwjgl" name="lwjgl-tinyfd" version="3.3.3"> 879 + <artifact name="lwjgl-tinyfd-3.3.3-natives-linux-arm64.jar"> 880 + <sha256 value="80d34e76d15c04951744148832908391da8b14f68a030b64b0b40702a37391d7" origin="Generated by Gradle"/> 881 + </artifact> 882 + <artifact name="lwjgl-tinyfd-3.3.3-natives-linux.jar"> 883 + <sha256 value="a076fa05a4d174762eab5852ee72c29d14ab10a5654f27fb00664ef1b52c0c05" origin="Generated by Gradle"/> 884 + </artifact> 885 + <artifact name="lwjgl-tinyfd-3.3.3-natives-macos-arm64.jar"> 886 + <sha256 value="6f7d979414651e343dc8b8b3faade0e2d9e4fdf99d565d5623e12d40dbae4a22" origin="Generated by Gradle"/> 887 + </artifact> 888 + <artifact name="lwjgl-tinyfd-3.3.3-natives-macos.jar"> 889 + <sha256 value="4465dd46fdf9309c0ce64c3529a0da6792fb6711c3281e8c5dba935e6a9bfc3c" origin="Generated by Gradle"/> 890 + </artifact> 891 + <artifact name="lwjgl-tinyfd-3.3.3-natives-windows-arm64.jar"> 892 + <sha256 value="71076fc5c01788577719f4b1983473026b2eb8cbb02d3dc736f8b5724a49fd8c" origin="Generated by Gradle"/> 893 + </artifact> 894 + <artifact name="lwjgl-tinyfd-3.3.3-natives-windows.jar"> 895 + <sha256 value="02285911f1c881735fa4d0eb141ffeaafd9a2bb9349d98f7c1fb8a9cb49c0f58" origin="Generated by Gradle"/> 896 + </artifact> 897 + <artifact name="lwjgl-tinyfd-3.3.3.jar"> 898 + <sha256 value="ee0515054ee19a3f4088426fee9d879eb2ee657b07e5064e4e2c851f6adcf14b" origin="Generated by Gradle"/> 899 + </artifact> 900 + <artifact name="lwjgl-tinyfd-3.3.3.pom"> 901 + <sha256 value="2c1bd119f41e65a544613f91e7160e006b81916e73a6ef75f549242cc4f3bef2" origin="Generated by Gradle"/> 902 + </artifact> 903 + </component> 904 + <component group="org.lwjglx" name="lwjgl3-awt" version="0.1.8"> 905 + <artifact name="lwjgl3-awt-0.1.8.jar"> 906 + <sha256 value="4e6ee7fd90e03f1708e5882615253547e75876034c50e07e96f335cba3c4a5b2" origin="Generated by Gradle"/> 907 + </artifact> 908 + <artifact name="lwjgl3-awt-0.1.8.pom"> 909 + <sha256 value="41ff113163dcdf55087e1bccb76d3cc72046aa519b9b4b7218079de17fbe566b" origin="Generated by Gradle"/> 910 + </artifact> 911 + </component> 912 + <component group="org.lwjglx" name="lwjgl3-awt" version="0.2.2"> 913 + <artifact name="lwjgl3-awt-0.2.2.jar"> 914 + <sha256 value="f096bc351b48ef7a9e554c5a7ae69b8b6683940ff50623ea511531d171547de3" origin="Generated by Gradle"/> 915 + </artifact> 916 + <artifact name="lwjgl3-awt-0.2.2.pom"> 917 + <sha256 value="ec149cf9fbf3d987d306c2190effaa66b395ce8fc4f210321fcc042e18867d4f" origin="Generated by Gradle"/> 918 + </artifact> 919 + </component> 920 + <component group="org.lz4" name="lz4-java" version="1.4.1"> 921 + <artifact name="lz4-java-1.4.1.jar"> 922 + <sha256 value="f0efa5ce1318f0e3e734f35238dacc441c6510cb6f3fee6d1cfd3ebae15e2bef" origin="Generated by Gradle"/> 923 + </artifact> 924 + <artifact name="lz4-java-1.4.1.pom"> 925 + <sha256 value="562836344a32d056e6aaddf498b49112141fa408f4090ef56c80673fee59814b" origin="Generated by Gradle"/> 926 + </artifact> 927 + </component> 928 + <component group="org.ow2" name="ow2" version="1.5.1"> 929 + <artifact name="ow2-1.5.1.pom"> 930 + <sha256 value="321ddbb7ee6fe4f53dea6b4cd6db74154d6bfa42391c1f763b361b9f485acf05" origin="Generated by Gradle"/> 931 + </artifact> 932 + </component> 933 + <component group="org.ow2.asm" name="asm" version="9.4"> 934 + <artifact name="asm-9.4.jar"> 935 + <sha256 value="39d0e2b3dc45af65a09b097945750a94a126e052e124f93468443a1d0e15f381" origin="Generated by Gradle"/> 936 + </artifact> 937 + <artifact name="asm-9.4.pom"> 938 + <sha256 value="483751e48fb2d1f43c61ad3ab00ffa466edc0333d8fc2fdb5a26e95d32982394" origin="Generated by Gradle"/> 939 + </artifact> 940 + </component> 941 + <component group="org.ow2.asm" name="asm-commons" version="9.4"> 942 + <artifact name="asm-commons-9.4.jar"> 943 + <sha256 value="0c128a9ec3f33c98959272f6d16cf14247b508f58951574bcdbd2b56d6326364" origin="Generated by Gradle"/> 944 + </artifact> 945 + <artifact name="asm-commons-9.4.pom"> 946 + <sha256 value="b42ca2abcf8811776a5ddc0290f2106d7f313f82c78b0ddccd5cce4c63a35179" origin="Generated by Gradle"/> 947 + </artifact> 948 + </component> 949 + <component group="org.ow2.asm" name="asm-tree" version="9.4"> 950 + <artifact name="asm-tree-9.4.jar"> 951 + <sha256 value="c42d479cf24566a21eb20af7eeaeef4e86bdb4a886306cf72f483b65e75b2acf" origin="Generated by Gradle"/> 952 + </artifact> 953 + <artifact name="asm-tree-9.4.pom"> 954 + <sha256 value="c7e9ef93bdd8ab363032ce5382fcc64d002d6c589c175233236cd298e51a3c16" origin="Generated by Gradle"/> 955 + </artifact> 956 + </component> 957 + <component group="org.slf4j" name="jcl-over-slf4j" version="1.7.32"> 958 + <artifact name="jcl-over-slf4j-1.7.32.jar"> 959 + <sha256 value="60f3bda5922e3912889cca1311d1b227753610bf60cb4e5e914e8b2eaa0326b4" origin="Generated by Gradle"/> 960 + </artifact> 961 + <artifact name="jcl-over-slf4j-1.7.32.pom"> 962 + <sha256 value="5f18eac2c5458ffcc402415610c3b78e499002168bf8ec8fe2efe1de506a2756" origin="Generated by Gradle"/> 963 + </artifact> 964 + </component> 965 + <component group="org.slf4j" name="slf4j-api" version="1.7.30"> 966 + <artifact name="slf4j-api-1.7.30.jar"> 967 + <sha256 value="cdba07964d1bb40a0761485c6b1e8c2f8fd9eb1d19c53928ac0d7f9510105c57" origin="Generated by Gradle"/> 968 + </artifact> 969 + <artifact name="slf4j-api-1.7.30.pom"> 970 + <sha256 value="7e0747751e9b67e19dcb5206f04ea22cc03d250c422426402eadd03513f2c314" origin="Generated by Gradle"/> 971 + </artifact> 972 + </component> 973 + <component group="org.slf4j" name="slf4j-api" version="1.7.32"> 974 + <artifact name="slf4j-api-1.7.32.jar"> 975 + <sha256 value="3624f8474c1af46d75f98bc097d7864a323c81b3808aa43689a6e1c601c027be" origin="Generated by Gradle"/> 976 + </artifact> 977 + <artifact name="slf4j-api-1.7.32.pom"> 978 + <sha256 value="001cde5b3c6ba91070425cfe9f2e695e4aeb8bc290a2d4cd96531127ab244fe5" origin="Generated by Gradle"/> 979 + </artifact> 980 + </component> 981 + <component group="org.slf4j" name="slf4j-parent" version="1.7.30"> 982 + <artifact name="slf4j-parent-1.7.30.pom"> 983 + <sha256 value="11647956e48a0c5bfb3ac33f6da7e83f341002b6857efd335a505b687be34b75" origin="Generated by Gradle"/> 984 + </artifact> 985 + </component> 986 + <component group="org.slf4j" name="slf4j-parent" version="1.7.32"> 987 + <artifact name="slf4j-parent-1.7.32.pom"> 988 + <sha256 value="5ab349d0f4c7bc08ed0ef1f4d9386cb1940a2f4d6f152150e16dbbecc0b83c70" origin="Generated by Gradle"/> 989 + </artifact> 990 + </component> 991 + <component group="org.sonatype.oss" name="oss-parent" version="5"> 992 + <artifact name="oss-parent-5.pom"> 993 + <sha256 value="1678d4120a585d8a630131aeec4c524d928398583b7eab616ee7d5a87f520d3d" origin="Generated by Gradle"/> 994 + </artifact> 995 + </component> 996 + <component group="org.sonatype.oss" name="oss-parent" version="6"> 997 + <artifact name="oss-parent-6.pom"> 998 + <sha256 value="b4306d13e8f5392458a1b30866f1cff161b3d2e6999a88d059eea3932c8a8499" origin="Generated by Gradle"/> 999 + </artifact> 1000 + </component> 1001 + <component group="org.sonatype.oss" name="oss-parent" version="7"> 1002 + <artifact name="oss-parent-7.pom"> 1003 + <sha256 value="b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454" origin="Generated by Gradle"/> 1004 + </artifact> 1005 + </component> 1006 + <component group="org.springframework" name="spring-framework-bom" version="5.3.11"> 1007 + <artifact name="spring-framework-bom-5.3.11.pom"> 1008 + <sha256 value="1cd05f081ec2ad11ad3859f430c3996c14fc1f00dc5fe9388ece325ab946b92a" origin="Generated by Gradle"/> 1009 + </artifact> 1010 + </component> 1011 + <component group="org.springframework" name="spring-framework-bom" version="5.3.24"> 1012 + <artifact name="spring-framework-bom-5.3.24.pom"> 1013 + <sha256 value="535213566bbbefe2636a0d4e8dd1a73ade612e2430c8ffd310dcc2a3b3b9ba41" origin="Generated by Gradle"/> 1014 + </artifact> 1015 + </component> 1016 + <component group="org.testcontainers" name="testcontainers-bom" version="1.16.1"> 1017 + <artifact name="testcontainers-bom-1.16.1.pom"> 1018 + <sha256 value="5061ba84c98536e5a6b4ce280fbcecb00e335f3b04c5d484629162fcb4624778" origin="Generated by Gradle"/> 1019 + </artifact> 1020 + </component> 1021 + <component group="org.tmatesoft.sqljet" name="sqljet" version="1.1.14"> 1022 + <artifact name="sqljet-1.1.14.jar"> 1023 + <sha256 value="a8595cd3362eff08c26b913a3f3c198de65f7733c99375b3f492035a341f5f45" origin="Generated by Gradle"/> 1024 + </artifact> 1025 + <artifact name="sqljet-1.1.14.pom"> 1026 + <sha256 value="6aa52bef22f7438e5aefd067261f74c8b1fa2a4fade43a7dce3f70e80b29dbef" origin="Generated by Gradle"/> 1027 + </artifact> 1028 + </component> 1029 + <component group="org.tmatesoft.svnkit" name="svnkit" version="1.10.6"> 1030 + <artifact name="svnkit-1.10.6.jar"> 1031 + <sha256 value="c5ca7dd54d8476f2434b19e9330c926c76e27d3d9b4a102c27c617cd87b6e528" origin="Generated by Gradle"/> 1032 + </artifact> 1033 + <artifact name="svnkit-1.10.6.pom"> 1034 + <sha256 value="6e3cb703f5528aeafa8bbb054453e39b860f93fd366fd0da57b184a7d3cced68" origin="Generated by Gradle"/> 1035 + </artifact> 1036 + </component> 1037 + <component group="org.vafer" name="jdependency" version="2.8.0"> 1038 + <artifact name="jdependency-2.8.0.jar"> 1039 + <sha256 value="bfd2cc7e1bfc78aa83b44c0a54bf2cde38a4382ec24728af683d98dc6be78192" origin="Generated by Gradle"/> 1040 + </artifact> 1041 + <artifact name="jdependency-2.8.0.pom"> 1042 + <sha256 value="101867f3f9e92657a2ef89a310b604d43d090c9b90aa3e0b052dcd16a3bbf32d" origin="Generated by Gradle"/> 1043 + </artifact> 1044 + </component> 1045 + <component group="org.yaml" name="snakeyaml" version="2.2"> 1046 + <artifact name="snakeyaml-2.2.jar"> 1047 + <sha256 value="1467931448a0817696ae2805b7b8b20bfb082652bf9c4efaed528930dc49389b" origin="Generated by Gradle"/> 1048 + </artifact> 1049 + <artifact name="snakeyaml-2.2.pom"> 1050 + <sha256 value="e982eadc788c69cf2e4de50a9f632b182c31dba50612830d348fc4b4ba8dd7d6" origin="Generated by Gradle"/> 1051 + </artifact> 1052 + </component> 1053 + </components> 1054 + </verification-metadata>
gradle/wrapper/gradle-wrapper.jar

This is a binary file and will not be displayed.

+1 -1
gradle/wrapper/gradle-wrapper.properties
··· 1 1 distributionBase=GRADLE_USER_HOME 2 2 distributionPath=wrapper/dists 3 - distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip 3 + distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip 4 4 networkTimeout=10000 5 5 validateDistributionUrl=true 6 6 zipStoreBase=GRADLE_USER_HOME
+7 -7
gradlew
··· 145 145 case $MAX_FD in #( 146 146 max*) 147 147 # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 148 - # shellcheck disable=SC3045 148 + # shellcheck disable=SC2039,SC3045 149 149 MAX_FD=$( ulimit -H -n ) || 150 150 warn "Could not query maximum file descriptor limit" 151 151 esac ··· 153 153 '' | soft) :;; #( 154 154 *) 155 155 # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 156 - # shellcheck disable=SC3045 156 + # shellcheck disable=SC2039,SC3045 157 157 ulimit -n "$MAX_FD" || 158 158 warn "Could not set maximum file descriptor limit to $MAX_FD" 159 159 esac ··· 202 202 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 203 203 DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 204 204 205 - # Collect all arguments for the java command; 206 - # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 207 - # shell script including quotes and variable substitutions, so put them in 208 - # double quotes to make sure that they get re-expanded; and 209 - # * put everything else in single quotes, so that it's not re-expanded. 205 + # Collect all arguments for the java command: 206 + # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, 207 + # and any embedded shellness will be escaped. 208 + # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be 209 + # treated as '${Hostname}' itself on the command line. 210 210 211 211 set -- \ 212 212 "-Dorg.gradle.appname=$APP_BASE_NAME" \
+10 -10
gradlew.bat
··· 43 43 %JAVA_EXE% -version >NUL 2>&1 44 44 if %ERRORLEVEL% equ 0 goto execute 45 45 46 - echo. 47 - echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 - echo. 49 - echo Please set the JAVA_HOME variable in your environment to match the 50 - echo location of your Java installation. 46 + echo. 1>&2 47 + echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 48 + echo. 1>&2 49 + echo Please set the JAVA_HOME variable in your environment to match the 1>&2 50 + echo location of your Java installation. 1>&2 51 51 52 52 goto fail 53 53 ··· 57 57 58 58 if exist "%JAVA_EXE%" goto execute 59 59 60 - echo. 61 - echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 - echo. 63 - echo Please set the JAVA_HOME variable in your environment to match the 64 - echo location of your Java installation. 60 + echo. 1>&2 61 + echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 62 + echo. 1>&2 63 + echo Please set the JAVA_HOME variable in your environment to match the 1>&2 64 + echo location of your Java installation. 1>&2 65 65 66 66 goto fail 67 67
+12 -7
src/main/java/app/Directories.java
··· 12 12 // @formatter:off 13 13 //======================================================================================= 14 14 // Directories not related to any specific project 15 - // These live alongside the Star Rod jar 16 15 17 - DATABASE (Root.NONE, "/database/"), 18 - DATABASE_EDITOR (Root.NONE, DATABASE, "/editor/"), 19 - DATABASE_THEMES (Root.NONE, DATABASE, "/themes/"), 16 + SEED_DATABASE (Root.NONE, "/database/"), // Read-only database that comes with the jar 17 + DATABASE (Root.CONFIG, "/database/"), 18 + DATABASE_EDITOR (Root.CONFIG, DATABASE, "/editor/"), 19 + DATABASE_THEMES (Root.CONFIG, DATABASE, "/themes/"), 20 20 21 - TEMP (Root.NONE, "/temp/"), 22 - LOGS (Root.NONE, "/logs/"), 21 + TEMP (Root.STATE, "/temp/"), 22 + LOGS (Root.STATE, "/logs/"), 23 23 24 24 //======================================================================================= 25 25 // Directories contain dumped content needed for Star Rod to function ··· 129 129 130 130 private enum Root 131 131 { 132 - NONE, DUMP, PROJECT 132 + NONE, DUMP, PROJECT, CONFIG, STATE 133 133 } 134 134 135 135 private static String getRootPath(Root root) ··· 141 141 return dumpPath; 142 142 case PROJECT: 143 143 return projPath; 144 + case CONFIG: 145 + return Environment.getUserConfigDir().getAbsolutePath(); 146 + case STATE: 147 + return Environment.getUserStateDir().getAbsolutePath(); 148 + 144 149 } 145 150 return null; 146 151 }
+89 -55
src/main/java/app/Environment.java
··· 50 50 51 51 public abstract class Environment 52 52 { 53 - private static final String FN_MAIN_CONFIG = "cfg/main.cfg"; 53 + private static final String FN_MAIN_CONFIG = "main.cfg"; 54 54 private static final String FN_PROJ_CONFIG = "star_rod.cfg"; 55 55 private static final String FN_BASEROM = "ver/us/baserom.z64"; 56 56 private static final String FN_SPLAT = "splat.yaml"; ··· 175 175 try { 176 176 Manifest manifest = new Manifest(cl.getResourceAsStream("META-INF/MANIFEST.MF")); 177 177 Attributes attr = manifest.getMainAttributes(); 178 + 178 179 versionString = attr.getValue("App-Version"); 179 180 gitBuildBranch = attr.getValue("Build-Branch"); 180 181 gitBuildCommit = attr.getValue("Build-Commit"); 181 182 gitBuildTag = attr.getValue("Build-Tag"); 182 183 183 - Logger.logf("Detected version %s (%s-%s)", versionString, gitBuildBranch, gitBuildCommit.subSequence(0, 8)); 184 + // Git info not available when built with Nix; normalise empty strings to null 185 + if (gitBuildBranch != null && gitBuildBranch.isEmpty()) gitBuildBranch = null; 186 + if (gitBuildCommit != null && gitBuildCommit.isEmpty()) gitBuildCommit = null; 187 + if (gitBuildTag != null && gitBuildTag.isEmpty()) gitBuildTag = null; 188 + 189 + Logger.logf("Detected version %s (%s-%s)", versionString, gitBuildBranch, gitBuildCommit); 184 190 } 185 - catch (IOException e) { 191 + catch (IOException | IndexOutOfBoundsException e) { 186 192 Logger.logError("Could not read MANIFEST.MF"); 187 193 Logger.printStackTrace(e); 188 194 } ··· 201 207 202 208 projectChooser = new DirChooser(codeSource.getParentFile(), "Select Project Directory"); 203 209 210 + // Create user directories 211 + getUserConfigDir().mkdirs(); 212 + getUserStateDir().mkdirs(); 213 + 204 214 try { 205 215 checkForDependencies(); 206 216 File projDir = readMainConfig(); 207 217 218 + if (projDir == null) { 219 + // User declined to select a project directory 220 + exit(); 221 + } 222 + 208 223 boolean logDetails = mainConfig.getBoolean(Options.LogDetails); 209 224 Logger.setDefaultOuputPriority(logDetails ? Priority.DETAIL : Priority.STANDARD); 210 225 ··· 213 228 // UIManager.put("TabbedPane.tabWidthMode", "compact"); 214 229 // UIManager.put("TabbedPane.showTabSeparators", true); 215 230 // UIManager.put("TabbedPane.tabSeparatorsFullHeight", true); 216 - } 217 231 218 - if (fromJar && mainConfig.getBoolean(Options.CheckForUpdates)) 219 - checkForUpdate(); 232 + if (fromJar && mainConfig.getBoolean(Options.CheckForUpdates)) 233 + checkForUpdate(); 234 + } 220 235 221 236 LoadingBar.show("Loading Project", true); 222 237 boolean validProject = loadProject(projDir); ··· 307 322 308 323 private static final void checkForDependencies() throws IOException 309 324 { 310 - File db = Directories.DATABASE.toFile(); 325 + File db = Directories.SEED_DATABASE.toFile(); 311 326 312 327 if (!db.exists() || !db.isDirectory()) { 313 328 SwingUtils.getErrorDialog() ··· 318 333 319 334 exit(); 320 335 } 336 + 337 + // Copy SEED_DATABASE to DATABASE if DATABASE does not exist 338 + // TODO: handle upgrades 339 + File writeDb = Directories.DATABASE.toFile(); 340 + if (!writeDb.exists()) { 341 + writeDb.mkdirs(); 342 + FileUtils.copyDirectory(db, writeDb); 343 + } 321 344 } 322 345 323 - private static final File readMainConfig() throws IOException 346 + public static final File getUserConfigDir() 324 347 { 325 - File configFile = new File(codeSource.getParent(), FN_MAIN_CONFIG); 348 + String userHome = System.getProperty("user.home"); 326 349 327 - // we may need to create a new config file here 328 - if (!configFile.exists()) { 329 - int choice = SwingUtils.getConfirmDialog() 330 - .setTitle("Missing Config") 331 - .setMessage("Could not find Star Rod config!", "Create a new one?") 332 - .setMessageType(JOptionPane.QUESTION_MESSAGE) 333 - .setOptionsType(JOptionPane.YES_NO_OPTION) 334 - .choose(); 350 + if (isWindows()) return new File(userHome, "/AppData/Local/StarRod/"); 335 351 336 - if (choice != JOptionPane.OK_OPTION) 337 - exit(); 352 + String xdgConfigHome = System.getenv("XDG_CONFIG_HOME"); 353 + String dotConfig = (xdgConfigHome != null && !xdgConfigHome.isEmpty()) 354 + ? xdgConfigHome 355 + : (userHome + "/.config"); 356 + return new File(dotConfig, "/star-rod/"); 357 + } 338 358 339 - mainConfig = makeConfig(configFile, Scope.Main); 359 + public static final File getUserStateDir() 360 + { 361 + String userHome = System.getProperty("user.home"); 340 362 341 - SwingUtils.getMessageDialog() 342 - .setTitle("Select Project Directory") 343 - .setMessage("Select your project directory.") 344 - .setMessageType(JOptionPane.PLAIN_MESSAGE) 345 - .show(); 363 + if (isWindows()) return new File(userHome, "/AppData/Local/StarRod/"); 346 364 347 - return promptSelectProject(); 365 + String xdgStateHome = System.getenv("XDG_STATE_HOME"); 366 + String dotState = (xdgStateHome != null && !xdgStateHome.isEmpty()) 367 + ? xdgStateHome 368 + : (userHome + "/.local/state"); 369 + return new File(dotState, "/star-rod/"); 370 + } 371 + 372 + private static final File readMainConfig() throws IOException 373 + { 374 + File configDir = getUserConfigDir(); 375 + 376 + File configFile = new File(configDir, FN_MAIN_CONFIG); 377 + 378 + // backwards compatibility for Star Rod 0.9.2 and below: move old config to new location 379 + File oldConfigFile = new File(codeSource.getParent(), "cfg/main.cfg"); 380 + if (oldConfigFile.exists()) { 381 + FileUtils.moveFile(oldConfigFile, configFile); 382 + } 383 + 384 + // we may need to create a new config file here 385 + if (!configFile.exists()) { 386 + mainConfig = makeConfig(configFile, Scope.Main); 348 387 } 349 388 else { 350 389 // read existing config 351 390 mainConfig = new Config(configFile, Scope.Main); 352 391 mainConfig.readConfig(); 392 + } 353 393 354 - // get project directory from config 355 - String directoryName = mainConfig.getString(Options.ProjPath); 356 - if (directoryName != null) { 357 - File dir; 358 - if (directoryName.startsWith(".")) 359 - dir = new File(codeSource.getParent(), directoryName); 360 - else 361 - dir = new File(directoryName); 394 + // if current directory seems to be a decomp project, use it regardless of config 395 + File decompCfg = new File("./ver/us/", FN_SPLAT); 396 + if (decompCfg.exists()) { 397 + return new File("."); 398 + } 399 + 400 + // get project directory from config 401 + String directoryName = mainConfig.getString(Options.ProjPath); 402 + if (directoryName != null) { 403 + File dir; 404 + if (directoryName.startsWith(".")) 405 + dir = new File(codeSource.getParent(), directoryName); 406 + else 407 + dir = new File(directoryName); 362 408 363 - if (dir.exists() && dir.isDirectory()) { 364 - return dir; 365 - } 409 + if (dir.exists() && dir.isDirectory()) { 410 + return dir; 366 411 } 412 + } 367 413 368 - // project directory is missing, prompt to select new one 369 - SwingUtils.getErrorDialog() 370 - .setTitle("Missing Project Directory") 371 - .setMessage("Could not find project directory!", "Please select a new one.") 372 - .show(); 414 + // project directory is missing, prompt to select new one 415 + SwingUtils.getErrorDialog() 416 + .setTitle("Missing Project Directory") 417 + .setMessage("Could not find project directory!", "Please select a new one.") 418 + .show(); 373 419 374 - return promptSelectProject(); 375 - } 420 + return promptSelectProject(); 376 421 } 377 422 378 423 public static void promptChangeProject() throws IOException ··· 491 536 File configFile = new File(projectDirectory, FN_PROJ_CONFIG); 492 537 493 538 if (!configFile.exists()) { 494 - 495 - int choice = SwingUtils.getConfirmDialog() 496 - .setTitle("Missing Config") 497 - .setMessage("Could not find project config!", "Create a new one?") 498 - .setMessageType(JOptionPane.QUESTION_MESSAGE) 499 - .setOptionsType(JOptionPane.YES_NO_OPTION) 500 - .choose(); 501 - 502 - if (choice != JOptionPane.OK_OPTION) 503 - exit(); 504 - 505 539 projectConfig = makeConfig(configFile, Scope.Project); 506 540 projectConfig.saveConfigFile(); 507 541 }