From 9de9943f230b1ebc4de416887b1835a278ff563b Mon Sep 17 00:00:00 2001 From: Wirlaburla Date: Tue, 9 Jul 2024 02:56:19 -0500 Subject: [PATCH 1/4] use gradle build system instead, replace resources as streams --- .gitignore | 6 + firestar/build.gradle | 46 ++++ .../src/main/installer}/unix/firestar.dbp | 0 .../src/main/installer}/unix/usr/bin/firestar | 0 .../main/installer}/win32/installer_win32.iss | 0 {src => firestar/src/main/java}/Clifford.form | 0 {src => firestar/src/main/java}/Clifford.java | 4 +- {src => firestar/src/main/java}/Fozzie.form | 0 {src => firestar/src/main/java}/Fozzie.java | 0 {src => firestar/src/main/java}/Gonzo.form | 0 {src => firestar/src/main/java}/Gonzo.java | 2 +- {src => firestar/src/main/java}/Kermit.java | 0 {src => firestar/src/main/java}/Main.java | 2 +- .../src/main/java}/MasterWindowLayout.form | 0 .../src/main/java}/MissPiggy.java | 2 +- {src => firestar/src/main/java}/Rowlf.form | 0 {src => firestar/src/main/java}/Rowlf.java | 2 +- {src => firestar/src/main/java}/Waldorf.form | 0 {src => firestar/src/main/java}/Waldorf.java | 2 +- .../src/main/resources}/exo2.ttf | Bin .../src/main/resources}/logo.png | Bin .../src/main/resources}/logo_about.png | Bin .../src/main/resources}/programIcon.png | Bin .../src/main/resources}/titleIcon.png | Bin .../src/main/resources}/titleIconAlt.png | Bin gradle.properties | 1 + gradlew | 249 ++++++++++++++++++ gradlew.bat | 92 +++++++ settings.gradle | 14 + 29 files changed, 415 insertions(+), 7 deletions(-) create mode 100644 firestar/build.gradle rename {installer => firestar/src/main/installer}/unix/firestar.dbp (100%) rename {installer => firestar/src/main/installer}/unix/usr/bin/firestar (100%) rename {installer => firestar/src/main/installer}/win32/installer_win32.iss (100%) rename {src => firestar/src/main/java}/Clifford.form (100%) rename {src => firestar/src/main/java}/Clifford.java (97%) rename {src => firestar/src/main/java}/Fozzie.form (100%) rename {src => firestar/src/main/java}/Fozzie.java (100%) rename {src => firestar/src/main/java}/Gonzo.form (100%) rename {src => firestar/src/main/java}/Gonzo.java (99%) rename {src => firestar/src/main/java}/Kermit.java (100%) rename {src => firestar/src/main/java}/Main.java (98%) rename {src => firestar/src/main/java}/MasterWindowLayout.form (100%) rename {src => firestar/src/main/java}/MissPiggy.java (99%) rename {src => firestar/src/main/java}/Rowlf.form (100%) rename {src => firestar/src/main/java}/Rowlf.java (96%) rename {src => firestar/src/main/java}/Waldorf.form (100%) rename {src => firestar/src/main/java}/Waldorf.java (97%) rename {resources => firestar/src/main/resources}/exo2.ttf (100%) rename {resources => firestar/src/main/resources}/logo.png (100%) rename {resources => firestar/src/main/resources}/logo_about.png (100%) rename {resources => firestar/src/main/resources}/programIcon.png (100%) rename {resources => firestar/src/main/resources}/titleIcon.png (100%) rename {resources => firestar/src/main/resources}/titleIconAlt.png (100%) create mode 100644 gradle.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore index fd8e824..7cb8709 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,9 @@ out/ /firestar.zip /run-linux.sh /run-win32.bat + +### Gradle ### +/firestar/build/ +/build/ +/.gradle/ +/gradle/ diff --git a/firestar/build.gradle b/firestar/build.gradle new file mode 100644 index 0000000..9e263eb --- /dev/null +++ b/firestar/build.gradle @@ -0,0 +1,46 @@ +plugins { + id 'java' + id 'application' + id 'org.beryx.runtime' version '1.12.5' +} + +repositories { + mavenCentral() + maven { url "https://www.jetbrains.com/intellij-repository/releases" } + maven { url "https://cache-redirector.jetbrains.com/intellij-dependencies" } +} + +configurations { + antTask +} + +dependencies { + implementation group: 'net.lingala.zip4j', name: 'zip4j', version: '2.11.5' + implementation group: 'org.json', name: 'json', version: '20240303' + + implementation 'com.jetbrains.intellij.java:java-gui-forms-rt:203.7148.30' + antTask 'com.jetbrains.intellij.java:java-compiler-ant-tasks:203.7148.30' +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +application { + mainClass = 'Main' +} + +task compileJava(type: JavaCompile, overwrite: true, dependsOn: configurations.implementation.getTaskDependencyFromProjectDependency(true, 'jar')) { + doLast { + project.sourceSets.main.output.classesDirs.each { project.mkdir(it) } + ant.taskdef name: 'javac2', classname: 'com.intellij.ant.Javac2', classpath: configurations.antTask.asPath + ant.javac2 srcdir: project.sourceSets.main.java.srcDirs.join(':'), + classpath: project.sourceSets.main.compileClasspath.asPath, + destdir: project.sourceSets.main.output.classesDirs[0], + source: sourceCompatibility, + target: targetCompatibility, + includeAntRuntime: false + } +} \ No newline at end of file diff --git a/installer/unix/firestar.dbp b/firestar/src/main/installer/unix/firestar.dbp similarity index 100% rename from installer/unix/firestar.dbp rename to firestar/src/main/installer/unix/firestar.dbp diff --git a/installer/unix/usr/bin/firestar b/firestar/src/main/installer/unix/usr/bin/firestar similarity index 100% rename from installer/unix/usr/bin/firestar rename to firestar/src/main/installer/unix/usr/bin/firestar diff --git a/installer/win32/installer_win32.iss b/firestar/src/main/installer/win32/installer_win32.iss similarity index 100% rename from installer/win32/installer_win32.iss rename to firestar/src/main/installer/win32/installer_win32.iss diff --git a/src/Clifford.form b/firestar/src/main/java/Clifford.form similarity index 100% rename from src/Clifford.form rename to firestar/src/main/java/Clifford.form diff --git a/src/Clifford.java b/firestar/src/main/java/Clifford.java similarity index 97% rename from src/Clifford.java rename to firestar/src/main/java/Clifford.java index c172659..7a230cb 100644 --- a/src/Clifford.java +++ b/firestar/src/main/java/Clifford.java @@ -60,10 +60,10 @@ public class Clifford implements ActionListener { frame.add(frameContainer); try { - BufferedImage windowIcon = ImageIO.read(new File(System.getProperty("user.dir") + "/resources/titleIcon.png")); + BufferedImage windowIcon = ImageIO.read(Main.class.getResourceAsStream("/titleIcon.png")); frame.setIconImage(windowIcon); } catch (IOException e) { - System.out.println("ERROR: Failed to find /resources/titleIcon.png. Window will not have an icon."); + System.out.println("ERROR: Failed to find resource titleIcon.png. Window will not have an icon."); } frame.setSize(600, 300); // 1280 800 frame.setMinimumSize(new Dimension(200,100)); diff --git a/src/Fozzie.form b/firestar/src/main/java/Fozzie.form similarity index 100% rename from src/Fozzie.form rename to firestar/src/main/java/Fozzie.form diff --git a/src/Fozzie.java b/firestar/src/main/java/Fozzie.java similarity index 100% rename from src/Fozzie.java rename to firestar/src/main/java/Fozzie.java diff --git a/src/Gonzo.form b/firestar/src/main/java/Gonzo.form similarity index 100% rename from src/Gonzo.form rename to firestar/src/main/java/Gonzo.form diff --git a/src/Gonzo.java b/firestar/src/main/java/Gonzo.java similarity index 99% rename from src/Gonzo.java rename to firestar/src/main/java/Gonzo.java index 2549be3..b66ab9c 100644 --- a/src/Gonzo.java +++ b/firestar/src/main/java/Gonzo.java @@ -56,7 +56,7 @@ public class Gonzo { frame.add(frameContainer); // initialize window contents -- will be handled by IntelliJ IDEA try { - BufferedImage windowIcon = ImageIO.read(new File(System.getProperty("user.dir") + "/resources/titleIcon.png")); + BufferedImage windowIcon = ImageIO.read(Main.class.getResourceAsStream("/titleIcon.png")); frame.setIconImage(windowIcon); } catch (IOException e) { System.out.println("ERROR: Failed to find /resources/titleIcon.png. Window will not have an icon."); diff --git a/src/Kermit.java b/firestar/src/main/java/Kermit.java similarity index 100% rename from src/Kermit.java rename to firestar/src/main/java/Kermit.java diff --git a/src/Main.java b/firestar/src/main/java/Main.java similarity index 98% rename from src/Main.java rename to firestar/src/main/java/Main.java index e3d3f6b..8e7dc68 100644 --- a/src/Main.java +++ b/firestar/src/main/java/Main.java @@ -82,7 +82,7 @@ public class Main { //begin // load global assets try { - fExo2 = Font.createFont(Font.TRUETYPE_FONT, new File(System.getProperty("user.dir") + "/resources/exo2.ttf")); + fExo2 = Font.createFont(Font.TRUETYPE_FONT, Main.class.getResourceAsStream("/exo2.ttf")); } catch (Exception e) { System.out.println("Font \"Exo 2\" is missing!"); fExo2 = new Font("Arial", Font.PLAIN, 12); diff --git a/src/MasterWindowLayout.form b/firestar/src/main/java/MasterWindowLayout.form similarity index 100% rename from src/MasterWindowLayout.form rename to firestar/src/main/java/MasterWindowLayout.form diff --git a/src/MissPiggy.java b/firestar/src/main/java/MissPiggy.java similarity index 99% rename from src/MissPiggy.java rename to firestar/src/main/java/MissPiggy.java index b18870b..fcf2843 100644 --- a/src/MissPiggy.java +++ b/firestar/src/main/java/MissPiggy.java @@ -147,7 +147,7 @@ public class MissPiggy implements ActionListener { // display window try { - windowIcon = ImageIO.read(new File(System.getProperty("user.dir") + "/resources/titleIcon.png")); + windowIcon = ImageIO.read(Main.class.getResourceAsStream("/titleIcon.png")); frame.setIconImage(windowIcon); } catch (IOException e) { System.out.println("ERROR: Failed to find /resources/titleIcon.png. Window will not have an icon."); diff --git a/src/Rowlf.form b/firestar/src/main/java/Rowlf.form similarity index 100% rename from src/Rowlf.form rename to firestar/src/main/java/Rowlf.form diff --git a/src/Rowlf.java b/firestar/src/main/java/Rowlf.java similarity index 96% rename from src/Rowlf.java rename to firestar/src/main/java/Rowlf.java index 2cde92d..60b0b85 100644 --- a/src/Rowlf.java +++ b/firestar/src/main/java/Rowlf.java @@ -36,7 +36,7 @@ public class Rowlf { public void displayAboutScreen() { try { - logo = ImageIO.read(new File(System.getProperty("user.dir") + "/resources/logo_about.png")); + logo = ImageIO.read(Main.class.getResourceAsStream("/logo_about.png")); } catch (IOException e) { System.out.println("ERROR: Failed to open About screen because we couldn't find an image needed to display the page."); throw new RuntimeException(e); diff --git a/src/Waldorf.form b/firestar/src/main/java/Waldorf.form similarity index 100% rename from src/Waldorf.form rename to firestar/src/main/java/Waldorf.form diff --git a/src/Waldorf.java b/firestar/src/main/java/Waldorf.java similarity index 97% rename from src/Waldorf.java rename to firestar/src/main/java/Waldorf.java index b1b06d2..6c05098 100644 --- a/src/Waldorf.java +++ b/firestar/src/main/java/Waldorf.java @@ -46,7 +46,7 @@ public class Waldorf implements ActionListener { frame.add(frameContainer); try { - BufferedImage windowIcon = ImageIO.read(new File(System.getProperty("user.dir") + "/resources/titleIcon.png")); + BufferedImage windowIcon = ImageIO.read(Main.class.getResourceAsStream("/titleIcon.png")); frame.setIconImage(windowIcon); } catch (IOException e) { System.out.println("ERROR: Failed to find /resources/titleIcon.png. Window will not have an icon."); diff --git a/resources/exo2.ttf b/firestar/src/main/resources/exo2.ttf similarity index 100% rename from resources/exo2.ttf rename to firestar/src/main/resources/exo2.ttf diff --git a/resources/logo.png b/firestar/src/main/resources/logo.png similarity index 100% rename from resources/logo.png rename to firestar/src/main/resources/logo.png diff --git a/resources/logo_about.png b/firestar/src/main/resources/logo_about.png similarity index 100% rename from resources/logo_about.png rename to firestar/src/main/resources/logo_about.png diff --git a/resources/programIcon.png b/firestar/src/main/resources/programIcon.png similarity index 100% rename from resources/programIcon.png rename to firestar/src/main/resources/programIcon.png diff --git a/resources/titleIcon.png b/firestar/src/main/resources/titleIcon.png similarity index 100% rename from resources/titleIcon.png rename to firestar/src/main/resources/titleIcon.png diff --git a/resources/titleIconAlt.png b/firestar/src/main/resources/titleIconAlt.png similarity index 100% rename from resources/titleIconAlt.png rename to firestar/src/main/resources/titleIconAlt.png diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..4de482d --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +netbeans.hint.jdkPlatform=JDK_22__System_ diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..b740cf1 --- /dev/null +++ b/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..7101f8e --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..8fe7902 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,14 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.8/userguide/multi_project_builds.html in the Gradle documentation. + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' +} + +rootProject.name = 'firestar' +include('firestar') -- 2.49.0 From a7debb3668a5865c785613892efb830e633fcdc5 Mon Sep 17 00:00:00 2001 From: Wirlaburla Date: Tue, 9 Jul 2024 03:00:15 -0500 Subject: [PATCH 2/4] return installer directory to its intended location --- .../main/installer/win32/installer_win32.iss | 60 --------- gradle/libs.versions.toml | 10 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew.bat | 95 ++++++++++++++ .../installer => installer}/unix/firestar.dbp | 0 .../unix/usr/bin/firestar | 0 installer/win32/installer_win32.iss | 123 ++++++++++++++++++ 8 files changed, 235 insertions(+), 60 deletions(-) delete mode 100644 firestar/src/main/installer/win32/installer_win32.iss create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties rename {firestar/src/main/installer => installer}/unix/firestar.dbp (100%) rename {firestar/src/main/installer => installer}/unix/usr/bin/firestar (100%) create mode 100644 installer/win32/installer_win32.iss diff --git a/firestar/src/main/installer/win32/installer_win32.iss b/firestar/src/main/installer/win32/installer_win32.iss deleted file mode 100644 index 4af0fa5..0000000 --- a/firestar/src/main/installer/win32/installer_win32.iss +++ /dev/null @@ -1,60 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "Firestar Mod Manager" -#define MyAppVersion "1.2" -#define MyAppPublisher "bonkmaykr" -#define MyAppURL "https://screwgravity.net/firestar/" -#define MyAppExeName "firestar.jar" -#define MyAppAssocName "Firestar Mod Package" -#define MyAppAssocExt ".fstar" -#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt - -[Setup] -; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{F21E7A32-C3CA-4297-AB32-CB1692A06510} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={autopf}\Firestar -ChangesAssociations=yes -DisableProgramGroupPage=yes -LicenseFile=Z:\home\bonkyboo\repos\firestar\LICENSE -; Uncomment the following line to run in non administrative install mode (install for current user only.) -;PrivilegesRequired=lowest -PrivilegesRequiredOverridesAllowed=dialog -OutputDir=Z:\home\bonkyboo\repos\firestar\out\inno -OutputBaseFilename=firestar -SetupIconFile=Z:\home\bonkyboo\repos\firestar\titleIcon.ico -Compression=lzma -SolidCompression=yes -WizardStyle=modern - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "Z:\home\bonkyboo\repos\firestar\out\artifacts\firestar_jar\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion -Source: "Z:\home\bonkyboo\repos\firestar\titleIcon.ico"; DestDir: "{app}"; Flags: ignoreversion -Source: "Z:\home\bonkyboo\repos\firestar\resources\*"; DestDir: "{app}\resources"; Flags: ignoreversion recursesubdirs createallsubdirs -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Registry] -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0" -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1""" -Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: "" - -[Icons] -Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; -Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; Tasks: desktopicon - diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..f8c44c5 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,10 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format + +[versions] +guava = "33.0.0-jre" +junit = "4.13.2" + +[libraries] +guava = { module = "com.google.guava:guava", version.ref = "guava" } +junit = { module = "junit:junit", version.ref = "junit" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6441136f3d4ba8a0da8d277868979cfbc8ad796 GIT binary patch literal 43453 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 CbvAPV literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a441313 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew.bat b/gradlew.bat index 7101f8e..cb1069f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,4 @@ +<<<<<<< HEAD @rem @rem Copyright 2015 the original author or authors. @rem @@ -90,3 +91,97 @@ exit /b %EXIT_CODE% if "%OS%"=="Windows_NT" endlocal :omega +======= +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega +>>>>>>> 3b53054 (use gradle build system instead, replace resources as streams) diff --git a/firestar/src/main/installer/unix/firestar.dbp b/installer/unix/firestar.dbp similarity index 100% rename from firestar/src/main/installer/unix/firestar.dbp rename to installer/unix/firestar.dbp diff --git a/firestar/src/main/installer/unix/usr/bin/firestar b/installer/unix/usr/bin/firestar similarity index 100% rename from firestar/src/main/installer/unix/usr/bin/firestar rename to installer/unix/usr/bin/firestar diff --git a/installer/win32/installer_win32.iss b/installer/win32/installer_win32.iss new file mode 100644 index 0000000..6be0b96 --- /dev/null +++ b/installer/win32/installer_win32.iss @@ -0,0 +1,123 @@ +<<<<<<< HEAD +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName "Firestar Mod Manager" +#define MyAppVersion "1.2" +#define MyAppPublisher "bonkmaykr" +#define MyAppURL "https://screwgravity.net/firestar/" +#define MyAppExeName "firestar.jar" +#define MyAppAssocName "Firestar Mod Package" +#define MyAppAssocExt ".fstar" +#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{F21E7A32-C3CA-4297-AB32-CB1692A06510} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={autopf}\Firestar +ChangesAssociations=yes +DisableProgramGroupPage=yes +LicenseFile=Z:\home\bonkyboo\repos\firestar\LICENSE +; Uncomment the following line to run in non administrative install mode (install for current user only.) +;PrivilegesRequired=lowest +PrivilegesRequiredOverridesAllowed=dialog +OutputDir=Z:\home\bonkyboo\repos\firestar\out\inno +OutputBaseFilename=firestar +SetupIconFile=Z:\home\bonkyboo\repos\firestar\titleIcon.ico +Compression=lzma +SolidCompression=yes +WizardStyle=modern + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "Z:\home\bonkyboo\repos\firestar\out\artifacts\firestar_jar\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "Z:\home\bonkyboo\repos\firestar\titleIcon.ico"; DestDir: "{app}"; Flags: ignoreversion +Source: "Z:\home\bonkyboo\repos\firestar\resources\*"; DestDir: "{app}\resources"; Flags: ignoreversion recursesubdirs createallsubdirs +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Registry] +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0" +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1""" +Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: "" + +[Icons] +Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; +Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; Tasks: desktopicon + +======= +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +#define MyAppName "Firestar Mod Manager" +#define MyAppVersion "1.2" +#define MyAppPublisher "bonkmaykr" +#define MyAppURL "https://screwgravity.net/firestar/" +#define MyAppExeName "firestar.jar" +#define MyAppAssocName "Firestar Mod Package" +#define MyAppAssocExt ".fstar" +#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{F21E7A32-C3CA-4297-AB32-CB1692A06510} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={autopf}\Firestar +ChangesAssociations=yes +DisableProgramGroupPage=yes +LicenseFile=Z:\home\bonkyboo\repos\firestar\LICENSE +; Uncomment the following line to run in non administrative install mode (install for current user only.) +;PrivilegesRequired=lowest +PrivilegesRequiredOverridesAllowed=dialog +OutputDir=Z:\home\bonkyboo\repos\firestar\out\inno +OutputBaseFilename=firestar +SetupIconFile=Z:\home\bonkyboo\repos\firestar\titleIcon.ico +Compression=lzma +SolidCompression=yes +WizardStyle=modern + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "Z:\home\bonkyboo\repos\firestar\out\artifacts\firestar_jar\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "Z:\home\bonkyboo\repos\firestar\titleIcon.ico"; DestDir: "{app}"; Flags: ignoreversion +Source: "Z:\home\bonkyboo\repos\firestar\resources\*"; DestDir: "{app}\resources"; Flags: ignoreversion recursesubdirs createallsubdirs +; NOTE: Don't use "Flags: ignoreversion" on any shared system files + +[Registry] +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0" +Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1""" +Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: "" + +[Icons] +Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; +Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; Tasks: desktopicon + +>>>>>>> 3b53054 (use gradle build system instead, replace resources as streams) -- 2.49.0 From 03a75489839c0517263fa593502f7e83bdb439d3 Mon Sep 17 00:00:00 2001 From: Wirlaburla Date: Tue, 9 Jul 2024 03:03:28 -0500 Subject: [PATCH 3/4] what the fuck was this? why did it mess with this file? what the fuck? --- installer/win32/installer_win32.iss | 63 ----------------------------- 1 file changed, 63 deletions(-) diff --git a/installer/win32/installer_win32.iss b/installer/win32/installer_win32.iss index 6be0b96..4af0fa5 100644 --- a/installer/win32/installer_win32.iss +++ b/installer/win32/installer_win32.iss @@ -1,4 +1,3 @@ -<<<<<<< HEAD ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! @@ -59,65 +58,3 @@ Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; Tasks: desktopicon -======= -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "Firestar Mod Manager" -#define MyAppVersion "1.2" -#define MyAppPublisher "bonkmaykr" -#define MyAppURL "https://screwgravity.net/firestar/" -#define MyAppExeName "firestar.jar" -#define MyAppAssocName "Firestar Mod Package" -#define MyAppAssocExt ".fstar" -#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt - -[Setup] -; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{F21E7A32-C3CA-4297-AB32-CB1692A06510} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={autopf}\Firestar -ChangesAssociations=yes -DisableProgramGroupPage=yes -LicenseFile=Z:\home\bonkyboo\repos\firestar\LICENSE -; Uncomment the following line to run in non administrative install mode (install for current user only.) -;PrivilegesRequired=lowest -PrivilegesRequiredOverridesAllowed=dialog -OutputDir=Z:\home\bonkyboo\repos\firestar\out\inno -OutputBaseFilename=firestar -SetupIconFile=Z:\home\bonkyboo\repos\firestar\titleIcon.ico -Compression=lzma -SolidCompression=yes -WizardStyle=modern - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "Z:\home\bonkyboo\repos\firestar\out\artifacts\firestar_jar\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion -Source: "Z:\home\bonkyboo\repos\firestar\titleIcon.ico"; DestDir: "{app}"; Flags: ignoreversion -Source: "Z:\home\bonkyboo\repos\firestar\resources\*"; DestDir: "{app}\resources"; Flags: ignoreversion recursesubdirs createallsubdirs -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Registry] -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0" -Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1""" -Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: "" - -[Icons] -Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; -Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\titleIcon.ico"; Tasks: desktopicon - ->>>>>>> 3b53054 (use gradle build system instead, replace resources as streams) -- 2.49.0 From 4e847fdf309e421deca5ad3c1a1db5a2f7b5e430 Mon Sep 17 00:00:00 2001 From: Wirlaburla Date: Tue, 9 Jul 2024 03:04:27 -0500 Subject: [PATCH 4/4] remove gradle directory from git (not needed) --- gradle/libs.versions.toml | 10 ---------- gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 7 ------- 3 files changed, 17 deletions(-) delete mode 100644 gradle/libs.versions.toml delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100644 gradle/wrapper/gradle-wrapper.properties diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml deleted file mode 100644 index f8c44c5..0000000 --- a/gradle/libs.versions.toml +++ /dev/null @@ -1,10 +0,0 @@ -# This file was generated by the Gradle 'init' task. -# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format - -[versions] -guava = "33.0.0-jre" -junit = "4.13.2" - -[libraries] -guava = { module = "com.google.guava:guava", version.ref = "guava" } -junit = { module = "junit:junit", version.ref = "junit" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e6441136f3d4ba8a0da8d277868979cfbc8ad796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43453 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 CbvAPV diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index a441313..0000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -- 2.49.0