diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java deleted file mode 100644 index 7a3645ae5..000000000 --- a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/ManifestLoaderEntry.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.dfsek.terra.addons.manifest; - -public class ManifestLoaderEntry { -} diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/api/AddonInitializer.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/api/AddonInitializer.java new file mode 100644 index 000000000..7455f4a76 --- /dev/null +++ b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/api/AddonInitializer.java @@ -0,0 +1,5 @@ +package com.dfsek.terra.addons.manifest.api; + + +public interface AddonInitializer { +} diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/ManifestAddon.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/ManifestAddon.java new file mode 100644 index 000000000..89c93f709 --- /dev/null +++ b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/ManifestAddon.java @@ -0,0 +1,22 @@ +package com.dfsek.terra.addons.manifest.impl; + +import com.dfsek.terra.addons.manifest.impl.config.AddonManifest; +import com.dfsek.terra.api.addon.BaseAddon; + + +public class ManifestAddon implements BaseAddon { + private final AddonManifest manifest; + + public ManifestAddon(AddonManifest manifest) { + this.manifest = manifest; + } + + @Override + public String getID() { + return manifest.getID(); + } + + public void initialize() { + + } +} diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/ManifestAddonLoader.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/ManifestAddonLoader.java new file mode 100644 index 000000000..5dedb696a --- /dev/null +++ b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/ManifestAddonLoader.java @@ -0,0 +1,20 @@ +package com.dfsek.terra.addons.manifest.impl; + +import com.dfsek.terra.api.addon.BaseAddon; +import com.dfsek.terra.api.addon.bootstrap.BootstrapBaseAddon; + +import java.nio.file.Path; +import java.util.Collections; + + +public class ManifestAddonLoader implements BootstrapBaseAddon { + @Override + public Iterable loadAddons(Path addonsFolder, ClassLoader parent) { + return Collections.emptySet(); + } + + @Override + public String getID() { + return "MANIFEST"; + } +} diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/AddonManifest.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/AddonManifest.java new file mode 100644 index 000000000..1c104a64e --- /dev/null +++ b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/AddonManifest.java @@ -0,0 +1,73 @@ +package com.dfsek.terra.addons.manifest.impl.config; + +import ca.solostudios.strata.version.Version; +import com.dfsek.tectonic.annotations.Default; +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.config.ConfigTemplate; + +import com.dfsek.terra.api.util.StringIdentifiable; + +import java.util.Collections; +import java.util.List; + + +@SuppressWarnings("FieldMayBeFinal") +public class AddonManifest implements ConfigTemplate, StringIdentifiable { + @Value("schema-version") + private int schemaVersion; + + @Value("id") + private String id; + + @Value("version") + private Version version; + + @Value("license") + private String license; + + @Value("contributors") + private List contributors; + + @Value("entrypoints") + private List entryPoints; + + @Value("depends") + @Default + private List dependencies = Collections.emptyList(); + + @Value("website") + private WebsiteConfig website; + + @Override + public String getID() { + return id; + } + + public int getSchemaVersion() { + return schemaVersion; + } + + public Version getVersion() { + return version; + } + + public List getContributors() { + return contributors; + } + + public List getEntryPoints() { + return entryPoints; + } + + public String getLicense() { + return license; + } + + public WebsiteConfig getWebsite() { + return website; + } + + public List getDependencies() { + return dependencies; + } +} diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/DependencyConfig.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/DependencyConfig.java new file mode 100644 index 000000000..95d14345a --- /dev/null +++ b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/DependencyConfig.java @@ -0,0 +1,4 @@ +package com.dfsek.terra.addons.manifest.impl.config; + +public class DependencyConfig { +} diff --git a/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/WebsiteConfig.java b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/WebsiteConfig.java new file mode 100644 index 000000000..34e320ca9 --- /dev/null +++ b/common/addons/manifest-addon-loader/src/main/java/com/dfsek/terra/addons/manifest/impl/config/WebsiteConfig.java @@ -0,0 +1,33 @@ +package com.dfsek.terra.addons.manifest.impl.config; + +import com.dfsek.tectonic.annotations.Value; +import com.dfsek.tectonic.loading.object.ObjectTemplate; + + +public class WebsiteConfig implements ObjectTemplate { + @Value("issues") + private String issues; + + @Value("source") + private String source; + + @Value("docs") + private String docs; + + public String getDocs() { + return docs; + } + + public String getIssues() { + return issues; + } + + public String getSource() { + return source; + } + + @Override + public WebsiteConfig get() { + return this; + } +} diff --git a/common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF b/common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF index bec8fea95..99c58939e 100644 --- a/common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF +++ b/common/addons/manifest-addon-loader/src/main/resources/META-INF/MANIFEST.MF @@ -1 +1 @@ -Bootstrap-Addon-Entry-Point: com.dfsek.terra.addons.manifest.ManifestLoaderEntry +Bootstrap-Addon-Entry-Point: com.dfsek.terra.addons.manifest.impl.ManifestAddonLoader