A => .build.yml +6 -0
@@ 1,6 @@
+image: archlinux
+packages:
+ - bash
+tasks:
+ - test: |
+ cd libCosmic && bash test.sh
A => .gitignore +3 -0
@@ 1,3 @@
+*.swp
+bin/
+target/
A => LICENSE +165 -0
@@ 1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
A => README.md +16 -0
@@ 1,16 @@
+# libCosmic
+
+> Short intro here
+
+## Installing
+
+## Usage
+
+> Simply run:
+```
+$
+```
+
+## Notes
+
+[![License:](https://img.shields.io/badge/license-LGPL3-green)](https://www.gnu.org/licenses/lgpl-3.0.txt)
A => pom.xml +115 -0
@@ 1,115 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>xyz.skiqqy.cosmic.lib</groupId>
+ <artifactId>libCosmic</artifactId>
+ <version>1.0.0</version>
+
+ <repositories>
+ <repository>
+ <id>central</id>
+ <url>https://repo.maven.apache.org/maven2</url>
+ </repository>
+
+ <repository>
+ <id>gitea</id>
+ <url>https://git.skiqqy.xyz/api/packages/skiqqy/maven</url>
+ </repository>
+ </repositories>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <java.version>17</java.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>xyz.skiqqy.jopts</groupId>
+ <artifactId>jopts</artifactId>
+ <version>2.0.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <version>2.19.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <version>2.19.0</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>3.1.1</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <!-- Your main class -->
+ <mainClass>xyz.skiqqy.cosmic.lib.Main</mainClass>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.7.0</version>
+ <configuration>
+ <release>17</release>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/lib</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-beta-4</version>
+ <executions>
+ <execution>
+ <id>user_distribution</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attached</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>src/main/resources/dist.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
A => run.sh +16 -0
@@ 1,16 @@
+#!/usr/bin/env bash
+# java wrapper script
+
+ROOT=$(realpath "${BASH_SOURCE/run\.sh/}") # This sets the ROOT to root of the repo
+cd "$ROOT" || exit 1
+cp='log/:lib/*'
+if find . | grep /classes$ > /dev/null
+then
+ cp="$cp:target/lib/*:target/classes"
+fi
+
+class=${1:-Main} # Run main if no args
+class=${class/xyz.skiqqy.cosmic.lib./}
+shift 1
+
+java -cp "$cp" "xyz.skiqqy.cosmic.lib.$class" "$@"
A => scripts/release.sh +52 -0
@@ 1,52 @@
+#!/usr/bin/env bash
+# Guide the user through a new release
+# Written by Stephen Cochrane
+
+set -e
+
+ROOT=$(realpath "$(dirname "$0")/..") # This sets the ROOT to root of the repo
+
+cd "$ROOT" || exit 1
+
+BRANCH=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
+
+# Currently, we only want to de releases from the master branch, review this
+# decision later
+if [ ! "$BRANCH" = master ]
+then
+ echo "Must be on master branch to do a release"
+ exit 1
+fi
+
+# Check valid semvar
+checkSemvar()
+{
+ grep -qP '^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$' <<< "$1"
+}
+
+read -rp 'Enter next version: ' version
+
+if ! checkSemvar "$version"
+then
+ echo "Invalid semvar, please ensure the version number follows https://semver.org/ spec."
+ exit 1
+fi
+
+task=install
+
+if grep -q '<distributionManagement>' pom.xml
+then
+ task=deploy
+fi
+
+mvn $task
+tag=v$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
+
+# bump to the next version
+echo "$version" | mvn versions:set
+rm pom.xml.versionsBackup # delete the backup pom, this is redundent
+
+git tag "$tag"
+git add .
+git commit -m "Bump Version: $version"
+git push --atomic origin master "$tag"
A => src/main/java/xyz/skiqqy/cosmic/lib/Main.java +17 -0
@@ 1,17 @@
+package xyz.skiqqy.cosmic.lib;
+
+import xyz.skiqqy.jopts.JOpts;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+
+public class Main {
+ private static final Logger log = LogManager.getLogger(Main.class);
+ public static void main(String... argv) {
+ JOpts jo = new JOpts(new String[][] {
+ new String[] {"h,-help", "Shows this message"}
+ },
+ argv
+ );
+ if (jo.is("h")) System.out.print(jo.usage());
+ }
+}
A => src/main/resources/dist.xml +28 -0
@@ 1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/xsd/assembly-1.1.1.xsd">
+ <id>dist</id>
+ <formats>
+ <format>zip</format>
+ </formats>
+ <files>
+ <file>
+ <source>target/${pom.artifactId}-${pom.version}.jar</source>
+ <outputDirectory>lib/</outputDirectory>
+ </file>
+ <file>
+ <source>run.sh</source>
+ <outputDirectory></outputDirectory>
+ </file>
+ <file>
+ <source>src/main/resources/log4j2.properties</source>
+ <outputDirectory>log/</outputDirectory>
+ </file>
+ </files>
+ <fileSets>
+ <fileSet>
+ <directory>target/lib</directory>
+ <outputDirectory>lib/</outputDirectory>
+ </fileSet>
+ </fileSets>
+</assembly>
A => src/main/resources/log4j2.properties +17 -0
@@ 1,17 @@
+# This is just a starter config, and should be changed where needed.
+# Extra logging related to initialization of Log4j
+# Set to debug or trace if log4j initialization is failing
+status = warn
+# Name of the configuration
+name = ConsoleLogConfigDemo
+
+# Console appender configuration
+appender.console.type = Console
+appender.console.name = consoleLogger
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p [%t :: %c] - %m%n
+
+# Root logger level
+rootLogger.level = all
+# Root logger referring to console appender
+rootLogger.appenderRef.stdout.ref = consoleLogger
A => src/test/java/xyz/skiqqy/cosmic/lib/ExampleTest.java +13 -0
@@ 1,13 @@
+package xyz.skiqqy.cosmic.lib;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.*;
+
+public class ExampleTest {
+ @Test
+ public void example() {
+ assertTrue(1 == 1);
+ }
+}