diff --git a/.github/ISSUE_TEMPLATE/translation.md b/.github/ISSUE_TEMPLATE/translation.md index ef7ba882d..0672e55e9 100644 --- a/.github/ISSUE_TEMPLATE/translation.md +++ b/.github/ISSUE_TEMPLATE/translation.md @@ -13,8 +13,8 @@ Would you like to add a new translation or fix/update an existing translation? Please check the translation files you want to add/fix/update: - - [ ] CLI banner: (apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner*.properties) - - [ ] CLI bundle: (apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages*.properties) + - [ ] CLI banner: (plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner*.properties) + - [ ] CLI bundle: (plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages*.properties) - [ ] core bundle: (core/jreleaser-utils/src/main/resources/org/jreleaser/bundle/Messages*.properties) A list of language codes can be found at https://sda.berkeley.edu/man41h/localelist.htm \ No newline at end of file diff --git a/.github/test-files/build-cosign.gradle b/.github/test-files/build-cosign.gradle index 3fe3379a0..862c4f8a0 100644 --- a/.github/test-files/build-cosign.gradle +++ b/.github/test-files/build-cosign.gradle @@ -8,7 +8,7 @@ jreleaser { dryrun = true environment { - properties.put('jdkPathPrefix', 'apps/jreleaser/build/jdks') + properties.put('jdkPathPrefix', 'plugins/jreleaser/build/jdks') properties.put('jdkFilePrefix', 'zulu17.32.13-ca-jdk17.0.2') } @@ -202,10 +202,10 @@ jreleaser { platform = 'windows-aarch_64' } mainJar { - path = 'apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' + path = 'plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' } jars { - pattern = 'apps/jreleaser/build/dependencies/flat/*.jar' + pattern = 'plugins/jreleaser/build/dependencies/flat/*.jar' } } } @@ -288,12 +288,12 @@ jreleaser { } } artifact { - path = 'apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip' + path = 'plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip' transform = '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip' extraProperties.put('skipSpec', true) } artifact { - path = 'apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar' + path = 'plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar' transform = '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar' extraProperties.put('skipFlatpak', true) } @@ -309,7 +309,7 @@ jreleaser { 'jreleaser-tool-provider' { distributionType = 'SINGLE_JAR' artifact { - path = 'apps/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar' + path = 'plugins/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar' transform = '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.jar' } } diff --git a/.github/test-files/build-gpg.gradle b/.github/test-files/build-gpg.gradle index a209579ce..27ecc7134 100644 --- a/.github/test-files/build-gpg.gradle +++ b/.github/test-files/build-gpg.gradle @@ -8,7 +8,7 @@ jreleaser { dryrun = true environment { - properties.put('jdkPathPrefix', 'apps/jreleaser/build/jdks') + properties.put('jdkPathPrefix', 'plugins/jreleaser/build/jdks') properties.put('jdkFilePrefix', 'zulu17.32.13-ca-jdk17.0.2') } @@ -198,10 +198,10 @@ jreleaser { platform = 'windows-aarch_64' } mainJar { - path = 'apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' + path = 'plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' } jars { - pattern = 'apps/jreleaser/build/dependencies/flat/*.jar' + pattern = 'plugins/jreleaser/build/dependencies/flat/*.jar' } } } @@ -284,12 +284,12 @@ jreleaser { } } artifact { - path = 'apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip' + path = 'plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip' transform = '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip' extraProperties.put('skipSpec', true) } artifact { - path = 'apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar' + path = 'plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar' transform = '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar' extraProperties.put('skipFlatpak', true) } @@ -305,7 +305,7 @@ jreleaser { 'jreleaser-tool-provider' { distributionType = 'SINGLE_JAR' artifact { - path = 'apps/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar' + path = 'plugins/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar' transform = '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.jar' } } diff --git a/.github/test-files/jreleaser-cosign.yml b/.github/test-files/jreleaser-cosign.yml index 5f66c4af1..9c70c9ab5 100644 --- a/.github/test-files/jreleaser-cosign.yml +++ b/.github/test-files/jreleaser-cosign.yml @@ -1,6 +1,6 @@ environment: properties: - jdkPathPrefix: 'apps/jreleaser/build/jdks' + jdkPathPrefix: 'plugins/jreleaser/build/jdks' jdkFilePrefix: 'zulu17.32.13-ca-jdk17.0.2' project: @@ -162,9 +162,9 @@ assemble: - path: '{{jdkPathPrefix}}/zulu17WindowsArm/{{jdkFilePrefix}}-win_aarch64' platform: 'windows-aarch_64' mainJar: - path: 'apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' + path: 'plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' jars: - - pattern: 'apps/jreleaser/build/dependencies/flat/*.jar' + - pattern: 'plugins/jreleaser/build/dependencies/flat/*.jar' distributions: jreleaser: @@ -236,11 +236,11 @@ distributions: active: release name: jreleaser-copr artifacts: - - path: apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip + - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip' extraProperties: skipSpec: true - - path: apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar + - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar' extraProperties: skipFlatpak: true @@ -253,7 +253,7 @@ distributions: jreleaser-tool-provider: type: SINGLE_JAR artifacts: - - path: apps/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar + - path: plugins/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.jar' jreleaser-standalone: diff --git a/.github/test-files/jreleaser-gpg.yml b/.github/test-files/jreleaser-gpg.yml index 13140e0a3..edcd1b896 100644 --- a/.github/test-files/jreleaser-gpg.yml +++ b/.github/test-files/jreleaser-gpg.yml @@ -1,6 +1,6 @@ environment: properties: - jdkPathPrefix: 'apps/jreleaser/build/jdks' + jdkPathPrefix: 'plugins/jreleaser/build/jdks' jdkFilePrefix: 'zulu17.32.13-ca-jdk17.0.2' project: @@ -159,9 +159,9 @@ assemble: - path: '{{jdkPathPrefix}}/zulu17WindowsArm/{{jdkFilePrefix}}-win_aarch64' platform: 'windows-aarch_64' mainJar: - path: 'apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' + path: 'plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' jars: - - pattern: 'apps/jreleaser/build/dependencies/flat/*.jar' + - pattern: 'plugins/jreleaser/build/dependencies/flat/*.jar' distributions: jreleaser: @@ -233,11 +233,11 @@ distributions: active: release name: jreleaser-copr artifacts: - - path: apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip + - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip' extraProperties: skipSpec: true - - path: apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar + - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar' extraProperties: skipFlatpak: true @@ -250,7 +250,7 @@ distributions: jreleaser-tool-provider: type: SINGLE_JAR artifacts: - - path: apps/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar + - path: plugins/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.jar' jreleaser-standalone: diff --git a/.github/test-files/pom-cosign.xml b/.github/test-files/pom-cosign.xml index f05042aff..41af45867 100644 --- a/.github/test-files/pom-cosign.xml +++ b/.github/test-files/pom-cosign.xml @@ -76,7 +76,7 @@ - apps/jreleaser/build/jdks + plugins/jreleaser/build/jdks zulu17.32.13-ca-jdk17.0.2 @@ -282,11 +282,11 @@ - apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar + plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar - apps/jreleaser/build/dependencies/flat/*.jar + plugins/jreleaser/build/dependencies/flat/*.jar @@ -385,14 +385,14 @@ - apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip + plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip {{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip true - apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar + plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar {{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar true @@ -412,7 +412,7 @@ SINGLE_JAR - apps/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar + plugins/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar {{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.jar diff --git a/.github/test-files/pom-gpg.xml b/.github/test-files/pom-gpg.xml index 7e9b11de8..2a86d6f3a 100644 --- a/.github/test-files/pom-gpg.xml +++ b/.github/test-files/pom-gpg.xml @@ -76,7 +76,7 @@ - apps/jreleaser/build/jdks + plugins/jreleaser/build/jdks zulu17.32.13-ca-jdk17.0.2 @@ -278,11 +278,11 @@ - apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar + plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar - apps/jreleaser/build/dependencies/flat/*.jar + plugins/jreleaser/build/dependencies/flat/*.jar @@ -381,14 +381,14 @@ - apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip + plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip {{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip true - apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar + plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar {{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar true @@ -408,7 +408,7 @@ SINGLE_JAR - apps/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar + plugins/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar {{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.jar diff --git a/.github/workflows/smoke-tests-cli.yml b/.github/workflows/smoke-tests-cli.yml index 6bb07de30..802b6bed6 100644 --- a/.github/workflows/smoke-tests-cli.yml +++ b/.github/workflows/smoke-tests-cli.yml @@ -72,7 +72,7 @@ jobs: - name: Prepare shell: bash run: | - unzip -qo apps/jreleaser/build/distributions/jreleaser-${{ needs.precheck.outputs.VERSION }}.zip + unzip -qo plugins/jreleaser/build/distributions/jreleaser-${{ needs.precheck.outputs.VERSION }}.zip cp .github/test-files/jreleaser-${{ matrix.job.sign }}.yml jreleaser.yml - name: Assemble diff --git a/.github/workflows/step-jlink.yml b/.github/workflows/step-jlink.yml index 012137b2d..1db6bbffc 100644 --- a/.github/workflows/step-jlink.yml +++ b/.github/workflows/step-jlink.yml @@ -74,10 +74,10 @@ jobs: retention-days: 1 name: artifacts path: | - apps/jreleaser/build/libs/ - apps/jreleaser/build/dependencies/ - apps/jreleaser/build/distributions/ - apps/jreleaser-tool-provider/build/libs/*.jar + plugins/jreleaser/build/libs/ + plugins/jreleaser/build/dependencies/ + plugins/jreleaser/build/distributions/ + plugins/jreleaser-tool-provider/build/libs/*.jar plugins/jreleaser-ant-tasks/build/distributions/*.zip - name: Upload jlink diff --git a/.github/workflows/trigger-early-access.yml b/.github/workflows/trigger-early-access.yml index 52e7af509..5417028b8 100644 --- a/.github/workflows/trigger-early-access.yml +++ b/.github/workflows/trigger-early-access.yml @@ -36,9 +36,9 @@ jobs: - name: Rename artifacts run: | mkdir early-access - cp apps/jreleaser-tool-provider/build/VERSION early-access/VERSION - cp apps/jreleaser-tool-provider/build/libs/jreleaser-tool-provider-*-SNAPSHOT.jar early-access/jreleaser-tool-provider-early-access.jar - cp apps/jreleaser/build/distributions/jreleaser-*-SNAPSHOT.zip early-access/jreleaser-early-access.zip + cp plugins/jreleaser-tool-provider/build/VERSION early-access/VERSION + cp plugins/jreleaser-tool-provider/build/libs/jreleaser-tool-provider-*-SNAPSHOT.jar early-access/jreleaser-tool-provider-early-access.jar + cp plugins/jreleaser/build/distributions/jreleaser-*-SNAPSHOT.zip early-access/jreleaser-early-access.zip cp plugins/jreleaser-ant-tasks/build/distributions/jreleaser-ant-tasks-*-SNAPSHOT.zip early-access/jreleaser-ant-tasks-early-access.zip - name: 'Release early-access artifacts' diff --git a/api/jreleaser-logger-api/jreleaser-logger-api.gradle b/api/jreleaser-logger-api/jreleaser-logger-api.gradle index 22ef44698..c1dce396f 100644 --- a/api/jreleaser-logger-api/jreleaser-logger-api.gradle +++ b/api/jreleaser-logger-api/jreleaser-logger-api.gradle @@ -16,22 +16,6 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model-api') - api project(':jreleaser-resource-bundle') - - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api('kr.motd.maven:os-maven-plugin:1.7.0') { transitive = false } - api "com.github.spullara.mustache.java:compiler:$mustacheVersion" - api "com.fasterxml.jackson.core:jackson-core:$jacksonVersion" - api "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" - api "org.bouncycastle:bcpg-jdk15on:$bouncyCastleVersion" - // checksum - api "commons-codec:commons-codec:$commonsCodecVersion" - api "org.apache.commons:commons-compress:$commonsCompressVersion" + api "org.slf4j:slf4j-api:$slf4jVersion" api "org.slf4j:jcl-over-slf4j:$slf4jVersion" - api "org.zeroturnaround:zt-exec:$ztexecVersion" - api "com.github.veithen.cosmos.bootstrap:org.tukaani.xz:$xzVersion" - api "org.commonmark:commonmark:$commonmarkVersion" } \ No newline at end of file diff --git a/api/jreleaser-model-api/gradle.properties b/api/jreleaser-model-api/gradle.properties index 986361cca..0afdd8e51 100644 --- a/api/jreleaser-model-api/gradle.properties +++ b/api/jreleaser-model-api/gradle.properties @@ -16,4 +16,4 @@ # limitations under the License. # -project_description = JReleaser model API \ No newline at end of file +project_description = JReleaser Model API \ No newline at end of file diff --git a/api/jreleaser-model-api/jreleaser-model-api.gradle b/api/jreleaser-model-api/jreleaser-model-api.gradle index d0f8bba96..5c40f7f4d 100644 --- a/api/jreleaser-model-api/jreleaser-model-api.gradle +++ b/api/jreleaser-model-api/jreleaser-model-api.gradle @@ -17,5 +17,29 @@ */ dependencies { + api project(':jreleaser-logger-api') api project(':jreleaser-resource-bundle') -} \ No newline at end of file + api project(':jreleaser-utils') +} + + +project.rootProject.gradle.addBuildListener(new BuildAdapter() { + @Override + void projectsEvaluated(Gradle gradle) { + gradle.rootProject.subprojects + .find { p -> p.name == 'jreleaser-model-api' } + .processResources { + inputs.property('build_date', gradle.rootProject.config.buildInfo.buildDate + ':' + gradle.rootProject.config.buildInfo.buildTime) + filesMatching(['**/JReleaserVersion.properties']) { + expand( + 'jreleaser_version': gradle.rootProject.version, + 'built_by': gradle.rootProject.config.buildInfo.buildBy, + 'created_by': gradle.rootProject.config.buildInfo.buildCreatedBy, + 'build_date': gradle.rootProject.config.buildInfo.buildDate, + 'build_time': gradle.rootProject.config.buildInfo.buildTime, + 'build_revision': gradle.rootProject.config.buildInfo.buildRevision + ) + } + } + } +}) \ No newline at end of file diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Active.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Active.java similarity index 75% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Active.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/Active.java index 56b74260a..9ffd1bd8d 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Active.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Active.java @@ -29,26 +29,26 @@ public enum Active { ALWAYS(project -> true), NEVER(project -> false), - RELEASE(Project::isRelease), + RELEASE(Releaseable::isRelease), PRERELEASE(project -> true), - RELEASE_PRERELEASE(Project::isRelease), - SNAPSHOT(Project::isSnapshot); + RELEASE_PRERELEASE(Releaseable::isRelease), + SNAPSHOT(r -> !r.isRelease()); - private final Predicate test; + private final Predicate test; - Active(Predicate test) { + Active(Predicate test) { this.test = test; } - public boolean check(Project project) { + public boolean check(Releaseable project) { return test.test(project); } - public boolean check(Project project, GitService service) { + public boolean check(Releaseable project, Prereleaseable service) { boolean p = this.test.test(project); if (p) { if (this == PRERELEASE || this == RELEASE_PRERELEASE) { - return service.getPrerelease().isEnabled(); + return service.isPrerelease(); } } return p; @@ -66,4 +66,12 @@ public static Active of(String str) { .replace("-", "_") .replace(" ", "_")); } + + public interface Releaseable { + boolean isRelease(); + } + + public interface Prereleaseable { + boolean isPrerelease(); + } } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Archive.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Archive.java new file mode 100644 index 000000000..611e9ee00 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Archive.java @@ -0,0 +1,60 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public class Archive { + public enum Format { + ZIP("zip"), + TAR("tar"), + TAR_BZ2("tar.bz2"), + TAR_GZ("tar.gz"), + TAR_XZ("tar.xz"), + TBZ2("tbz2"), + TGZ("tgz"), + TXZ("txz"); + + private final String extension; + + Format(String extension) { + this.extension = extension; + } + + public String extension() { + return this.extension; + } + + @Override + public String toString() { + return extension(); + } + + public static Format of(String str) { + if (isBlank(str)) return null; + return valueOf(str.toUpperCase(Locale.ENGLISH).trim() + .replace(".", "_")); + } + } +} diff --git a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailCommand.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Changelog.java similarity index 87% rename from sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailCommand.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/Changelog.java index ab420bd38..01152ae59 100644 --- a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailCommand.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Changelog.java @@ -15,12 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.sdk.mail; +package org.jreleaser.model; /** * @author Andres Almiray * @since 0.1.0 */ -public interface MailCommand { - void execute() throws MailException; +public class Changelog { + public enum Sort { + ASC, DESC + } } diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Constants.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Constants.java similarity index 99% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/Constants.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/Constants.java index 2760ad346..504331e6e 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Constants.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Constants.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.model; /** * @author Andres Almiray diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Distribution.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Distribution.java new file mode 100644 index 000000000..cf4758fb0 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Distribution.java @@ -0,0 +1,60 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public class Distribution { + public enum DistributionType { + BINARY("binary"), + JAVA_BINARY("java"), + JLINK("jlink"), + SINGLE_JAR("uberjar"), + NATIVE_IMAGE("graal"), + NATIVE_PACKAGE("jpackage"); + + private final String alias; + + DistributionType(String alias) { + this.alias = alias.toUpperCase(Locale.ENGLISH); + } + + public static DistributionType of(String str) { + if (isBlank(str)) return null; + + String value = str.replaceAll(" ", "_") + .replaceAll("-", "_") + .toUpperCase(Locale.ENGLISH).trim(); + + // try alias + for (DistributionType type : DistributionType.values()) { + if (type.alias.equals(value)) { + return type; + } + } + + return DistributionType.valueOf(value); + } + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Flatpak.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Flatpak.java new file mode 100644 index 000000000..ff151635d --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Flatpak.java @@ -0,0 +1,61 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public class Flatpak { + public enum Runtime { + FREEDESKTOP("org.freedesktop.Platform", "org.freedesktop.Sdk"), + GNOME("org.gnome.Platform", "org.gnome.Sdk"), + KDE("org.kde.Platform", "org.kde.Sdk"), + ELEMENTARY("io.elementary.Platform", "io.elementary.Sdk"); + + private final String runtime; + private final String sdk; + + Runtime(String runtime, String sdk) { + this.runtime = runtime; + this.sdk = sdk; + } + + public String runtime() { + return runtime; + } + + public String sdk() { + return sdk; + } + + @Override + public String toString() { + return name().toLowerCase(Locale.ENGLISH); + } + + public static Runtime of(String str) { + if (isBlank(str)) return null; + return Runtime.valueOf(str.toUpperCase(Locale.ENGLISH).trim()); + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Http.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Http.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Http.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/Http.java index 3a90e534c..2b5df7cfa 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Http.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Http.java @@ -18,6 +18,7 @@ package org.jreleaser.model; import java.util.Locale; +import java.util.Map; import static org.jreleaser.util.StringUtils.isBlank; @@ -26,6 +27,14 @@ * @since 1.1.0 */ public interface Http { + String getUsername(); + + String getPassword(); + + Authorization getAuthorization(); + + Map getHeaders(); + enum Method { PUT, POST; diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Icon.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Icon.java new file mode 100644 index 000000000..fcc77cc42 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Icon.java @@ -0,0 +1,43 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public class Icon { + public enum Type { + SOURCE, + THUMBNAIL; + + @Override + public String toString() { + return name().toLowerCase(Locale.ENGLISH); + } + + public static Type of(String str) { + if (isBlank(str)) return null; + return valueOf(str.toUpperCase(Locale.ENGLISH).trim()); + } + } +} diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JReleaserException.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserException.java similarity index 97% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/JReleaserException.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserException.java index 1eb05d6bd..f25bac615 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JReleaserException.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.model; /** * @author Andres Almiray diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JReleaserOutput.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserOutput.java similarity index 97% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/JReleaserOutput.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserOutput.java index 05c85e82e..aba8f121e 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JReleaserOutput.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserOutput.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.model; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserVersion.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserVersion.java similarity index 100% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserVersion.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/JReleaserVersion.java diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/LicenseId.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/LicenseId.java similarity index 100% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/LicenseId.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/LicenseId.java diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Mail.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Mail.java new file mode 100644 index 000000000..6bddee615 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Mail.java @@ -0,0 +1,44 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public class Mail { + public enum MimeType { + TEXT("text/plain"), + HTML("text/html"); + + private final String code; + + MimeType(String code) { + this.code = code; + } + + public String code() { + return code; + } + } + + public enum Transport { + SMTP, + SMTPS + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Screenshot.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Screenshot.java new file mode 100644 index 000000000..a24014d7b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Screenshot.java @@ -0,0 +1,43 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public class Screenshot { + public enum Type { + SOURCE, + THUMBNAIL; + + @Override + public String toString() { + return name().toLowerCase(Locale.ENGLISH); + } + + public static Type of(String str) { + if (isBlank(str)) return null; + return valueOf(str.toUpperCase(Locale.ENGLISH).trim()); + } + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Sdkman.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Sdkman.java new file mode 100644 index 000000000..cc3dc59e0 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Sdkman.java @@ -0,0 +1,42 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.6.0 + */ +public class Sdkman { + public enum Command { + MAJOR, + MINOR; + + public String toString() { + return name().toLowerCase(Locale.ENGLISH); + } + + public static Command of(String str) { + if (isBlank(str)) return null; + return Command.valueOf(str.toUpperCase(Locale.ENGLISH).trim()); + } + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Signing.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Signing.java new file mode 100644 index 000000000..ddf30c3c3 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Signing.java @@ -0,0 +1,45 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public class Signing { + public enum Mode { + MEMORY, + FILE, + COMMAND, + COSIGN; + + @Override + public String toString() { + return name().toLowerCase(Locale.ENGLISH); + } + + public static Mode of(String str) { + if (isBlank(str)) return null; + return Mode.valueOf(str.toUpperCase(Locale.ENGLISH).trim()); + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Stereotype.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/Stereotype.java similarity index 100% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Stereotype.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/Stereotype.java diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/UpdateSection.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/UpdateSection.java similarity index 100% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/UpdateSection.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/UpdateSection.java diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/VersionPattern.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/VersionPattern.java new file mode 100644 index 000000000..8f78145ae --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/VersionPattern.java @@ -0,0 +1,49 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model; + +import java.util.Locale; + +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.5.0 + */ +public class VersionPattern { + public enum Type { + SEMVER, + CALVER, + CHRONVER, + JAVA_RUNTIME, + JAVA_MODULE, + CUSTOM; + + @Override + public String toString() { + return name().toLowerCase(Locale.ENGLISH); + } + + public static Type of(String str) { + if (isBlank(str)) return null; + return Type.valueOf(str.replaceAll(" ", "_") + .replaceAll("-", "_") + .toUpperCase(Locale.ENGLISH).trim()); + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserCommand.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserCommand.java similarity index 98% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserCommand.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserCommand.java index eb4fa174a..fa6d041a1 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserCommand.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserCommand.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api; import java.util.Locale; diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserContext.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserContext.java new file mode 100644 index 000000000..3d2345dd6 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserContext.java @@ -0,0 +1,139 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api; + +import org.jreleaser.logging.JReleaserLogger; + +import java.nio.file.Path; +import java.util.List; +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface JReleaserContext { + Path relativize(Path basedir, Path other); + + Path relativizeToBasedir(Path other); + + JReleaserLogger getLogger(); + + Mode getMode(); + + JReleaserModel getModel(); + + Path getBasedir(); + + Path getOutputDirectory(); + + Path getChecksumsDirectory(); + + Path getSignaturesDirectory(); + + Path getPrepareDirectory(); + + Path getPackageDirectory(); + + Path getAssembleDirectory(); + + Path getDownloadDirectory(); + + Path getArtifactsDirectory(); + + boolean isDryrun(); + + boolean isGitRootSearch(); + + List getIncludedAnnouncers(); + + List getIncludedAssemblers(); + + List getIncludedDistributions(); + + List getIncludedPackagers(); + + List getIncludedDownloaderTypes(); + + List getIncludedDownloaderNames(); + + List getIncludedUploaderTypes(); + + List getIncludedUploaderNames(); + + List getExcludedAnnouncers(); + + List getExcludedAssemblers(); + + List getExcludedDistributions(); + + List getExcludedPackagers(); + + List getExcludedDownloaderTypes(); + + List getExcludedDownloaderNames(); + + List getExcludedUploaderTypes(); + + List getExcludedUploaderNames(); + + JReleaserCommand getCommand(); + + Map props(); + + Map fullProps(); + + void nag(String version, String message); + + enum Mode { + CONFIG, + DOWNLOAD, + ASSEMBLE, + FULL, + CHANGELOG, + ANNOUNCE; + + public boolean validateChangelog() { + return this == CHANGELOG; + } + + public boolean validateAnnounce() { + return this == ANNOUNCE; + } + + public boolean validateDownload() { + return this == DOWNLOAD; + } + + public boolean validateAssembly() { + return this == ASSEMBLE; + } + + public boolean validateStandalone() { + return validateAssembly() || validateDownload(); + } + + public boolean validateConfig() { + return this == CONFIG || this == FULL; + } + + public boolean validatePaths() { + return this == FULL; + } + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserModel.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserModel.java new file mode 100644 index 000000000..4739e7110 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/JReleaserModel.java @@ -0,0 +1,104 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api; + +import org.jreleaser.model.api.announce.Announce; +import org.jreleaser.model.api.assemble.Assemble; +import org.jreleaser.model.api.checksum.Checksum; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.distributions.Distribution; +import org.jreleaser.model.api.download.Download; +import org.jreleaser.model.api.environment.Environment; +import org.jreleaser.model.api.extensions.Extension; +import org.jreleaser.model.api.files.Files; +import org.jreleaser.model.api.hooks.Hooks; +import org.jreleaser.model.api.packagers.Packagers; +import org.jreleaser.model.api.platform.Platform; +import org.jreleaser.model.api.project.Project; +import org.jreleaser.model.api.release.Release; +import org.jreleaser.model.api.signing.Signing; +import org.jreleaser.model.api.upload.Upload; + +import java.time.ZonedDateTime; +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface JReleaserModel extends Domain { + ZonedDateTime getNow(); + + String getTimestamp(); + + Commit getCommit(); + + Environment getEnvironment(); + + Hooks getHooks(); + + Platform getPlatform(); + + Project getProject(); + + Release getRelease(); + + Packagers getPackagers(); + + Announce getAnnounce(); + + Assemble getAssemble(); + + Download getDownload(); + + Upload getUpload(); + + Checksum getChecksum(); + + Signing getSigning(); + + Files getFiles(); + + Map getDistributions(); + + Map getExtensions(); + + final class Commit { + private final String shortHash; + private final String fullHash; + private final String refName; + + public Commit(String shortHash, String fullHash, String refName) { + this.shortHash = shortHash; + this.fullHash = fullHash; + this.refName = refName; + } + + public String getShortHash() { + return shortHash; + } + + public String getFullHash() { + return fullHash; + } + + public String getRefName() { + return refName; + } + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/Announce.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/Announce.java new file mode 100644 index 000000000..88fd90da0 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/Announce.java @@ -0,0 +1,61 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Announce extends Domain, Activatable { + ArticleAnnouncer getArticle(); + + DiscordAnnouncer getDiscord(); + + DiscussionsAnnouncer getDiscussions(); + + GitterAnnouncer getGitter(); + + GoogleChatAnnouncer getGoogleChat(); + + SmtpAnnouncer getMail(); + + MastodonAnnouncer getMastodon(); + + MattermostAnnouncer getMattermost(); + + SdkmanAnnouncer getSdkman(); + + SlackAnnouncer getSlack(); + + TeamsAnnouncer getTeams(); + + TelegramAnnouncer getTelegram(); + + TwitterAnnouncer getTwitter(); + + Map getHttp(); + + Map getWebhooks(); + + ZulipAnnouncer getZulip(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/Announcer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/Announcer.java new file mode 100644 index 000000000..c931b8f9e --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/Announcer.java @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.model.api.common.TimeoutAware; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Announcer extends Domain, Activatable, TimeoutAware, ExtraProperties { + String getName(); + + boolean isSnapshotSupported(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/ArticleAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/ArticleAnnouncer.java new file mode 100644 index 000000000..c4d4d587d --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/ArticleAnnouncer.java @@ -0,0 +1,41 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.CommitAuthorAware; +import org.jreleaser.model.api.packagers.PackagerRepository; + +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.6.0 + */ +public interface ArticleAnnouncer extends Announcer, CommitAuthorAware { + String TYPE = "article"; + + Set getFiles(); + + Repository getRepository(); + + String getTemplateDirectory(); + + interface Repository extends PackagerRepository { + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/DiscordAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/DiscordAnnouncer.java new file mode 100644 index 000000000..c23181f95 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/DiscordAnnouncer.java @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface DiscordAnnouncer extends Announcer { + String TYPE = "discord"; + String DISCORD_WEBHOOK = "DISCORD_WEBHOOK"; + + String getWebhook(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/DiscussionsAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/DiscussionsAnnouncer.java new file mode 100644 index 000000000..003961211 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/DiscussionsAnnouncer.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface DiscussionsAnnouncer extends Announcer { + String TYPE = "discussions"; + + String getOrganization(); + + String getTeam(); + + String getTitle(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/GitterAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/GitterAnnouncer.java new file mode 100644 index 000000000..d8b845d22 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/GitterAnnouncer.java @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface GitterAnnouncer extends Announcer { + String TYPE = "gitter"; + String GITTER_WEBHOOK = "GITTER_WEBHOOK"; + + String getWebhook(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/GoogleChatAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/GoogleChatAnnouncer.java new file mode 100644 index 000000000..0c8ecaafb --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/GoogleChatAnnouncer.java @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Anyul Rivas + * @since 0.5.0 + */ +public interface GoogleChatAnnouncer extends Announcer { + String TYPE = "googlechat"; + String GOOGLE_CHAT_WEBHOOK = "GOOGLE_CHAT_WEBHOOK"; + + String getWebhook(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/HttpAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/HttpAnnouncer.java new file mode 100644 index 000000000..4a42202ee --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/HttpAnnouncer.java @@ -0,0 +1,34 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import org.jreleaser.model.Http; + +/** + * @author Andres Almiray + * @since 1.3.0 + */ +public interface HttpAnnouncer extends Announcer, Http { + Method getMethod(); + + String getUrl(); + + String getPayload(); + + String getPayloadTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/HttpAnnouncers.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/HttpAnnouncers.java new file mode 100644 index 000000000..1fdb84d6c --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/HttpAnnouncers.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 1.3.0 + */ +public interface HttpAnnouncers extends Announcer { + String TYPE = "http"; + + Map getHttpAnnouncers(); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/GenericGit.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MastodonAnnouncer.java similarity index 72% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/GenericGit.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MastodonAnnouncer.java index dbea4cacd..b2223b297 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/GenericGit.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MastodonAnnouncer.java @@ -15,21 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.announce; /** * @author Andres Almiray * @since 0.4.0 */ -public class GenericGit extends GitService { - public static final String NAME = "generic"; +public interface MastodonAnnouncer extends Announcer { + String TYPE = "mastodon"; + String MASTODON_ACCESS_TOKEN = "MASTODON_ACCESS_TOKEN"; - public GenericGit() { - super(NAME, false); - } + String getHost(); - @Override - public String getReverseRepoHost() { - return ""; - } + String getAccessToken(); + + String getStatus(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MattermostAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MattermostAnnouncer.java new file mode 100644 index 000000000..626c4260d --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/MattermostAnnouncer.java @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public interface MattermostAnnouncer extends Announcer { + String TYPE = "mattermost"; + String MATTERMOST_WEBHOOK = "MATTERMOST_WEBHOOK"; + + String getWebhook(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SdkmanAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SdkmanAnnouncer.java new file mode 100644 index 000000000..199dcdab3 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SdkmanAnnouncer.java @@ -0,0 +1,42 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import org.jreleaser.model.Sdkman; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface SdkmanAnnouncer extends Announcer { + String TYPE = "sdkman"; + + String getConsumerKey(); + + String getConsumerToken(); + + String getCandidate(); + + String getReleaseNotesUrl(); + + String getDownloadUrl(); + + Sdkman.Command getCommand(); + + boolean isMajor(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SlackAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SlackAnnouncer.java new file mode 100644 index 000000000..42550511f --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SlackAnnouncer.java @@ -0,0 +1,38 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface SlackAnnouncer extends Announcer { + String TYPE = "slack"; + String SLACK_TOKEN = "SLACK_TOKEN"; + String SLACK_WEBHOOK = "SLACK_WEBHOOK"; + + String getToken(); + + String getWebhook(); + + String getChannel(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SmtpAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SmtpAnnouncer.java new file mode 100644 index 000000000..de3468cb4 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/SmtpAnnouncer.java @@ -0,0 +1,61 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import org.jreleaser.model.Mail; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface SmtpAnnouncer extends Announcer { + String TYPE = "mail"; + String MAIL_PASSWORD = "MAIL_PASSWORD"; + + Mail.Transport getTransport(); + + String getHost(); + + Integer getPort(); + + boolean isAuth(); + + String getUsername(); + + String getPassword(); + + String getFrom(); + + String getTo(); + + String getCc(); + + String getBcc(); + + String getSubject(); + + String getMessage(); + + String getMessageTemplate(); + + Mail.MimeType getMimeType(); + + Map getProperties(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TeamsAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TeamsAnnouncer.java new file mode 100644 index 000000000..4e1eb8f80 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TeamsAnnouncer.java @@ -0,0 +1,31 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface TeamsAnnouncer extends Announcer { + String TYPE = "teams"; + String TEAMS_WEBHOOK = "TEAMS_WEBHOOK"; + + String getWebhook(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TelegramAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TelegramAnnouncer.java new file mode 100644 index 000000000..c5ffc1191 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TelegramAnnouncer.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public interface TelegramAnnouncer extends Announcer { + String TYPE = "telegram"; + String TELEGRAM_TOKEN = "TELEGRAM_TOKEN"; + String TELEGRAM_CHAT_ID = "TELEGRAM_CHAT_ID"; + + String getToken(); + + String getChatId(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TwitterAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TwitterAnnouncer.java new file mode 100644 index 000000000..6e67daca4 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/TwitterAnnouncer.java @@ -0,0 +1,46 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface TwitterAnnouncer extends Announcer { + String TYPE = "twitter"; + String TWITTER_CONSUMER_KEY = "TWITTER_CONSUMER_KEY"; + String TWITTER_CONSUMER_SECRET = "TWITTER_CONSUMER_SECRET"; + String TWITTER_ACCESS_TOKEN = "TWITTER_ACCESS_TOKEN"; + String TWITTER_ACCESS_TOKEN_SECRET = "TWITTER_ACCESS_TOKEN_SECRET"; + + String getConsumerKey(); + + String getConsumerSecret(); + + String getAccessToken(); + + String getAccessTokenSecret(); + + String getStatus(); + + List getStatuses(); + + String getStatusTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhookAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhookAnnouncer.java new file mode 100644 index 000000000..c5e3d0978 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhookAnnouncer.java @@ -0,0 +1,32 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.5.0 + */ +public interface WebhookAnnouncer extends Announcer { + String getWebhook(); + + String getMessage(); + + String getMessageProperty(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhooksAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhooksAnnouncer.java new file mode 100644 index 000000000..bc0ad12cd --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/WebhooksAnnouncer.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.5.0 + */ +public interface WebhooksAnnouncer extends Announcer { + String TYPE = "webhooks"; + + Map getWebhooks(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/ZulipAnnouncer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/ZulipAnnouncer.java new file mode 100644 index 000000000..1e2deee2d --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/announce/ZulipAnnouncer.java @@ -0,0 +1,41 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.announce; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface ZulipAnnouncer extends Announcer { + String TYPE = "zulip"; + String ZULIP_API_KEY = "ZULIP_API_KEY"; + + String getAccount(); + + String getApiKey(); + + String getApiHost(); + + String getChannel(); + + String getSubject(); + + String getMessage(); + + String getMessageTemplate(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/ArchiveAssembler.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/ArchiveAssembler.java new file mode 100644 index 000000000..da01d0525 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/ArchiveAssembler.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.assemble; + +import org.jreleaser.model.Archive; + +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public interface ArchiveAssembler extends Assembler { + String TYPE = "archive"; + + String getArchiveName(); + + boolean isAttachPlatform(); + + Set getFormats(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/Assemble.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/Assemble.java new file mode 100644 index 000000000..4899d6e20 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/Assemble.java @@ -0,0 +1,37 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.assemble; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface Assemble extends Domain, Activatable { + Map getArchive(); + + Map getJlink(); + + Map getJpackage(); + + Map getNativeImage(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/Assembler.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/Assembler.java new file mode 100644 index 000000000..d77d803ba --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/Assembler.java @@ -0,0 +1,52 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.assemble; + +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.model.api.common.FileSet; +import org.jreleaser.model.api.platform.Platform; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface Assembler extends Domain, Activatable, ExtraProperties { + Platform getPlatform(); + + Distribution.DistributionType getDistributionType(); + + String getType(); + + Stereotype getStereotype(); + + boolean isExported(); + + String getName(); + + List getFileSets(); + + Set getOutputs(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JavaAssembler.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JavaAssembler.java new file mode 100644 index 000000000..8353da8e9 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JavaAssembler.java @@ -0,0 +1,42 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.assemble; + +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.Glob; +import org.jreleaser.model.api.common.Java; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public interface JavaAssembler extends Assembler { + String getExecutable(); + + String getTemplateDirectory(); + + Java getJava(); + + Artifact getMainJar(); + + List getJars(); + + List getFiles(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JlinkAssembler.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JlinkAssembler.java new file mode 100644 index 000000000..61317fe77 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JlinkAssembler.java @@ -0,0 +1,59 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.assemble; + +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.EnabledAware; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface JlinkAssembler extends Assembler, JavaAssembler { + String TYPE = "jlink"; + + Jdeps getJdeps(); + + Artifact getJdk(); + + String getImageName(); + + String getImageNameTransform(); + + Set getTargetJdks(); + + Set getModuleNames(); + + List getArgs(); + + boolean isCopyJars(); + + interface Jdeps extends Domain, EnabledAware { + String getMultiRelease(); + + boolean isIgnoreMissingDeps(); + + boolean isUseWildcardInPath(); + + Set getTargets(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JpackageAssembler.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JpackageAssembler.java new file mode 100644 index 000000000..2551725d2 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/JpackageAssembler.java @@ -0,0 +1,140 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.assemble; + +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.Domain; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.10.0 + */ +public interface JpackageAssembler extends Assembler, JavaAssembler { + String TYPE = "jpackage"; + + String getJlink(); + + boolean isAttachPlatform(); + + boolean isVerbose(); + + Set getRuntimeImages(); + + ApplicationPackage getApplicationPackage(); + + Launcher getLauncher(); + + Linux getLinux(); + + Windows getWindows(); + + Osx getOsx(); + + Set getPlatformPackagers(); + + interface ApplicationPackage extends Domain { + String getAppName(); + + String getAppVersion(); + + String getVendor(); + + String getCopyright(); + + List getFileAssociations(); + + String getLicenseFile(); + } + + interface PlatformPackager extends Domain { + String getAppName(); + + String getIcon(); + + String getPlatform(); + + boolean isEnabled(); + + Artifact getJdk(); + + List getTypes(); + + String getInstallDir(); + + String getResourceDir(); + } + + interface Launcher extends Domain { + List getLaunchers(); + + List getArguments(); + + List getJavaOptions(); + } + + interface Linux extends PlatformPackager { + List getPackageDeps(); + + String getPackageName(); + + String getMaintainer(); + + String getMenuGroup(); + + String getLicense(); + + String getAppRelease(); + + String getAppCategory(); + + boolean isShortcut(); + } + + interface Osx extends PlatformPackager { + String getPackageIdentifier(); + + String getPackageName(); + + String getPackageSigningPrefix(); + + String getSigningKeychain(); + + String getSigningKeyUsername(); + + boolean isSign(); + } + + interface Windows extends PlatformPackager { + boolean isConsole(); + + boolean isDirChooser(); + + boolean isMenu(); + + boolean isPerUserInstall(); + + boolean isShortcut(); + + String getMenuGroup(); + + String getUpgradeUuid(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/NativeImageAssembler.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/NativeImageAssembler.java new file mode 100644 index 000000000..f8d864a6d --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/assemble/NativeImageAssembler.java @@ -0,0 +1,75 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.assemble; + +import org.jreleaser.model.Archive; +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.Domain; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface NativeImageAssembler extends Assembler, JavaAssembler { + String TYPE = "native-image"; + + String getImageName(); + + String getImageNameTransform(); + + Archive.Format getArchiveFormat(); + + Artifact getGraal(); + + Set getGraalJdks(); + + List getArgs(); + + Upx getUpx(); + + Linux getLinux(); + + Windows getWindows(); + + Osx getOsx(); + + interface PlatformCustomizer extends Domain { + String getPlatform(); + + List getArgs(); + } + + interface Upx extends Domain, Activatable { + String getVersion(); + + List getArgs(); + } + + interface Linux extends PlatformCustomizer { + } + + interface Osx extends PlatformCustomizer { + } + + interface Windows extends PlatformCustomizer { + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/checksum/Checksum.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/checksum/Checksum.java new file mode 100644 index 000000000..51ea46bfe --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/checksum/Checksum.java @@ -0,0 +1,40 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.checksum; + +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.util.Algorithm; + +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public interface Checksum extends Domain { + String KEY_SKIP_CHECKSUM = "skipChecksum"; + String INDIVIDUAL_CHECKSUM = "individualChecksum"; + + String getName(); + + boolean isIndividual(); + + Set getAlgorithms(); + + boolean isFiles(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Activatable.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Activatable.java new file mode 100644 index 000000000..c0979c54a --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Activatable.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +import org.jreleaser.model.Active; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface Activatable { + Active getActive(); + + boolean isEnabled(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Artifact.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Artifact.java new file mode 100644 index 000000000..0fe0a542b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Artifact.java @@ -0,0 +1,44 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +import org.jreleaser.util.Algorithm; + +import java.nio.file.Path; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Artifact extends Domain, ExtraProperties { + boolean isActive(); + + Path getEffectivePath(); + + Path getResolvedPath(); + + String getPath(); + + String getHash(); + + String getHash(Algorithm algorithm); + + String getPlatform(); + + String getTransform(); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Announcer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/CommitAuthor.java similarity index 82% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Announcer.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/CommitAuthor.java index 4264bd40d..e217877df 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Announcer.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/CommitAuthor.java @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.common; /** * @author Andres Almiray * @since 0.1.0 */ -public interface Announcer extends Domain, Activatable, TimeoutAware, ExtraProperties { +public interface CommitAuthor extends Domain { String getName(); - boolean isSnapshotSupported(); + String getEmail(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/CommitAuthorAware.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/CommitAuthorAware.java new file mode 100644 index 000000000..8c09563ae --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/CommitAuthorAware.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface CommitAuthorAware { + CommitAuthor getCommitAuthor(); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Domain.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Domain.java similarity index 90% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Domain.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Domain.java index 16473a7a9..9bc5437fa 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Domain.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Domain.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.common; import java.io.Serializable; import java.util.Map; @@ -24,6 +24,6 @@ * @author Andres Almiray * @since 0.1.0 */ -interface Domain extends Serializable { +public interface Domain extends Serializable { Map asMap(boolean full); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/EnabledAware.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/EnabledAware.java new file mode 100644 index 000000000..dd291855f --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/EnabledAware.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface EnabledAware { + boolean isEnabled(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/ExtraProperties.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/ExtraProperties.java new file mode 100644 index 000000000..798fc0355 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/ExtraProperties.java @@ -0,0 +1,77 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +import org.jreleaser.util.StringUtils; + +import java.io.Serializable; +import java.util.LinkedHashMap; +import java.util.Map; + +import static org.jreleaser.util.StringUtils.isTrue; +import static org.jreleaser.util.StringUtils.splitValue; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface ExtraProperties extends Serializable { + String getPrefix(); + + Map getExtraProperties(); + + default Map getResolvedExtraProperties() { + return getResolvedExtraProperties(getPrefix()); + } + + default Map getResolvedExtraProperties(String prefix) { + Map props = new LinkedHashMap<>(); + + getExtraProperties().forEach((key, value) -> { + if (null == value) return; + + boolean split = key.endsWith("_split"); + String k = key; + Object v = value; + + if (split) { + k = key.substring(0, key.length() - "_split".length()); + v = splitValue(String.valueOf(value)); + } + + if (key.startsWith(prefix)) { + props.put(k, v); + } else { + props.put(prefix + StringUtils.capitalize(k), v); + } + }); + + return props; + } + + default String getExtraProperty(String key) { + if (getExtraProperties().containsKey(key)) { + return String.valueOf(getExtraProperties().get(key)); + } + return null; + } + + default boolean extraPropertyIsTrue(String key) { + return getExtraProperties().containsKey(key) && isTrue(getExtraProperties().get(key)); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/FileSet.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/FileSet.java new file mode 100644 index 000000000..694547e06 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/FileSet.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public interface FileSet extends Domain, ExtraProperties { + Set getIncludes(); + + Set getExcludes(); + + String getInput(); + + String getOutput(); + + boolean isFailOnMissingInput(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Ftp.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Ftp.java new file mode 100644 index 000000000..88d7fe766 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Ftp.java @@ -0,0 +1,34 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface Ftp { + String TYPE = "ftp"; + + String getUsername(); + + String getPassword(); + + String getHost(); + + Integer getPort(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Glob.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Glob.java new file mode 100644 index 000000000..dcb413f0f --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Glob.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Glob extends Domain, ExtraProperties { + String getPattern(); + + String getPlatform(); + + String getDirectory(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Icon.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Icon.java new file mode 100644 index 000000000..dfe50a44f --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Icon.java @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface Icon extends Domain, ExtraProperties { + String getUrl(); + + Integer getWidth(); + + Integer getHeight(); + + boolean isPrimary(); + +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Java.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Java.java new file mode 100644 index 000000000..61fd8f370 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Java.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Java extends Domain, ExtraProperties, EnabledAware { + String getVersion(); + + String getGroupId(); + + String getArtifactId(); + + boolean isMultiProject(); + + String getMainClass(); + + String getMainModule(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/OwnerAware.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/OwnerAware.java new file mode 100644 index 000000000..cde553258 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/OwnerAware.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface OwnerAware { + String getOwner(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Screenshot.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Screenshot.java new file mode 100644 index 000000000..bd1e11890 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Screenshot.java @@ -0,0 +1,37 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface Screenshot extends Domain, ExtraProperties { + org.jreleaser.model.Screenshot.Type getType(); + + boolean isPrimary(); + + String getUrl(); + + String getCaption(); + + Integer getWidth(); + + Integer getHeight(); + +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/SftpDownloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Ssh.java similarity index 69% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/SftpDownloader.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Ssh.java index 982b68ae0..f67ebee50 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/SftpDownloader.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/Ssh.java @@ -15,21 +15,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.common; /** * @author Andres Almiray * @since 1.1.0 */ -public class SftpDownloader extends AbstractSshDownloader { - public static final String TYPE = "sftp"; +public interface Ssh { + String getUsername(); - public SftpDownloader() { - super(TYPE); - } + String getPassword(); - @Override - protected String getEnvPrefix() { - return "SFTP"; - } + String getHost(); + + Integer getPort(); + + String getKnownHostsFile(); + + String getPublicKey(); + + String getPrivateKey(); + + String getPassphrase(); + + String getFingerprint(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/TimeoutAware.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/TimeoutAware.java new file mode 100644 index 000000000..190b0631b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/common/TimeoutAware.java @@ -0,0 +1,28 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.common; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public interface TimeoutAware { + Integer getConnectTimeout(); + + Integer getReadTimeout(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/distributions/Distribution.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/distributions/Distribution.java new file mode 100644 index 000000000..fe4a417b0 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/distributions/Distribution.java @@ -0,0 +1,66 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.distributions; + +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.model.api.common.Java; +import org.jreleaser.model.api.packagers.Packagers; +import org.jreleaser.model.api.platform.Platform; + +import java.util.EnumSet; +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Distribution extends Packagers, ExtraProperties, Activatable { + EnumSet JAVA_DISTRIBUTION_TYPES = EnumSet.of( + org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY, + org.jreleaser.model.Distribution.DistributionType.JLINK, + org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR); + + Platform getPlatform(); + + org.jreleaser.model.Distribution.DistributionType getType(); + + Stereotype getStereotype(); + + String getName(); + + Executable getExecutable(); + + Set getArtifacts(); + + List getTags(); + + Java getJava(); + + interface Executable extends Domain { + String getName(); + + String getUnixExtension(); + + String getWindowsExtension(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/Download.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/Download.java new file mode 100644 index 000000000..b7833d579 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/Download.java @@ -0,0 +1,37 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.download; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface Download extends Domain, Activatable { + Map getFtp(); + + Map getHttp(); + + Map getScp(); + + Map getSftp(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/Downloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/Downloader.java new file mode 100644 index 000000000..9e00f56a6 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/Downloader.java @@ -0,0 +1,50 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.download; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.EnabledAware; +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.model.api.common.TimeoutAware; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface Downloader extends Domain, Activatable, TimeoutAware, ExtraProperties { + String getType(); + + String getName(); + + List getAssets(); + + interface Asset extends Domain { + String getInput(); + + String getOutput(); + + Unpack getUnpack(); + } + + interface Unpack extends Domain, EnabledAware { + boolean isSkipRootEntry(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/FtpDownloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/FtpDownloader.java new file mode 100644 index 000000000..0a35f31c7 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/FtpDownloader.java @@ -0,0 +1,28 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.download; + +import org.jreleaser.model.api.common.Ftp; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface FtpDownloader extends Downloader, Ftp { + String TYPE = "ftp"; +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/HttpDownloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/HttpDownloader.java new file mode 100644 index 000000000..3926ab68b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/HttpDownloader.java @@ -0,0 +1,28 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.download; + +import org.jreleaser.model.Http; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface HttpDownloader extends Downloader, Http { + String TYPE = "http"; +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/ScpDownloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/ScpDownloader.java new file mode 100644 index 000000000..8053ad696 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/ScpDownloader.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.download; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface ScpDownloader extends SshDownloader { + String TYPE = "scp"; +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/SftpDownloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/SftpDownloader.java new file mode 100644 index 000000000..8e29f7330 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/SftpDownloader.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.download; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface SftpDownloader extends SshDownloader { + String TYPE = "sftp"; +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/SshDownloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/SshDownloader.java similarity index 89% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/SshDownloader.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/SshDownloader.java index c01370b79..b35067bbc 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/SshDownloader.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/download/SshDownloader.java @@ -15,7 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.download; + +import org.jreleaser.model.api.common.Ssh; /** * @author Andres Almiray diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/environment/Environment.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/environment/Environment.java new file mode 100644 index 000000000..3ee31535e --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/environment/Environment.java @@ -0,0 +1,39 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.environment; + +import org.jreleaser.model.api.common.Domain; + +import java.util.Map; +import java.util.Properties; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Environment extends Domain { + Properties getVars(); + + String getVariables(); + + Map getProperties(); + + interface PropertiesSource { + Map getProperties(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/extensions/Extension.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/extensions/Extension.java new file mode 100644 index 000000000..93b3a26a2 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/extensions/Extension.java @@ -0,0 +1,42 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.extensions; + +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.EnabledAware; + +import java.util.List; +import java.util.Map; + +/** + * @author Andres Almiray + * @since 1.3.0 + */ +public interface Extension extends Domain, EnabledAware { + String getName(); + + String getDirectory(); + + List getProviders(); + + interface Provider extends Domain { + String getType(); + + Map getProperties(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/files/Files.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/files/Files.java new file mode 100644 index 000000000..36512ef20 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/files/Files.java @@ -0,0 +1,38 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.files; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Artifact; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.Glob; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Files extends Domain, Activatable { + Set getPaths(); + + Set getArtifacts(); + + List getGlobs(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/CommandHook.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/CommandHook.java new file mode 100644 index 000000000..dba4f5b8d --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/CommandHook.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.hooks; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface CommandHook extends Hook { + String getCmd(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/CommandHooks.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/CommandHooks.java new file mode 100644 index 000000000..1c95134c2 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/CommandHooks.java @@ -0,0 +1,35 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.hooks; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface CommandHooks extends Domain, Activatable { + List getBefore(); + + List getSuccess(); + + List getFailure(); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/ExecutionEvent.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/ExecutionEvent.java similarity index 98% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/ExecutionEvent.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/ExecutionEvent.java index 77429a4c2..95278a688 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/ExecutionEvent.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/ExecutionEvent.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.hooks; import java.util.Locale; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/ScpDownloader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/Hook.java similarity index 63% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/ScpDownloader.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/Hook.java index 058a7df9b..4ed31b4d2 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/ScpDownloader.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/Hook.java @@ -15,21 +15,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.hooks; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +import java.util.Set; /** * @author Andres Almiray - * @since 1.1.0 + * @since 1.2.0 */ -public class ScpDownloader extends AbstractSshDownloader { - public static final String TYPE = "scp"; +public interface Hook extends Domain, Activatable { + Filter getFilter(); - public ScpDownloader() { - super(TYPE); - } + boolean isContinueOnError(); + + interface Filter extends Domain { + Set getIncludes(); - @Override - protected String getEnvPrefix() { - return "SCP"; + Set getExcludes(); } } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/Hooks.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/Hooks.java new file mode 100644 index 000000000..3de753065 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/hooks/Hooks.java @@ -0,0 +1,29 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.hooks; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface Hooks extends Domain, Activatable { + CommandHooks getCommand(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/AppImagePackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/AppImagePackager.java new file mode 100644 index 000000000..4f485ed6a --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/AppImagePackager.java @@ -0,0 +1,49 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.Icon; +import org.jreleaser.model.api.common.Screenshot; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface AppImagePackager extends RepositoryPackager { + String TYPE = "appimage"; + String SKIP_APPIMAGE = "skipAppImage"; + + String getComponentId(); + + List getCategories(); + + String getDeveloperName(); + + boolean isRequiresTerminal(); + + List getScreenshots(); + + List getIcons(); + + Set getSkipReleases(); + + PackagerRepository getRepository(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/AsdfPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/AsdfPackager.java new file mode 100644 index 000000000..353616f5b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/AsdfPackager.java @@ -0,0 +1,31 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface AsdfPackager extends RepositoryPackager { + String TYPE = "asdf"; + String SKIP_ASDF = "skipAsdf"; + + String getToolCheck(); + + PackagerRepository getRepository(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/BrewPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/BrewPackager.java new file mode 100644 index 000000000..5e992502a --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/BrewPackager.java @@ -0,0 +1,65 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.Domain; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface BrewPackager extends RepositoryPackager { + String TYPE = "brew"; + String SKIP_BREW = "skipBrew"; + + String getFormulaName(); + + boolean isMultiPlatform(); + + PackagerRepository getTap(); + + Cask getCask(); + + List getLivecheck(); + + interface Cask extends Domain { + boolean isEnabled(); + + String getName(); + + String getDisplayName(); + + String getPkgName(); + + String getAppName(); + + String getAppcast(); + + List getUninstallItems(); + + List getZapItems(); + } + + interface CaskItem extends Domain { + String getName(); + + List getItems(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/ChocolateyPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/ChocolateyPackager.java new file mode 100644 index 000000000..1f885a99d --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/ChocolateyPackager.java @@ -0,0 +1,47 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface ChocolateyPackager extends RepositoryPackager { + String CHOCOLATEY_API_KEY = "CHOCOLATEY_API_KEY"; + String TYPE = "chocolatey"; + String SKIP_CHOCOLATEY = "skipChocolatey"; + String DEFAULT_CHOCOLATEY_PUSH_URL = "https://push.chocolatey.org/"; + + String getPackageName(); + + String getPackageVersion(); + + String getUsername(); + + String getApiKey(); + + String getTitle(); + + String getIconUrl(); + + String getSource(); + + boolean isRemoteBuild(); + + PackagerRepository getBucket(); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/DockerConfiguration.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerConfiguration.java similarity index 63% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/DockerConfiguration.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerConfiguration.java index 366053e2a..fd6ffc2ab 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/DockerConfiguration.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerConfiguration.java @@ -15,7 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; import java.util.List; import java.util.Map; @@ -36,57 +40,33 @@ public interface DockerConfiguration extends Domain, ExtraProperties, Activatabl String getTemplateDirectory(); - void setTemplateDirectory(String templateDirectory); - List getSkipTemplates(); - void setSkipTemplates(List skipTemplates); - - void addSkipTemplates(List skipTemplates); - - void addSkipTemplate(String skipTemplate); - String getBaseImage(); - void setBaseImage(String baseImage); - Map getLabels(); - void setLabels(Map labels); - - void addLabels(Map labels); - - void addLabel(String key, String value); - Set getImageNames(); - void setImageNames(Set imageNames); - - void addImageName(String imageName); - List getBuildArgs(); - void setBuildArgs(List buildArgs); - - void addBuildArg(String buildArg); - List getPreCommands(); - void setPreCommands(List preCommands); - List getPostCommands(); - void setPostCommands(List postCommands); + Set getRegistries(); - Set getRegistries(); + boolean isUseLocalArtifact(); - void setRegistries(Set registries); + interface Registry extends Domain, Comparable { + String getServer(); - void addRegistry(Registry registry); + String getServerName(); - void setUseLocalArtifact(Boolean useLocalArtifact); + String getRepositoryName(); - boolean isUseLocalArtifact(); + String getUsername(); - boolean isUseLocalArtifactSet(); + String getPassword(); + } } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerPackager.java new file mode 100644 index 000000000..00dcd59a5 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerPackager.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface DockerPackager extends DockerConfiguration, RepositoryPackager { + String SKIP_DOCKER = "skipDocker"; + + Map getSpecs(); + + DockerRepository getRepository(); + + interface DockerRepository extends PackagerRepository { + boolean isVersionedSubfolders(); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Codeberg.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerSpec.java similarity index 72% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Codeberg.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerSpec.java index cca5a2f20..f99d0543b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Codeberg.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/DockerSpec.java @@ -15,18 +15,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.Artifact; + +import java.util.Map; /** * @author Andres Almiray * @since 0.4.0 */ -public class Codeberg extends Gitea { - public static final String NAME = "codeberg"; +public interface DockerSpec extends DockerConfiguration { + Artifact getArtifact(); + + String getName(); - public Codeberg() { - super(NAME); - setHost("codeberg.org"); - setApiEndpoint("https://codeberg.org"); - } + Map getMatchers(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/FlatpakPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/FlatpakPackager.java new file mode 100644 index 000000000..074085277 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/FlatpakPackager.java @@ -0,0 +1,56 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.Flatpak; +import org.jreleaser.model.api.common.Icon; +import org.jreleaser.model.api.common.Screenshot; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface FlatpakPackager extends RepositoryPackager { + String TYPE = "flatpak"; + String SKIP_FLATPAK = "skipFlatpak"; + + String getComponentId(); + + List getCategories(); + + String getDeveloperName(); + + Flatpak.Runtime getRuntime(); + + String getRuntimeVersion(); + + Set getSdkExtensions(); + + Set getFinishArgs(); + + List getScreenshots(); + + List getIcons(); + + Set getSkipReleases(); + + PackagerRepository getRepository(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/GofishPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/GofishPackager.java new file mode 100644 index 000000000..f0e250d41 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/GofishPackager.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +/** + * @author Andres Almiray + * @since 0.10.0 + */ +@Deprecated +public interface GofishPackager extends RepositoryPackager { + String TYPE = "gofish"; + String SKIP_GOFISH = "skipGofish"; + + PackagerRepository getRepository(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/JbangPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/JbangPackager.java new file mode 100644 index 000000000..ed5ed6039 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/JbangPackager.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface JbangPackager extends RepositoryPackager { + String TYPE = "jbang"; + + String getAlias(); + + PackagerRepository getCatalog(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/MacportsPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/MacportsPackager.java new file mode 100644 index 000000000..cc739df99 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/MacportsPackager.java @@ -0,0 +1,40 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 0.9.0 + */ +public interface MacportsPackager extends RepositoryPackager { + String TYPE = "macports"; + String SKIP_MACPORTS = "skipMacports"; + String APP_NAME = "appName"; + + String getPackageName(); + + Integer getRevision(); + + PackagerRepository getRepository(); + + List getCategories(); + + List getMaintainers(); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Packager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/Packager.java similarity index 69% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Packager.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/Packager.java index e4cd9952e..29d91d803 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Packager.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/Packager.java @@ -15,9 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; -import java.util.List; import java.util.Set; /** @@ -29,27 +34,15 @@ public interface Packager extends Domain, ExtraProperties, Activatable { String getDownloadUrl(); - void setDownloadUrl(String downloadUrl); - boolean supportsPlatform(String platform); - boolean supportsDistribution(Distribution distribution); + boolean supportsDistribution(Distribution.DistributionType distributionType); - Set getSupportedExtensions(Distribution distribution); + Set getSupportedFileExtensions(Distribution.DistributionType distributionType); Set getSupportedStereotypes(); - List resolveCandidateArtifacts(JReleaserContext context, Distribution distribution); - boolean isSnapshotSupported(); boolean isContinueOnError(); - - void setContinueOnError(Boolean continueOnError); - - boolean isContinueOnErrorSet(); - - boolean isFailed(); - - void fail(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/PackagerRepository.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/PackagerRepository.java new file mode 100644 index 000000000..d1b861a47 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/PackagerRepository.java @@ -0,0 +1,44 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.OwnerAware; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface PackagerRepository extends Domain, OwnerAware, Activatable { + String getBasename(); + + String getCanonicalRepoName(); + + String getName(); + + String getTagName(); + + String getBranch(); + + String getUsername(); + + String getToken(); + + String getCommitMessage(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/Packagers.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/Packagers.java new file mode 100644 index 000000000..6c33510ea --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/Packagers.java @@ -0,0 +1,52 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.Domain; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Packagers extends Domain { + AppImagePackager getAppImage(); + + AsdfPackager getAsdf(); + + BrewPackager getBrew(); + + ChocolateyPackager getChocolatey(); + + DockerPackager getDocker(); + + GofishPackager getGofish(); + + FlatpakPackager getFlatpak(); + + JbangPackager getJbang(); + + MacportsPackager getMacports(); + + ScoopPackager getScoop(); + + SdkmanPackager getSdkman(); + + SnapPackager getSnap(); + + SpecPackager getSpec(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/RepositoryPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/RepositoryPackager.java new file mode 100644 index 000000000..5e45b4277 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/RepositoryPackager.java @@ -0,0 +1,28 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.CommitAuthorAware; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface RepositoryPackager extends TemplatePackager, CommitAuthorAware { + PackagerRepository getPackagerRepository(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/ScoopPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/ScoopPackager.java new file mode 100644 index 000000000..e0fde053b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/ScoopPackager.java @@ -0,0 +1,35 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface ScoopPackager extends RepositoryPackager { + String TYPE = "scoop"; + String SKIP_SCOOP = "skipScoop"; + + String getPackageName(); + + String getCheckverUrl(); + + String getAutoupdateUrl(); + + PackagerRepository getBucket(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SdkmanPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SdkmanPackager.java new file mode 100644 index 000000000..ea84426b5 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SdkmanPackager.java @@ -0,0 +1,44 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.Sdkman; +import org.jreleaser.model.api.common.TimeoutAware; + +/** + * @author Andres Almiray + * @since 0.6.0 + */ +public interface SdkmanPackager extends Packager, TimeoutAware { + String SDKMAN_CONSUMER_KEY = "SDKMAN_CONSUMER_KEY"; + String SDKMAN_CONSUMER_TOKEN = "SDKMAN_CONSUMER_TOKEN"; + String TYPE = "sdkman"; + String SKIP_SDKMAN = "skipSdkman"; + + String getCandidate(); + + String getReleaseNotesUrl(); + + Sdkman.Command getCommand(); + + String getConsumerKey(); + + String getConsumerToken(); + + boolean isPublished(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SnapPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SnapPackager.java new file mode 100644 index 000000000..1c3ac7a6e --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SnapPackager.java @@ -0,0 +1,85 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import org.jreleaser.model.api.common.Domain; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface SnapPackager extends RepositoryPackager { + String TYPE = "snap"; + String SKIP_SNAP = "skipSnap"; + + String getPackageName(); + + String getBase(); + + String getGrade(); + + String getConfinement(); + + Set getLocalPlugs(); + + Set getLocalSlots(); + + List getPlugs(); + + List getSlots(); + + List getArchitectures(); + + String getExportedLogin(); + + boolean isRemoteBuild(); + + PackagerRepository getSnap(); + + interface Plug extends Domain { + String getName(); + + Map getAttributes(); + + List getReads(); + + List getWrites(); + } + + interface Slot extends Domain { + String getName(); + + Map getAttributes(); + + List getReads(); + + List getWrites(); + } + + interface Architecture extends Domain { + List getBuildOn(); + + List getRunOn(); + + boolean isIgnoreError(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SpecPackager.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SpecPackager.java new file mode 100644 index 000000000..74ce2cc7b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/SpecPackager.java @@ -0,0 +1,37 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.packagers; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 0.9.1 + */ +public interface SpecPackager extends RepositoryPackager { + String TYPE = "spec"; + String SKIP_SPEC = "skipSpec"; + + String getPackageName(); + + String getRelease(); + + PackagerRepository getRepository(); + + List getRequires(); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Repository.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/TemplatePackager.java similarity index 78% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Repository.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/TemplatePackager.java index 47eba1afe..76e49e5c3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Repository.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/packagers/TemplatePackager.java @@ -15,14 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.packagers; + +import java.util.List; /** * @author Andres Almiray * @since 0.6.0 */ -public class Repository extends AbstractRepositoryTap { - public Repository() { - super("article", "article"); - } +public interface TemplatePackager extends Packager { + String getTemplateDirectory(); + + List getSkipTemplates(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/platform/Platform.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/platform/Platform.java new file mode 100644 index 000000000..b2691ef02 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/platform/Platform.java @@ -0,0 +1,32 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.platform; + +import org.jreleaser.model.api.common.Domain; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.10.0 + */ +public interface Platform extends Domain { + Map getReplacements(); + + String applyReplacements(String platform); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/project/Project.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/project/Project.java new file mode 100644 index 000000000..f06dcd136 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/project/Project.java @@ -0,0 +1,137 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.project; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.model.api.common.Icon; +import org.jreleaser.model.api.common.Java; +import org.jreleaser.model.api.common.Screenshot; +import org.jreleaser.version.Version; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Project extends Domain, ExtraProperties, Active.Releaseable { + String PROJECT_NAME = "PROJECT_NAME"; + String PROJECT_VERSION = "PROJECT_VERSION"; + String PROJECT_VERSION_PATTERN = "PROJECT_VERSION_PATTERN"; + String PROJECT_SNAPSHOT_PATTERN = "PROJECT_SNAPSHOT_PATTERN"; + String PROJECT_SNAPSHOT_LABEL = "PROJECT_SNAPSHOT_LABEL"; + String PROJECT_SNAPSHOT_FULL_CHANGELOG = "PROJECT_SNAPSHOT_FULL_CHANGELOG"; + String DEFAULT_SNAPSHOT_PATTERN = ".*-SNAPSHOT"; + String DEFAULT_SNAPSHOT_LABEL = "early-access"; + + boolean isSnapshot(); + + boolean isRelease(); + + String getName(); + + String getVersion(); + + String getVersionPattern(); + + Snapshot getSnapshot(); + + String getDescription(); + + String getLongDescription(); + + @Deprecated + String getWebsite(); + + String getLicense(); + + @Deprecated + String getLicenseUrl(); + + String getInceptionYear(); + + String getCopyright(); + + String getVendor(); + + @Deprecated + String getDocsUrl(); + + Stereotype getStereotype(); + + List getScreenshots(); + + List getIcons(); + + Java getJava(); + + List getAuthors(); + + List getTags(); + + List getMaintainers(); + + Links getLinks(); + + Version version(); + + interface Snapshot extends Domain { + String getPattern(); + + String getLabel(); + + boolean isFullChangelog(); + } + + interface Links extends Domain { + String getHomepage(); + + String getDocumentation(); + + String getLicense(); + + String getBugTracker(); + + String getFaq(); + + String getHelp(); + + String getDonation(); + + String getTranslate(); + + String getContact(); + + String getVcsBrowser(); + + String getContribute(); + } + + /** + * @author Andres Almiray + * @since 0.5.0 + */ + interface VersionPattern { + org.jreleaser.model.VersionPattern.Type getType(); + + String getFormat(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Changelog.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Changelog.java new file mode 100644 index 000000000..dadc7c560 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Changelog.java @@ -0,0 +1,120 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.release; + +import org.jreleaser.model.Active; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.EnabledAware; + +import java.util.Comparator; +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Changelog extends Domain, EnabledAware { + boolean isLinks(); + + boolean isSkipMergeCommits(); + + org.jreleaser.model.Changelog.Sort getSort(); + + String getExternal(); + + Active getFormatted(); + + Set getIncludeLabels(); + + Set getExcludeLabels(); + + Set getCategories(); + + List getReplacers(); + + Set getLabelers(); + + String getFormat(); + + String getContent(); + + String getContentTemplate(); + + String getPreset(); + + Hide getHide(); + + Contributors getContributors(); + + interface Category extends Domain { + Comparator ORDER = (o1, o2) -> { + if (null == o1.getOrder()) return 1; + if (null == o2.getOrder()) return -1; + return o1.getOrder().compareTo(o2.getOrder()); + }; + + String getFormat(); + + String getKey(); + + String getTitle(); + + Set getLabels(); + + Integer getOrder(); + } + + interface Labeler extends Domain { + Comparator ORDER = (o1, o2) -> { + if (null == o1.getOrder()) return 1; + if (null == o2.getOrder()) return -1; + return o1.getOrder().compareTo(o2.getOrder()); + }; + + String getLabel(); + + String getTitle(); + + String getBody(); + + Integer getOrder(); + } + + interface Replacer extends Domain { + String getSearch(); + + String getReplace(); + } + + interface Contributors extends Domain, EnabledAware { + String getFormat(); + } + + interface Hide extends Domain { + boolean isUncategorized(); + + Set getCategories(); + + boolean containsCategory(String category); + + Set getContributors(); + + boolean containsContributor(String name); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/CodebergReleaser.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/CodebergReleaser.java new file mode 100644 index 000000000..f8b6f6224 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/CodebergReleaser.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.release; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public interface CodebergReleaser extends GiteaReleaser { + String TYPE = "codeberg"; +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GenericGitReleaser.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GenericGitReleaser.java new file mode 100644 index 000000000..dedc9a946 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GenericGitReleaser.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.release; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public interface GenericGitReleaser extends Releaser { + String TYPE = "generic"; +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Releaser.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GiteaReleaser.java similarity index 82% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Releaser.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GiteaReleaser.java index ae338c94c..2ec4c7357 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Releaser.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GiteaReleaser.java @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.release; /** * @author Andres Almiray * @since 0.1.0 */ -public interface Releaser extends Domain, EnabledAware { - boolean isReleaseSupported(); +public interface GiteaReleaser extends Releaser { + String TYPE = "gitea"; - String getServiceName(); + boolean isDraft(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GithubReleaser.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GithubReleaser.java new file mode 100644 index 000000000..c2750df6a --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GithubReleaser.java @@ -0,0 +1,39 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.release; + +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.EnabledAware; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface GithubReleaser extends Releaser { + String TYPE = "github"; + + boolean isDraft(); + + String getDiscussionCategoryName(); + + ReleaseNotes getReleaseNotes(); + + interface ReleaseNotes extends Domain, EnabledAware { + String getConfigurationFile(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GitlabReleaser.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GitlabReleaser.java new file mode 100644 index 000000000..3f73b78f5 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/GitlabReleaser.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.release; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface GitlabReleaser extends Releaser { + String TYPE = "gitlab"; + String SKIP_GITLAB_LINKS = "skipGitlabLinks"; + + @Deprecated + String getIdentifier(); + + String getProjectIdentifier(); + + Map getUploadLinks(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Release.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Release.java new file mode 100644 index 000000000..f6457cfa0 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Release.java @@ -0,0 +1,38 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.release; + +import org.jreleaser.model.api.common.Domain; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Release extends Domain { + GithubReleaser getGithub(); + + GitlabReleaser getGitlab(); + + GiteaReleaser getGitea(); + + CodebergReleaser getCodeberg(); + + GenericGitReleaser getGeneric(); + + Releaser getReleaser(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Releaser.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Releaser.java new file mode 100644 index 000000000..8e8ba0469 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/release/Releaser.java @@ -0,0 +1,152 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.release; + +import org.jreleaser.model.Active; +import org.jreleaser.model.UpdateSection; +import org.jreleaser.model.api.common.CommitAuthorAware; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.EnabledAware; +import org.jreleaser.model.api.common.OwnerAware; +import org.jreleaser.model.api.common.TimeoutAware; + +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Releaser extends Domain, EnabledAware, CommitAuthorAware, OwnerAware, TimeoutAware, Active.Prereleaseable { + String KEY_SKIP_RELEASE = "skipRelease"; + String KEY_SKIP_RELEASE_SIGNATURES = "skipReleaseSignatures"; + String TAG_NAME = "TAG_NAME"; + String PREVIOUS_TAG_NAME = "PREVIOUS_TAG_NAME"; + String RELEASE_NAME = "RELEASE_NAME"; + String OVERWRITE = "OVERWRITE"; + String UPDATE = "UPDATE"; + String PRERELEASE = "PRERELEASE"; + String DRAFT = "DRAFT"; + String SKIP_TAG = "SKIP_TAG"; + String SKIP_RELEASE = "SKIP_RELEASE"; + String BRANCH = "BRANCH"; + String PRERELEASE_PATTERN = "PRERELEASE_PATTERN"; + + String getServiceName(); + + boolean isReleaseSupported(); + + String getCanonicalRepoName(); + + String getReverseRepoHost(); + + boolean isMatch(); + + String getHost(); + + String getName(); + + String getRepoUrl(); + + String getRepoCloneUrl(); + + String getCommitUrl(); + + String getSrcUrl(); + + String getDownloadUrl(); + + String getReleaseNotesUrl(); + + String getLatestReleaseUrl(); + + String getIssueTrackerUrl(); + + String getUsername(); + + String getToken(); + + String getTagName(); + + String getPreviousTagName(); + + String getReleaseName(); + + String getBranch(); + + Prerelease getPrerelease(); + + boolean isSign(); + + Changelog getChangelog(); + + Milestone getMilestone(); + + Issues getIssues(); + + boolean isSkipTag(); + + boolean isSkipRelease(); + + boolean isOverwrite(); + + Update getUpdate(); + + String getApiEndpoint(); + + boolean isArtifacts(); + + boolean isFiles(); + + boolean isChecksums(); + + boolean isSignatures(); + + Active getUploadAssets(); + + interface Update extends Domain, EnabledAware { + Set getSections(); + } + + interface Prerelease extends Domain, EnabledAware { + boolean isPrerelease(String version); + + String getPattern(); + } + + interface Milestone extends Domain { + String MILESTONE_NAME = "MILESTONE_NAME"; + + boolean isClose(); + + String getName(); + } + + interface Issues extends Domain, EnabledAware { + String getComment(); + + Label getLabel(); + + interface Label extends Domain { + String getName(); + + String getColor(); + + String getDescription(); + } + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/signing/Signing.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/signing/Signing.java new file mode 100644 index 000000000..25a731f1b --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/signing/Signing.java @@ -0,0 +1,83 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.signing; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +import java.util.List; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Signing extends Domain, Activatable { + String KEY_SKIP_SIGNING = "skipSigning"; + String COSIGN_PASSWORD = "COSIGN_PASSWORD"; + String COSIGN_PRIVATE_KEY = "COSIGN_PRIVATE_KEY"; + String COSIGN_PUBLIC_KEY = "COSIGN_PUBLIC_KEY"; + String GPG_PASSPHRASE = "GPG_PASSPHRASE"; + String GPG_PUBLIC_KEY = "GPG_PUBLIC_KEY"; + String GPG_SECRET_KEY = "GPG_SECRET_KEY"; + String GPG_EXECUTABLE = "GPG_EXECUTABLE"; + String GPG_KEYNAME = "GPG_KEYNAME"; + String GPG_HOMEDIR = "GPG_HOMEDIR"; + String GPG_PUBLIC_KEYRING = "GPG_PUBLIC_KEYRING"; + + boolean isArmored(); + + String getPublicKey(); + + String getSecretKey(); + + String getPassphrase(); + + org.jreleaser.model.Signing.Mode getMode(); + + boolean isArtifacts(); + + boolean isFiles(); + + boolean isChecksums(); + + Command getCommand(); + + Cosign getCosign(); + + interface Command extends Domain { + String getExecutable(); + + String getKeyName(); + + String getHomeDir(); + + String getPublicKeyring(); + + boolean isDefaultKeyring(); + + List getArgs(); + } + + interface Cosign extends Domain { + String getVersion(); + + String getPrivateKeyFile(); + + String getPublicKeyFile(); + } +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/ArtifactoryUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/ArtifactoryUploader.java new file mode 100644 index 000000000..65b291b78 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/ArtifactoryUploader.java @@ -0,0 +1,51 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +import org.jreleaser.model.Http; +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.util.FileType; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.3.0 + */ +public interface ArtifactoryUploader extends Uploader, ExtraProperties { + String TYPE = "artifactory"; + + String getHost(); + + String getUsername(); + + String getPassword(); + + Http.Authorization getAuthorization(); + + List getRepositories(); + + interface ArtifactoryRepository extends Domain, Activatable { + String getPath(); + + Set getFileTypes(); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/ScpUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/FtpUploader.java similarity index 71% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/ScpUploader.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/FtpUploader.java index f7b3243fc..43560170d 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/ScpUploader.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/FtpUploader.java @@ -15,21 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.api.upload; + +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.model.api.common.Ftp; /** * @author Andres Almiray * @since 1.1.0 */ -public class ScpUploader extends AbstractSshUploader { - public static final String TYPE = "scp"; - - public ScpUploader() { - super(TYPE); - } +public interface FtpUploader extends Uploader, ExtraProperties, Ftp { + String getPath(); - @Override - protected String getEnvPrefix() { - return "SCP"; - } + String getDownloadUrl(); } diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/GiteaUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/GiteaUploader.java new file mode 100644 index 000000000..626bb74e0 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/GiteaUploader.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface GiteaUploader extends Uploader { + String TYPE = "gitea"; + + String getHost(); + + String getOwner(); + + String getToken(); + + String getPackageName(); + + String getPackageVersion(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/GitlabUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/GitlabUploader.java new file mode 100644 index 000000000..05f4a0e61 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/GitlabUploader.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public interface GitlabUploader extends Uploader { + String TYPE = "gitlab"; + + String getHost(); + + String getToken(); + + String getPackageName(); + + String getPackageVersion(); + + String getProjectIdentifier(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/HttpUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/HttpUploader.java new file mode 100644 index 000000000..0f2261a06 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/HttpUploader.java @@ -0,0 +1,28 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public interface HttpUploader extends WebUploader { + String TYPE = "http"; + + Method getMethod(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/S3Uploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/S3Uploader.java new file mode 100644 index 000000000..30475e822 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/S3Uploader.java @@ -0,0 +1,46 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public interface S3Uploader extends Uploader { + String TYPE = "s3"; + + String getRegion(); + + String getBucket(); + + String getAccessKeyId(); + + String getSecretKey(); + + String getSessionToken(); + + String getPath(); + + String getDownloadUrl(); + + String getEndpoint(); + + Map getHeaders(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/ScpUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/ScpUploader.java new file mode 100644 index 000000000..8a1d08ae1 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/ScpUploader.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface ScpUploader extends SshUploader { + String TYPE = "scp"; +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/SftpUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/SftpUploader.java new file mode 100644 index 000000000..aa770c933 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/SftpUploader.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface SftpUploader extends SshUploader { + String TYPE = "sftp"; +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/SshUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/SshUploader.java new file mode 100644 index 000000000..c5aa3caa8 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/SshUploader.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +import org.jreleaser.model.api.common.Ssh; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface SshUploader extends Uploader, Ssh { + String getPath(); + + String getDownloadUrl(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/Upload.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/Upload.java new file mode 100644 index 000000000..1d2a77669 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/Upload.java @@ -0,0 +1,45 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; + +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.3.0 + */ +public interface Upload extends Domain, Activatable { + Map getArtifactory(); + + Map getFtp(); + + Map getGitea(); + + Map getGitlab(); + + Map getHttp(); + + Map getS3(); + + Map getScp(); + + Map getSftp(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/Uploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/Uploader.java new file mode 100644 index 000000000..2fed8932c --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/Uploader.java @@ -0,0 +1,43 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +import org.jreleaser.model.api.common.Activatable; +import org.jreleaser.model.api.common.Domain; +import org.jreleaser.model.api.common.ExtraProperties; +import org.jreleaser.model.api.common.TimeoutAware; + +/** + * @author Andres Almiray + * @since 0.3.0 + */ +public interface Uploader extends Domain, Activatable, TimeoutAware, ExtraProperties { + String getType(); + + String getName(); + + boolean isSnapshotSupported(); + + boolean isArtifacts(); + + boolean isFiles(); + + boolean isSignatures(); + + boolean isChecksums(); +} diff --git a/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/WebUploader.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/WebUploader.java new file mode 100644 index 000000000..42a453144 --- /dev/null +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/model/api/upload/WebUploader.java @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.api.upload; + +import org.jreleaser.model.Http; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public interface WebUploader extends Uploader, Http { + String getUploadUrl(); + + String getDownloadUrl(); +} diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/CalVer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/CalVer.java similarity index 99% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/CalVer.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/version/CalVer.java index 0a27576cc..b14cc8a99 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/CalVer.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/CalVer.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; import org.jreleaser.bundle.RB; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/ChronVer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/ChronVer.java similarity index 99% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/ChronVer.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/version/ChronVer.java index 1047b2666..077aa2b43 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/ChronVer.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/ChronVer.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; import org.jreleaser.bundle.RB; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/CustomVersion.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/CustomVersion.java similarity index 98% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/CustomVersion.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/version/CustomVersion.java index d7e6d28c5..2a82015a4 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/CustomVersion.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/CustomVersion.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; import java.util.Objects; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JavaModuleVersion.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/JavaModuleVersion.java similarity index 97% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/JavaModuleVersion.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/version/JavaModuleVersion.java index 7801c44bd..2da51a153 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JavaModuleVersion.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/JavaModuleVersion.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; import java.util.ArrayList; import java.util.List; @@ -128,12 +128,12 @@ private int compareVersion(String v1, String v2) { } private int comparePrerelease(String p1, String p2) { - List delims = CollectionUtils.listOf('.', '-'); + List delims = listOf('.', '-'); return compareTokens(split(p1, delims), split(p2, delims)); } private int compareBuild(String b1, String b2) { - List delims = CollectionUtils.listOf('.', '-', '+'); + List delims = listOf('.', '-', '+'); return compareTokens(split(b1, delims), split(b2, delims)); } diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JavaRuntimeVersion.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/JavaRuntimeVersion.java similarity index 99% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/JavaRuntimeVersion.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/version/JavaRuntimeVersion.java index 35bdaa24c..e102ab2f4 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JavaRuntimeVersion.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/JavaRuntimeVersion.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; import java.util.List; import java.util.Objects; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/SemVer.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/SemanticVersion.java similarity index 85% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/SemVer.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/version/SemanticVersion.java index e97a3ec55..5411f5b74 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/SemVer.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/SemanticVersion.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; import org.jreleaser.bundle.RB; @@ -31,7 +31,7 @@ * @author Andres Almiray * @since 0.2.0 */ -public class SemVer implements Version { +public class SemanticVersion implements Version { private static final Pattern FULL_SEMVER_PATTERN = Pattern.compile("^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:([\\.\\-])((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"); private static final Pattern MAJOR_MINOR_PATTERN = Pattern.compile("^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:([\\.\\-])((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"); private static final Pattern MAJOR_PATTERN = Pattern.compile("^(0|[1-9]\\d*)(?:([\\.\\-])((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"); @@ -44,7 +44,7 @@ public class SemVer implements Version { private final String build; private final Pattern pattern; - private SemVer(int major, int minor, int patch, String tagsep, String tag, String build, Pattern pattern) { + private SemanticVersion(int major, int minor, int patch, String tagsep, String tag, String build, Pattern pattern) { this.major = major; this.minor = minor; this.patch = patch; @@ -110,7 +110,7 @@ public String toRpmVersion() { } @Override - public boolean equalsSpec(SemVer version) { + public boolean equalsSpec(SemanticVersion version) { return pattern.pattern().equals(version.pattern.pattern()); } @@ -129,7 +129,7 @@ public String toString() { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - SemVer version = (SemVer) o; + SemanticVersion version = (SemanticVersion) o; return pattern.pattern().equals(version.pattern.pattern()) && major == version.major && minor == version.minor && @@ -144,7 +144,7 @@ public int hashCode() { } @Override - public int compareTo(SemVer other) { + public int compareTo(SemanticVersion other) { int result = major - other.major; if (result == 0) { result = minor - other.minor; @@ -172,11 +172,11 @@ public static int javaMajorVersion() { return JavaRuntimeVersion.of(jv).feature(); } - public static SemVer defaultOf() { + public static SemanticVersion defaultOf() { return of("0.0.0"); } - public static SemVer of(String version) { + public static SemanticVersion of(String version) { requireNonBlank(version, "Argument 'version' must not be blank"); Matcher m = FULL_SEMVER_PATTERN.matcher(version.trim()); @@ -228,33 +228,33 @@ public static SemVer of(String version) { throw new IllegalArgumentException(RB.$("ERROR_version_parse", version)); } - public static SemVer of(int major, int minor, int patch, String tag, String build) { + public static SemanticVersion of(int major, int minor, int patch, String tag, String build) { return of(major, minor, patch, ".", tag, build); } - public static SemVer of(int major, int minor, int patch, String tagsep, String tag, String build) { + public static SemanticVersion of(int major, int minor, int patch, String tagsep, String tag, String build) { requireState(major > -1, "Argument 'major' must not be negative"); requireState(minor > -1, "Argument 'minor' must not be negative"); requireState(patch > -1, "Argument 'patch' must not be negative"); - return new SemVer(major, minor, patch, tagsep, tag, build, FULL_SEMVER_PATTERN); + return new SemanticVersion(major, minor, patch, tagsep, tag, build, FULL_SEMVER_PATTERN); } - public static SemVer of(int major, int minor, String tag, String build) { + public static SemanticVersion of(int major, int minor, String tag, String build) { return of(major, minor, ".", tag, build); } - public static SemVer of(int major, int minor, String tagsep, String tag, String build) { + public static SemanticVersion of(int major, int minor, String tagsep, String tag, String build) { requireState(major > -1, "Argument 'major' must not be negative"); requireState(minor > -1, "Argument 'minor' must not be negative"); - return new SemVer(major, minor, -1, tagsep, tag, build, MAJOR_MINOR_PATTERN); + return new SemanticVersion(major, minor, -1, tagsep, tag, build, MAJOR_MINOR_PATTERN); } - public static SemVer of(int major, String tag, String build) { + public static SemanticVersion of(int major, String tag, String build) { return of(major, ".", tag, build); } - public static SemVer of(int major, String tagsep, String tag, String build) { + public static SemanticVersion of(int major, String tagsep, String tag, String build) { requireState(major > -1, "Argument 'major' must not be negative"); - return new SemVer(major, -1, -1, tagsep, tag, build, MAJOR_PATTERN); + return new SemanticVersion(major, -1, -1, tagsep, tag, build, MAJOR_PATTERN); } } diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Version.java b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/Version.java similarity index 96% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/Version.java rename to api/jreleaser-model-api/src/main/java/org/jreleaser/version/Version.java index 7109d4901..81db05b22 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Version.java +++ b/api/jreleaser-model-api/src/main/java/org/jreleaser/version/Version.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/resources/org/jreleaser/model/JReleaserVersion.properties b/api/jreleaser-model-api/src/main/resources/org/jreleaser/model/JReleaserVersion.properties similarity index 100% rename from core/jreleaser-model/src/main/resources/org/jreleaser/model/JReleaserVersion.properties rename to api/jreleaser-model-api/src/main/resources/org/jreleaser/model/JReleaserVersion.properties diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/util/CalVerTest.java b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/CalVerTest.java similarity index 95% rename from core/jreleaser-utils/src/test/java/org/jreleaser/util/CalVerTest.java rename to api/jreleaser-model-api/src/test/java/org/jreleaser/version/CalVerTest.java index 8ca19f004..953048efb 100644 --- a/core/jreleaser-utils/src/test/java/org/jreleaser/util/CalVerTest.java +++ b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/CalVerTest.java @@ -15,8 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; +import org.jreleaser.util.ComparatorUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -25,10 +27,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.jreleaser.util.ComparatorUtils.greaterThan; -import static org.jreleaser.util.ComparatorUtils.lessThan; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Andres Almiray @@ -68,8 +67,8 @@ public void testVersionComparison(String format, String input1, String input2) { CalVer v2 = CalVer.of(format, input2); // then: - assertTrue(lessThan(v1, v2)); - assertTrue(greaterThan(v2, v1)); + Assertions.assertTrue(ComparatorUtils.lessThan(v1, v2)); + Assertions.assertTrue(ComparatorUtils.greaterThan(v2, v1)); } private static Stream version_parsing() { diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/util/ChronVerTest.java b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/ChronVerTest.java similarity index 92% rename from core/jreleaser-utils/src/test/java/org/jreleaser/util/ChronVerTest.java rename to api/jreleaser-model-api/src/test/java/org/jreleaser/version/ChronVerTest.java index 96c04ad97..08f990ed0 100644 --- a/core/jreleaser-utils/src/test/java/org/jreleaser/util/ChronVerTest.java +++ b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/ChronVerTest.java @@ -15,8 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; +import org.jreleaser.util.ComparatorUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -25,10 +27,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.jreleaser.util.ComparatorUtils.greaterThan; -import static org.jreleaser.util.ComparatorUtils.lessThan; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Andres Almiray @@ -75,8 +74,8 @@ public void testVersionComparison(String input1, String input2) { ChronVer v2 = ChronVer.of(input2); // then: - assertTrue(lessThan(v1, v2)); - assertTrue(greaterThan(v2, v1)); + Assertions.assertTrue(ComparatorUtils.lessThan(v1, v2)); + Assertions.assertTrue(ComparatorUtils.greaterThan(v2, v1)); } private static Stream version_parsing() { diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/util/JavaModuleVersionTest.java b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/JavaModuleVersionTest.java similarity index 94% rename from core/jreleaser-utils/src/test/java/org/jreleaser/util/JavaModuleVersionTest.java rename to api/jreleaser-model-api/src/test/java/org/jreleaser/version/JavaModuleVersionTest.java index 22159f24c..df80bcb5c 100644 --- a/core/jreleaser-utils/src/test/java/org/jreleaser/util/JavaModuleVersionTest.java +++ b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/JavaModuleVersionTest.java @@ -15,8 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; +import org.jreleaser.util.ComparatorUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -32,9 +34,6 @@ import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.jreleaser.util.ComparatorUtils.greaterThan; -import static org.jreleaser.util.ComparatorUtils.lessThan; -import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Andres Almiray @@ -61,8 +60,8 @@ public void testVersionComparison(String input1, String input2) { JavaModuleVersion v2 = JavaModuleVersion.of(input2); // then: - assertTrue(lessThan(v1, v2)); - assertTrue(greaterThan(v2, v1)); + Assertions.assertTrue(ComparatorUtils.lessThan(v1, v2)); + Assertions.assertTrue(ComparatorUtils.greaterThan(v2, v1)); } @Test diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/util/JavaRuntimeVersionTest.java b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/JavaRuntimeVersionTest.java similarity index 92% rename from core/jreleaser-utils/src/test/java/org/jreleaser/util/JavaRuntimeVersionTest.java rename to api/jreleaser-model-api/src/test/java/org/jreleaser/version/JavaRuntimeVersionTest.java index 0c9271cd9..6b3e10a0e 100644 --- a/core/jreleaser-utils/src/test/java/org/jreleaser/util/JavaRuntimeVersionTest.java +++ b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/JavaRuntimeVersionTest.java @@ -15,8 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; +import org.jreleaser.util.ComparatorUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -25,9 +27,6 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.jreleaser.util.ComparatorUtils.greaterThan; -import static org.jreleaser.util.ComparatorUtils.lessThan; -import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Andres Almiray @@ -55,8 +54,8 @@ public void testVersionComparison(String input1, String input2) { JavaRuntimeVersion v2 = JavaRuntimeVersion.of(input2); // then: - assertTrue(lessThan(v1, v2)); - assertTrue(greaterThan(v2, v1)); + Assertions.assertTrue(ComparatorUtils.lessThan(v1, v2)); + Assertions.assertTrue(ComparatorUtils.greaterThan(v2, v1)); } private static Stream version_parsing() { diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/util/SemVerTest.java b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/SemanticVersionTest.java similarity index 86% rename from core/jreleaser-utils/src/test/java/org/jreleaser/util/SemVerTest.java rename to api/jreleaser-model-api/src/test/java/org/jreleaser/version/SemanticVersionTest.java index 9eada8dc4..45c9a4968 100644 --- a/core/jreleaser-utils/src/test/java/org/jreleaser/util/SemVerTest.java +++ b/api/jreleaser-model-api/src/test/java/org/jreleaser/version/SemanticVersionTest.java @@ -15,8 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.version; +import org.jreleaser.util.ComparatorUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -25,22 +27,17 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; -import static org.jreleaser.util.ComparatorUtils.greaterThan; -import static org.jreleaser.util.ComparatorUtils.greaterThanOrEqualTo; -import static org.jreleaser.util.ComparatorUtils.lessThan; -import static org.jreleaser.util.ComparatorUtils.lessThanOrEqualTo; -import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Andres Almiray * @since 0.2.0 */ -public class SemVerTest { +public class SemanticVersionTest { @ParameterizedTest @MethodSource("version_parsing") public void testVersionParsing(String input, int major, int minor, int patch, String tag, String build) { // given: - SemVer version = SemVer.of(input); + SemanticVersion version = SemanticVersion.of(input); // then: assertThat(version.getMajor(), equalTo(major)); @@ -55,13 +52,13 @@ public void testVersionParsing(String input, int major, int minor, int patch, St @MethodSource("same_version") public void testVersionIdentity(String input) { // given: - SemVer version = SemVer.of(input); + SemanticVersion version = SemanticVersion.of(input); // then: assertThat(version, equalTo(version)); assertThat(version.hashCode(), equalTo(version.hashCode())); - assertTrue(greaterThanOrEqualTo(version, version)); - assertTrue(lessThanOrEqualTo(version, version)); + Assertions.assertTrue(ComparatorUtils.greaterThanOrEqualTo(version, version)); + Assertions.assertTrue(ComparatorUtils.lessThanOrEqualTo(version, version)); assertThat(version.compareTo(version), equalTo(0)); } @@ -69,12 +66,12 @@ public void testVersionIdentity(String input) { @MethodSource("version_comparison") public void testVersionComparison(String input1, String input2) { // given: - SemVer v1 = SemVer.of(input1); - SemVer v2 = SemVer.of(input2); + SemanticVersion v1 = SemanticVersion.of(input1); + SemanticVersion v2 = SemanticVersion.of(input2); // then: - assertTrue(lessThan(v1, v2)); - assertTrue(greaterThan(v2, v1)); + Assertions.assertTrue(ComparatorUtils.lessThan(v1, v2)); + Assertions.assertTrue(ComparatorUtils.greaterThan(v2, v1)); } private static Stream version_parsing() { diff --git a/core/jreleaser-assemblers/gradle.properties b/api/jreleaser-mustache/gradle.properties similarity index 92% rename from core/jreleaser-assemblers/gradle.properties rename to api/jreleaser-mustache/gradle.properties index 58e122a08..fbcc01f12 100644 --- a/core/jreleaser-assemblers/gradle.properties +++ b/api/jreleaser-mustache/gradle.properties @@ -16,4 +16,4 @@ # limitations under the License. # -project_description = JReleaser Assemblers \ No newline at end of file +project_description = JReleaser Mustache support \ No newline at end of file diff --git a/api/jreleaser-mustache/jreleaser-mustache.gradle b/api/jreleaser-mustache/jreleaser-mustache.gradle new file mode 100644 index 000000000..0bb24294b --- /dev/null +++ b/api/jreleaser-mustache/jreleaser-mustache.gradle @@ -0,0 +1,21 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + api project(':jreleaser-model-api') + api "com.github.spullara.mustache.java:compiler:$mustacheVersion" +} \ No newline at end of file diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/MustacheUtils.java b/api/jreleaser-mustache/src/main/java/org/jreleaser/mustache/MustacheUtils.java similarity index 98% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/MustacheUtils.java rename to api/jreleaser-mustache/src/main/java/org/jreleaser/mustache/MustacheUtils.java index 2be8f9542..524ab6424 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/MustacheUtils.java +++ b/api/jreleaser-mustache/src/main/java/org/jreleaser/mustache/MustacheUtils.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.mustache; import com.github.mustachejava.DefaultMustacheFactory; import com.github.mustachejava.Mustache; @@ -42,6 +42,7 @@ * @author Andres Almiray * @since 0.1.0 */ +@org.jreleaser.infra.nativeimage.annotations.NativeImage public final class MustacheUtils { private MustacheUtils() { //noop diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Templates.java b/api/jreleaser-mustache/src/main/java/org/jreleaser/mustache/Templates.java similarity index 89% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/Templates.java rename to api/jreleaser-mustache/src/main/java/org/jreleaser/mustache/Templates.java index 6c113d999..a56961bb6 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Templates.java +++ b/api/jreleaser-mustache/src/main/java/org/jreleaser/mustache/Templates.java @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util; +package org.jreleaser.mustache; import org.jreleaser.bundle.RB; +import org.jreleaser.model.JReleaserException; import java.util.Map; -import static org.jreleaser.util.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** diff --git a/core/jreleaser-resource-bundle/gradle.properties b/api/jreleaser-resource-bundle/gradle.properties similarity index 100% rename from core/jreleaser-resource-bundle/gradle.properties rename to api/jreleaser-resource-bundle/gradle.properties diff --git a/core/jreleaser-resource-bundle/jreleaser-resource-bundle.gradle b/api/jreleaser-resource-bundle/jreleaser-resource-bundle.gradle similarity index 100% rename from core/jreleaser-resource-bundle/jreleaser-resource-bundle.gradle rename to api/jreleaser-resource-bundle/jreleaser-resource-bundle.gradle diff --git a/core/jreleaser-resource-bundle/src/main/java/org/jreleaser/bundle/RB.java b/api/jreleaser-resource-bundle/src/main/java/org/jreleaser/bundle/RB.java similarity index 100% rename from core/jreleaser-resource-bundle/src/main/java/org/jreleaser/bundle/RB.java rename to api/jreleaser-resource-bundle/src/main/java/org/jreleaser/bundle/RB.java diff --git a/core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages.properties b/api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages.properties similarity index 99% rename from core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages.properties rename to api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages.properties index 53dff73cc..59e2cfda5 100644 --- a/core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages.properties +++ b/api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages.properties @@ -34,7 +34,7 @@ ERROR_extension_manager_load = Failed to load ExtensionMana ERROR_extension_manager_multiple_instances = Too many ExtensionManager instances: {} extension.manager.load = loading extension {}:{} extension.manager.disabled = extension {} is disabled -extension.manager.add.extension.point = adding {} to {} extension +extension.manager.add.extension.point = adding {} from {} extension extension.manager.load.empty.jars = Could not load extension {} because directory {} is empty extension.manager.load.directory.missing = Could not load extension {} because directory {} is missing extension.manager.load.directory.error = Unexpected error loading extension {} from {} @@ -406,6 +406,8 @@ environment.variables.source.missing = Variables source {} does not exist ERROR_unexpected_glob_resolve = Unexpected error resolving glob {} ERROR_glob_resolve = Could not resolve glob {} +context.nag = {} since {}. This warning will become an error in a future release. +context.path.set = - {} set to {} context.platform.selection.active = Platform selection is in effect context.platform.selection.no.match = The following platforms did not match: {} context.platform.selection.valid = Please use `${name}` or `${name}-${arch}` from{} name = {}{} arch = {} diff --git a/core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ca.properties b/api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ca.properties similarity index 100% rename from core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ca.properties rename to api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ca.properties diff --git a/core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ko.properties b/api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ko.properties similarity index 100% rename from core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ko.properties rename to api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ko.properties diff --git a/core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ru.properties b/api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ru.properties similarity index 100% rename from core/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ru.properties rename to api/jreleaser-resource-bundle/src/main/resources/org/jreleaser/bundle/Messages_ru.properties diff --git a/core/jreleaser-utils/gradle.properties b/api/jreleaser-utils/gradle.properties similarity index 100% rename from core/jreleaser-utils/gradle.properties rename to api/jreleaser-utils/gradle.properties diff --git a/core/jreleaser-utils/jreleaser-utils.gradle b/api/jreleaser-utils/jreleaser-utils.gradle similarity index 77% rename from core/jreleaser-utils/jreleaser-utils.gradle rename to api/jreleaser-utils/jreleaser-utils.gradle index 3c251e411..b5a7904dc 100644 --- a/core/jreleaser-utils/jreleaser-utils.gradle +++ b/api/jreleaser-utils/jreleaser-utils.gradle @@ -16,23 +16,16 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model-api') api project(':jreleaser-logger-api') api project(':jreleaser-resource-bundle') - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api('kr.motd.maven:os-maven-plugin:1.7.0') { transitive = false } - api "com.github.spullara.mustache.java:compiler:$mustacheVersion" api "com.fasterxml.jackson.core:jackson-core:$jacksonVersion" api "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" - api "org.bouncycastle:bcpg-jdk15on:$bouncyCastleVersion" // checksum api "commons-codec:commons-codec:$commonsCodecVersion" api "org.apache.commons:commons-compress:$commonsCompressVersion" + api "org.bouncycastle:bcpg-jdk15on:$bouncyCastleVersion" api "org.slf4j:jcl-over-slf4j:$slf4jVersion" - api "org.zeroturnaround:zt-exec:$ztexecVersion" api "com.github.veithen.cosmos.bootstrap:org.tukaani.xz:$xzVersion" - api "org.commonmark:commonmark:$commonmarkVersion" } \ No newline at end of file diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Algorithm.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/Algorithm.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/Algorithm.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/Algorithm.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/ChecksumUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/ChecksumUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/ChecksumUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/ChecksumUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/CollectionUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/CollectionUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/CollectionUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/CollectionUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/ComparatorUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/ComparatorUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/ComparatorUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/ComparatorUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Env.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/Env.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/Env.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/Env.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/Errors.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/Errors.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/Errors.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/Errors.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/FileType.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/FileType.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/FileType.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/FileType.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/FileUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/FileUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/FileUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/FileUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/JsonUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/JsonUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/JsonUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/JsonUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/ObjectUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/ObjectUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/ObjectUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/ObjectUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/OsDetector.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/OsDetector.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/OsDetector.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/OsDetector.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/PlatformUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/PlatformUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/PlatformUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/PlatformUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/ResourceUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/ResourceUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/ResourceUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/ResourceUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/TimeUtils.java b/api/jreleaser-utils/src/main/java/org/jreleaser/util/TimeUtils.java similarity index 100% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/TimeUtils.java rename to api/jreleaser-utils/src/main/java/org/jreleaser/util/TimeUtils.java diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/test/Platform.java b/api/jreleaser-utils/src/test/java/org/jreleaser/test/Platform.java similarity index 100% rename from core/jreleaser-utils/src/test/java/org/jreleaser/test/Platform.java rename to api/jreleaser-utils/src/test/java/org/jreleaser/test/Platform.java diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/test/PlatformCondition.java b/api/jreleaser-utils/src/test/java/org/jreleaser/test/PlatformCondition.java similarity index 99% rename from core/jreleaser-utils/src/test/java/org/jreleaser/test/PlatformCondition.java rename to api/jreleaser-utils/src/test/java/org/jreleaser/test/PlatformCondition.java index 1e1a8ff81..fce4a7949 100644 --- a/core/jreleaser-utils/src/test/java/org/jreleaser/test/PlatformCondition.java +++ b/api/jreleaser-utils/src/test/java/org/jreleaser/test/PlatformCondition.java @@ -17,8 +17,8 @@ */ package org.jreleaser.test; -import org.jreleaser.util.PlatformUtils; import org.jreleaser.logging.SimpleJReleaserLoggerAdapter; +import org.jreleaser.util.PlatformUtils; import org.junit.jupiter.api.extension.ConditionEvaluationResult; import org.junit.jupiter.api.extension.ExecutionCondition; import org.junit.jupiter.api.extension.ExtensionContext; diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/util/FileUtilsTests.java b/api/jreleaser-utils/src/test/java/org/jreleaser/util/FileUtilsTests.java similarity index 100% rename from core/jreleaser-utils/src/test/java/org/jreleaser/util/FileUtilsTests.java rename to api/jreleaser-utils/src/test/java/org/jreleaser/util/FileUtilsTests.java diff --git a/core/jreleaser-utils/src/test/java/org/jreleaser/util/JsonUtilsTest.java b/api/jreleaser-utils/src/test/java/org/jreleaser/util/JsonUtilsTest.java similarity index 100% rename from core/jreleaser-utils/src/test/java/org/jreleaser/util/JsonUtilsTest.java rename to api/jreleaser-utils/src/test/java/org/jreleaser/util/JsonUtilsTest.java diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.tar b/api/jreleaser-utils/src/test/resources/app-1.0.0.tar similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.tar rename to api/jreleaser-utils/src/test/resources/app-1.0.0.tar diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.tar.bz2 b/api/jreleaser-utils/src/test/resources/app-1.0.0.tar.bz2 similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.tar.bz2 rename to api/jreleaser-utils/src/test/resources/app-1.0.0.tar.bz2 diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.tar.gz b/api/jreleaser-utils/src/test/resources/app-1.0.0.tar.gz similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.tar.gz rename to api/jreleaser-utils/src/test/resources/app-1.0.0.tar.gz diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.tar.xz b/api/jreleaser-utils/src/test/resources/app-1.0.0.tar.xz similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.tar.xz rename to api/jreleaser-utils/src/test/resources/app-1.0.0.tar.xz diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.tbz2 b/api/jreleaser-utils/src/test/resources/app-1.0.0.tbz2 similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.tbz2 rename to api/jreleaser-utils/src/test/resources/app-1.0.0.tbz2 diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.tgz b/api/jreleaser-utils/src/test/resources/app-1.0.0.tgz similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.tgz rename to api/jreleaser-utils/src/test/resources/app-1.0.0.tgz diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.txz b/api/jreleaser-utils/src/test/resources/app-1.0.0.txz similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.txz rename to api/jreleaser-utils/src/test/resources/app-1.0.0.txz diff --git a/core/jreleaser-utils/src/test/resources/app-1.0.0.zip b/api/jreleaser-utils/src/test/resources/app-1.0.0.zip similarity index 100% rename from core/jreleaser-utils/src/test/resources/app-1.0.0.zip rename to api/jreleaser-utils/src/test/resources/app-1.0.0.zip diff --git a/core/jreleaser-config-json/jreleaser-config-json.gradle b/core/jreleaser-config-json/jreleaser-config-json.gradle index fb19e2906..7f8b04d9e 100644 --- a/core/jreleaser-config-json/jreleaser-config-json.gradle +++ b/core/jreleaser-config-json/jreleaser-config-json.gradle @@ -16,7 +16,7 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "com.fasterxml.jackson.core:jackson-core:$jacksonVersion" api "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" diff --git a/core/jreleaser-config-json/src/main/java/org/jreleaser/config/json/JsonJReleaserConfigParser.java b/core/jreleaser-config-json/src/main/java/org/jreleaser/config/json/JsonJReleaserConfigParser.java index 912a39f21..f77e6fe1e 100644 --- a/core/jreleaser-config-json/src/main/java/org/jreleaser/config/json/JsonJReleaserConfigParser.java +++ b/core/jreleaser-config-json/src/main/java/org/jreleaser/config/json/JsonJReleaserConfigParser.java @@ -19,7 +19,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.jreleaser.config.JReleaserConfigParser; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.internal.JReleaserModel; import org.kordamp.jipsy.annotations.ServiceProviderFor; import java.io.IOException; diff --git a/core/jreleaser-config-toml/jreleaser-config-toml.gradle b/core/jreleaser-config-toml/jreleaser-config-toml.gradle index d837b27c7..9c14ebd0f 100644 --- a/core/jreleaser-config-toml/jreleaser-config-toml.gradle +++ b/core/jreleaser-config-toml/jreleaser-config-toml.gradle @@ -16,7 +16,7 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "com.fasterxml.jackson.core:jackson-core:$jacksonVersion" api "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" api "com.fasterxml.jackson.dataformat:jackson-dataformat-toml:$jacksonVersion" diff --git a/core/jreleaser-config-toml/src/main/java/org/jreleaser/config/toml/TomlJReleaserConfigParser.java b/core/jreleaser-config-toml/src/main/java/org/jreleaser/config/toml/TomlJReleaserConfigParser.java index e267af13a..2fc0ea0be 100644 --- a/core/jreleaser-config-toml/src/main/java/org/jreleaser/config/toml/TomlJReleaserConfigParser.java +++ b/core/jreleaser-config-toml/src/main/java/org/jreleaser/config/toml/TomlJReleaserConfigParser.java @@ -19,7 +19,7 @@ import com.fasterxml.jackson.dataformat.toml.TomlMapper; import org.jreleaser.config.JReleaserConfigParser; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.internal.JReleaserModel; import org.kordamp.jipsy.annotations.ServiceProviderFor; import java.io.IOException; diff --git a/core/jreleaser-config-yaml/jreleaser-config-yaml.gradle b/core/jreleaser-config-yaml/jreleaser-config-yaml.gradle index a1d0f8b5f..355f8b915 100644 --- a/core/jreleaser-config-yaml/jreleaser-config-yaml.gradle +++ b/core/jreleaser-config-yaml/jreleaser-config-yaml.gradle @@ -16,7 +16,7 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "com.fasterxml.jackson.core:jackson-core:$jacksonVersion" api "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" api "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jacksonVersion" diff --git a/core/jreleaser-config-yaml/src/main/java/org/jreleaser/config/yaml/YamlJReleaserConfigParser.java b/core/jreleaser-config-yaml/src/main/java/org/jreleaser/config/yaml/YamlJReleaserConfigParser.java index 6a143cd02..f685c8546 100644 --- a/core/jreleaser-config-yaml/src/main/java/org/jreleaser/config/yaml/YamlJReleaserConfigParser.java +++ b/core/jreleaser-config-yaml/src/main/java/org/jreleaser/config/yaml/YamlJReleaserConfigParser.java @@ -24,7 +24,7 @@ import com.github.sbaudoin.yamllint.YamlLintConfig; import com.github.sbaudoin.yamllint.YamlLintConfigException; import org.jreleaser.config.JReleaserConfigParser; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.internal.JReleaserModel; import org.kordamp.jipsy.annotations.ServiceProviderFor; import java.io.IOException; diff --git a/core/jreleaser-engine/jreleaser-engine.gradle b/core/jreleaser-engine/jreleaser-engine.gradle index c7eb309f6..4bb910e75 100644 --- a/core/jreleaser-engine/jreleaser-engine.gradle +++ b/core/jreleaser-engine/jreleaser-engine.gradle @@ -17,9 +17,45 @@ */ dependencies { api project(':jreleaser-extensions-impl') - api project(':jreleaser-model') - api project(':git-sdk') - api project(':tool-sdk') + api project(':jreleaser-model-impl') + api project(':jreleaser-templates') + api project(':jreleaser-git-java-sdk') + api project(':jreleaser-tool-java-sdk') + api project(':jreleaser-signing-java-sdk') + api project(':jreleaser-command-java-sdk') + + // tools + api "org.apache.commons:commons-lang3:${commonsLang3Version}" + + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + // announce + api project(':jreleaser-discord-java-sdk') + api project(':jreleaser-gitter-java-sdk') + api project(':jreleaser-google-chat-java-sdk') + api project(':jreleaser-smtp-java-sdk') + api project(':jreleaser-mastodon-java-sdk') + api project(':jreleaser-mattermost-java-sdk') + api project(':jreleaser-sdkman-java-sdk') + api project(':jreleaser-slack-java-sdk') + api project(':jreleaser-teams-java-sdk') + api project(':jreleaser-telegram-java-sdk') + api project(':jreleaser-twitter-java-sdk') + api project(':jreleaser-webhooks-java-sdk') + api project(':jreleaser-zulip-java-sdk') + // release + api project(':jreleaser-github-java-sdk') + api project(':jreleaser-gitlab-java-sdk') + api project(':jreleaser-gitea-java-sdk') + api project(':jreleaser-codeberg-java-sdk') + api project(':jreleaser-genericgit-java-sdk') + // download/upload + api project(':jreleaser-artifactory-java-sdk') + api project(':jreleaser-ftp-java-sdk') + api project(':jreleaser-http-java-sdk') + api project(':jreleaser-ssh-java-sdk') + api project(':jreleaser-s3-java-sdk') compileOnly "org.graalvm.nativeimage:svm:$graalVersion" } \ No newline at end of file diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncer.java b/core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncer.java similarity index 83% rename from core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncer.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncer.java index a525663d4..6e45cd432 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncer.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncer.java @@ -21,17 +21,16 @@ import org.eclipse.jgit.api.Git; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Article; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.model.releaser.spi.Repository; +import org.jreleaser.model.Constants; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.model.spi.release.Repository; import org.jreleaser.sdk.git.JReleaserGpgSigner; -import org.jreleaser.util.Constants; import org.jreleaser.util.FileUtils; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; @@ -42,9 +41,9 @@ import static java.nio.file.StandardOpenOption.CREATE; import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; import static java.nio.file.StandardOpenOption.WRITE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.passThrough; import static org.jreleaser.util.FileUtils.createDirectoriesWithFullAccess; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.passThrough; import static org.jreleaser.util.StringUtils.isNotBlank; /** @@ -53,7 +52,7 @@ */ public class ArticleAnnouncer implements Announcer { private final JReleaserContext context; - private Article article; + private org.jreleaser.model.internal.announce.ArticleAnnouncer article; ArticleAnnouncer(JReleaserContext context) { this.context = context; @@ -61,7 +60,7 @@ public class ArticleAnnouncer implements Announcer { @Override public String getName() { - return Article.NAME; + return org.jreleaser.model.api.announce.ArticleAnnouncer.TYPE; } @Override @@ -93,7 +92,7 @@ private void prepareFiles(Path prepareDirectory) throws AnnounceException { Map props = context.fullProps(); props.put(Constants.KEY_CHANGELOG, passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); props.putAll(article.getResolvedExtraProperties()); try { @@ -126,7 +125,7 @@ private void publishToRepository(Path prepareDirectory) throws AnnounceException return; } - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); try { // get the repository @@ -134,11 +133,11 @@ private void publishToRepository(Path prepareDirectory) throws AnnounceException Repository repository = context.getReleaser().maybeCreateRepository( article.getRepository().getOwner(), article.getRepository().getResolvedName(), - resolveGitToken(gitService)); + resolveGitToken(releaser)); UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider( - resolveGitUsername(gitService), - resolveGitToken(gitService)); + resolveGitUsername(releaser), + resolveGitToken(releaser)); // clone the repository context.getLogger().debug(RB.$("repository.clone"), repository.getHttpUrl()); @@ -158,7 +157,7 @@ private void publishToRepository(Path prepareDirectory) throws AnnounceException .call(); Map props = context.fullProps(); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); // setup commit context.getLogger().debug(RB.$("repository.commit.setup")); @@ -168,9 +167,9 @@ private void publishToRepository(Path prepareDirectory) throws AnnounceException .setAuthor(article.getCommitAuthor().getName(), article.getCommitAuthor().getEmail()); commitCommand.setCredentialsProvider(credentialsProvider); commitCommand = commitCommand - .setSign(gitService.isSign()) + .setSign(releaser.isSign()) .setSigningKey("**********") - .setGpgSigner(new JReleaserGpgSigner(context, gitService.isSign())); + .setGpgSigner(new JReleaserGpgSigner(context, releaser.isSign())); commitCommand.call(); @@ -196,14 +195,14 @@ private void copyFiles(Path source, Path destination) throws IOException { } } - private String resolveGitUsername(GitService gitService) { - String username = article.getRepository().getResolvedUsername(gitService); - return isNotBlank(username) ? username : gitService.getResolvedUsername(); + private String resolveGitUsername(BaseReleaser releaser) { + String username = article.getRepository().getResolvedUsername(releaser); + return isNotBlank(username) ? username : releaser.getResolvedUsername(); } - private String resolveGitToken(GitService gitService) { - String token = article.getRepository().getResolvedToken(gitService); - return isNotBlank(token) ? token : gitService.getResolvedToken(); + private String resolveGitToken(BaseReleaser releaser) { + String token = article.getRepository().getResolvedToken(releaser); + return isNotBlank(token) ? token : releaser.getResolvedToken(); } private void writeFile(String content, Path outputFile) throws AnnounceException { diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilder.java b/core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilder.java similarity index 93% rename from core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilder.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilder.java index 53f2e31a7..25ed609bd 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilder.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.announcers; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilderFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilderFactory.java similarity index 87% rename from core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilderFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilderFactory.java index 1f7f5c353..0942b2a4b 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilderFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/announcers/ArticleAnnouncerBuilderFactory.java @@ -17,10 +17,10 @@ */ package org.jreleaser.announcers; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; -import static org.jreleaser.model.Article.NAME; +import static org.jreleaser.model.api.announce.ArticleAnnouncer.TYPE; /** * @author Andres Almiray @@ -30,7 +30,7 @@ public class ArticleAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return NAME; + return TYPE; } @Override diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AbstractAssemblerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AbstractAssemblerProcessor.java similarity index 91% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AbstractAssemblerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AbstractAssemblerProcessor.java index 2da50c325..8668b0800 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AbstractAssemblerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AbstractAssemblerProcessor.java @@ -18,16 +18,16 @@ package org.jreleaser.assemblers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Assembler; -import org.jreleaser.model.FileSet; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; -import org.jreleaser.model.assembler.spi.AssemblerProcessor; -import org.jreleaser.util.Constants; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; +import org.jreleaser.model.spi.assemble.AssemblerProcessor; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.command.CommandExecutor; import org.jreleaser.util.FileUtils; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.command.CommandExecutor; import java.io.IOException; import java.io.OutputStream; @@ -40,9 +40,9 @@ import static java.nio.file.StandardOpenOption.CREATE; import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; import static java.nio.file.StandardOpenOption.WRITE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; import static org.jreleaser.util.FileUtils.createDirectoriesWithFullAccess; import static org.jreleaser.util.FileUtils.grantFullAccess; -import static org.jreleaser.util.MustacheUtils.applyTemplates; import static org.jreleaser.util.PlatformUtils.isWindows; import static org.jreleaser.util.StringUtils.isNotBlank; import static org.jreleaser.util.StringUtils.quote; @@ -51,7 +51,6 @@ * @author Andres Almiray * @since 0.2.0 */ -@org.jreleaser.infra.nativeimage.annotations.NativeImage abstract class AbstractAssemblerProcessor implements AssemblerProcessor { protected final JReleaserContext context; protected A assembler; @@ -110,7 +109,7 @@ protected void writeFile(byte[] content, Path outputFile) throws AssemblerProces protected Map fillProps(Map props) throws AssemblerProcessingException { Map newProps = new LinkedHashMap<>(props); context.getLogger().debug(RB.$("packager.fill.git.properties")); - context.getModel().getRelease().getGitService().fillProps(newProps, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(newProps, context.getModel()); context.getLogger().debug(RB.$("assembler.fill.assembler.properties")); fillAssemblerProperties(newProps); applyTemplates(props, props); diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AbstractJavaAssemblerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AbstractJavaAssemblerProcessor.java similarity index 93% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AbstractJavaAssemblerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AbstractJavaAssemblerProcessor.java index f8b6f28cb..6150678a6 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AbstractJavaAssemblerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AbstractJavaAssemblerProcessor.java @@ -19,13 +19,13 @@ import org.apache.commons.io.IOUtils; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Glob; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JavaAssembler; -import org.jreleaser.model.Project; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JavaAssembler; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; import org.jreleaser.templates.TemplateResource; -import org.jreleaser.util.Constants; import java.io.IOException; import java.nio.file.Files; @@ -35,8 +35,8 @@ import java.util.Set; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; import static org.jreleaser.templates.TemplateUtils.resolveAndMergeTemplates; -import static org.jreleaser.util.MustacheUtils.applyTemplate; /** * @author Andres Almiray diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessor.java similarity index 92% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessor.java index 546e8040b..e9bc91aad 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessor.java @@ -19,9 +19,10 @@ import org.jreleaser.bundle.RB; import org.jreleaser.model.Archive; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; -import org.jreleaser.util.Constants; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.ArchiveAssembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; import org.jreleaser.util.FileUtils; import java.io.IOException; @@ -33,7 +34,7 @@ * @author Andres Almiray * @since 0.8.0 */ -public class ArchiveAssemblerProcessor extends AbstractAssemblerProcessor { +public class ArchiveAssemblerProcessor extends AbstractAssemblerProcessor { public ArchiveAssemblerProcessor(JReleaserContext context) { super(context); } diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessorFactory.java similarity index 77% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessorFactory.java index 4194c101b..a30d5e5fe 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/ArchiveAssemblerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.assemblers; -import org.jreleaser.model.Archive; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.assembler.spi.AssemblerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.ArchiveAssembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.8.0 */ @ServiceProviderFor(AssemblerProcessorFactory.class) -public class ArchiveAssemblerProcessorFactory implements AssemblerProcessorFactory { +public class ArchiveAssemblerProcessorFactory implements AssemblerProcessorFactory { @Override public String getName() { - return Archive.TYPE; + return org.jreleaser.model.api.assemble.ArchiveAssembler.TYPE; } @Override diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AssemblerUtils.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AssemblerUtils.java similarity index 94% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AssemblerUtils.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AssemblerUtils.java index af4a3ec0b..e2f83d8d7 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/AssemblerUtils.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/AssemblerUtils.java @@ -18,10 +18,10 @@ package org.jreleaser.assemblers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Glob; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JavaAssembler; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JavaAssembler; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; import org.jreleaser.util.PlatformUtils; import java.io.File; diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessor.java similarity index 95% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessor.java index 7663ba1a8..f9551cbdd 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessor.java @@ -19,17 +19,17 @@ import org.jreleaser.bundle.RB; import org.jreleaser.model.Archive; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jlink; -import org.jreleaser.model.Project; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; -import org.jreleaser.util.Constants; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JlinkAssembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; +import org.jreleaser.sdk.command.Command; import org.jreleaser.util.FileUtils; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; import org.jreleaser.util.StringUtils; -import org.jreleaser.util.command.Command; +import org.jreleaser.version.SemanticVersion; import java.io.ByteArrayOutputStream; import java.io.File; @@ -46,18 +46,18 @@ import static java.util.stream.Collectors.toSet; import static org.jreleaser.assemblers.AssemblerUtils.copyJars; import static org.jreleaser.assemblers.AssemblerUtils.readJavaVersion; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; import static org.jreleaser.util.FileUtils.listFilesAndConsume; import static org.jreleaser.util.FileUtils.listFilesAndProcess; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.2.0 */ -public class JlinkAssemblerProcessor extends AbstractJavaAssemblerProcessor { +public class JlinkAssemblerProcessor extends AbstractJavaAssemblerProcessor { public JlinkAssemblerProcessor(JReleaserContext context) { super(context); } @@ -66,7 +66,7 @@ public JlinkAssemblerProcessor(JReleaserContext context) { protected void doAssemble(Map props) throws AssemblerProcessingException { // verify jdk Path jdkPath = assembler.getJdk().getEffectivePath(context, assembler); - SemVer jdkVersion = SemVer.of(readJavaVersion(jdkPath)); + SemanticVersion jdkVersion = SemanticVersion.of(readJavaVersion(jdkPath)); context.getLogger().debug(RB.$("assembler.jlink.jdk"), jdkVersion, jdkPath.toAbsolutePath().toString()); // verify jdks @@ -74,7 +74,7 @@ protected void doAssemble(Map props) throws AssemblerProcessingE if (!context.isPlatformSelected(targetJdk)) continue; Path targetJdkPath = targetJdk.getEffectivePath(context, assembler); - SemVer targetJdkVersion = SemVer.of(readJavaVersion(targetJdkPath)); + SemanticVersion targetJdkVersion = SemanticVersion.of(readJavaVersion(targetJdkPath)); context.getLogger().debug(RB.$("assembler.jlink.target"), jdkVersion, targetJdkPath.toAbsolutePath().toString()); if (jdkVersion.getMajor() != targetJdkVersion.getMajor()) { diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessorFactory.java similarity index 78% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessorFactory.java index 7ebfc46f8..351073746 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JlinkAssemblerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.assemblers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jlink; -import org.jreleaser.model.assembler.spi.AssemblerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JlinkAssembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.2.0 */ @ServiceProviderFor(AssemblerProcessorFactory.class) -public class JlinkAssemblerProcessorFactory implements AssemblerProcessorFactory { +public class JlinkAssemblerProcessorFactory implements AssemblerProcessorFactory { @Override public String getName() { - return Jlink.TYPE; + return org.jreleaser.model.api.assemble.JlinkAssembler.TYPE; } @Override diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessor.java similarity index 88% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessor.java index d49abc383..09d28f25c 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessor.java @@ -19,18 +19,18 @@ import org.apache.commons.compress.utils.IOUtils; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jpackage; -import org.jreleaser.model.Project; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JpackageAssembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; +import org.jreleaser.sdk.command.Command; import org.jreleaser.templates.TemplateResource; import org.jreleaser.templates.TemplateUtils; -import org.jreleaser.util.Constants; import org.jreleaser.util.FileUtils; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; -import org.jreleaser.util.command.Command; +import org.jreleaser.version.SemanticVersion; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -43,28 +43,28 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; import static org.jreleaser.assemblers.AssemblerUtils.copyJars; import static org.jreleaser.assemblers.AssemblerUtils.readJavaVersion; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; import static org.jreleaser.util.FileUtils.listFilesAndProcess; import static org.jreleaser.util.PlatformUtils.isWindows; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.10.0 */ -public class JpackageAssemblerProcessor extends AbstractJavaAssemblerProcessor { +public class JpackageAssemblerProcessor extends AbstractJavaAssemblerProcessor { public JpackageAssemblerProcessor(JReleaserContext context) { super(context); } @Override protected void doAssemble(Map props) throws AssemblerProcessingException { - Jpackage.PlatformPackager packager = assembler.getResolvedPlatformPackager(); + JpackageAssembler.PlatformPackager packager = assembler.getResolvedPlatformPackager(); // verify jdk Path jdkPath = packager.getJdk().getEffectivePath(context, assembler); - SemVer jdkVersion = SemVer.of(readJavaVersion(jdkPath)); + SemanticVersion jdkVersion = SemanticVersion.of(readJavaVersion(jdkPath)); context.getLogger().debug(RB.$("assembler.jpackage.jdk"), jdkVersion, jdkPath.toAbsolutePath().toString()); if (jdkVersion.getMajor() < 16) { throw new AssemblerProcessingException(RB.$("ERROR_jpackage_minimum_jdk_required", jdkVersion.toString())); @@ -100,8 +100,8 @@ protected void doAssemble(Map props) throws AssemblerProcessingE } } - private void copyIcon(JReleaserContext context, Jpackage assembler, - Jpackage.PlatformPackager packager, Path inputsDirectory, + private void copyIcon(JReleaserContext context, JpackageAssembler assembler, + JpackageAssembler.PlatformPackager packager, Path inputsDirectory, String platform, Map props) throws AssemblerProcessingException { String p = "linux"; String ext = ".png"; @@ -131,7 +131,7 @@ private void copyIcon(JReleaserContext context, Jpackage assembler, } @SuppressWarnings("UnnecessaryParentheses") - private void adjustRuntimeImage(JReleaserContext context, Jpackage assembler, Path workDirectory, String platform) throws AssemblerProcessingException { + private void adjustRuntimeImage(JReleaserContext context, JpackageAssembler assembler, Path workDirectory, String platform) throws AssemblerProcessingException { Optional runtimeImageByPlatform = assembler.findRuntimeImageByPlatform(platform); if (!runtimeImageByPlatform.isPresent()) { throw new AssemblerProcessingException(RB.$("ERROR_jpackage_runtime_image_not_found", platform)); @@ -159,7 +159,7 @@ public boolean test(Path path) { } private void jpackage(JReleaserContext context, String type, Path workDirectory, Map props) throws AssemblerProcessingException { - Jpackage.PlatformPackager packager = assembler.getResolvedPlatformPackager(); + JpackageAssembler.PlatformPackager packager = assembler.getResolvedPlatformPackager(); Path jdkPath = packager.getJdk().getEffectivePath(context, assembler); String platform = packager.getJdk().getPlatform(); String platformReplaced = assembler.getPlatform().applyReplacements(platform); @@ -288,7 +288,7 @@ private void jpackage(JReleaserContext context, String type, Path workDirectory, } } - private void customize(String type, Jpackage.PlatformPackager packager, Path inputsDirectory, Command cmd, Map props) { + private void customize(String type, JpackageAssembler.PlatformPackager packager, Path inputsDirectory, Command cmd, Map props) { String installDir = resolveTemplate(packager.getInstallDir(), props); if (isNotBlank(installDir)) { cmd.arg("--install-dir") @@ -304,16 +304,16 @@ private void customize(String type, Jpackage.PlatformPackager packager, Path inp } } - if (packager instanceof Jpackage.Osx) { - customizeOsx(type, (Jpackage.Osx) packager, inputsDirectory, cmd, props); - } else if (packager instanceof Jpackage.Linux) { - customizeLinux(type, (Jpackage.Linux) packager, inputsDirectory, cmd, props); - } else if (packager instanceof Jpackage.Windows) { - customizeWindows(type, (Jpackage.Windows) packager, inputsDirectory, cmd, props); + if (packager instanceof JpackageAssembler.Osx) { + customizeOsx(type, (JpackageAssembler.Osx) packager, inputsDirectory, cmd, props); + } else if (packager instanceof JpackageAssembler.Linux) { + customizeLinux(type, (JpackageAssembler.Linux) packager, inputsDirectory, cmd, props); + } else if (packager instanceof JpackageAssembler.Windows) { + customizeWindows(type, (JpackageAssembler.Windows) packager, inputsDirectory, cmd, props); } } - private void customizeOsx(String type, Jpackage.Osx packager, Path inputsDirectory, Command cmd, Map props) { + private void customizeOsx(String type, JpackageAssembler.Osx packager, Path inputsDirectory, Command cmd, Map props) { if (isNotBlank(packager.getPackageName())) { cmd.arg("--mac-package-name") .arg(packager.getPackageName()); @@ -343,7 +343,7 @@ private void customizeOsx(String type, Jpackage.Osx packager, Path inputsDirecto .arg(inputsDirectory.resolve(assembler.getName() + ".icns").toAbsolutePath().toString()); } - private void customizeLinux(String type, Jpackage.Linux packager, Path inputsDirectory, Command cmd, Map props) { + private void customizeLinux(String type, JpackageAssembler.Linux packager, Path inputsDirectory, Command cmd, Map props) { if (isNotBlank(packager.getPackageName())) { cmd.arg("--linux-package-name") .arg(packager.getPackageName()); @@ -384,7 +384,7 @@ private void customizeLinux(String type, Jpackage.Linux packager, Path inputsDir .arg(inputsDirectory.resolve(assembler.getName() + ".png").toAbsolutePath().toString()); } - private void customizeWindows(String type, Jpackage.Windows packager, Path inputsDirectory, Command cmd, Map props) { + private void customizeWindows(String type, JpackageAssembler.Windows packager, Path inputsDirectory, Command cmd, Map props) { if (packager.isConsole()) { cmd.arg("--win-console"); } diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessorFactory.java similarity index 77% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessorFactory.java index 994c75961..1c9c45ab0 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/JpackageAssemblerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.assemblers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jpackage; -import org.jreleaser.model.assembler.spi.AssemblerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JpackageAssembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.10.0 */ @ServiceProviderFor(AssemblerProcessorFactory.class) -public class JpackageAssemblerProcessorFactory implements AssemblerProcessorFactory { +public class JpackageAssemblerProcessorFactory implements AssemblerProcessorFactory { @Override public String getName() { - return Jpackage.TYPE; + return org.jreleaser.model.api.assemble.JpackageAssembler.TYPE; } @Override diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessor.java similarity index 92% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessor.java index 64c18c4db..7dbfdd824 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessor.java @@ -18,19 +18,19 @@ package org.jreleaser.assemblers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.NativeImage; -import org.jreleaser.model.Project; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.NativeImageAssembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; import org.jreleaser.sdk.tool.ToolException; import org.jreleaser.sdk.tool.Upx; -import org.jreleaser.util.Constants; import org.jreleaser.util.FileUtils; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; +import org.jreleaser.version.SemanticVersion; import java.io.File; import java.io.IOException; @@ -51,7 +51,7 @@ * @author Andres Almiray * @since 0.2.0 */ -public class NativeImageAssemblerProcessor extends AbstractJavaAssemblerProcessor { +public class NativeImageAssemblerProcessor extends AbstractJavaAssemblerProcessor { private static final String KEY_GRAALVM_VERSION = "GRAALVM_VERSION"; public NativeImageAssemblerProcessor(JReleaserContext context) { @@ -62,8 +62,8 @@ public NativeImageAssemblerProcessor(JReleaserContext context) { protected void doAssemble(Map props) throws AssemblerProcessingException { // verify graal Path graalPath = assembler.getGraal().getEffectivePath(context, assembler); - SemVer javaVersion = SemVer.of(readJavaVersion(graalPath)); - SemVer graalVersion = SemVer.of(readGraalVersion(graalPath)); + SemanticVersion javaVersion = SemanticVersion.of(readJavaVersion(graalPath)); + SemanticVersion graalVersion = SemanticVersion.of(readGraalVersion(graalPath)); context.getLogger().debug(RB.$("assembler.graal.java"), javaVersion, graalPath.toAbsolutePath().toString()); context.getLogger().debug(RB.$("assembler.graal.graal"), graalVersion, graalPath.toAbsolutePath().toString()); @@ -145,7 +145,7 @@ private Artifact nativeImage(Path assembleDirectory, Path graalPath, Set j Command cmd = new Command(nativeImageExecutable.toString(), true) .args(assembler.getArgs()); - NativeImage.PlatformCustomizer customizer = assembler.getResolvedPlatformCustomizer(); + NativeImageAssembler.PlatformCustomizer customizer = assembler.getResolvedPlatformCustomizer(); cmd.args(customizer.getArgs()); cmd.arg("-jar") diff --git a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessorFactory.java similarity index 76% rename from core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessorFactory.java index 77db9af38..e330cf1a7 100644 --- a/core/jreleaser-assemblers/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/assemblers/NativeImageAssemblerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.assemblers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.NativeImage; -import org.jreleaser.model.assembler.spi.AssemblerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.NativeImageAssembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.2.0 */ @ServiceProviderFor(AssemblerProcessorFactory.class) -public class NativeImageAssemblerProcessorFactory implements AssemblerProcessorFactory { +public class NativeImageAssemblerProcessorFactory implements AssemblerProcessorFactory { @Override public String getName() { - return NativeImage.TYPE; + return org.jreleaser.model.api.assemble.NativeImageAssembler.TYPE; } @Override diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/announce/Announcers.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/announce/Announcers.java index 49e5c32a0..b427492a0 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/announce/Announcers.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/announce/Announcers.java @@ -18,13 +18,12 @@ package org.jreleaser.engine.announce; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Announce; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.model.announcer.spi.AnnouncerBuilder; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.model.spi.announce.AnnouncerBuilder; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import java.util.Map; import java.util.ServiceLoader; @@ -32,6 +31,8 @@ import java.util.stream.Collectors; import java.util.stream.StreamSupport; +import static org.jreleaser.model.internal.JReleaserSupport.supportedAnnouncers; + /** * @author Andres Almiray * @since 0.1.0 @@ -53,7 +54,7 @@ public static void announce(JReleaserContext context) throws AnnounceException { if (!context.getIncludedAnnouncers().isEmpty()) { for (String announcerName : context.getIncludedAnnouncers()) { // check if the announcer name is valid - if (!Announce.supportedAnnouncers().contains(announcerName)) { + if (!supportedAnnouncers().contains(announcerName)) { context.getLogger().warn(RB.$("ERROR_unsupported_announcer", announcerName)); continue; } @@ -109,7 +110,7 @@ private static Map findAnnouncers(JReleaserContext context) { JReleaserModel model = context.getModel(); Map builders = StreamSupport.stream(ServiceLoader.load(AnnouncerBuilderFactory.class, - Announcers.class.getClassLoader()).spliterator(), false) + Announcers.class.getClassLoader()).spliterator(), false) .collect(Collectors.toMap(AnnouncerBuilderFactory::getName, AnnouncerBuilderFactory::getBuilder)); Map announcers = new TreeMap<>(); diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/AssemblerProcessors.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/AssemblerProcessors.java index 5a029eaeb..a5ac4b24d 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/AssemblerProcessors.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/AssemblerProcessors.java @@ -18,11 +18,11 @@ package org.jreleaser.engine.assemble; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Assembler; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.assembler.spi.AssemblerProcessor; -import org.jreleaser.model.assembler.spi.AssemblerProcessorFactory; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessor; +import org.jreleaser.model.spi.assemble.AssemblerProcessorFactory; import java.util.Map; import java.util.ServiceLoader; @@ -36,7 +36,7 @@ public class AssemblerProcessors { public static AssemblerProcessor findProcessor(JReleaserContext context, A assembler) { Map processors = StreamSupport.stream(ServiceLoader.load(AssemblerProcessorFactory.class, - AssemblerProcessors.class.getClassLoader()).spliterator(), false) + AssemblerProcessors.class.getClassLoader()).spliterator(), false) .collect(Collectors.toMap(AssemblerProcessorFactory::getName, factory -> factory.getAssemblerProcessor(context))); if (processors.containsKey(assembler.getType())) { diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/Assemblers.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/Assemblers.java index dd4349767..707998484 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/Assemblers.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/Assemblers.java @@ -18,14 +18,16 @@ package org.jreleaser.engine.assemble; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Assemble; -import org.jreleaser.model.Assembler; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.Assemble; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; import java.util.Map; +import static org.jreleaser.model.internal.JReleaserSupport.supportedAssemblers; + /** * @author Andres Almiray * @since 0.2.0 @@ -41,7 +43,7 @@ public static void assemble(JReleaserContext context) { if (!context.getIncludedAssemblers().isEmpty()) { for (String assemblerType : context.getIncludedAssemblers()) { // check if the assemblerType is valid - if (!Assemble.supportedAssemblers().contains(assemblerType)) { + if (!supportedAssemblers().contains(assemblerType)) { context.getLogger().warn(RB.$("ERROR_unsupported_assembler", assemblerType)); continue; } diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/DistributionAssembler.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/DistributionAssembler.java index 5024bfd15..a42c50518 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/DistributionAssembler.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/assemble/DistributionAssembler.java @@ -18,11 +18,11 @@ package org.jreleaser.engine.assemble; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Assembler; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.assembler.spi.AssemblerProcessingException; -import org.jreleaser.model.assembler.spi.AssemblerProcessor; -import org.jreleaser.util.Constants; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.spi.assemble.AssemblerProcessingException; +import org.jreleaser.model.spi.assemble.AssemblerProcessor; import java.nio.file.Path; import java.util.Map; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/changelog/Changelog.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/changelog/Changelog.java index 16c87f9fe..3b0726830 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/changelog/Changelog.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/changelog/Changelog.java @@ -19,8 +19,8 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.release.Releasers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import java.io.IOException; import java.nio.file.Files; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/checksum/Checksum.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/checksum/Checksum.java index fded91e32..e0caf74e2 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/checksum/Checksum.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/checksum/Checksum.java @@ -18,13 +18,13 @@ package org.jreleaser.engine.checksum; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.util.Artifacts; import org.jreleaser.util.Algorithm; import org.jreleaser.util.ChecksumUtils; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.nio.file.Files; @@ -34,7 +34,7 @@ import java.util.List; import java.util.Map; -import static org.jreleaser.model.Checksum.KEY_SKIP_CHECKSUM; +import static org.jreleaser.model.api.checksum.Checksum.KEY_SKIP_CHECKSUM; import static org.jreleaser.util.StringUtils.isNotBlank; /** diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ContextCreator.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ContextCreator.java index cb97e588a..d549cb8bb 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ContextCreator.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ContextCreator.java @@ -20,9 +20,10 @@ import org.jreleaser.bundle.RB; import org.jreleaser.config.JReleaserConfigLoader; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; import org.jreleaser.util.PlatformUtils; import java.nio.file.Path; @@ -36,7 +37,7 @@ public class ContextCreator { public static JReleaserContext create(JReleaserLogger logger, JReleaserContext.Configurer configurer, - JReleaserContext.Mode mode, + Mode mode, Path configFile, Path basedir, Path outputDirectory, @@ -56,7 +57,7 @@ public static JReleaserContext create(JReleaserLogger logger, public static JReleaserContext create(JReleaserLogger logger, JReleaserContext.Configurer configurer, - JReleaserContext.Mode mode, + Mode mode, JReleaserModel model, Path basedir, Path outputDirectory, diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelAutoConfigurer.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelAutoConfigurer.java index 82041ead9..4da7a9264 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelAutoConfigurer.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelAutoConfigurer.java @@ -20,19 +20,20 @@ import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Codeberg; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Github; -import org.jreleaser.model.Gitlab; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.JReleaserException; import org.jreleaser.model.JReleaserVersion; import org.jreleaser.model.UpdateSection; -import org.jreleaser.model.releaser.spi.Repository; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.CodebergReleaser; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.model.internal.release.GitlabReleaser; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.model.spi.release.Repository; import org.jreleaser.sdk.git.GitSdk; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.nio.file.Path; @@ -360,7 +361,7 @@ private JReleaserContext createAutoConfiguredContext() { return ContextCreator.create( logger, JReleaserContext.Configurer.CLI, - JReleaserContext.Mode.FULL, + Mode.FULL, autoConfiguredModel(basedir), basedir, outputDirectory, @@ -438,25 +439,25 @@ private JReleaserModel autoConfiguredModel(Path basedir) { try { Repository repository = GitSdk.of(basedir, gitRootSearch).getRemote(); - GitService service = null; + BaseReleaser service = null; switch (repository.getKind()) { case GITHUB: - service = new Github(); - model.getRelease().setGithub((Github) service); - if (prerelease) ((Github) service).getPrerelease().setEnabled(true); - ((Github) service).getPrerelease().setPattern(prereleasePattern); - ((Github) service).setDraft(draft); + service = new GithubReleaser(); + model.getRelease().setGithub((GithubReleaser) service); + if (prerelease) service.getPrerelease().setEnabled(true); + service.getPrerelease().setPattern(prereleasePattern); + ((GithubReleaser) service).setDraft(draft); break; case GITLAB: - service = new Gitlab(); - model.getRelease().setGitlab((Gitlab) service); + service = new GitlabReleaser(); + model.getRelease().setGitlab((GitlabReleaser) service); break; case CODEBERG: - service = new Codeberg(); - model.getRelease().setCodeberg((Codeberg) service); - if (prerelease) ((Codeberg) service).getPrerelease().setEnabled(true); - ((Codeberg) service).getPrerelease().setPattern(prereleasePattern); - ((Codeberg) service).setDraft(draft); + service = new CodebergReleaser(); + model.getRelease().setCodeberg((CodebergReleaser) service); + if (prerelease) service.getPrerelease().setEnabled(true); + service.getPrerelease().setPattern(prereleasePattern); + ((CodebergReleaser) service).setDraft(draft); break; default: throw new JReleaserException(RB.$("ERROR_context_configurer_unsupported_url", repository.getHttpUrl())); diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelConfigurer.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelConfigurer.java index 085e93229..343c3f2e6 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelConfigurer.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelConfigurer.java @@ -19,18 +19,20 @@ import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.Codeberg; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Github; -import org.jreleaser.model.Gitlab; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.releaser.spi.Commit; -import org.jreleaser.model.releaser.spi.Repository; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.api.JReleaserModel; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.CodebergReleaser; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.model.internal.release.GitlabReleaser; +import org.jreleaser.model.spi.release.Commit; +import org.jreleaser.model.spi.release.Repository; import org.jreleaser.sdk.git.GitSdk; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; -import static org.jreleaser.model.GitService.BRANCH; +import static org.jreleaser.model.api.release.Releaser.BRANCH; import static org.jreleaser.util.StringUtils.isBlank; /** @@ -40,10 +42,13 @@ public class ModelConfigurer { public static void configure(JReleaserContext context) { try { - context.getModel().setCommit(GitSdk.of(context).head()); + Commit head = GitSdk.of(context).head(); + context.getModel().setCommit(new JReleaserModel.Commit(head.getShortHash(), + head.getFullHash(), + head.getRefName())); } catch (Exception e) { - if (context.getMode() == JReleaserContext.Mode.ASSEMBLE || - context.getMode() == JReleaserContext.Mode.DOWNLOAD) return; + if (context.getMode() == Mode.ASSEMBLE || + context.getMode() == Mode.DOWNLOAD) return; context.getLogger().trace(e); throw new JReleaserException(RB.$("ERROR_context_configurer_fail_git_head"), e); } @@ -76,65 +81,65 @@ public static void configure(JReleaserContext context) { } private static void autoConfigureGithub(JReleaserContext context, Repository repository) { - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (service != null) { - if (!(service instanceof Github)) { - context.getModel().getRelease().getGitService().setMatch(false); - context.getModel().getRelease().getGitService().setSkipTag(true); + if (!(service instanceof GithubReleaser)) { + context.getModel().getRelease().getReleaser().setMatch(false); + context.getModel().getRelease().getReleaser().setSkipTag(true); context.getLogger().warn(RB.$("ERROR_context_configurer_detected_git"), "github", service.getServiceName()); } } else { - context.getModel().getRelease().setGithub(new Github()); + context.getModel().getRelease().setGithub(new GithubReleaser()); } - fillGitProperties(context.getLogger(), context.getModel().getRelease().getGitService(), + fillGitProperties(context.getLogger(), context.getModel().getRelease().getReleaser(), repository, context.getModel().getCommit()); } private static void autoConfigureGitlab(JReleaserContext context, Repository repository) { - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (service != null) { - if (!(service instanceof Gitlab)) { - context.getModel().getRelease().getGitService().setMatch(false); - context.getModel().getRelease().getGitService().setSkipTag(true); + if (!(service instanceof GitlabReleaser)) { + context.getModel().getRelease().getReleaser().setMatch(false); + context.getModel().getRelease().getReleaser().setSkipTag(true); context.getLogger().warn(RB.$("ERROR_context_configurer_detected_git"), "gitlab", service.getServiceName()); } } else { - context.getModel().getRelease().setGitlab(new Gitlab()); + context.getModel().getRelease().setGitlab(new GitlabReleaser()); } - fillGitProperties(context.getLogger(), context.getModel().getRelease().getGitService(), + fillGitProperties(context.getLogger(), context.getModel().getRelease().getReleaser(), repository, context.getModel().getCommit()); } private static void autoConfigureCodeberg(JReleaserContext context, Repository repository) { - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (service != null) { - if (!(service instanceof Codeberg)) { - context.getModel().getRelease().getGitService().setMatch(false); - context.getModel().getRelease().getGitService().setSkipTag(true); + if (!(service instanceof CodebergReleaser)) { + context.getModel().getRelease().getReleaser().setMatch(false); + context.getModel().getRelease().getReleaser().setSkipTag(true); context.getLogger().warn(RB.$("ERROR_context_configurer_detected_git"), "codeberg", service.getServiceName()); } } else { - context.getModel().getRelease().setCodeberg(new Codeberg()); + context.getModel().getRelease().setCodeberg(new CodebergReleaser()); } - fillGitProperties(context.getLogger(), context.getModel().getRelease().getGitService(), + fillGitProperties(context.getLogger(), context.getModel().getRelease().getReleaser(), repository, context.getModel().getCommit()); } private static void autoConfigureOther(JReleaserContext context, Repository repository) { - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (service != null) { fillGitProperties(context.getLogger(), service, repository, context.getModel().getCommit()); } } - private static void fillGitProperties(JReleaserLogger logger, GitService service, Repository repository, Commit head) { + private static void fillGitProperties(JReleaserLogger logger, BaseReleaser service, Repository repository, JReleaserModel.Commit head) { if (isBlank(service.getOwner())) { service.setOwner(repository.getOwner()); } diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelValidator.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelValidator.java index 7fbd05885..80be45b37 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelValidator.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/context/ModelValidator.java @@ -22,11 +22,11 @@ import org.jreleaser.extensions.api.ExtensionManager; import org.jreleaser.extensions.api.ExtensionManagerHolder; import org.jreleaser.extensions.impl.DefaultExtensionManager; -import org.jreleaser.model.Extension; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModelPrinter; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModelPrinter; +import org.jreleaser.model.internal.extensions.Extension; import org.jreleaser.util.Errors; -import org.jreleaser.util.JReleaserException; import org.jreleaser.util.PlatformUtils; import java.util.Map; @@ -75,8 +75,6 @@ public static void validate(JReleaserContext context) { context.setReleaser(Releasers.releaserFor(context)); } - // context.freeze(); - report(context); loadExtensions(context); } diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/DistributionProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/DistributionProcessor.java index 60be9551f..53abf630e 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/DistributionProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/DistributionProcessor.java @@ -18,12 +18,12 @@ package org.jreleaser.engine.distribution; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Packager; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.model.packager.spi.PackagerProcessor; -import org.jreleaser.util.Constants; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.Packager; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; +import org.jreleaser.model.spi.packagers.PackagerProcessor; import java.util.Map; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/Distributions.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/Distributions.java index de68660ff..04519b0c8 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/Distributions.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/Distributions.java @@ -18,14 +18,16 @@ package org.jreleaser.engine.distribution; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import java.util.List; import java.util.Locale; +import static org.jreleaser.model.internal.JReleaserSupport.supportedPackagers; + /** * @author Andres Almiray * @since 0.1.0 @@ -52,7 +54,7 @@ public static void process(JReleaserContext context, String action, PackagerProc if (!context.getIncludedPackagers().isEmpty()) { for (String packagerName : context.getIncludedPackagers()) { - if (!Distribution.supportedPackagers().contains(packagerName)) { + if (!supportedPackagers().contains(packagerName)) { context.getLogger().warn(RB.$("ERROR_unsupported_packager", packagerName)); continue; } @@ -67,7 +69,7 @@ public static void process(JReleaserContext context, String action, PackagerProc } } else if (!context.getIncludedPackagers().isEmpty()) { for (String packagerName : context.getIncludedPackagers()) { - if (!Distribution.supportedPackagers().contains(packagerName)) { + if (!supportedPackagers().contains(packagerName)) { context.getLogger().warn(RB.$("ERROR_unsupported_packager", packagerName)); continue; } @@ -95,7 +97,7 @@ private static void processDistribution(JReleaserContext context, String action, context.getLogger().increaseIndent(); context.getLogger().info(RB.$("distributions.apply.action.to"), action, distribution.getName()); - for (String packagerName : Distribution.supportedPackagers()) { + for (String packagerName : supportedPackagers()) { if (context.getExcludedPackagers().contains(packagerName)) { context.getLogger().info(RB.$("packagers.packager.excluded"), packagerName); continue; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessingFunction.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessingFunction.java index 998f54a34..323f1a6b8 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessingFunction.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessingFunction.java @@ -17,7 +17,7 @@ */ package org.jreleaser.engine.distribution; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; /** * @author Andres Almiray diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessors.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessors.java index 612fd3b4d..d436259e9 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessors.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/distribution/PackagerProcessors.java @@ -18,11 +18,11 @@ package org.jreleaser.engine.distribution; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Packager; -import org.jreleaser.model.packager.spi.PackagerProcessor; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.Packager; +import org.jreleaser.model.spi.packagers.PackagerProcessor; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import java.util.Map; import java.util.ServiceLoader; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ArtifactDownloaders.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ArtifactDownloaders.java index 1efffe427..5fa709b36 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ArtifactDownloaders.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ArtifactDownloaders.java @@ -18,11 +18,11 @@ package org.jreleaser.engine.download; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.downloader.spi.ArtifactDownloader; -import org.jreleaser.model.downloader.spi.ArtifactDownloaderFactory; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.spi.download.ArtifactDownloader; +import org.jreleaser.model.spi.download.ArtifactDownloaderFactory; import java.util.Map; import java.util.ServiceLoader; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/Downloaders.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/Downloaders.java index 7c0bcd644..32a26b55a 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/Downloaders.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/Downloaders.java @@ -18,16 +18,17 @@ package org.jreleaser.engine.download; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Download; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.downloader.spi.DownloadException; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Download; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.spi.download.DownloadException; import java.util.List; import java.util.Map; import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.internal.JReleaserSupport.supportedDownloaders; /** * @author Andres Almiray @@ -44,7 +45,7 @@ public static void download(JReleaserContext context) { if (!context.getIncludedDownloaderTypes().isEmpty()) { for (String downloaderType : context.getIncludedDownloaderTypes()) { // check if the downloaderType is valid - if (!Download.supportedDownloaders().contains(downloaderType)) { + if (!supportedDownloaders().contains(downloaderType)) { context.getLogger().warn(RB.$("ERROR_unsupported_downloader", downloaderType)); continue; } diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ProjectDownloader.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ProjectDownloader.java index 023c3b4ea..06da21cf0 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ProjectDownloader.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/download/ProjectDownloader.java @@ -18,10 +18,10 @@ package org.jreleaser.engine.download; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.downloader.spi.ArtifactDownloader; -import org.jreleaser.model.downloader.spi.DownloadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.spi.download.ArtifactDownloader; +import org.jreleaser.model.spi.download.DownloadException; import static java.util.Objects.requireNonNull; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/hooks/CommandHookExecutor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/hooks/CommandHookExecutor.java index 906ebe7ce..37d243a32 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/hooks/CommandHookExecutor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/hooks/CommandHookExecutor.java @@ -18,14 +18,14 @@ package org.jreleaser.engine.hooks; import org.jreleaser.bundle.RB; -import org.jreleaser.model.CommandHook; -import org.jreleaser.model.CommandHooks; -import org.jreleaser.model.ExecutionEvent; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.util.JReleaserException; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.command.CommandExecutor; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.api.hooks.ExecutionEvent; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.hooks.CommandHook; +import org.jreleaser.model.internal.hooks.CommandHooks; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.command.CommandExecutor; import java.nio.file.Path; import java.util.ArrayList; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/release/Releasers.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/release/Releasers.java index 7bb4118e0..b26f5b084 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/release/Releasers.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/release/Releasers.java @@ -18,17 +18,17 @@ package org.jreleaser.engine.release; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Codeberg; -import org.jreleaser.model.GenericGit; -import org.jreleaser.model.Gitea; -import org.jreleaser.model.Github; -import org.jreleaser.model.Gitlab; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.releaser.spi.ReleaseException; -import org.jreleaser.model.releaser.spi.Releaser; -import org.jreleaser.model.releaser.spi.ReleaserBuilder; -import org.jreleaser.model.releaser.spi.ReleaserBuilderFactory; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.api.release.CodebergReleaser; +import org.jreleaser.model.api.release.GenericGitReleaser; +import org.jreleaser.model.api.release.GiteaReleaser; +import org.jreleaser.model.api.release.GithubReleaser; +import org.jreleaser.model.api.release.GitlabReleaser; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.release.ReleaseException; +import org.jreleaser.model.spi.release.Releaser; +import org.jreleaser.model.spi.release.ReleaserBuilder; +import org.jreleaser.model.spi.release.ReleaserBuilderFactory; import java.util.Map; import java.util.ServiceLoader; @@ -52,23 +52,23 @@ public static Releaser releaserFor(JReleaserContext context) { private static T findReleaser(JReleaserContext context) { Map builders = StreamSupport.stream(ServiceLoader.load(ReleaserBuilderFactory.class, - Releasers.class.getClassLoader()).spliterator(), false) + Releasers.class.getClassLoader()).spliterator(), false) .collect(Collectors.toMap(ReleaserBuilderFactory::getName, ReleaserBuilderFactory::getBuilder)); if (null != context.getModel().getRelease().getGithub()) { - return (T) builders.get(Github.NAME); + return (T) builders.get(GithubReleaser.TYPE); } if (null != context.getModel().getRelease().getGitlab()) { - return (T) builders.get(Gitlab.NAME); + return (T) builders.get(GitlabReleaser.TYPE); } if (null != context.getModel().getRelease().getGitea()) { - return (T) builders.get(Gitea.NAME); + return (T) builders.get(GiteaReleaser.TYPE); } if (null != context.getModel().getRelease().getCodeberg()) { - return (T) builders.get(Codeberg.NAME); + return (T) builders.get(CodebergReleaser.TYPE); } if (null != context.getModel().getRelease().getGeneric()) { - return (T) builders.get(GenericGit.NAME); + return (T) builders.get(GenericGitReleaser.TYPE); } throw new JReleaserException(RB.$("ERROR_releaser_no_match")); diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/sign/Signer.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/sign/Signer.java index 40e25ab05..d44ebb469 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/sign/Signer.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/sign/Signer.java @@ -34,18 +34,18 @@ import org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider; import org.bouncycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Signing; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.signing.Signing; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.signing.GpgCommandSigner; +import org.jreleaser.sdk.signing.Keyring; +import org.jreleaser.sdk.signing.SigningException; import org.jreleaser.sdk.tool.Cosign; import org.jreleaser.sdk.tool.ToolException; import org.jreleaser.util.Algorithm; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.signing.GpgCommandSigner; -import org.jreleaser.util.signing.Keyring; -import org.jreleaser.util.signing.SigningException; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -64,7 +64,7 @@ import java.util.stream.Collectors; import static org.bouncycastle.bcpg.CompressionAlgorithmTags.UNCOMPRESSED; -import static org.jreleaser.model.Signing.KEY_SKIP_SIGNING; +import static org.jreleaser.model.api.signing.Signing.KEY_SKIP_SIGNING; import static org.jreleaser.util.StringUtils.isNotBlank; /** @@ -93,9 +93,9 @@ public static void sign(JReleaserContext context) throws SigningException { } try { - if (context.getModel().getSigning().getMode() == Signing.Mode.COMMAND) { + if (context.getModel().getSigning().getMode() == org.jreleaser.model.Signing.Mode.COMMAND) { cmdSign(context); - } else if (context.getModel().getSigning().getMode() == Signing.Mode.COSIGN) { + } else if (context.getModel().getSigning().getMode() == org.jreleaser.model.Signing.Mode.COSIGN) { cosignSign(context); } else { bcSign(context); @@ -463,7 +463,7 @@ private static List collectArtifacts(JReleaserContext context, boolean Path signaturesDirectory = context.getSignaturesDirectory(); String extension = ".sig"; - if (signing.getMode() != Signing.Mode.COSIGN) { + if (signing.getMode() != org.jreleaser.model.Signing.Mode.COSIGN) { extension = signing.isArmored() ? ".asc" : ".sig"; } diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ArtifactUploaders.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ArtifactUploaders.java index 468c3d43b..1f7e0d4cd 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ArtifactUploaders.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ArtifactUploaders.java @@ -18,11 +18,11 @@ package org.jreleaser.engine.upload; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Uploader; -import org.jreleaser.model.uploader.spi.ArtifactUploader; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.Uploader; +import org.jreleaser.model.spi.upload.ArtifactUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import java.util.Map; import java.util.ServiceLoader; @@ -36,7 +36,7 @@ public class ArtifactUploaders { public static ArtifactUploader findUploader(JReleaserContext context, U uploader) { Map uploaders = StreamSupport.stream(ServiceLoader.load(ArtifactUploaderFactory.class, - ArtifactUploaders.class.getClassLoader()).spliterator(), false) + ArtifactUploaders.class.getClassLoader()).spliterator(), false) .collect(Collectors.toMap(ArtifactUploaderFactory::getName, factory -> factory.getArtifactUploader(context))); if (uploaders.containsKey(uploader.getType())) { diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ProjectUploader.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ProjectUploader.java index f33411146..7e8401c45 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ProjectUploader.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/ProjectUploader.java @@ -18,10 +18,10 @@ package org.jreleaser.engine.upload; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Uploader; -import org.jreleaser.model.uploader.spi.ArtifactUploader; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.Uploader; +import org.jreleaser.model.spi.upload.ArtifactUploader; +import org.jreleaser.model.spi.upload.UploadException; import static java.util.Objects.requireNonNull; diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/Uploaders.java b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/Uploaders.java index 97edb7c02..3a8c265cb 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/Uploaders.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/engine/upload/Uploaders.java @@ -18,16 +18,17 @@ package org.jreleaser.engine.upload; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Upload; -import org.jreleaser.model.Uploader; -import org.jreleaser.model.uploader.spi.UploadException; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.Upload; +import org.jreleaser.model.internal.upload.Uploader; +import org.jreleaser.model.spi.upload.UploadException; import java.util.List; import java.util.Map; import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.internal.JReleaserSupport.supportedUploaders; /** * @author Andres Almiray @@ -44,7 +45,7 @@ public static void upload(JReleaserContext context) { if (!context.getIncludedUploaderTypes().isEmpty()) { for (String uploaderType : context.getIncludedUploaderTypes()) { // check if the uploaderType is valid - if (!Upload.supportedUploaders().contains(uploaderType)) { + if (!supportedUploaders().contains(uploaderType)) { context.getLogger().warn(RB.$("ERROR_unsupported_uploader", uploaderType)); continue; } diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AbstractPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AbstractPackagerProcessor.java similarity index 87% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AbstractPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AbstractPackagerProcessor.java index 516a04f8b..f17d1f57a 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AbstractPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AbstractPackagerProcessor.java @@ -18,19 +18,19 @@ package org.jreleaser.packagers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Packager; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.model.packager.spi.PackagerProcessor; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.Packager; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; +import org.jreleaser.model.spi.packagers.PackagerProcessor; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.command.CommandExecutor; import org.jreleaser.util.Algorithm; import org.jreleaser.util.FileType; import org.jreleaser.util.FileUtils; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.command.CommandExecutor; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -46,36 +46,36 @@ import java.util.function.Consumer; import java.util.stream.Collectors; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_ARCH; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_EXTENSION; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_FORMAT; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_NAME; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_OS; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_PLATFORM; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_PLATFORM_REPLACED; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_SIZE; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_VERSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_ARCH; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_EXTENSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_OS; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM_REPLACED; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_SIZE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_VERSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_PREPARE_DIRECTORY; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_SHA_256; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_SIZE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL; -import static org.jreleaser.util.Constants.KEY_REVERSE_REPO_HOST; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_ARCH; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE_EXTENSION; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE_FORMAT; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_NAME; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_OS; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_PLATFORM; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_PLATFORM_REPLACED; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_SIZE; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_VERSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_ARCH; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_EXTENSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_OS; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM_REPLACED; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_SIZE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_VERSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_PREPARE_DIRECTORY; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_SHA_256; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_SIZE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_URL; +import static org.jreleaser.model.Constants.KEY_REVERSE_REPO_HOST; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; import static org.jreleaser.util.StringUtils.capitalize; import static org.jreleaser.util.StringUtils.getFilename; import static org.jreleaser.util.StringUtils.isBlank; @@ -85,7 +85,6 @@ * @author Andres Almiray * @since 0.1.0 */ -@org.jreleaser.infra.nativeimage.annotations.NativeImage abstract class AbstractPackagerProcessor implements PackagerProcessor { private static final String ARTIFACT = "artifact"; private static final String DISTRIBUTION = "distribution"; @@ -195,7 +194,7 @@ protected Map fillProps(Distribution distribution, Map fillProps(Distribution distribution, Map } } - protected String resolveGitUsername(GitService gitService) { - String username = packager.getRepositoryTap().getResolvedUsername(gitService); - return isNotBlank(username) ? username : gitService.getResolvedUsername(); + protected String resolveGitUsername(BaseReleaser releaser) { + String username = packager.getRepositoryTap().getResolvedUsername(releaser); + return isNotBlank(username) ? username : releaser.getResolvedUsername(); } - protected String resolveGitToken(GitService gitService) { - String token = packager.getRepositoryTap().getResolvedToken(gitService); - return isNotBlank(token) ? token : gitService.getResolvedToken(); + protected String resolveGitToken(BaseReleaser releaser) { + String token = packager.getRepositoryTap().getResolvedToken(releaser); + return isNotBlank(token) ? token : releaser.getResolvedToken(); } } diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AbstractTemplatePackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AbstractTemplatePackagerProcessor.java similarity index 95% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AbstractTemplatePackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AbstractTemplatePackagerProcessor.java index dc657df0b..056f8ffa6 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AbstractTemplatePackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AbstractTemplatePackagerProcessor.java @@ -19,11 +19,11 @@ import org.apache.commons.io.IOUtils; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.TemplatePackager; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.TemplatePackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import org.jreleaser.templates.TemplateResource; import org.jreleaser.util.FileUtils; @@ -38,11 +38,11 @@ import static java.nio.file.StandardOpenOption.CREATE; import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; import static java.nio.file.StandardOpenOption.WRITE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; import static org.jreleaser.templates.TemplateUtils.resolveAndMergeTemplates; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; import static org.jreleaser.util.FileUtils.createDirectoriesWithFullAccess; import static org.jreleaser.util.FileUtils.grantFullAccess; -import static org.jreleaser.util.MustacheUtils.applyTemplate; /** * @author Andres Almiray diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessor.java similarity index 79% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessor.java index 0bac84bc4..169e2c278 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessor.java @@ -20,16 +20,17 @@ import org.apache.commons.lang3.StringUtils; import org.jreleaser.bundle.RB; import org.jreleaser.engine.release.Releasers; -import org.jreleaser.model.AppImage; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Github; -import org.jreleaser.model.Icon; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.Screenshot; import org.jreleaser.model.Stereotype; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.common.Screenshot; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.AppImagePackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.model.internal.release.Releaser; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import java.io.IOException; import java.io.InputStream; @@ -45,33 +46,33 @@ import java.util.regex.Pattern; import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_CATEGORIES; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_CATEGORIES_BY_COMMA; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_COMPONENT_ID; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_DEVELOPER_NAME; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_DISTRIBUTION_URL; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_ICONS; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_RELEASES; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_REPO_NAME; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_REPO_OWNER; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_REQUIRES_TERMINAL; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_SCREENSHOTS; +import static org.jreleaser.model.Constants.KEY_APPIMAGE_URLS; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_URL; +import static org.jreleaser.model.Constants.KEY_PROJECT_AUTHORS; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_CATEGORIES; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_CATEGORIES_BY_COMMA; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_COMPONENT_ID; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_DEVELOPER_NAME; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_DISTRIBUTION_URL; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_ICONS; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_RELEASES; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_REPO_NAME; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_REPO_OWNER; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_REQUIRES_TERMINAL; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_SCREENSHOTS; -import static org.jreleaser.util.Constants.KEY_APPIMAGE_URLS; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL; -import static org.jreleaser.util.Constants.KEY_PROJECT_AUTHORS; import static org.jreleaser.util.StringUtils.getFilenameExtension; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 1.2.0 */ -public class AppImagePackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class AppImagePackagerProcessor extends AbstractRepositoryPackagerProcessor { public AppImagePackagerProcessor(JReleaserContext context) { super(context); } @@ -89,11 +90,11 @@ protected void doPackageDistribution(Distribution distribution, Map props) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); try { props.put(KEY_APPIMAGE_RELEASES, Releasers.releaserFor(context) - .listReleases(gitService.getOwner(), gitService.getName()).stream() + .listReleases(releaser.getOwner(), releaser.getName()).stream() .filter(r -> isReleaseIncluded(packager.getSkipReleases(), r.getVersion().toString())) .map(r -> Release.of(r.getUrl(), r.getVersion().toString(), r.getPublishedAt())) .collect(toList())); @@ -144,7 +145,7 @@ protected void fillPackagerProperties(Map props, Distribution di props.put(KEY_APPIMAGE_REPO_OWNER, packager.getRepository().getOwner()); props.put(KEY_APPIMAGE_REPO_NAME, packager.getRepository().getName()); - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); String str = (String) props.get(KEY_DISTRIBUTION_ARTIFACT_FILE); str = str.replace(context.getModel().getProject().getEffectiveVersion(), "${DISTRIBUTION_VERSION}"); props.put(KEY_APPIMAGE_DISTRIBUTION_ARTIFACT_FILE, str); @@ -152,7 +153,7 @@ protected void fillPackagerProperties(Map props, Distribution di str = str.replace(context.getModel().getProject().getEffectiveVersion(), "${DISTRIBUTION_VERSION}"); props.put(KEY_APPIMAGE_DISTRIBUTION_ARTIFACT_FILE_NAME, str); str = (String) props.get(KEY_DISTRIBUTION_URL); - str = str.replace(gitService.getEffectiveTagName(context.getModel()), "${DISTRIBUTION_TAG}") + str = str.replace(releaser.getEffectiveTagName(context.getModel()), "${DISTRIBUTION_TAG}") .replace((String) props.get(KEY_DISTRIBUTION_ARTIFACT_FILE), "${DISTRIBUTION_FILE}"); props.put(KEY_APPIMAGE_DISTRIBUTION_URL, str); } @@ -164,8 +165,8 @@ protected void writeFile(Project project, Map props, Path outputDirectory, String fileName) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); - if (fileName.contains("github") && !(gitService instanceof Github)) { + Releaser gitService = context.getModel().getRelease().getReleaser(); + if (fileName.contains("github") && !(gitService instanceof GithubReleaser)) { // skip return; } else if (fileName.contains("-github")) { diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessorFactory.java similarity index 77% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessorFactory.java index e56beafb9..d6841cb3b 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AppImagePackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.AppImage; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.AppImagePackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 1.2.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class AppImagePackagerProcessorFactory implements PackagerProcessorFactory { +public class AppImagePackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return AppImage.TYPE; + return org.jreleaser.model.api.packagers.AppImagePackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessor.java similarity index 67% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessor.java index 3e0536a7a..d305310be 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessor.java @@ -18,33 +18,34 @@ package org.jreleaser.packagers; import org.apache.commons.lang3.StringUtils; -import org.jreleaser.model.Asdf; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Github; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.AsdfPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.model.internal.release.Releaser; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import java.nio.file.Path; import java.util.Map; +import static org.jreleaser.model.Constants.KEY_ASDF_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_ASDF_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_ASDF_DISTRIBUTION_URL; +import static org.jreleaser.model.Constants.KEY_ASDF_PLUGIN_REPO_URL; +import static org.jreleaser.model.Constants.KEY_ASDF_PLUGIN_TOOL_CHECK; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_URL; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_ASDF_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_ASDF_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_ASDF_DISTRIBUTION_URL; -import static org.jreleaser.util.Constants.KEY_ASDF_PLUGIN_REPO_URL; -import static org.jreleaser.util.Constants.KEY_ASDF_PLUGIN_TOOL_CHECK; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 1.2.0 */ -public class AsdfPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class AsdfPackagerProcessor extends AbstractRepositoryPackagerProcessor { public AsdfPackagerProcessor(JReleaserContext context) { super(context); } @@ -57,9 +58,9 @@ protected void doPackageDistribution(Distribution distribution, Map props, Distribution distribution) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); - String repoUrl = gitService.getResolvedRepoUrl(context.getModel(), packager.getRepository().getOwner(), packager.getRepository().getResolvedName()); + String repoUrl = releaser.getResolvedRepoUrl(context.getModel(), packager.getRepository().getOwner(), packager.getRepository().getResolvedName()); props.put(KEY_ASDF_PLUGIN_REPO_URL, repoUrl); props.put(KEY_ASDF_PLUGIN_TOOL_CHECK, resolveTemplate(packager.getToolCheck(), props)); @@ -82,8 +83,8 @@ protected void writeFile(Project project, Map props, Path outputDirectory, String fileName) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); - if (fileName.contains("github") && !(gitService instanceof Github)) { + Releaser gitService = context.getModel().getRelease().getReleaser(); + if (fileName.contains("github") && !(gitService instanceof GithubReleaser)) { // skip return; } else if (fileName.contains("-github")) { diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessorFactory.java index a8879a1a7..57702bb47 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/AsdfPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Asdf; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.AsdfPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 1.2.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class AsdfPackagerProcessorFactory implements PackagerProcessorFactory { +public class AsdfPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Asdf.TYPE; + return org.jreleaser.model.api.packagers.AsdfPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/BrewPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/BrewPackagerProcessor.java similarity index 76% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/BrewPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/BrewPackagerProcessor.java index a45610843..834f2dd88 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/BrewPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/BrewPackagerProcessor.java @@ -17,16 +17,16 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Brew; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.BrewPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.util.Algorithm; -import org.jreleaser.util.MustacheUtils; import org.jreleaser.util.PlatformUtils; import java.nio.file.Path; @@ -36,41 +36,41 @@ import java.util.Map; import java.util.stream.Collectors; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_APP; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_APPCAST; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_DISPLAY_NAME; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_HAS_APP; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_HAS_APPCAST; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_HAS_BINARY; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_HAS_PKG; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_HAS_UNINSTALL; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_HAS_ZAP; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_NAME; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_PKG; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_UNINSTALL; +import static org.jreleaser.model.Constants.KEY_BREW_CASK_ZAP; +import static org.jreleaser.model.Constants.KEY_BREW_DEPENDENCIES; +import static org.jreleaser.model.Constants.KEY_BREW_FORMULA_NAME; +import static org.jreleaser.model.Constants.KEY_BREW_HAS_LIVECHECK; +import static org.jreleaser.model.Constants.KEY_BREW_LIVECHECK; +import static org.jreleaser.model.Constants.KEY_BREW_MULTIPLATFORM; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_VERSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_URL; +import static org.jreleaser.model.Constants.KEY_HOMEBREW_TAP_REPO_CLONE_URL; +import static org.jreleaser.model.Constants.KEY_HOMEBREW_TAP_REPO_URL; +import static org.jreleaser.mustache.MustacheUtils.passThrough; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_APP; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_APPCAST; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_DISPLAY_NAME; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_HAS_APP; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_HAS_APPCAST; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_HAS_BINARY; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_HAS_PKG; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_HAS_UNINSTALL; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_HAS_ZAP; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_NAME; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_PKG; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_UNINSTALL; -import static org.jreleaser.util.Constants.KEY_BREW_CASK_ZAP; -import static org.jreleaser.util.Constants.KEY_BREW_DEPENDENCIES; -import static org.jreleaser.util.Constants.KEY_BREW_FORMULA_NAME; -import static org.jreleaser.util.Constants.KEY_BREW_HAS_LIVECHECK; -import static org.jreleaser.util.Constants.KEY_BREW_LIVECHECK; -import static org.jreleaser.util.Constants.KEY_BREW_MULTIPLATFORM; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_VERSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL; -import static org.jreleaser.util.Constants.KEY_HOMEBREW_TAP_REPO_CLONE_URL; -import static org.jreleaser.util.Constants.KEY_HOMEBREW_TAP_REPO_URL; import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.MustacheUtils.passThrough; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; import static org.jreleaser.util.StringUtils.isTrue; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class BrewPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class BrewPackagerProcessor extends AbstractRepositoryPackagerProcessor { private static final String KEY_DISTRIBUTION_CHECKSUM_SHA_256 = "distributionChecksumSha256"; private static final String TPL_MAC_ARM = " if OS.mac? && Hardware::CPU.arm?\n" + @@ -110,14 +110,14 @@ protected void doPackageDistribution(Distribution distribution, Map props, Distribution distribution) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); props.put(KEY_BREW_FORMULA_NAME, packager.getResolvedFormulaName(props)); props.put(KEY_HOMEBREW_TAP_REPO_URL, - gitService.getResolvedRepoUrl(context.getModel(), packager.getTap().getOwner(), packager.getTap().getResolvedName())); + releaser.getResolvedRepoUrl(context.getModel(), packager.getTap().getOwner(), packager.getTap().getResolvedName())); props.put(KEY_HOMEBREW_TAP_REPO_CLONE_URL, - gitService.getResolvedRepoCloneUrl(context.getModel(), packager.getTap().getOwner(), packager.getTap().getResolvedName())); + releaser.getResolvedRepoCloneUrl(context.getModel(), packager.getTap().getOwner(), packager.getTap().getResolvedName())); props.put(KEY_BREW_HAS_LIVECHECK, packager.hasLivecheck()); if (packager.hasLivecheck()) { @@ -127,7 +127,7 @@ protected void fillPackagerProperties(Map props, Distribution di .collect(Collectors.toList())); } - Brew.Cask cask = packager.getCask(); + BrewPackager.Cask cask = packager.getCask(); if (cask.isEnabled()) { boolean hasPkg = isNotBlank(cask.getPkgName()); boolean hasApp = isNotBlank(cask.getAppName()); @@ -193,8 +193,8 @@ protected void fillPackagerProperties(Map props, Distribution di throw new PackagerProcessingException(org.jreleaser.bundle.RB.$("ERROR_brew_multiplatform_artifacts")); } props.put(KEY_BREW_MULTIPLATFORM, passThrough(String.join(System.lineSeparator() + " ", multiPlatforms))); - } else if ((distribution.getType() == Distribution.DistributionType.JAVA_BINARY || - distribution.getType() == Distribution.DistributionType.SINGLE_JAR) && + } else if ((distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR) && !isTrue(packager.getExtraProperties().get(SKIP_JAVA))) { packager.addDependency("openjdk@" + props.get(KEY_DISTRIBUTION_JAVA_VERSION)); } @@ -207,7 +207,7 @@ protected void fillPackagerProperties(Map props, Distribution di } private String resolveArtifactUrl(Map props, Distribution distribution, Artifact artifact) { - return Artifacts.resolveDownloadUrl(context, Brew.TYPE, distribution, artifact); + return Artifacts.resolveDownloadUrl(context, org.jreleaser.model.api.packagers.BrewPackager.TYPE, distribution, artifact); } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/BrewPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/BrewPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/BrewPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/BrewPackagerProcessorFactory.java index 5417e9c26..9176f021e 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/BrewPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/BrewPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Brew; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.BrewPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.1.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class BrewPackagerProcessorFactory implements PackagerProcessorFactory { +public class BrewPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return org.jreleaser.model.Brew.TYPE; + return org.jreleaser.model.api.packagers.BrewPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessor.java similarity index 74% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessor.java index 9a06ea794..bb0d67638 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessor.java @@ -18,42 +18,43 @@ package org.jreleaser.packagers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Chocolatey; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Github; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.ChocolateyPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.model.internal.release.Releaser; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; +import org.jreleaser.sdk.command.Command; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.command.Command; import java.io.IOException; import java.nio.file.Path; import java.util.Map; import java.util.Optional; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_BUCKET_REPO_CLONE_URL; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_BUCKET_REPO_URL; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_ICON_URL; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_PACKAGE_NAME; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_PACKAGE_SOURCE_URL; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_PACKAGE_VERSION; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_SOURCE; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_TITLE; +import static org.jreleaser.model.Constants.KEY_CHOCOLATEY_USERNAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; +import static org.jreleaser.model.Constants.KEY_PROJECT_LICENSE_URL; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_BUCKET_REPO_CLONE_URL; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_BUCKET_REPO_URL; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_ICON_URL; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_PACKAGE_NAME; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_PACKAGE_SOURCE_URL; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_PACKAGE_VERSION; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_SOURCE; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_TITLE; -import static org.jreleaser.util.Constants.KEY_CHOCOLATEY_USERNAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; -import static org.jreleaser.util.Constants.KEY_PROJECT_LICENSE_URL; import static org.jreleaser.util.FileUtils.listFilesAndProcess; import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class ChocolateyPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class ChocolateyPackagerProcessor extends AbstractRepositoryPackagerProcessor { public ChocolateyPackagerProcessor(JReleaserContext context) { super(context); } @@ -98,20 +99,20 @@ protected void doPublishDistribution(Distribution distribution, Map props, Distribution distribution) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); if (!props.containsKey(KEY_PROJECT_LICENSE_URL) || isBlank((String) props.get(KEY_PROJECT_LICENSE_URL))) { context.getLogger().warn(RB.$("ERROR_project_no_license_url")); } - String repoUrl = gitService.getResolvedRepoUrl(context.getModel()); - String bucketRepoUrl = gitService.getResolvedRepoUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName()); + String repoUrl = releaser.getResolvedRepoUrl(context.getModel()); + String bucketRepoUrl = releaser.getResolvedRepoUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName()); - props.put(KEY_CHOCOLATEY_PACKAGE_SOURCE_URL, packager.isRemoteBuild()? bucketRepoUrl : repoUrl); - props.put(KEY_CHOCOLATEY_BUCKET_REPO_URL, bucketRepoUrl); + props.put(KEY_CHOCOLATEY_PACKAGE_SOURCE_URL, packager.isRemoteBuild() ? bucketRepoUrl : repoUrl); + props.put(KEY_CHOCOLATEY_BUCKET_REPO_URL, bucketRepoUrl); props.put(KEY_CHOCOLATEY_BUCKET_REPO_CLONE_URL, - gitService.getResolvedRepoCloneUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName())); + releaser.getResolvedRepoCloneUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName())); props.put(KEY_CHOCOLATEY_PACKAGE_NAME, packager.getPackageName()); props.put(KEY_CHOCOLATEY_PACKAGE_VERSION, resolveTemplate(packager.getPackageVersion(), props)); @@ -128,8 +129,8 @@ protected void writeFile(Project project, Map props, Path outputDirectory, String fileName) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); - if (fileName.contains(".github") && (!packager.isRemoteBuild() || !(gitService instanceof Github))) { + Releaser gitService = context.getModel().getRelease().getReleaser(); + if (fileName.contains(".github") && (!packager.isRemoteBuild() || !(gitService instanceof GithubReleaser))) { // skip return; } diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessorFactory.java similarity index 77% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessorFactory.java index bba065c46..a4a00d265 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ChocolateyPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Chocolatey; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.ChocolateyPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.1.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class ChocolateyPackagerProcessorFactory implements PackagerProcessorFactory { +public class ChocolateyPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Chocolatey.TYPE; + return org.jreleaser.model.api.packagers.ChocolateyPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/DockerPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/DockerPackagerProcessor.java similarity index 90% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/DockerPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/DockerPackagerProcessor.java index 6df3ac310..406c38d31 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/DockerPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/DockerPackagerProcessor.java @@ -18,18 +18,18 @@ package org.jreleaser.packagers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Docker; -import org.jreleaser.model.DockerConfiguration; -import org.jreleaser.model.DockerSpec; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.Registry; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.AbstractDockerConfiguration; +import org.jreleaser.model.internal.packagers.DockerConfiguration; +import org.jreleaser.model.internal.packagers.DockerPackager; +import org.jreleaser.model.internal.packagers.DockerSpec; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; +import org.jreleaser.sdk.command.Command; import org.jreleaser.util.FileUtils; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.command.Command; import java.io.ByteArrayInputStream; import java.io.File; @@ -44,23 +44,23 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_PREPARE_DIRECTORY; +import static org.jreleaser.model.Constants.KEY_DOCKER_BASE_IMAGE; +import static org.jreleaser.model.Constants.KEY_DOCKER_LABELS; +import static org.jreleaser.model.Constants.KEY_DOCKER_POST_COMMANDS; +import static org.jreleaser.model.Constants.KEY_DOCKER_PRE_COMMANDS; +import static org.jreleaser.model.Constants.KEY_DOCKER_SPEC_NAME; +import static org.jreleaser.mustache.MustacheUtils.passThrough; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_PREPARE_DIRECTORY; -import static org.jreleaser.util.Constants.KEY_DOCKER_BASE_IMAGE; -import static org.jreleaser.util.Constants.KEY_DOCKER_LABELS; -import static org.jreleaser.util.Constants.KEY_DOCKER_POST_COMMANDS; -import static org.jreleaser.util.Constants.KEY_DOCKER_PRE_COMMANDS; -import static org.jreleaser.util.Constants.KEY_DOCKER_SPEC_NAME; -import static org.jreleaser.util.MustacheUtils.passThrough; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class DockerPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class DockerPackagerProcessor extends AbstractRepositoryPackagerProcessor { private static final String ROOT = "ROOT"; public DockerPackagerProcessor(JReleaserContext context) { @@ -217,7 +217,7 @@ private Path prepareAssembly(Distribution distribution, for (Artifact artifact : artifacts) { Path artifactPath = artifact.getEffectivePath(context, distribution); - if (distribution.getType() == Distribution.DistributionType.NATIVE_IMAGE) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE) { if (artifactPath.toString().endsWith(".zip")) { FileUtils.unpackArchive(artifactPath, assemblyDirectory); } else { @@ -284,7 +284,7 @@ protected void doPublishDistribution(Distribution distribution, Map props, DockerConfiguration docker) throws PackagerProcessingException { - for (Registry registry : docker.getRegistries()) { + for (AbstractDockerConfiguration.Registry registry : docker.getRegistries()) { login(registry); for (String imageName : docker.getImageNames()) { publish(registry, imageName, props); @@ -293,7 +293,7 @@ protected void publishDocker(Distribution distribution, } } - private void login(Registry registry) throws PackagerProcessingException { + private void login(AbstractDockerConfiguration.Registry registry) throws PackagerProcessingException { Command cmd = createCommand("login"); if (isNotBlank(registry.getServer())) { cmd.arg(registry.getServer()); @@ -311,7 +311,7 @@ private void login(Registry registry) throws PackagerProcessingException { if (!context.isDryrun()) executeCommandWithInput(cmd, in); } - private void publish(Registry registry, String imageName, Map props) throws PackagerProcessingException { + private void publish(AbstractDockerConfiguration.Registry registry, String imageName, Map props) throws PackagerProcessingException { imageName = resolveTemplate(imageName, props); String tag = imageName; @@ -324,7 +324,7 @@ private void publish(Registry registry, String imageName, Map pr // else // tag: server/repositoryName/imageName - if (Registry.DEFAULT_NAME.equals(serverName)) { + if (AbstractDockerConfiguration.Registry.DEFAULT_NAME.equals(serverName)) { if (!tag.startsWith(repositoryName)) { int pos = tag.indexOf("/"); if (pos < 0) { @@ -365,7 +365,7 @@ private void publish(Registry registry, String imageName, Map pr if (!context.isDryrun()) executeCommand(cmd); } - private void logout(Registry registry) throws PackagerProcessingException { + private void logout(AbstractDockerConfiguration.Registry registry) throws PackagerProcessingException { Command cmd = createCommand("logout"); if (isNotBlank(registry.getServer())) { cmd.arg(registry.getServerName()); @@ -449,7 +449,7 @@ private void copyDockerfiles(Path source, String imageName, Path directory, Dock destination = directory.resolve(parts[0]); } - if (packager.getRepository().isVersionedSubfolders()) { + if (packager.getPackagerRepository().isVersionedSubfolders()) { destination = directory.resolve(parts[1]); } diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/DockerPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/DockerPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/DockerPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/DockerPackagerProcessorFactory.java index 629bdbe52..4ea5e0797 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/DockerPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/DockerPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Docker; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.DockerPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.1.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class DockerPackagerProcessorFactory implements PackagerProcessorFactory { +public class DockerPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Docker.TYPE; + return org.jreleaser.model.api.packagers.DockerPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessor.java similarity index 79% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessor.java index f1dfa9775..b5b7fbb41 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessor.java @@ -20,19 +20,20 @@ import org.apache.commons.lang3.StringUtils; import org.jreleaser.bundle.RB; import org.jreleaser.engine.release.Releasers; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Flatpak; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Github; -import org.jreleaser.model.Icon; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.Screenshot; import org.jreleaser.model.Stereotype; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.common.Screenshot; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.FlatpakPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.model.internal.release.Releaser; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.util.FileUtils; -import org.jreleaser.util.MustacheUtils; import java.io.IOException; import java.net.URL; @@ -50,42 +51,42 @@ import java.util.regex.Pattern; import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT; +import static org.jreleaser.model.Constants.KEY_FLATPACK_ICONS; +import static org.jreleaser.model.Constants.KEY_FLATPAK_BINARIES; +import static org.jreleaser.model.Constants.KEY_FLATPAK_CATEGORIES; +import static org.jreleaser.model.Constants.KEY_FLATPAK_CATEGORIES_BY_COMMA; +import static org.jreleaser.model.Constants.KEY_FLATPAK_CATEGORIES_BY_SEMICOLON; +import static org.jreleaser.model.Constants.KEY_FLATPAK_COMPONENT_ID; +import static org.jreleaser.model.Constants.KEY_FLATPAK_DEVELOPER_NAME; +import static org.jreleaser.model.Constants.KEY_FLATPAK_DIRECTORIES; +import static org.jreleaser.model.Constants.KEY_FLATPAK_FILES; +import static org.jreleaser.model.Constants.KEY_FLATPAK_HAS_SDK_EXTENSIONS; +import static org.jreleaser.model.Constants.KEY_FLATPAK_HAS_SDK_FINISH_ARGS; +import static org.jreleaser.model.Constants.KEY_FLATPAK_INCLUDE_OPENJDK; +import static org.jreleaser.model.Constants.KEY_FLATPAK_RELEASES; +import static org.jreleaser.model.Constants.KEY_FLATPAK_REPO_NAME; +import static org.jreleaser.model.Constants.KEY_FLATPAK_REPO_OWNER; +import static org.jreleaser.model.Constants.KEY_FLATPAK_RUNTIME; +import static org.jreleaser.model.Constants.KEY_FLATPAK_RUNTIME_VERSION; +import static org.jreleaser.model.Constants.KEY_FLATPAK_SCREENSHOTS; +import static org.jreleaser.model.Constants.KEY_FLATPAK_SDK; +import static org.jreleaser.model.Constants.KEY_FLATPAK_SDK_EXTENSIONS; +import static org.jreleaser.model.Constants.KEY_FLATPAK_SDK_FINISH_ARGS; +import static org.jreleaser.model.Constants.KEY_FLATPAK_URLS; +import static org.jreleaser.model.Constants.KEY_PROJECT_AUTHORS; +import static org.jreleaser.model.Constants.SKIP_OPENJDK; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT; -import static org.jreleaser.util.Constants.KEY_FLATPACK_ICONS; -import static org.jreleaser.util.Constants.KEY_FLATPAK_BINARIES; -import static org.jreleaser.util.Constants.KEY_FLATPAK_CATEGORIES; -import static org.jreleaser.util.Constants.KEY_FLATPAK_CATEGORIES_BY_COMMA; -import static org.jreleaser.util.Constants.KEY_FLATPAK_CATEGORIES_BY_SEMICOLON; -import static org.jreleaser.util.Constants.KEY_FLATPAK_COMPONENT_ID; -import static org.jreleaser.util.Constants.KEY_FLATPAK_DEVELOPER_NAME; -import static org.jreleaser.util.Constants.KEY_FLATPAK_DIRECTORIES; -import static org.jreleaser.util.Constants.KEY_FLATPAK_FILES; -import static org.jreleaser.util.Constants.KEY_FLATPAK_HAS_SDK_EXTENSIONS; -import static org.jreleaser.util.Constants.KEY_FLATPAK_HAS_SDK_FINISH_ARGS; -import static org.jreleaser.util.Constants.KEY_FLATPAK_INCLUDE_OPENJDK; -import static org.jreleaser.util.Constants.KEY_FLATPAK_RELEASES; -import static org.jreleaser.util.Constants.KEY_FLATPAK_REPO_NAME; -import static org.jreleaser.util.Constants.KEY_FLATPAK_REPO_OWNER; -import static org.jreleaser.util.Constants.KEY_FLATPAK_RUNTIME; -import static org.jreleaser.util.Constants.KEY_FLATPAK_RUNTIME_VERSION; -import static org.jreleaser.util.Constants.KEY_FLATPAK_SCREENSHOTS; -import static org.jreleaser.util.Constants.KEY_FLATPAK_SDK; -import static org.jreleaser.util.Constants.KEY_FLATPAK_SDK_EXTENSIONS; -import static org.jreleaser.util.Constants.KEY_FLATPAK_SDK_FINISH_ARGS; -import static org.jreleaser.util.Constants.KEY_FLATPAK_URLS; -import static org.jreleaser.util.Constants.KEY_PROJECT_AUTHORS; -import static org.jreleaser.util.Constants.SKIP_OPENJDK; import static org.jreleaser.util.StringUtils.getFilename; import static org.jreleaser.util.StringUtils.getFilenameExtension; import static org.jreleaser.util.StringUtils.isFalse; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 1.2.0 */ -public class FlatpakPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class FlatpakPackagerProcessor extends AbstractRepositoryPackagerProcessor { public FlatpakPackagerProcessor(JReleaserContext context) { super(context); } @@ -99,7 +100,7 @@ protected void doPrepareDistribution(Distribution distribution, Map props) throws PackagerProcessingException { Artifact artifact = (Artifact) props.get(KEY_DISTRIBUTION_ARTIFACT); Path artifactPath = artifact.getResolvedPath(context, distribution); - String artifactFileName = getFilename(artifactPath.getFileName().toString(), packager.getSupportedExtensions(distribution)); + String artifactFileName = getFilename(artifactPath.getFileName().toString(), packager.getSupportedFileExtensions(distribution.getType())); try { List entries = FileUtils.inspectArchive(artifactPath); @@ -146,11 +147,11 @@ private void setupPrepare(Distribution distribution, Map props) throw new PackagerProcessingException("ERROR", e); } - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); try { props.put(KEY_FLATPAK_RELEASES, Releasers.releaserFor(context) - .listReleases(gitService.getOwner(), gitService.getName()).stream() + .listReleases(releaser.getOwner(), releaser.getName()).stream() .filter(r -> isReleaseIncluded(packager.getSkipReleases(), r.getVersion().toString())) .map(r -> Release.of(r.getUrl(), r.getVersion().toString(), r.getPublishedAt())) .collect(toList())); @@ -226,8 +227,8 @@ protected void writeFile(Project project, Map props, Path outputDirectory, String fileName) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); - if (fileName.contains("github") && !(gitService instanceof Github)) { + Releaser gitService = context.getModel().getRelease().getReleaser(); + if (fileName.contains("github") && !(gitService instanceof GithubReleaser)) { // skip return; } else if (fileName.contains("-github")) { diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessorFactory.java similarity index 77% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessorFactory.java index 7e0d65319..d6a5ddbeb 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/FlatpakPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Flatpak; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.FlatpakPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 1.2.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class FlatpakPackagerProcessorFactory implements PackagerProcessorFactory { +public class FlatpakPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Flatpak.TYPE; + return org.jreleaser.model.api.packagers.FlatpakPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/GofishPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/GofishPackagerProcessor.java similarity index 89% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/GofishPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/GofishPackagerProcessor.java index c2916046a..ad0fde6d1 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/GofishPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/GofishPackagerProcessor.java @@ -17,13 +17,13 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Gofish; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.GofishPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import org.jreleaser.util.Algorithm; import org.jreleaser.util.FileType; import org.jreleaser.util.PlatformUtils; @@ -33,9 +33,9 @@ import java.util.Map; import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.Constants.KEY_GOFISH_PACKAGES; +import static org.jreleaser.mustache.MustacheUtils.passThrough; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_GOFISH_PACKAGES; -import static org.jreleaser.util.MustacheUtils.passThrough; import static org.jreleaser.util.StringUtils.capitalize; import static org.jreleaser.util.StringUtils.getFilename; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -44,7 +44,7 @@ * @author Andres Almiray * @since 0.9.1 */ -public class GofishPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class GofishPackagerProcessor extends AbstractRepositoryPackagerProcessor { public GofishPackagerProcessor(JReleaserContext context) { super(context); } @@ -131,7 +131,7 @@ public GofishPackage(Map props, JReleaserContext context, Distri if (windows) { executablePath += " .. \"" + distribution.getExecutable().resolveWindowsExtension() + "\""; installPath += " .. \"" + distribution.getExecutable().resolveWindowsExtension() + "\""; - } else if(isNotBlank(distribution.getExecutable().getUnixExtension())) { + } else if (isNotBlank(distribution.getExecutable().getUnixExtension())) { executablePath += " .. \"" + distribution.getExecutable().resolveUnixExtension() + "\""; installPath += " .. \"" + distribution.getExecutable().resolveUnixExtension() + "\""; } @@ -154,7 +154,7 @@ public GofishPackage(Map props, JReleaserContext context, Distri packageChecksum = artifact.getHash(Algorithm.SHA_256); - String url = Artifacts.resolveDownloadUrl(context, Gofish.TYPE, distribution, artifact); + String url = Artifacts.resolveDownloadUrl(context, org.jreleaser.model.api.packagers.GofishPackager.TYPE, distribution, artifact); packageUrl = url.replace(executable, "\" .. name .. \"") .replace(projectVersion, "\" .. version .. \""); } diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/GofishPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/GofishPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/GofishPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/GofishPackagerProcessorFactory.java index d4f39f98e..d90e46491 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/GofishPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/GofishPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Gofish; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.GofishPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.10.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class GofishPackagerProcessorFactory implements PackagerProcessorFactory { +public class GofishPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Gofish.TYPE; + return org.jreleaser.model.api.packagers.GofishPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/JbangPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/JbangPackagerProcessor.java similarity index 81% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/JbangPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/JbangPackagerProcessor.java index 26039d535..271690977 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/JbangPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/JbangPackagerProcessor.java @@ -19,12 +19,12 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jbang; -import org.jreleaser.model.Project; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.JbangPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import org.jreleaser.util.JsonUtils; import java.io.IOException; @@ -32,28 +32,28 @@ import java.nio.file.Path; import java.util.Map; +import static org.jreleaser.model.Constants.KEY_JBANG_ALIAS_NAME; +import static org.jreleaser.model.Constants.KEY_JBANG_CATALOG_REPO_CLONE_URL; +import static org.jreleaser.model.Constants.KEY_JBANG_CATALOG_REPO_URL; +import static org.jreleaser.model.Constants.KEY_JBANG_DISTRIBUTION_GA; +import static org.jreleaser.model.Constants.KEY_JBANG_SCRIPT_NAME; +import static org.jreleaser.model.Constants.KEY_REVERSE_DOMAIN; +import static org.jreleaser.model.Constants.KEY_REVERSE_REPO_HOST; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_JBANG_ALIAS_NAME; -import static org.jreleaser.util.Constants.KEY_JBANG_CATALOG_REPO_CLONE_URL; -import static org.jreleaser.util.Constants.KEY_JBANG_CATALOG_REPO_URL; -import static org.jreleaser.util.Constants.KEY_JBANG_DISTRIBUTION_GA; -import static org.jreleaser.util.Constants.KEY_JBANG_SCRIPT_NAME; -import static org.jreleaser.util.Constants.KEY_REVERSE_DOMAIN; -import static org.jreleaser.util.Constants.KEY_REVERSE_REPO_HOST; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.1.0 */ -public class JbangPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class JbangPackagerProcessor extends AbstractRepositoryPackagerProcessor { public JbangPackagerProcessor(JReleaserContext context) { super(context); } @Override public boolean supportsDistribution(Distribution distribution) { - return distribution.getType() != Distribution.DistributionType.JLINK; + return distribution.getType() != org.jreleaser.model.Distribution.DistributionType.JLINK; } @Override @@ -70,12 +70,12 @@ protected boolean verifyAndAddArtifacts(Map props, @Override protected void fillPackagerProperties(Map props, Distribution distribution) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); props.put(KEY_JBANG_CATALOG_REPO_URL, - gitService.getResolvedRepoUrl(context.getModel(), packager.getCatalog().getOwner(), packager.getCatalog().getResolvedName())); + releaser.getResolvedRepoUrl(context.getModel(), packager.getCatalog().getOwner(), packager.getCatalog().getResolvedName())); props.put(KEY_JBANG_CATALOG_REPO_CLONE_URL, - gitService.getResolvedRepoCloneUrl(context.getModel(), packager.getCatalog().getOwner(), packager.getCatalog().getResolvedName())); + releaser.getResolvedRepoCloneUrl(context.getModel(), packager.getCatalog().getOwner(), packager.getCatalog().getResolvedName())); String aliasName = sanitizeAlias(packager.getAlias()); String scriptName = aliasName; @@ -96,7 +96,7 @@ protected void fillPackagerProperties(Map props, Distribution di // if multi-project // {{reverseRepoHost}}.{{repoOwner}}.{{repoName}}:{{distributionArtifactId}} - String reverseRepoHost = gitService.getReverseRepoHost(); + String reverseRepoHost = releaser.getReverseRepoHost(); if (packager.getExtraProperties().containsKey(KEY_REVERSE_DOMAIN)) { reverseRepoHost = (String) packager.getExtraProperties().get(KEY_REVERSE_DOMAIN); } else if (isBlank(reverseRepoHost)) { @@ -105,10 +105,10 @@ protected void fillPackagerProperties(Map props, Distribution di StringBuilder b = new StringBuilder(reverseRepoHost) .append(".") - .append(gitService.getOwner()); + .append(releaser.getOwner()); if (distribution.getJava().isMultiProject()) { b.append(".") - .append(gitService.getName()); + .append(releaser.getName()); } b.append(":") .append(distribution.getJava().getArtifactId()); diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/JbangPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/JbangPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/JbangPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/JbangPackagerProcessorFactory.java index 38fb33286..9d1f242e4 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/JbangPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/JbangPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jbang; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.JbangPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.1.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class JbangPackagerProcessorFactory implements PackagerProcessorFactory { +public class JbangPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Jbang.TYPE; + return org.jreleaser.model.api.packagers.JbangPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessor.java similarity index 67% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessor.java index 96cc63c1c..c2d3d8759 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessor.java @@ -17,44 +17,44 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Macports; -import org.jreleaser.model.Project; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.MacportsPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import java.nio.file.Path; import java.util.Arrays; import java.util.List; import java.util.Map; -import static org.jreleaser.model.Macports.APP_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_VERSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_URL; +import static org.jreleaser.model.Constants.KEY_MACPORTS_APP_NAME; +import static org.jreleaser.model.Constants.KEY_MACPORTS_CATEGORIES; +import static org.jreleaser.model.Constants.KEY_MACPORTS_DISTNAME; +import static org.jreleaser.model.Constants.KEY_MACPORTS_DISTRIBUTION_URL; +import static org.jreleaser.model.Constants.KEY_MACPORTS_JAVA_VERSION; +import static org.jreleaser.model.Constants.KEY_MACPORTS_MAINTAINERS; +import static org.jreleaser.model.Constants.KEY_MACPORTS_PACKAGE_NAME; +import static org.jreleaser.model.Constants.KEY_MACPORTS_REPOSITORY_REPO_CLONE_URL; +import static org.jreleaser.model.Constants.KEY_MACPORTS_REPOSITORY_REPO_URL; +import static org.jreleaser.model.Constants.KEY_MACPORTS_REVISION; +import static org.jreleaser.model.Constants.KEY_PROJECT_LONG_DESCRIPTION; +import static org.jreleaser.model.api.packagers.MacportsPackager.APP_NAME; +import static org.jreleaser.mustache.MustacheUtils.passThrough; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_VERSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL; -import static org.jreleaser.util.Constants.KEY_MACPORTS_APP_NAME; -import static org.jreleaser.util.Constants.KEY_MACPORTS_CATEGORIES; -import static org.jreleaser.util.Constants.KEY_MACPORTS_DISTNAME; -import static org.jreleaser.util.Constants.KEY_MACPORTS_DISTRIBUTION_URL; -import static org.jreleaser.util.Constants.KEY_MACPORTS_JAVA_VERSION; -import static org.jreleaser.util.Constants.KEY_MACPORTS_MAINTAINERS; -import static org.jreleaser.util.Constants.KEY_MACPORTS_PACKAGE_NAME; -import static org.jreleaser.util.Constants.KEY_MACPORTS_REPOSITORY_REPO_CLONE_URL; -import static org.jreleaser.util.Constants.KEY_MACPORTS_REPOSITORY_REPO_URL; -import static org.jreleaser.util.Constants.KEY_MACPORTS_REVISION; -import static org.jreleaser.util.Constants.KEY_PROJECT_LONG_DESCRIPTION; -import static org.jreleaser.util.MustacheUtils.passThrough; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.9.0 */ -public class MacportsPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class MacportsPackagerProcessor extends AbstractRepositoryPackagerProcessor { private static final String LINE_SEPARATOR = " \\\n "; public MacportsPackagerProcessor(JReleaserContext context) { @@ -69,12 +69,12 @@ protected void doPackageDistribution(Distribution distribution, Map props, Distribution distribution) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); props.put(KEY_MACPORTS_REPOSITORY_REPO_URL, - gitService.getResolvedRepoUrl(context.getModel(), packager.getRepository().getOwner(), packager.getRepository().getResolvedName())); + releaser.getResolvedRepoUrl(context.getModel(), packager.getRepository().getOwner(), packager.getRepository().getResolvedName())); props.put(KEY_MACPORTS_REPOSITORY_REPO_CLONE_URL, - gitService.getResolvedRepoCloneUrl(context.getModel(), packager.getRepository().getOwner(), packager.getRepository().getResolvedName())); + releaser.getResolvedRepoCloneUrl(context.getModel(), packager.getRepository().getOwner(), packager.getRepository().getResolvedName())); List longDescription = Arrays.asList(context.getModel().getProject().getLongDescription().split("\\n")); @@ -83,7 +83,7 @@ protected void fillPackagerProperties(Map props, Distribution di props.put(KEY_MACPORTS_CATEGORIES, String.join(" ", packager.getCategories())); props.put(KEY_MACPORTS_MAINTAINERS, passThrough(String.join(LINE_SEPARATOR, packager.getResolvedMaintainers(context)))); props.put(KEY_PROJECT_LONG_DESCRIPTION, passThrough(String.join(LINE_SEPARATOR, longDescription))); - if (distribution.getType() == Distribution.DistributionType.JAVA_BINARY) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY) { props.put(KEY_MACPORTS_JAVA_VERSION, resolveJavaVersion(distribution)); } if (packager.getExtraProperties().containsKey(APP_NAME)) { diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessorFactory.java similarity index 77% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessorFactory.java index 29f533746..d37f5f380 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/MacportsPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Macports; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.MacportsPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.9.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class MacportsPackagerProcessorFactory implements PackagerProcessorFactory { +public class MacportsPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Macports.TYPE; + return org.jreleaser.model.api.packagers.MacportsPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessor.java similarity index 67% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessor.java index 1368781c6..fd33eec52 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessor.java @@ -17,41 +17,41 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.Scoop; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.ScoopPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import java.nio.file.Path; import java.util.LinkedHashMap; import java.util.Map; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_PROJECT_EFFECTIVE_VERSION; +import static org.jreleaser.model.Constants.KEY_PROJECT_VERSION; +import static org.jreleaser.model.Constants.KEY_SCOOP_AUTOUPDATE_EXTRACT_DIR; +import static org.jreleaser.model.Constants.KEY_SCOOP_AUTOUPDATE_URL; +import static org.jreleaser.model.Constants.KEY_SCOOP_BUCKET_REPO_CLONE_URL; +import static org.jreleaser.model.Constants.KEY_SCOOP_BUCKET_REPO_URL; +import static org.jreleaser.model.Constants.KEY_SCOOP_CHECKVER_URL; +import static org.jreleaser.model.Constants.KEY_SCOOP_PACKAGE_NAME; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_PROJECT_EFFECTIVE_VERSION; -import static org.jreleaser.util.Constants.KEY_PROJECT_VERSION; -import static org.jreleaser.util.Constants.KEY_SCOOP_AUTOUPDATE_EXTRACT_DIR; -import static org.jreleaser.util.Constants.KEY_SCOOP_AUTOUPDATE_URL; -import static org.jreleaser.util.Constants.KEY_SCOOP_BUCKET_REPO_CLONE_URL; -import static org.jreleaser.util.Constants.KEY_SCOOP_BUCKET_REPO_URL; -import static org.jreleaser.util.Constants.KEY_SCOOP_CHECKVER_URL; -import static org.jreleaser.util.Constants.KEY_SCOOP_PACKAGE_NAME; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class ScoopPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class ScoopPackagerProcessor extends AbstractRepositoryPackagerProcessor { public ScoopPackagerProcessor(JReleaserContext context) { super(context); } @@ -64,12 +64,12 @@ protected void doPackageDistribution(Distribution distribution, Map props, Distribution distribution) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); props.put(KEY_SCOOP_BUCKET_REPO_URL, - gitService.getResolvedRepoUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName())); + releaser.getResolvedRepoUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName())); props.put(KEY_SCOOP_BUCKET_REPO_CLONE_URL, - gitService.getResolvedRepoCloneUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName())); + releaser.getResolvedRepoCloneUrl(context.getModel(), packager.getBucket().getOwner(), packager.getBucket().getResolvedName())); props.put(KEY_SCOOP_PACKAGE_NAME, packager.getPackageName()); props.put(KEY_SCOOP_CHECKVER_URL, resolveCheckverUrl(props)); @@ -90,7 +90,7 @@ private Object resolveAutoupdateUrl(Map props, Distribution dist String url = getPackager().getAutoupdateUrl(); if (isBlank(url)) { Artifact artifact = (Artifact) props.get(KEY_DISTRIBUTION_ARTIFACT); - url = Artifacts.resolveDownloadUrl(context, Scoop.TYPE, distribution, artifact); + url = Artifacts.resolveDownloadUrl(context, org.jreleaser.model.api.packagers.ScoopPackager.TYPE, distribution, artifact); } String artifactFile = (String) props.get(KEY_DISTRIBUTION_ARTIFACT_FILE); diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessorFactory.java index dc8bac480..a81be8149 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/ScoopPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Scoop; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.ScoopPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.1.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class ScoopPackagerProcessorFactory implements PackagerProcessorFactory { +public class ScoopPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Scoop.TYPE; + return org.jreleaser.model.api.packagers.ScoopPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java similarity index 87% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java index 5c73e7360..4b10acb57 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java @@ -18,11 +18,11 @@ package org.jreleaser.packagers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Sdkman; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.model.util.SdkmanHelper; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.SdkmanPackager; +import org.jreleaser.model.internal.util.SdkmanHelper; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import org.jreleaser.sdk.sdkman.MajorReleaseSdkmanCommand; import org.jreleaser.sdk.sdkman.MinorReleaseSdkmanCommand; import org.jreleaser.sdk.sdkman.SdkmanException; @@ -30,16 +30,16 @@ import java.util.LinkedHashMap; import java.util.Map; -import static org.jreleaser.util.Constants.KEY_SDKMAN_CANDIDATE; -import static org.jreleaser.util.Constants.KEY_SDKMAN_RELEASE_NOTES_URL; +import static org.jreleaser.model.Constants.KEY_SDKMAN_CANDIDATE; +import static org.jreleaser.model.Constants.KEY_SDKMAN_RELEASE_NOTES_URL; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.6.0 */ -public class SdkmanPackagerProcessor extends AbstractPackagerProcessor { +public class SdkmanPackagerProcessor extends AbstractPackagerProcessor { public SdkmanPackagerProcessor(JReleaserContext context) { super(context); } @@ -56,7 +56,7 @@ protected void doPackageDistribution(Distribution distribution, Map props) throws PackagerProcessingException { - org.jreleaser.model.Sdkman sdkman = distribution.getSdkman(); + SdkmanPackager sdkman = distribution.getSdkman(); Map platforms = new LinkedHashMap<>(); // collect artifacts by supported SDKMAN! platform @@ -101,7 +101,7 @@ protected void doPublishDistribution(Distribution distribution, Map sdkman.setPublished(true)); + sdkman.setPublished(true); } catch (SdkmanException e) { throw new PackagerProcessingException(e); } diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessorFactory.java index 890e1337d..2af8378bb 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Sdkman; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.SdkmanPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.6.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class SdkmanPackagerProcessorFactory implements PackagerProcessorFactory { +public class SdkmanPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Sdkman.TYPE; + return org.jreleaser.model.api.packagers.SdkmanPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SnapPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SnapPackagerProcessor.java similarity index 73% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SnapPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SnapPackagerProcessor.java index abd0cc936..128ceef96 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SnapPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SnapPackagerProcessor.java @@ -18,47 +18,47 @@ package org.jreleaser.packagers; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.Snap; -import org.jreleaser.model.packager.spi.PackagerProcessingException; -import org.jreleaser.util.MustacheUtils; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.SnapPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; +import org.jreleaser.mustache.MustacheUtils; +import org.jreleaser.sdk.command.Command; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.command.Command; import java.nio.file.Path; import java.util.Arrays; import java.util.Map; import java.util.stream.Collectors; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; +import static org.jreleaser.model.Constants.KEY_PROJECT_EFFECTIVE_VERSION; +import static org.jreleaser.model.Constants.KEY_PROJECT_LONG_DESCRIPTION; +import static org.jreleaser.model.Constants.KEY_SNAP_ARCHITECTURES; +import static org.jreleaser.model.Constants.KEY_SNAP_BASE; +import static org.jreleaser.model.Constants.KEY_SNAP_CONFINEMENT; +import static org.jreleaser.model.Constants.KEY_SNAP_GRADE; +import static org.jreleaser.model.Constants.KEY_SNAP_HAS_ARCHITECTURES; +import static org.jreleaser.model.Constants.KEY_SNAP_HAS_LOCAL_PLUGS; +import static org.jreleaser.model.Constants.KEY_SNAP_HAS_LOCAL_SLOTS; +import static org.jreleaser.model.Constants.KEY_SNAP_HAS_PLUGS; +import static org.jreleaser.model.Constants.KEY_SNAP_HAS_SLOTS; +import static org.jreleaser.model.Constants.KEY_SNAP_LOCAL_PLUGS; +import static org.jreleaser.model.Constants.KEY_SNAP_LOCAL_SLOTS; +import static org.jreleaser.model.Constants.KEY_SNAP_PACKAGE_NAME; +import static org.jreleaser.model.Constants.KEY_SNAP_PLUGS; +import static org.jreleaser.model.Constants.KEY_SNAP_REPO_CLONE_URL; +import static org.jreleaser.model.Constants.KEY_SNAP_REPO_URL; +import static org.jreleaser.model.Constants.KEY_SNAP_SLOTS; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY; -import static org.jreleaser.util.Constants.KEY_PROJECT_EFFECTIVE_VERSION; -import static org.jreleaser.util.Constants.KEY_PROJECT_LONG_DESCRIPTION; -import static org.jreleaser.util.Constants.KEY_SNAP_ARCHITECTURES; -import static org.jreleaser.util.Constants.KEY_SNAP_BASE; -import static org.jreleaser.util.Constants.KEY_SNAP_CONFINEMENT; -import static org.jreleaser.util.Constants.KEY_SNAP_GRADE; -import static org.jreleaser.util.Constants.KEY_SNAP_HAS_ARCHITECTURES; -import static org.jreleaser.util.Constants.KEY_SNAP_HAS_LOCAL_PLUGS; -import static org.jreleaser.util.Constants.KEY_SNAP_HAS_LOCAL_SLOTS; -import static org.jreleaser.util.Constants.KEY_SNAP_HAS_PLUGS; -import static org.jreleaser.util.Constants.KEY_SNAP_HAS_SLOTS; -import static org.jreleaser.util.Constants.KEY_SNAP_LOCAL_PLUGS; -import static org.jreleaser.util.Constants.KEY_SNAP_LOCAL_SLOTS; -import static org.jreleaser.util.Constants.KEY_SNAP_PACKAGE_NAME; -import static org.jreleaser.util.Constants.KEY_SNAP_PLUGS; -import static org.jreleaser.util.Constants.KEY_SNAP_REPO_CLONE_URL; -import static org.jreleaser.util.Constants.KEY_SNAP_REPO_URL; -import static org.jreleaser.util.Constants.KEY_SNAP_SLOTS; /** * @author Andres Almiray * @since 0.1.0 */ -public class SnapPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class SnapPackagerProcessor extends AbstractRepositoryPackagerProcessor { public SnapPackagerProcessor(JReleaserContext context) { super(context); } @@ -103,7 +103,7 @@ protected void doPublishDistribution(Distribution distribution, Map props, Distribution distribution) throws PackagerProcessingException { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); String desc = context.getModel().getProject().getLongDescription(); desc = Arrays.stream(desc.split(System.lineSeparator())) @@ -113,9 +113,9 @@ protected void fillPackagerProperties(Map props, Distribution di MustacheUtils.passThrough("|" + System.lineSeparator() + desc)); props.put(KEY_SNAP_REPO_URL, - gitService.getResolvedRepoUrl(context.getModel(), packager.getSnap().getOwner(), packager.getSnap().getResolvedName())); + releaser.getResolvedRepoUrl(context.getModel(), packager.getSnap().getOwner(), packager.getSnap().getResolvedName())); props.put(KEY_SNAP_REPO_CLONE_URL, - gitService.getResolvedRepoCloneUrl(context.getModel(), packager.getSnap().getOwner(), packager.getSnap().getResolvedName())); + releaser.getResolvedRepoCloneUrl(context.getModel(), packager.getSnap().getOwner(), packager.getSnap().getResolvedName())); props.put(KEY_SNAP_PACKAGE_NAME, packager.getPackageName()); props.put(KEY_SNAP_BASE, packager.getBase()); diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SnapPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SnapPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SnapPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SnapPackagerProcessorFactory.java index 606565d36..63b0d288a 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SnapPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SnapPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Snap; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.SnapPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.1.0 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class SnapPackagerProcessorFactory implements PackagerProcessorFactory { +public class SnapPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Snap.TYPE; + return org.jreleaser.model.api.packagers.SnapPackager.TYPE; } @Override diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SpecPackagerProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SpecPackagerProcessor.java similarity index 83% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SpecPackagerProcessor.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SpecPackagerProcessor.java index c924b72e5..b423d5a7b 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SpecPackagerProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SpecPackagerProcessor.java @@ -17,12 +17,12 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.Spec; -import org.jreleaser.model.packager.spi.PackagerProcessingException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.SpecPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.spi.packagers.PackagerProcessingException; import org.jreleaser.util.FileUtils; import java.io.IOException; @@ -33,22 +33,22 @@ import java.util.Map; import java.util.Set; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT; +import static org.jreleaser.model.Constants.KEY_PROJECT_VERSION; +import static org.jreleaser.model.Constants.KEY_SPEC_BINARIES; +import static org.jreleaser.model.Constants.KEY_SPEC_DIRECTORIES; +import static org.jreleaser.model.Constants.KEY_SPEC_FILES; +import static org.jreleaser.model.Constants.KEY_SPEC_PACKAGE_NAME; +import static org.jreleaser.model.Constants.KEY_SPEC_RELEASE; +import static org.jreleaser.model.Constants.KEY_SPEC_REQUIRES; import static org.jreleaser.templates.TemplateUtils.trimTplExtension; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT; -import static org.jreleaser.util.Constants.KEY_PROJECT_VERSION; -import static org.jreleaser.util.Constants.KEY_SPEC_BINARIES; -import static org.jreleaser.util.Constants.KEY_SPEC_DIRECTORIES; -import static org.jreleaser.util.Constants.KEY_SPEC_FILES; -import static org.jreleaser.util.Constants.KEY_SPEC_PACKAGE_NAME; -import static org.jreleaser.util.Constants.KEY_SPEC_RELEASE; -import static org.jreleaser.util.Constants.KEY_SPEC_REQUIRES; import static org.jreleaser.util.StringUtils.getFilename; /** * @author Andres Almiray * @since 0.9.1 */ -public class SpecPackagerProcessor extends AbstractRepositoryPackagerProcessor { +public class SpecPackagerProcessor extends AbstractRepositoryPackagerProcessor { public SpecPackagerProcessor(JReleaserContext context) { super(context); } @@ -62,7 +62,7 @@ protected void doPrepareDistribution(Distribution distribution, Map props) throws PackagerProcessingException { Artifact artifact = (Artifact) props.get(KEY_DISTRIBUTION_ARTIFACT); Path artifactPath = artifact.getResolvedPath(context, distribution); - String artifactFileName = getFilename(artifactPath.getFileName().toString(), packager.getSupportedExtensions(distribution)); + String artifactFileName = getFilename(artifactPath.getFileName().toString(), packager.getSupportedFileExtensions(distribution.getType())); try { List entries = FileUtils.inspectArchive(artifactPath); diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SpecPackagerProcessorFactory.java b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SpecPackagerProcessorFactory.java similarity index 78% rename from core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SpecPackagerProcessorFactory.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SpecPackagerProcessorFactory.java index 6d13ca7fc..371404918 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/packagers/SpecPackagerProcessorFactory.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SpecPackagerProcessorFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.packagers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Spec; -import org.jreleaser.model.packager.spi.PackagerProcessorFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.SpecPackager; +import org.jreleaser.model.spi.packagers.PackagerProcessorFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.9.1 */ @ServiceProviderFor(PackagerProcessorFactory.class) -public class SpecPackagerProcessorFactory implements PackagerProcessorFactory { +public class SpecPackagerProcessorFactory implements PackagerProcessorFactory { @Override public String getName() { - return Spec.TYPE; + return org.jreleaser.model.api.packagers.SpecPackager.TYPE; } @Override diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AbstractWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AbstractWorkflowItem.java similarity index 92% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AbstractWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AbstractWorkflowItem.java index fb12e97cc..62e461d3c 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AbstractWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AbstractWorkflowItem.java @@ -18,8 +18,8 @@ package org.jreleaser.workflow; import org.jreleaser.engine.hooks.CommandHookExecutor; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AnnounceWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AnnounceWorkflowItem.java similarity index 85% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AnnounceWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AnnounceWorkflowItem.java index f1a481e2d..6b0e15a3d 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AnnounceWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AnnounceWorkflowItem.java @@ -19,10 +19,10 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.announce.Announcers; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AssembleWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AssembleWorkflowItem.java similarity index 91% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AssembleWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AssembleWorkflowItem.java index eac4c6b13..c275c0d99 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/AssembleWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/AssembleWorkflowItem.java @@ -18,8 +18,8 @@ package org.jreleaser.workflow; import org.jreleaser.engine.assemble.Assemblers; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ChangelogWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ChangelogWorkflowItem.java similarity index 91% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ChangelogWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ChangelogWorkflowItem.java index aa7c1e825..5e6310358 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ChangelogWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ChangelogWorkflowItem.java @@ -18,8 +18,8 @@ package org.jreleaser.workflow; import org.jreleaser.engine.changelog.Changelog; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ChecksumWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ChecksumWorkflowItem.java similarity index 91% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ChecksumWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ChecksumWorkflowItem.java index cfa2cd9d8..51b2ae235 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ChecksumWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ChecksumWorkflowItem.java @@ -18,8 +18,8 @@ package org.jreleaser.workflow; import org.jreleaser.engine.checksum.Checksum; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/DownloadWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/DownloadWorkflowItem.java similarity index 91% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/DownloadWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/DownloadWorkflowItem.java index 5fb81ffa4..fded61ff8 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/DownloadWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/DownloadWorkflowItem.java @@ -18,8 +18,8 @@ package org.jreleaser.workflow; import org.jreleaser.engine.download.Downloaders; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PackageWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PackageWorkflowItem.java similarity index 92% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PackageWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PackageWorkflowItem.java index d0769b333..084800959 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PackageWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PackageWorkflowItem.java @@ -20,8 +20,8 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.distribution.DistributionProcessor; import org.jreleaser.engine.distribution.Distributions; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PrepareWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PrepareWorkflowItem.java similarity index 92% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PrepareWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PrepareWorkflowItem.java index 3260864af..4c4b04748 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PrepareWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PrepareWorkflowItem.java @@ -20,8 +20,8 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.distribution.DistributionProcessor; import org.jreleaser.engine.distribution.Distributions; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PublishWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PublishWorkflowItem.java similarity index 92% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PublishWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PublishWorkflowItem.java index 26e33be28..a362c5185 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/PublishWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/PublishWorkflowItem.java @@ -20,8 +20,8 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.distribution.DistributionProcessor; import org.jreleaser.engine.distribution.Distributions; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ReleaseWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ReleaseWorkflowItem.java similarity index 85% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ReleaseWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ReleaseWorkflowItem.java index 2d9c03315..7c5e68714 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/ReleaseWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/ReleaseWorkflowItem.java @@ -19,10 +19,10 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.release.Releasers; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.releaser.spi.ReleaseException; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.release.ReleaseException; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/SignWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/SignWorkflowItem.java similarity index 85% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/SignWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/SignWorkflowItem.java index fe9198247..161abfc04 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/SignWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/SignWorkflowItem.java @@ -19,10 +19,10 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.sign.Signer; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.util.JReleaserException; -import org.jreleaser.util.signing.SigningException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.sdk.signing.SigningException; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/UploadWorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/UploadWorkflowItem.java similarity index 90% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/UploadWorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/UploadWorkflowItem.java index 59d1b8ec3..741b287b2 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/UploadWorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/UploadWorkflowItem.java @@ -18,8 +18,8 @@ package org.jreleaser.workflow; import org.jreleaser.engine.upload.Uploaders; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/Workflow.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/Workflow.java similarity index 100% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/Workflow.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/Workflow.java diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/WorkflowImpl.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/WorkflowImpl.java similarity index 98% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/WorkflowImpl.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/WorkflowImpl.java index 0c6e87499..44aa27d01 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/WorkflowImpl.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/WorkflowImpl.java @@ -19,7 +19,7 @@ import org.jreleaser.bundle.RB; import org.jreleaser.engine.context.ModelValidator; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import java.time.Duration; import java.time.Instant; diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/WorkflowItem.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/WorkflowItem.java similarity index 93% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/WorkflowItem.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/WorkflowItem.java index ace10d616..5e2bf6bfd 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/WorkflowItem.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/WorkflowItem.java @@ -17,7 +17,7 @@ */ package org.jreleaser.workflow; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/Workflows.java b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/Workflows.java similarity index 96% rename from core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/Workflows.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/workflow/Workflows.java index b2b6daaac..3c22ba310 100644 --- a/core/jreleaser-workflow/src/main/java/org/jreleaser/workflow/Workflows.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/workflow/Workflows.java @@ -17,8 +17,8 @@ */ package org.jreleaser.workflow; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; @@ -27,7 +27,6 @@ * @author Andres Almiray * @since 0.1.0 */ -@org.jreleaser.infra.nativeimage.annotations.NativeImage public class Workflows { public static Workflow download(JReleaserContext context) { context.setCommand(JReleaserCommand.DOWNLOAD); diff --git a/core/jreleaser-extensions-impl/jreleaser-extensions-impl.gradle b/core/jreleaser-extensions-impl/jreleaser-extensions-impl.gradle index 3f537fbe0..c3b75885f 100644 --- a/core/jreleaser-extensions-impl/jreleaser-extensions-impl.gradle +++ b/core/jreleaser-extensions-impl/jreleaser-extensions-impl.gradle @@ -22,4 +22,6 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api "org.commonmark:commonmark:$commonmarkVersion" } \ No newline at end of file diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/extensions/DefaultMustacheExtension.java b/core/jreleaser-extensions-impl/src/main/java/org/jreleaser/extensions/impl/mustache/DefaultMustacheExtension.java similarity index 96% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/extensions/DefaultMustacheExtension.java rename to core/jreleaser-extensions-impl/src/main/java/org/jreleaser/extensions/impl/mustache/DefaultMustacheExtension.java index 4799ec6b1..4620b97fc 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/extensions/DefaultMustacheExtension.java +++ b/core/jreleaser-extensions-impl/src/main/java/org/jreleaser/extensions/impl/mustache/DefaultMustacheExtension.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.extensions; +package org.jreleaser.extensions.impl.mustache; import org.jreleaser.extensions.api.Extension; import org.jreleaser.extensions.api.ExtensionPoint; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/extensions/DefaultMustacheExtensionPoint.java b/core/jreleaser-extensions-impl/src/main/java/org/jreleaser/extensions/impl/mustache/DefaultMustacheExtensionPoint.java similarity index 98% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/extensions/DefaultMustacheExtensionPoint.java rename to core/jreleaser-extensions-impl/src/main/java/org/jreleaser/extensions/impl/mustache/DefaultMustacheExtensionPoint.java index 303a87d50..a9d997780 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/extensions/DefaultMustacheExtensionPoint.java +++ b/core/jreleaser-extensions-impl/src/main/java/org/jreleaser/extensions/impl/mustache/DefaultMustacheExtensionPoint.java @@ -15,15 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.extensions; +package org.jreleaser.extensions.impl.mustache; import org.commonmark.node.Node; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; import org.jreleaser.bundle.RB; import org.jreleaser.extensions.api.mustache.MustacheExtensionPoint; +import org.jreleaser.model.Constants; import org.jreleaser.util.Algorithm; -import org.jreleaser.util.Constants; import org.jreleaser.util.StringUtils; import java.io.File; diff --git a/core/jreleaser-tools/gradle.properties b/core/jreleaser-model-impl/gradle.properties similarity index 92% rename from core/jreleaser-tools/gradle.properties rename to core/jreleaser-model-impl/gradle.properties index 1e00961b4..ec7687365 100644 --- a/core/jreleaser-tools/gradle.properties +++ b/core/jreleaser-model-impl/gradle.properties @@ -16,4 +16,4 @@ # limitations under the License. # -project_description = JReleaser Tools \ No newline at end of file +project_description = JReleaser Model implementation \ No newline at end of file diff --git a/core/jreleaser-model-impl/jreleaser-model-impl.gradle b/core/jreleaser-model-impl/jreleaser-model-impl.gradle new file mode 100644 index 000000000..cb290fc75 --- /dev/null +++ b/core/jreleaser-model-impl/jreleaser-model-impl.gradle @@ -0,0 +1,22 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + api project(':jreleaser-mustache') + api project(':jreleaser-model-api') + api project(':jreleaser-signing-java-sdk') +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/config/JReleaserConfigLoader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/config/JReleaserConfigLoader.java similarity index 97% rename from core/jreleaser-model/src/main/java/org/jreleaser/config/JReleaserConfigLoader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/config/JReleaserConfigLoader.java index a128f9642..8afc2f48a 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/config/JReleaserConfigLoader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/config/JReleaserConfigLoader.java @@ -18,8 +18,8 @@ package org.jreleaser.config; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserModel; import java.io.IOException; import java.io.InputStream; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/config/JReleaserConfigParser.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/config/JReleaserConfigParser.java similarity index 98% rename from core/jreleaser-model/src/main/java/org/jreleaser/config/JReleaserConfigParser.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/config/JReleaserConfigParser.java index 2dde74259..e89a98952 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/config/JReleaserConfigParser.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/config/JReleaserConfigParser.java @@ -17,7 +17,7 @@ */ package org.jreleaser.config; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.internal.JReleaserModel; import java.io.IOException; import java.io.InputStream; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserContext.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserContext.java similarity index 68% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserContext.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserContext.java index 3b90c49cf..8bcf6c6f6 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserContext.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserContext.java @@ -15,22 +15,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal; import org.bouncycastle.openpgp.PGPException; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.releaser.spi.Releaser; -import org.jreleaser.util.Constants; +import org.jreleaser.model.Constants; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.JReleaserVersion; +import org.jreleaser.model.Signing; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.internal.assemble.JavaAssembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.spi.release.Releaser; +import org.jreleaser.sdk.signing.FilesKeyring; +import org.jreleaser.sdk.signing.InMemoryKeyring; +import org.jreleaser.sdk.signing.Keyring; +import org.jreleaser.sdk.signing.SigningException; import org.jreleaser.util.Errors; -import org.jreleaser.util.JReleaserException; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; import org.jreleaser.util.StringUtils; -import org.jreleaser.util.signing.FilesKeyring; -import org.jreleaser.util.signing.InMemoryKeyring; -import org.jreleaser.util.signing.Keyring; -import org.jreleaser.util.signing.SigningException; +import org.jreleaser.version.SemanticVersion; import java.io.FileOutputStream; import java.io.IOException; @@ -49,32 +58,33 @@ import java.util.TreeMap; import java.util.stream.Collectors; +import static java.util.Collections.unmodifiableList; +import static org.jreleaser.model.Constants.KEY_COMMIT_FULL_HASH; +import static org.jreleaser.model.Constants.KEY_COMMIT_SHORT_HASH; +import static org.jreleaser.model.Constants.KEY_MILESTONE_NAME; +import static org.jreleaser.model.Constants.KEY_PLATFORM; +import static org.jreleaser.model.Constants.KEY_PLATFORM_REPLACED; +import static org.jreleaser.model.Constants.KEY_PROJECT_NAME; +import static org.jreleaser.model.Constants.KEY_PROJECT_SNAPSHOT; +import static org.jreleaser.model.Constants.KEY_PROJECT_VERSION; +import static org.jreleaser.model.Constants.KEY_RELEASE_NAME; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.KEY_TIMESTAMP; +import static org.jreleaser.model.Constants.KEY_VERSION_BUILD; +import static org.jreleaser.model.Constants.KEY_VERSION_DAY; +import static org.jreleaser.model.Constants.KEY_VERSION_MAJOR; +import static org.jreleaser.model.Constants.KEY_VERSION_MICRO; +import static org.jreleaser.model.Constants.KEY_VERSION_MINOR; +import static org.jreleaser.model.Constants.KEY_VERSION_MODIFIER; +import static org.jreleaser.model.Constants.KEY_VERSION_MONTH; +import static org.jreleaser.model.Constants.KEY_VERSION_NUMBER; +import static org.jreleaser.model.Constants.KEY_VERSION_OPTIONAL; +import static org.jreleaser.model.Constants.KEY_VERSION_PATCH; +import static org.jreleaser.model.Constants.KEY_VERSION_PRERELEASE; +import static org.jreleaser.model.Constants.KEY_VERSION_TAG; +import static org.jreleaser.model.Constants.KEY_VERSION_WEEK; +import static org.jreleaser.model.Constants.KEY_VERSION_YEAR; import static org.jreleaser.util.CollectionUtils.safePut; -import static org.jreleaser.util.Constants.KEY_COMMIT_FULL_HASH; -import static org.jreleaser.util.Constants.KEY_COMMIT_SHORT_HASH; -import static org.jreleaser.util.Constants.KEY_MILESTONE_NAME; -import static org.jreleaser.util.Constants.KEY_PLATFORM; -import static org.jreleaser.util.Constants.KEY_PLATFORM_REPLACED; -import static org.jreleaser.util.Constants.KEY_PROJECT_NAME; -import static org.jreleaser.util.Constants.KEY_PROJECT_SNAPSHOT; -import static org.jreleaser.util.Constants.KEY_PROJECT_VERSION; -import static org.jreleaser.util.Constants.KEY_RELEASE_NAME; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.KEY_TIMESTAMP; -import static org.jreleaser.util.Constants.KEY_VERSION_BUILD; -import static org.jreleaser.util.Constants.KEY_VERSION_DAY; -import static org.jreleaser.util.Constants.KEY_VERSION_MAJOR; -import static org.jreleaser.util.Constants.KEY_VERSION_MICRO; -import static org.jreleaser.util.Constants.KEY_VERSION_MINOR; -import static org.jreleaser.util.Constants.KEY_VERSION_MODIFIER; -import static org.jreleaser.util.Constants.KEY_VERSION_MONTH; -import static org.jreleaser.util.Constants.KEY_VERSION_NUMBER; -import static org.jreleaser.util.Constants.KEY_VERSION_OPTIONAL; -import static org.jreleaser.util.Constants.KEY_VERSION_PATCH; -import static org.jreleaser.util.Constants.KEY_VERSION_PRERELEASE; -import static org.jreleaser.util.Constants.KEY_VERSION_TAG; -import static org.jreleaser.util.Constants.KEY_VERSION_WEEK; -import static org.jreleaser.util.Constants.KEY_VERSION_YEAR; import static org.jreleaser.util.StringUtils.capitalize; import static org.jreleaser.util.StringUtils.isBlank; @@ -89,9 +99,10 @@ public class JReleaserContext { private final Path outputDirectory; private final boolean dryrun; private final boolean gitRootSearch; - private final Mode mode; + private final org.jreleaser.model.api.JReleaserContext.Mode mode; private final Configurer configurer; private final Errors errors = new Errors(); + private final List selectedPlatforms = new ArrayList<>(); private final List includedAnnouncers = new ArrayList<>(); private final List includedAssemblers = new ArrayList<>(); @@ -113,11 +124,192 @@ public class JReleaserContext { private String changelog; private Releaser releaser; private JReleaserCommand command; - private boolean frozen; + + private final org.jreleaser.model.api.JReleaserContext immutable = new org.jreleaser.model.api.JReleaserContext() { + @Override + public Path relativize(Path basedir, Path other) { + return JReleaserContext.this.relativize(basedir, other); + } + + @Override + public Path relativizeToBasedir(Path other) { + return JReleaserContext.this.relativizeToBasedir(other); + } + + @Override + public JReleaserLogger getLogger() { + return logger; + } + + @Override + public Mode getMode() { + return mode; + } + + @Override + public org.jreleaser.model.api.JReleaserModel getModel() { + return model.asImmutable(); + } + + @Override + public Path getBasedir() { + return JReleaserContext.this.getBasedir(); + } + + @Override + public Path getOutputDirectory() { + return JReleaserContext.this.getOutputDirectory(); + } + + @Override + public Path getChecksumsDirectory() { + return JReleaserContext.this.getChecksumsDirectory(); + } + + @Override + public Path getSignaturesDirectory() { + return JReleaserContext.this.getSignaturesDirectory(); + } + + @Override + public Path getPrepareDirectory() { + return JReleaserContext.this.getPrepareDirectory(); + } + + @Override + public Path getPackageDirectory() { + return JReleaserContext.this.getPackageDirectory(); + } + + @Override + public Path getAssembleDirectory() { + return JReleaserContext.this.getAssembleDirectory(); + } + + @Override + public Path getDownloadDirectory() { + return JReleaserContext.this.getDownloadDirectory(); + } + + @Override + public Path getArtifactsDirectory() { + return JReleaserContext.this.getArtifactsDirectory(); + } + + @Override + public boolean isDryrun() { + return JReleaserContext.this.isDryrun(); + } + + @Override + public boolean isGitRootSearch() { + return JReleaserContext.this.isGitRootSearch(); + } + + @Override + public List getIncludedAnnouncers() { + return unmodifiableList(JReleaserContext.this.getIncludedAnnouncers()); + } + + @Override + public List getIncludedAssemblers() { + return unmodifiableList(JReleaserContext.this.getIncludedAssemblers()); + } + + @Override + public List getIncludedDistributions() { + return unmodifiableList(JReleaserContext.this.getIncludedDistributions()); + } + + @Override + public List getIncludedPackagers() { + return unmodifiableList(JReleaserContext.this.getIncludedPackagers()); + } + + @Override + public List getIncludedDownloaderTypes() { + return unmodifiableList(JReleaserContext.this.getIncludedDownloaderTypes()); + } + + @Override + public List getIncludedDownloaderNames() { + return unmodifiableList(JReleaserContext.this.getIncludedDownloaderNames()); + } + + @Override + public List getIncludedUploaderTypes() { + return unmodifiableList(JReleaserContext.this.getIncludedUploaderTypes()); + } + + @Override + public List getIncludedUploaderNames() { + return unmodifiableList(JReleaserContext.this.getIncludedUploaderNames()); + } + + @Override + public List getExcludedAnnouncers() { + return unmodifiableList(JReleaserContext.this.getExcludedAnnouncers()); + } + + @Override + public List getExcludedAssemblers() { + return unmodifiableList(JReleaserContext.this.getExcludedAssemblers()); + } + + @Override + public List getExcludedDistributions() { + return unmodifiableList(JReleaserContext.this.getExcludedDistributions()); + } + + @Override + public List getExcludedPackagers() { + return unmodifiableList(JReleaserContext.this.getExcludedPackagers()); + } + + @Override + public List getExcludedDownloaderTypes() { + return unmodifiableList(JReleaserContext.this.getExcludedDownloaderTypes()); + } + + @Override + public List getExcludedDownloaderNames() { + return unmodifiableList(JReleaserContext.this.getExcludedDownloaderNames()); + } + + @Override + public List getExcludedUploaderTypes() { + return unmodifiableList(JReleaserContext.this.getExcludedUploaderTypes()); + } + + @Override + public List getExcludedUploaderNames() { + return unmodifiableList(JReleaserContext.this.getExcludedUploaderNames()); + } + + @Override + public JReleaserCommand getCommand() { + return JReleaserContext.this.getCommand(); + } + + @Override + public Map props() { + return JReleaserContext.this.props(); + } + + @Override + public Map fullProps() { + return JReleaserContext.this.fullProps(); + } + + @Override + public void nag(String version, String message) { + JReleaserContext.this.nag(version, message); + } + }; public JReleaserContext(JReleaserLogger logger, Configurer configurer, - Mode mode, + org.jreleaser.model.api.JReleaserContext.Mode mode, JReleaserModel model, Path basedir, Path outputDirectory, @@ -138,16 +330,16 @@ public JReleaserContext(JReleaserLogger logger, try { logger.increaseIndent(); - logger.debug("- " + Constants.KEY_BASEDIR + " set to " + getBasedir()); - logger.debug("- " + Constants.KEY_BASE_OUTPUT_DIRECTORY + " set to " + getOutputDirectory().getParent()); - logger.debug("- " + Constants.KEY_OUTPUT_DIRECTORY + " set to " + getOutputDirectory()); - logger.debug("- " + Constants.KEY_CHECKSUMS_DIRECTORY + " set to " + getChecksumsDirectory()); - logger.debug("- " + Constants.KEY_SIGNATURES_DIRECTORY + " set to " + getSignaturesDirectory()); - logger.debug("- " + Constants.KEY_PREPARE_DIRECTORY + " set to " + getPrepareDirectory()); - logger.debug("- " + Constants.KEY_PACKAGE_DIRECTORY + " set to " + getPackageDirectory()); - logger.debug("- " + Constants.KEY_DOWNLOAD_DIRECTORY + " set to " + getDownloadDirectory()); - logger.debug("- " + Constants.KEY_ASSEMBLE_DIRECTORY + " set to " + getAssembleDirectory()); - logger.debug("- " + Constants.KEY_ARTIFACTS_DIRECTORY + " set to " + getArtifactsDirectory()); + logger.debug(RB.$("context.path.set", Constants.KEY_BASEDIR, getBasedir())); + logger.debug(RB.$("context.path.set", Constants.KEY_BASE_OUTPUT_DIRECTORY, getOutputDirectory().getParent())); + logger.debug(RB.$("context.path.set", Constants.KEY_OUTPUT_DIRECTORY, getOutputDirectory())); + logger.debug(RB.$("context.path.set", Constants.KEY_CHECKSUMS_DIRECTORY, getChecksumsDirectory())); + logger.debug(RB.$("context.path.set", Constants.KEY_SIGNATURES_DIRECTORY, getSignaturesDirectory())); + logger.debug(RB.$("context.path.set", Constants.KEY_PREPARE_DIRECTORY, getPrepareDirectory())); + logger.debug(RB.$("context.path.set", Constants.KEY_PACKAGE_DIRECTORY, getPackageDirectory())); + logger.debug(RB.$("context.path.set", Constants.KEY_DOWNLOAD_DIRECTORY, getDownloadDirectory())); + logger.debug(RB.$("context.path.set", Constants.KEY_ASSEMBLE_DIRECTORY, getAssembleDirectory())); + logger.debug(RB.$("context.path.set", Constants.KEY_ARTIFACTS_DIRECTORY, getArtifactsDirectory())); } finally { logger.decreaseIndent(); } @@ -169,17 +361,8 @@ public JReleaserContext(JReleaserLogger logger, } } - public void freeze() { - frozen = true; - model.freeze(); - } - - private void freezeCheck() { - if (frozen) throw new UnsupportedOperationException(); - } - - private List freezeWrap(List list) { - return frozen ? Collections.unmodifiableList(list) : list; + public org.jreleaser.model.api.JReleaserContext asImmutable() { + return immutable; } public Path relativize(Path basedir, Path other) { @@ -225,7 +408,7 @@ private void adjustDistributions() { // resolve assemblers try { - JReleaserModelValidator.validate(this, Mode.ASSEMBLE, errors); + JReleaserModelValidator.validate(this, org.jreleaser.model.api.JReleaserContext.Mode.ASSEMBLE, errors); JReleaserModelResolver.resolve(this, errors); } catch (Exception e) { logger.trace(e); @@ -299,7 +482,7 @@ public Configurer getConfigurer() { return configurer; } - public Mode getMode() { + public org.jreleaser.model.api.JReleaserContext.Mode getMode() { return mode; } @@ -364,7 +547,6 @@ public Releaser getReleaser() { } public void setReleaser(Releaser releaser) { - freezeCheck(); this.releaser = releaser; } @@ -384,161 +566,145 @@ private List normalize(List list) { } public List getIncludedAnnouncers() { - return freezeWrap(includedAnnouncers); + return includedAnnouncers; } public void setIncludedAnnouncers(List includedAnnouncers) { - freezeCheck(); this.includedAnnouncers.clear(); this.includedAnnouncers.addAll(normalize(includedAnnouncers)); } public List getIncludedAssemblers() { - return freezeWrap(includedAssemblers); + return includedAssemblers; } public void setIncludedAssemblers(List includedAssemblerTypes) { - freezeCheck(); this.includedAssemblers.clear(); this.includedAssemblers.addAll(normalize(includedAssemblerTypes)); } public List getIncludedDistributions() { - return freezeWrap(includedDistributions); + return includedDistributions; } public void setIncludedDistributions(List includedDistributions) { - freezeCheck(); this.includedDistributions.clear(); this.includedDistributions.addAll(includedDistributions); } public List getIncludedPackagers() { - return freezeWrap(includedPackagers); + return includedPackagers; } public void setIncludedPackagers(List includedPackagers) { - freezeCheck(); this.includedPackagers.clear(); this.includedPackagers.addAll(includedPackagers); } public List getIncludedDownloaderTypes() { - return freezeWrap(includedDownloaderTypes); + return includedDownloaderTypes; } public void setIncludedDownloaderTypes(List includedDownloaderTypes) { - freezeCheck(); this.includedDownloaderTypes.clear(); this.includedDownloaderTypes.addAll(normalize(includedDownloaderTypes)); } public List getIncludedDownloaderNames() { - return freezeWrap(includedDownloaderNames); + return includedDownloaderNames; } public void setIncludedDownloaderNames(List includedDownloaderNames) { - freezeCheck(); this.includedDownloaderNames.clear(); this.includedDownloaderNames.addAll(includedDownloaderNames); } public List getIncludedUploaderTypes() { - return freezeWrap(includedUploaderTypes); + return includedUploaderTypes; } public void setIncludedUploaderTypes(List includedUploaderTypes) { - freezeCheck(); this.includedUploaderTypes.clear(); this.includedUploaderTypes.addAll(normalize(includedUploaderTypes)); } public List getIncludedUploaderNames() { - return freezeWrap(includedUploaderNames); + return includedUploaderNames; } public void setIncludedUploaderNames(List includedUploaderNames) { - freezeCheck(); this.includedUploaderNames.clear(); this.includedUploaderNames.addAll(includedUploaderNames); } public List getExcludedAnnouncers() { - return freezeWrap(excludedAnnouncers); + return excludedAnnouncers; } public void setExcludedAnnouncers(List excludedAnnouncers) { - freezeCheck(); this.excludedAnnouncers.clear(); this.excludedAnnouncers.addAll(normalize(excludedAnnouncers)); } public List getExcludedAssemblers() { - return freezeWrap(excludedAssemblers); + return excludedAssemblers; } public void setExcludedAssemblers(List excludedAssemblerTypes) { - freezeCheck(); this.excludedAssemblers.clear(); this.excludedAssemblers.addAll(normalize(excludedAssemblerTypes)); } public List getExcludedDistributions() { - return freezeWrap(excludedDistributions); + return excludedDistributions; } public void setExcludedDistributions(List excludedDistributions) { - freezeCheck(); this.excludedDistributions.clear(); this.excludedDistributions.addAll(excludedDistributions); } public List getExcludedPackagers() { - return freezeWrap(excludedPackagers); + return excludedPackagers; } public void setExcludedPackagers(List excludedPackagers) { - freezeCheck(); this.excludedPackagers.clear(); this.excludedPackagers.addAll(normalize(excludedPackagers)); } public List getExcludedDownloaderTypes() { - return freezeWrap(excludedDownloaderTypes); + return excludedDownloaderTypes; } public void setExcludedDownloaderTypes(List excludedDownloaderTypes) { - freezeCheck(); this.excludedDownloaderTypes.clear(); this.excludedDownloaderTypes.addAll(normalize(excludedDownloaderTypes)); } public List getExcludedDownloaderNames() { - return freezeWrap(excludedDownloaderNames); + return excludedDownloaderNames; } public void setExcludedDownloaderNames(List excludedDownloaderNames) { - freezeCheck(); this.excludedDownloaderNames.clear(); this.excludedDownloaderNames.addAll(excludedDownloaderNames); } public List getExcludedUploaderTypes() { - return freezeWrap(excludedUploaderTypes); + return excludedUploaderTypes; } public void setExcludedUploaderTypes(List excludedUploaderTypes) { - freezeCheck(); this.excludedUploaderTypes.clear(); this.excludedUploaderTypes.addAll(normalize(excludedUploaderTypes)); } public List getExcludedUploaderNames() { - return freezeWrap(excludedUploaderNames); + return excludedUploaderNames; } public void setExcludedUploaderNames(List excludedUploaderNames) { - freezeCheck(); this.excludedUploaderNames.clear(); this.excludedUploaderNames.addAll(excludedUploaderNames); } @@ -548,7 +714,6 @@ public JReleaserCommand getCommand() { } public void setCommand(JReleaserCommand command) { - freezeCheck(); this.command = command; } @@ -599,11 +764,11 @@ public void report() { props.put(KEY_PROJECT_VERSION, project.getVersion()); props.put(KEY_PROJECT_SNAPSHOT, String.valueOf(project.isSnapshot())); if (model.getCommit() != null) { - GitService gitService = model.getRelease().getGitService(); - props.put(KEY_TAG_NAME, gitService.getEffectiveTagName(model)); - if (gitService.isReleaseSupported()) { - props.put(KEY_RELEASE_NAME, gitService.getEffectiveReleaseName()); - props.put(KEY_MILESTONE_NAME, gitService.getMilestone().getEffectiveName()); + BaseReleaser releaser = model.getRelease().getReleaser(); + props.put(KEY_TAG_NAME, releaser.getEffectiveTagName(model)); + if (releaser.isReleaseSupported()) { + props.put(KEY_RELEASE_NAME, releaser.getEffectiveReleaseName()); + props.put(KEY_MILESTONE_NAME, releaser.getMilestone().getEffectiveName()); } } props.put("javaVersion", System.getProperty("java.version")); @@ -637,7 +802,7 @@ public void report() { } public void nag(String version, String message) { - logger.warn(message + " since {}. This warning will become an error in a future release.", version); + logger.warn(RB.$("context.nag", message, version)); } public Keyring createKeyring() throws SigningException { @@ -672,43 +837,6 @@ public boolean isDistributionIncluded(Distribution distribution) { return true; } - public enum Mode { - CONFIG, - DOWNLOAD, - ASSEMBLE, - FULL, - CHANGELOG, - ANNOUNCE; - - public boolean validateChangelog() { - return this == CHANGELOG; - } - - public boolean validateAnnounce() { - return this == ANNOUNCE; - } - - public boolean validateDownload() { - return this == DOWNLOAD; - } - - public boolean validateAssembly() { - return this == ASSEMBLE; - } - - public boolean validateStandalone() { - return validateAssembly() || validateDownload(); - } - - public boolean validateConfig() { - return this == CONFIG || this == FULL; - } - - public boolean validatePaths() { - return this == FULL; - } - } - public enum Configurer { CLI("CLI flags"), CLI_YAML("CLI yaml DSL"), @@ -733,7 +861,7 @@ private static class SortedProperties extends Properties { // Java 11 calls entrySet() when storing properties @Override public Set> entrySet() { - int javaMajorVersion = SemVer.javaMajorVersion(); + int javaMajorVersion = SemanticVersion.javaMajorVersion(); if (javaMajorVersion < 11) { return super.entrySet(); } @@ -748,7 +876,7 @@ public Set> entrySet() { // Java 8 calls keys() when storing properties @Override public synchronized Enumeration keys() { - int javaMajorVersion = SemVer.javaMajorVersion(); + int javaMajorVersion = SemanticVersion.javaMajorVersion(); if (javaMajorVersion >= 11) { return super.keys(); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModel.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModel.java similarity index 72% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModel.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModel.java index 5ac239258..80525c4a7 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModel.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModel.java @@ -15,29 +15,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal; import com.fasterxml.jackson.annotation.JsonIgnore; import com.github.mustachejava.TemplateFunction; import org.jreleaser.bundle.RB; -import org.jreleaser.model.releaser.spi.Commit; -import org.jreleaser.util.Constants; -import org.jreleaser.util.JReleaserException; -import org.jreleaser.util.MustacheUtils; +import org.jreleaser.model.Constants; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.JReleaserVersion; +import org.jreleaser.model.internal.announce.Announce; +import org.jreleaser.model.internal.assemble.Assemble; +import org.jreleaser.model.internal.checksum.Checksum; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.download.Download; +import org.jreleaser.model.internal.environment.Environment; +import org.jreleaser.model.internal.extensions.Extension; +import org.jreleaser.model.internal.files.Files; +import org.jreleaser.model.internal.hooks.Hooks; +import org.jreleaser.model.internal.packagers.Packagers; +import org.jreleaser.model.internal.platform.Platform; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.Release; +import org.jreleaser.model.internal.signing.Signing; +import org.jreleaser.model.internal.upload.Upload; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; +import org.jreleaser.version.SemanticVersion; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatterBuilder; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME; +import static java.util.Collections.unmodifiableMap; +import static java.util.function.Function.identity; import static java.util.stream.Collectors.toList; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.stream.Collectors.toMap; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; import static org.jreleaser.util.StringUtils.getCapitalizedName; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -47,7 +65,7 @@ * @since 0.1.0 */ @org.jreleaser.infra.nativeimage.annotations.NativeImage -public class JReleaserModel implements Domain { +public class JReleaserModel { private final Environment environment = new Environment(); private final Hooks hooks = new Hooks(); private final Project project = new Project(); @@ -69,9 +87,117 @@ public class JReleaserModel implements Domain { @JsonIgnore private final String timestamp; @JsonIgnore - private Commit commit; - @JsonIgnore - private boolean frozen; + private org.jreleaser.model.api.JReleaserModel.Commit commit; + + private final org.jreleaser.model.api.JReleaserModel immutable = new org.jreleaser.model.api.JReleaserModel() { + private Map distributions; + private Map extensions; + + @Override + public ZonedDateTime getNow() { + return now; + } + + @Override + public String getTimestamp() { + return timestamp; + } + + @Override + public Commit getCommit() { + return commit; + } + + @Override + public org.jreleaser.model.api.environment.Environment getEnvironment() { + return environment.asImmutable(); + } + + @Override + public org.jreleaser.model.api.hooks.Hooks getHooks() { + return hooks.asImmutable(); + } + + @Override + public org.jreleaser.model.api.platform.Platform getPlatform() { + return platform.asImmutable(); + } + + @Override + public org.jreleaser.model.api.project.Project getProject() { + return project.asImmutable(); + } + + @Override + public org.jreleaser.model.api.release.Release getRelease() { + return release.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.Packagers getPackagers() { + return packagers.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.Announce getAnnounce() { + return announce.asImmutable(); + } + + @Override + public org.jreleaser.model.api.assemble.Assemble getAssemble() { + return assemble.asImmutable(); + } + + @Override + public org.jreleaser.model.api.download.Download getDownload() { + return download.asImmutable(); + } + + @Override + public org.jreleaser.model.api.upload.Upload getUpload() { + return upload.asImmutable(); + } + + @Override + public org.jreleaser.model.api.checksum.Checksum getChecksum() { + return checksum.asImmutable(); + } + + @Override + public org.jreleaser.model.api.signing.Signing getSigning() { + return signing.asImmutable(); + } + + @Override + public org.jreleaser.model.api.files.Files getFiles() { + return files.asImmutable(); + } + + @Override + public Map getDistributions() { + if (null == distributions) { + distributions = JReleaserModel.this.distributions.values().stream() + .map(Distribution::asImmutable) + .collect(toMap(org.jreleaser.model.api.distributions.Distribution::getName, identity())); + } + return distributions; + } + + @Override + public Map getExtensions() { + if (null == extensions) { + extensions = JReleaserModel.this.extensions.values().stream() + .map(Extension::asImmutable) + .collect(toMap(org.jreleaser.model.api.extensions.Extension::getName, identity())); + } + return extensions; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(JReleaserModel.this.asMap(full)); + } + }; public JReleaserModel() { this.now = ZonedDateTime.now(); @@ -83,32 +209,8 @@ public JReleaserModel() { .toFormatter()); } - public void freeze() { - freezeCheck(); - frozen = true; - environment.freeze(); - hooks.freeze(); - project.freeze(); - platform.freeze(); - release.freeze(); - packagers.freeze(); - announce.freeze(); - download.freeze(); - assemble.freeze(); - upload.freeze(); - checksum.freeze(); - signing.freeze(); - files.freeze(); - distributions.values().forEach(ModelObject::freeze); - extensions.values().forEach(ModelObject::freeze); - } - - private void freezeCheck() { - if (frozen) throw new UnsupportedOperationException(); - } - - private Map freezeWrap(Map map) { - return frozen ? Collections.unmodifiableMap(map) : map; + public org.jreleaser.model.api.JReleaserModel asImmutable() { + return immutable; } public ZonedDateTime getNow() { @@ -119,12 +221,11 @@ public String getTimestamp() { return timestamp; } - public Commit getCommit() { + public org.jreleaser.model.api.JReleaserModel.Commit getCommit() { return commit; } - public void setCommit(Commit commit) { - freezeCheck(); + public void setCommit(org.jreleaser.model.api.JReleaserModel.Commit commit) { this.commit = commit; } @@ -239,17 +340,15 @@ public List getActiveDistributions() { } public Map getDistributions() { - return freezeWrap(distributions); + return distributions; } public void setDistributions(Map distributions) { - freezeCheck(); this.distributions.clear(); this.distributions.putAll(distributions); } public void addDistribution(Distribution distribution) { - freezeCheck(); this.distributions.put(distribution.getName(), distribution); } @@ -272,17 +371,15 @@ public List getActiveExtensions() { } public Map getExtensions() { - return freezeWrap(extensions); + return extensions; } public void setExtensions(Map extensions) { - freezeCheck(); this.extensions.clear(); this.extensions.putAll(extensions); } public void addExtension(Extension extension) { - freezeCheck(); this.extensions.put(extension.getName(), extension); } @@ -328,7 +425,7 @@ public Map props() { props.put("jreleaserCreationStamp", jreleaserCreationStamp); fillProjectProperties(props, project); - fillReleaseProperties(props, release); + fillReleaserProperties(props, release); String osName = PlatformUtils.getDetectedOs(); String osArch = PlatformUtils.getDetectedArch(); @@ -389,7 +486,7 @@ private void fillProjectProperties(Map props, Project project) { props.put(Constants.KEY_PROJECT_JAVA_ARTIFACT_ID, project.getJava().getArtifactId()); props.put(Constants.KEY_PROJECT_JAVA_VERSION, project.getJava().getVersion()); props.put(Constants.KEY_PROJECT_JAVA_MAIN_CLASS, project.getJava().getMainClass()); - SemVer jv = SemVer.of(project.getJava().getVersion()); + SemanticVersion jv = SemanticVersion.of(project.getJava().getVersion()); props.put(Constants.KEY_PROJECT_JAVA_VERSION_MAJOR, jv.getMajor()); if (jv.hasMinor()) props.put(Constants.KEY_PROJECT_JAVA_VERSION_MINOR, jv.getMinor()); if (jv.hasPatch()) props.put(Constants.KEY_PROJECT_JAVA_VERSION_PATCH, jv.getPatch()); @@ -401,17 +498,17 @@ private void fillProjectProperties(Map props, Project project) { props.putAll(project.getResolvedExtraProperties()); } - private void fillReleaseProperties(Map props, Release release) { - GitService service = release.getGitService(); + private void fillReleaserProperties(Map props, Release release) { + BaseReleaser service = release.getReleaser(); props.put(Constants.KEY_REPO_HOST, service.getHost()); props.put(Constants.KEY_REPO_OWNER, service.getOwner()); props.put(Constants.KEY_REPO_NAME, service.getName()); props.put(Constants.KEY_REPO_BRANCH, service.getBranch()); + props.put(Constants.KEY_REVERSE_REPO_HOST, service.getReverseRepoHost()); + props.put(Constants.KEY_CANONICAL_REPO_NAME, service.getCanonicalRepoName()); props.put(Constants.KEY_TAG_NAME, service.getEffectiveTagName(this)); props.put(Constants.KEY_RELEASE_NAME, service.getEffectiveReleaseName()); props.put(Constants.KEY_MILESTONE_NAME, service.getMilestone().getEffectiveName()); - props.put(Constants.KEY_REVERSE_REPO_HOST, service.getReverseRepoHost()); - props.put(Constants.KEY_CANONICAL_REPO_NAME, service.getCanonicalRepoName()); props.put(Constants.KEY_REPO_URL, service.getResolvedRepoUrl(this)); props.put(Constants.KEY_REPO_CLONE_URL, service.getResolvedRepoCloneUrl(this)); props.put(Constants.KEY_COMMIT_URL, service.getResolvedCommitUrl(this)); @@ -440,13 +537,13 @@ public String apply(String input) { switch (format.toLowerCase(Locale.ENGLISH)) { case "md": - return ("[{{artifactFile}}](" + getRelease().getGitService().getDownloadUrl() + ")") + return ("[{{artifactFile}}](" + getRelease().getReleaser().getDownloadUrl() + ")") .replace("{{artifactFile}}", artifactFile); case "adoc": - return ("link:" + getRelease().getGitService().getDownloadUrl() + "[{{artifactFile}}]") + return ("link:" + getRelease().getReleaser().getDownloadUrl() + "[{{artifactFile}}]") .replace("{{artifactFile}}", artifactFile); case "html": - return ("{{artifactFile}}") + return ("{{artifactFile}}") .replace("{{artifactFile}}", artifactFile); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelPrinter.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelPrinter.java similarity index 98% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelPrinter.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelPrinter.java index 1ca7250a8..2a41b6c86 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelPrinter.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelPrinter.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; import java.io.PrintWriter; import java.util.Arrays; @@ -25,8 +25,8 @@ import java.util.Locale; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; import static org.jreleaser.util.StringUtils.isNotBlank; /** diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelResolver.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelResolver.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelResolver.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelResolver.java index 6a1218d11..c22c47519 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelResolver.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelResolver.java @@ -15,11 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.AssemblersResolver.resolveAssemblers; +import static org.jreleaser.model.internal.validation.AssemblersResolver.resolveAssemblers; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelValidator.java similarity index 58% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelValidator.java index 3593af66c..bb931260e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserModelValidator.java @@ -15,26 +15,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal; +import org.jreleaser.model.api.JReleaserContext.Mode; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.AnnouncersValidator.validateAnnouncers; -import static org.jreleaser.model.validation.AssemblersValidator.postValidateAssemblers; -import static org.jreleaser.model.validation.AssemblersValidator.validateAssemblers; -import static org.jreleaser.model.validation.ChecksumValidator.validateChecksum; -import static org.jreleaser.model.validation.DistributionsValidator.postValidateDistributions; -import static org.jreleaser.model.validation.DistributionsValidator.validateDistributions; -import static org.jreleaser.model.validation.DownloadersValidator.validateDownloaders; -import static org.jreleaser.model.validation.ExtensionsValidator.validateExtensions; -import static org.jreleaser.model.validation.FilesValidator.validateFiles; -import static org.jreleaser.model.validation.HooksValidator.validateHooks; -import static org.jreleaser.model.validation.PackagersValidator.validatePackagers; -import static org.jreleaser.model.validation.ProjectValidator.postValidateProject; -import static org.jreleaser.model.validation.ProjectValidator.validateProject; -import static org.jreleaser.model.validation.ReleaseValidator.validateRelease; -import static org.jreleaser.model.validation.SigningValidator.validateSigning; -import static org.jreleaser.model.validation.UploadersValidator.validateUploaders; +import static org.jreleaser.model.internal.validation.AnnouncersValidator.validateAnnouncers; +import static org.jreleaser.model.internal.validation.AssemblersValidator.postValidateAssemblers; +import static org.jreleaser.model.internal.validation.AssemblersValidator.validateAssemblers; +import static org.jreleaser.model.internal.validation.ChecksumValidator.validateChecksum; +import static org.jreleaser.model.internal.validation.DistributionsValidator.postValidateDistributions; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateDistributions; +import static org.jreleaser.model.internal.validation.DownloadersValidator.validateDownloaders; +import static org.jreleaser.model.internal.validation.ExtensionsValidator.validateExtensions; +import static org.jreleaser.model.internal.validation.FilesValidator.validateFiles; +import static org.jreleaser.model.internal.validation.HooksValidator.validateHooks; +import static org.jreleaser.model.internal.validation.PackagersValidator.validatePackagers; +import static org.jreleaser.model.internal.validation.ProjectValidator.postValidateProject; +import static org.jreleaser.model.internal.validation.ProjectValidator.validateProject; +import static org.jreleaser.model.internal.validation.ReleaseValidator.validateRelease; +import static org.jreleaser.model.internal.validation.SigningValidator.validateSigning; +import static org.jreleaser.model.internal.validation.UploadersValidator.validateUploaders; /** * @author Andres Almiray @@ -45,7 +46,7 @@ private JReleaserModelValidator() { // noop } - public static void validate(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validate(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().increaseIndent(); context.getLogger().setPrefix("validation"); try { @@ -57,7 +58,7 @@ public static void validate(JReleaserContext context, JReleaserContext.Mode mode } } - private static void validateModel(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + private static void validateModel(JReleaserContext context, Mode mode, Errors errors) { validateExtensions(context, mode, errors); validateHooks(context, mode, errors); validateProject(context, mode, errors); diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserSupport.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserSupport.java new file mode 100644 index 000000000..46562bf81 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/JReleaserSupport.java @@ -0,0 +1,103 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal; + +import java.util.LinkedHashSet; +import java.util.Set; + +import static java.util.Collections.unmodifiableSet; + +/** + * @author Andres Almiray + * @since 1.3.0 + */ +public final class JReleaserSupport { + private JReleaserSupport() { + // noop + } + + public static Set supportedAssemblers() { + Set set = new LinkedHashSet<>(); + set.add(org.jreleaser.model.api.assemble.ArchiveAssembler.TYPE); + set.add(org.jreleaser.model.api.assemble.JlinkAssembler.TYPE); + set.add(org.jreleaser.model.api.assemble.JpackageAssembler.TYPE); + set.add(org.jreleaser.model.api.assemble.NativeImageAssembler.TYPE); + return unmodifiableSet(set); + } + + public static Set supportedAnnouncers() { + Set set = new LinkedHashSet<>(); + set.add(org.jreleaser.model.api.announce.ArticleAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.DiscordAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.DiscussionsAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.GitterAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.GoogleChatAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.HttpAnnouncers.TYPE); + set.add(org.jreleaser.model.api.announce.SmtpAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.MastodonAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.MattermostAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.SdkmanAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.SlackAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.TeamsAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.TelegramAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.TwitterAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.WebhooksAnnouncer.TYPE); + set.add(org.jreleaser.model.api.announce.ZulipAnnouncer.TYPE); + return unmodifiableSet(set); + } + + public static Set supportedPackagers() { + Set set = new LinkedHashSet<>(); + set.add(org.jreleaser.model.api.packagers.AppImagePackager.TYPE); + set.add(org.jreleaser.model.api.packagers.AsdfPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.BrewPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.ChocolateyPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.DockerPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.FlatpakPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.GofishPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.JbangPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.MacportsPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.ScoopPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.SdkmanPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.SnapPackager.TYPE); + set.add(org.jreleaser.model.api.packagers.SpecPackager.TYPE); + return unmodifiableSet(set); + } + + public static Set supportedDownloaders() { + Set set = new LinkedHashSet<>(); + set.add(org.jreleaser.model.api.download.FtpDownloader.TYPE); + set.add(org.jreleaser.model.api.download.HttpDownloader.TYPE); + set.add(org.jreleaser.model.api.download.ScpDownloader.TYPE); + set.add(org.jreleaser.model.api.download.SftpDownloader.TYPE); + return unmodifiableSet(set); + } + + public static Set supportedUploaders() { + Set set = new LinkedHashSet<>(); + set.add(org.jreleaser.model.api.upload.ArtifactoryUploader.TYPE); + set.add(org.jreleaser.model.api.upload.FtpUploader.TYPE); + set.add(org.jreleaser.model.api.upload.GiteaUploader.TYPE); + set.add(org.jreleaser.model.api.upload.GitlabUploader.TYPE); + set.add(org.jreleaser.model.api.upload.HttpUploader.TYPE); + set.add(org.jreleaser.model.api.upload.S3Uploader.TYPE); + set.add(org.jreleaser.model.api.upload.ScpUploader.TYPE); + set.add(org.jreleaser.model.api.upload.SftpUploader.TYPE); + return unmodifiableSet(set); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/AbstractAnnouncer.java similarity index 83% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractAnnouncer.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/AbstractAnnouncer.java index d6f190e26..652fad5d3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractAnnouncer.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/AbstractAnnouncer.java @@ -15,9 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.project.Project; import java.util.Collections; import java.util.LinkedHashMap; @@ -27,7 +30,7 @@ * @author Andres Almiray * @since 0.1.0 */ -abstract class AbstractAnnouncer> extends AbstractModelObject implements Announcer { +public abstract class AbstractAnnouncer> extends AbstractModelObject implements Announcer { protected final Map extraProperties = new LinkedHashMap<>(); @JsonIgnore protected String name; @@ -42,13 +45,12 @@ protected AbstractAnnouncer(String name) { } @Override - public void merge(S announcer) { - freezeCheck(); - this.active = merge(this.active, announcer.active); - this.enabled = merge(this.enabled, announcer.enabled); - this.connectTimeout = merge(this.connectTimeout, announcer.connectTimeout); - this.readTimeout = merge(this.readTimeout, announcer.readTimeout); - setExtraProperties(merge(this.extraProperties, announcer.extraProperties)); + public void merge(S source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + this.connectTimeout = merge(this.connectTimeout, source.connectTimeout); + this.readTimeout = merge(this.readTimeout, source.readTimeout); + setExtraProperties(merge(this.extraProperties, source.extraProperties)); } @Override @@ -85,7 +87,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -116,7 +117,6 @@ public Integer getConnectTimeout() { @Override public void setConnectTimeout(Integer connectTimeout) { - freezeCheck(); this.connectTimeout = connectTimeout; } @@ -127,25 +127,22 @@ public Integer getReadTimeout() { @Override public void setReadTimeout(Integer readTimeout) { - freezeCheck(); this.readTimeout = readTimeout; } @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/Announce.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/Announce.java new file mode 100644 index 000000000..dd9767afc --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/Announce.java @@ -0,0 +1,459 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.util.Env; + +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.JReleaserOutput.nag; +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public final class Announce extends AbstractModelObject implements Domain, Activatable { + private final ArticleAnnouncer article = new ArticleAnnouncer(); + private final DiscordAnnouncer discord = new DiscordAnnouncer(); + private final DiscussionsAnnouncer discussions = new DiscussionsAnnouncer(); + private final GitterAnnouncer gitter = new GitterAnnouncer(); + private final GoogleChatAnnouncer googleChat = new GoogleChatAnnouncer(); + private final HttpAnnouncers http = new HttpAnnouncers(); + private final SmtpAnnouncer mail = new SmtpAnnouncer(); + private final MastodonAnnouncer mastodon = new MastodonAnnouncer(); + private final MattermostAnnouncer mattermost = new MattermostAnnouncer(); + private final SdkmanAnnouncer sdkman = new SdkmanAnnouncer(); + private final SlackAnnouncer slack = new SlackAnnouncer(); + private final TeamsAnnouncer teams = new TeamsAnnouncer(); + private final TelegramAnnouncer telegram = new TelegramAnnouncer(); + private final TwitterAnnouncer twitter = new TwitterAnnouncer(); + private final WebhooksAnnouncer webhooks = new WebhooksAnnouncer(); + private final ZulipAnnouncer zulip = new ZulipAnnouncer(); + + private Active active; + @JsonIgnore + private boolean enabled = true; + + private final org.jreleaser.model.api.announce.Announce immutable = new org.jreleaser.model.api.announce.Announce() { + @Override + public org.jreleaser.model.api.announce.ArticleAnnouncer getArticle() { + return article.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.DiscordAnnouncer getDiscord() { + return discord.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.DiscussionsAnnouncer getDiscussions() { + return discussions.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.GitterAnnouncer getGitter() { + return gitter.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.GoogleChatAnnouncer getGoogleChat() { + return googleChat.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.SmtpAnnouncer getMail() { + return mail.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.MastodonAnnouncer getMastodon() { + return mastodon.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.MattermostAnnouncer getMattermost() { + return mattermost.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.SdkmanAnnouncer getSdkman() { + return sdkman.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.SlackAnnouncer getSlack() { + return slack.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.TeamsAnnouncer getTeams() { + return teams.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.TelegramAnnouncer getTelegram() { + return telegram.asImmutable(); + } + + @Override + public org.jreleaser.model.api.announce.TwitterAnnouncer getTwitter() { + return twitter.asImmutable(); + } + + @Override + public Map getHttp() { + return http.asImmutable().getHttpAnnouncers(); + } + + @Override + public Map getWebhooks() { + return webhooks.asImmutable().getWebhooks(); + } + + @Override + public org.jreleaser.model.api.announce.ZulipAnnouncer getZulip() { + return zulip.asImmutable(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Announce.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Announce.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.announce.Announce asImmutable() { + return immutable; + } + + @Override + public void merge(Announce source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + setArticle(source.article); + setDiscord(source.discord); + setDiscussions(source.discussions); + setGitter(source.gitter); + setGoogleChat(source.googleChat); + setConfiguredHttp(source.http); + setMail(source.mail); + setMastodon(source.mastodon); + setMattermost(source.mattermost); + setSdkman(source.sdkman); + setSlack(source.slack); + setTeams(source.teams); + setTelegram(source.telegram); + setTwitter(source.twitter); + setZulip(source.zulip); + setConfiguredWebhooks(source.webhooks); + } + + @Override + public boolean isEnabled() { + return enabled && active != null; + } + + @Deprecated + public void setEnabled(Boolean enabled) { + nag("announce.enabled is deprecated since 1.1.0 and will be removed in 2.0.0"); + if (null != enabled) { + this.active = enabled ? Active.ALWAYS : Active.NEVER; + } + } + + public void disable() { + active = Active.NEVER; + enabled = false; + } + + public boolean resolveEnabled(Project project) { + if (null == active) { + setActive(Env.resolveOrDefault("announce.active", "", "ALWAYS")); + } + enabled = active.check(project); + return enabled; + } + + public Active getActive() { + return active; + } + + public void setActive(Active active) { + this.active = active; + } + + public void setActive(String str) { + setActive(Active.of(str)); + } + + public boolean isActiveSet() { + return active != null; + } + + public ArticleAnnouncer getArticle() { + return article; + } + + public void setArticle(ArticleAnnouncer article) { + this.article.merge(article); + } + + public DiscordAnnouncer getDiscord() { + return discord; + } + + public void setDiscord(DiscordAnnouncer discord) { + this.discord.merge(discord); + } + + public DiscussionsAnnouncer getDiscussions() { + return discussions; + } + + public void setDiscussions(DiscussionsAnnouncer discussions) { + this.discussions.merge(discussions); + } + + public GitterAnnouncer getGitter() { + return gitter; + } + + public void setGitter(GitterAnnouncer gitter) { + this.gitter.merge(gitter); + } + + public GoogleChatAnnouncer getGoogleChat() { + return googleChat; + } + + public void setGoogleChat(GoogleChatAnnouncer googleChat) { + this.googleChat.merge(googleChat); + } + + public SmtpAnnouncer getMail() { + return mail; + } + + public void setMail(SmtpAnnouncer mail) { + this.mail.merge(mail); + } + + public MastodonAnnouncer getMastodon() { + return mastodon; + } + + public void setMastodon(MastodonAnnouncer mastodon) { + this.mastodon.merge(mastodon); + } + + public MattermostAnnouncer getMattermost() { + return mattermost; + } + + public void setMattermost(MattermostAnnouncer mattermost) { + this.mattermost.merge(mattermost); + } + + public SdkmanAnnouncer getSdkman() { + return sdkman; + } + + public void setSdkman(SdkmanAnnouncer sdkman) { + this.sdkman.merge(sdkman); + } + + public SlackAnnouncer getSlack() { + return slack; + } + + public void setSlack(SlackAnnouncer slack) { + this.slack.merge(slack); + } + + public TeamsAnnouncer getTeams() { + return teams; + } + + public void setTeams(TeamsAnnouncer teams) { + this.teams.merge(teams); + } + + public TelegramAnnouncer getTelegram() { + return telegram; + } + + public void setTelegram(TelegramAnnouncer telegram) { + this.telegram.merge(telegram); + } + + public TwitterAnnouncer getTwitter() { + return twitter; + } + + public void setTwitter(TwitterAnnouncer twitter) { + this.twitter.merge(twitter); + } + + public HttpAnnouncers getConfiguredHttp() { + return this.http; + } + + void setConfiguredHttp(HttpAnnouncers https) { + this.http.merge(https); + } + + public Map getHttp() { + return this.http.getHttpAnnouncers(); + } + + public void setHttp(Map https) { + this.http.setHttpAnnouncers(https); + } + + public void addHttpAnnouncer(HttpAnnouncer http) { + this.http.addHttpAnnouncer(http); + } + + public WebhooksAnnouncer getConfiguredWebhooks() { + return this.webhooks; + } + + void setConfiguredWebhooks(WebhooksAnnouncer webhooks) { + this.webhooks.merge(webhooks); + } + + public Map getWebhooks() { + return this.webhooks.getWebhooks(); + } + + public void setWebhooks(Map webhooks) { + this.webhooks.setWebhooks(webhooks); + } + + public void addWebhook(WebhookAnnouncer webhook) { + this.webhooks.addWebhook(webhook); + } + + public ZulipAnnouncer getZulip() { + return zulip; + } + + public void setZulip(ZulipAnnouncer zulip) { + this.zulip.merge(zulip); + } + + @Override + public Map asMap(boolean full) { + Map map = new LinkedHashMap<>(); + map.put("enabled", isEnabled()); + map.put("active", active); + map.putAll(article.asMap(full)); + map.putAll(discord.asMap(full)); + map.putAll(discussions.asMap(full)); + map.putAll(gitter.asMap(full)); + map.putAll(googleChat.asMap(full)); + map.putAll(http.asMap(full)); + map.putAll(mail.asMap(full)); + map.putAll(mastodon.asMap(full)); + map.putAll(mattermost.asMap(full)); + map.putAll(sdkman.asMap(full)); + map.putAll(slack.asMap(full)); + map.putAll(teams.asMap(full)); + map.putAll(telegram.asMap(full)); + map.putAll(twitter.asMap(full)); + map.putAll(webhooks.asMap(full)); + map.putAll(zulip.asMap(full)); + return map; + } + + public A findAnnouncer(String name) { + if (isBlank(name)) { + throw new JReleaserException("Announcer name must not be blank"); + } + + return resolveAnnouncer(name); + } + + public A getAnnouncer(String name) { + A announcer = findAnnouncer(name); + if (null != announcer) { + return announcer; + } + throw new JReleaserException(RB.$("ERROR_announcer_not_configured", name)); + } + + private A resolveAnnouncer(String name) { + switch (name.toLowerCase(Locale.ENGLISH).trim()) { + case org.jreleaser.model.api.announce.ArticleAnnouncer.TYPE: + return (A) getArticle(); + case org.jreleaser.model.api.announce.DiscordAnnouncer.TYPE: + return (A) getDiscord(); + case org.jreleaser.model.api.announce.DiscussionsAnnouncer.TYPE: + return (A) getDiscussions(); + case org.jreleaser.model.api.announce.GitterAnnouncer.TYPE: + return (A) getGitter(); + case org.jreleaser.model.api.announce.GoogleChatAnnouncer.TYPE: + return (A) getGoogleChat(); + case org.jreleaser.model.api.announce.HttpAnnouncers.TYPE: + return (A) getConfiguredHttp(); + case org.jreleaser.model.api.announce.SmtpAnnouncer.TYPE: + return (A) getMail(); + case org.jreleaser.model.api.announce.MastodonAnnouncer.TYPE: + return (A) getMastodon(); + case org.jreleaser.model.api.announce.MattermostAnnouncer.TYPE: + return (A) getMattermost(); + case org.jreleaser.model.api.announce.SdkmanAnnouncer.TYPE: + return (A) getSdkman(); + case org.jreleaser.model.api.announce.SlackAnnouncer.TYPE: + return (A) getSlack(); + case org.jreleaser.model.api.announce.TeamsAnnouncer.TYPE: + return (A) getTeams(); + case org.jreleaser.model.api.announce.TelegramAnnouncer.TYPE: + return (A) getTelegram(); + case org.jreleaser.model.api.announce.TwitterAnnouncer.TYPE: + return (A) getTwitter(); + case org.jreleaser.model.api.announce.WebhooksAnnouncer.TYPE: + return (A) getConfiguredWebhooks(); + case org.jreleaser.model.api.announce.ZulipAnnouncer.TYPE: + return (A) getZulip(); + default: + throw new JReleaserException(RB.$("ERROR_unsupported_announcer", name)); + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/Announcer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/Announcer.java new file mode 100644 index 000000000..e86e5a911 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/Announcer.java @@ -0,0 +1,33 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.common.TimeoutAware; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Announcer extends Domain, Activatable, TimeoutAware, ExtraProperties { + String getName(); + + boolean isSnapshotSupported(); +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/ArticleAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/ArticleAnnouncer.java new file mode 100644 index 000000000..7305e9a05 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/ArticleAnnouncer.java @@ -0,0 +1,267 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.CommitAuthor; +import org.jreleaser.model.internal.common.CommitAuthorAware; +import org.jreleaser.model.internal.packagers.AbstractRepositoryTap; + +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toSet; +import static org.jreleaser.model.api.announce.ArticleAnnouncer.TYPE; + +/** + * @author Andres Almiray + * @since 0.6.0 + */ +public final class ArticleAnnouncer extends AbstractAnnouncer implements Announcer, CommitAuthorAware { + private final Set files = new LinkedHashSet<>(); + private final CommitAuthor commitAuthor = new CommitAuthor(); + private final Repository repository = new Repository(); + + private String templateDirectory; + + private final org.jreleaser.model.api.announce.ArticleAnnouncer immutable = new org.jreleaser.model.api.announce.ArticleAnnouncer() { + private Set files; + + @Override + public Set getFiles() { + if (null == files) { + files = ArticleAnnouncer.this.files.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return files; + } + + @Override + public Repository getRepository() { + return repository.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return ArticleAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return ArticleAnnouncer.this.isEnabled(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(ArticleAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return ArticleAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public ArticleAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.ArticleAnnouncer asImmutable() { + return immutable; + } + + @Override + public void merge(ArticleAnnouncer source) { + super.merge(source); + this.templateDirectory = merge(this.templateDirectory, source.templateDirectory); + setFiles(merge(this.files, source.files)); + setCommitAuthor(source.commitAuthor); + setRepository(source.repository); + } + + public Set getFiles() { + return Artifact.sortArtifacts(files); + } + + public void setFiles(Set files) { + this.files.clear(); + this.files.addAll(files); + } + + public void addFiles(Set files) { + this.files.addAll(files); + } + + public void addFile(Artifact artifact) { + if (null != artifact) { + this.files.add(artifact); + } + } + + @Override + public CommitAuthor getCommitAuthor() { + return commitAuthor; + } + + @Override + public void setCommitAuthor(CommitAuthor commitAuthor) { + this.commitAuthor.merge(commitAuthor); + } + + public Repository getRepository() { + return repository; + } + + public void setRepository(Repository repository) { + this.repository.merge(repository); + } + + public String getTemplateDirectory() { + return templateDirectory; + } + + public void setTemplateDirectory(String templateDirectory) { + this.templateDirectory = templateDirectory; + } + + @Override + protected void asMap(boolean full, Map props) { + props.put("commitAuthor", commitAuthor.asMap(full)); + props.put("repository", repository.asMap(full)); + + Map> mappedArtifacts = new LinkedHashMap<>(); + int i = 0; + for (Artifact artifact : getFiles()) { + mappedArtifacts.put("files " + (i++), artifact.asMap(full)); + } + props.put("files", mappedArtifacts); + props.put("templateDirectory", templateDirectory); + } + + public static final class Repository extends AbstractRepositoryTap { + private final org.jreleaser.model.api.announce.ArticleAnnouncer.Repository immutable = new org.jreleaser.model.api.announce.ArticleAnnouncer.Repository() { + @Override + public String getBasename() { + return basename; + } + + @Override + public String getCanonicalRepoName() { + return Repository.this.getCanonicalRepoName(); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getTagName() { + return tagName; + } + + @Override + public String getBranch() { + return branch; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getToken() { + return token; + } + + @Override + public String getCommitMessage() { + return commitMessage; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Repository.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Repository.this.asMap(full)); + } + + @Override + public String getOwner() { + return owner; + } + }; + + public Repository() { + super("article", "article"); + } + + private org.jreleaser.model.api.announce.ArticleAnnouncer.Repository asImmutable() { + return immutable; + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Discord.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/DiscordAnnouncer.java similarity index 50% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Discord.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/DiscordAnnouncer.java index b4547cb95..be4926d38 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Discord.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/DiscordAnnouncer.java @@ -15,48 +15,114 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.DiscordAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.2.0 */ -public class Discord extends AbstractAnnouncer { - public static final String NAME = "discord"; - public static final String DISCORD_WEBHOOK = "DISCORD_WEBHOOK"; - +public final class DiscordAnnouncer extends AbstractAnnouncer { private String webhook; private String message; private String messageTemplate; - public Discord() { - super(NAME); + private final org.jreleaser.model.api.announce.DiscordAnnouncer immutable = new org.jreleaser.model.api.announce.DiscordAnnouncer() { + @Override + public String getWebhook() { + return webhook; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return DiscordAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return DiscordAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(DiscordAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return DiscordAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public DiscordAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.DiscordAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Discord discord) { - freezeCheck(); - super.merge(discord); - this.webhook = merge(this.webhook, discord.webhook); - this.message = merge(this.message, discord.message); - this.messageTemplate = merge(this.messageTemplate, discord.messageTemplate); + public void merge(DiscordAnnouncer source) { + super.merge(source); + this.webhook = merge(this.webhook, source.webhook); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } public String getResolvedMessage(JReleaserContext context) { @@ -68,7 +134,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -83,7 +149,7 @@ public String getResolvedMessageTemplate(JReleaserContext context, Map { - public static final String NAME = "discussions"; - +public final class DiscussionsAnnouncer extends AbstractAnnouncer { private String organization; private String team; private String title; private String message; private String messageTemplate; - public Discussions() { - super(NAME); + private final org.jreleaser.model.api.announce.DiscussionsAnnouncer immutable = new org.jreleaser.model.api.announce.DiscussionsAnnouncer() { + @Override + public String getOrganization() { + return organization; + } + + @Override + public String getTeam() { + return team; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return DiscussionsAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return DiscussionsAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(DiscussionsAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return DiscussionsAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public DiscussionsAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.DiscussionsAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Discussions discussions) { - freezeCheck(); - super.merge(discussions); - this.organization = merge(this.organization, discussions.organization); - this.team = merge(this.team, discussions.team); - this.title = merge(this.title, discussions.title); - this.message = merge(this.message, discussions.message); - this.messageTemplate = merge(this.messageTemplate, discussions.messageTemplate); + public void merge(DiscussionsAnnouncer source) { + super.merge(source); + this.organization = merge(this.organization, source.organization); + this.team = merge(this.team, source.team); + this.title = merge(this.title, source.title); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } public String getResolvedTitle(JReleaserContext context) { @@ -73,7 +150,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(Constants.KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(Constants.KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -92,7 +169,6 @@ public String getOrganization() { } public void setOrganization(String organization) { - freezeCheck(); this.organization = organization; } @@ -101,7 +177,6 @@ public String getTeam() { } public void setTeam(String team) { - freezeCheck(); this.team = team; } @@ -110,7 +185,6 @@ public String getTitle() { } public void setTitle(String title) { - freezeCheck(); this.title = title; } @@ -119,7 +193,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -128,7 +201,6 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitter.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/GitterAnnouncer.java similarity index 51% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Gitter.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/GitterAnnouncer.java index 4e2ef9bb7..cd570e9b1 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitter.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/GitterAnnouncer.java @@ -15,48 +15,115 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.GitterAnnouncer.GITTER_WEBHOOK; +import static org.jreleaser.model.api.announce.GitterAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.2.0 */ -public class Gitter extends AbstractAnnouncer { - public static final String NAME = "gitter"; - public static final String GITTER_WEBHOOK = "GITTER_WEBHOOK"; - +public final class GitterAnnouncer extends AbstractAnnouncer { private String webhook; private String message; private String messageTemplate; - public Gitter() { - super(NAME); + private final org.jreleaser.model.api.announce.GitterAnnouncer immutable = new org.jreleaser.model.api.announce.GitterAnnouncer() { + @Override + public String getWebhook() { + return webhook; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return GitterAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return GitterAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(GitterAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return GitterAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public GitterAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.GitterAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Gitter gitter) { - freezeCheck(); - super.merge(gitter); - this.webhook = merge(this.webhook, gitter.webhook); - this.message = merge(this.message, gitter.message); - this.messageTemplate = merge(this.messageTemplate, gitter.messageTemplate); + public void merge(GitterAnnouncer source) { + super.merge(source); + this.webhook = merge(this.webhook, source.webhook); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } public String getResolvedMessage(JReleaserContext context) { @@ -68,7 +135,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -91,7 +158,6 @@ public String getWebhook() { } public void setWebhook(String webhook) { - freezeCheck(); this.webhook = webhook; } @@ -100,7 +166,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -109,7 +174,6 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/GoogleChat.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/GoogleChatAnnouncer.java similarity index 51% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/GoogleChat.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/GoogleChatAnnouncer.java index 75625f71b..95406629e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/GoogleChat.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/GoogleChatAnnouncer.java @@ -15,48 +15,115 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.GoogleChatAnnouncer.GOOGLE_CHAT_WEBHOOK; +import static org.jreleaser.model.api.announce.GoogleChatAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Anyul Rivas * @since 0.5.0 */ -public class GoogleChat extends AbstractAnnouncer { - public static final String NAME = "googlechat"; - public static final String GOOGLE_CHAT_WEBHOOK = "GOOGLE_CHAT_WEBHOOK"; - +public final class GoogleChatAnnouncer extends AbstractAnnouncer { private String webhook; private String message; private String messageTemplate; - public GoogleChat() { - super(NAME); + private final org.jreleaser.model.api.announce.GoogleChatAnnouncer immutable = new org.jreleaser.model.api.announce.GoogleChatAnnouncer() { + @Override + public String getWebhook() { + return webhook; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return GoogleChatAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return GoogleChatAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(GoogleChatAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return GoogleChatAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public GoogleChatAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.GoogleChatAnnouncer asImmutable() { + return immutable; } @Override - public void merge(GoogleChat googleChat) { - freezeCheck(); - super.merge(googleChat); - this.webhook = merge(this.webhook, googleChat.webhook); - this.message = merge(this.message, googleChat.message); - this.messageTemplate = merge(this.messageTemplate, googleChat.messageTemplate); + public void merge(GoogleChatAnnouncer source) { + super.merge(source); + this.webhook = merge(this.webhook, source.webhook); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } @Override @@ -73,7 +140,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -96,7 +163,6 @@ public String getWebhook() { } public void setWebhook(String webhook) { - freezeCheck(); this.webhook = webhook; } @@ -105,7 +171,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -114,7 +179,6 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/HttpAnnouncer.java similarity index 59% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/HttpAnnouncer.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/HttpAnnouncer.java index 03d444a92..cbb1c1676 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpAnnouncer.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/HttpAnnouncer.java @@ -15,11 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.Http; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; @@ -27,19 +30,20 @@ import java.util.LinkedHashMap; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 1.3.0 */ -public class HttpAnnouncer extends AbstractAnnouncer implements Http { +public final class HttpAnnouncer extends AbstractAnnouncer implements Http { private final Map headers = new LinkedHashMap<>(); private String url; private String username; @@ -49,22 +53,112 @@ public class HttpAnnouncer extends AbstractAnnouncer implements H private String payload; private String payloadTemplate; + private final org.jreleaser.model.api.announce.HttpAnnouncer immutable = new org.jreleaser.model.api.announce.HttpAnnouncer() { + @Override + public Method getMethod() { + return null; + } + + @Override + public String getUrl() { + return url; + } + + @Override + public String getPayload() { + return payload; + } + + @Override + public String getPayloadTemplate() { + return payloadTemplate; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public Authorization getAuthorization() { + return authorization; + } + + @Override + public Map getHeaders() { + return unmodifiableMap(headers); + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return HttpAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return HttpAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(HttpAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return HttpAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + public HttpAnnouncer() { super(""); } + public org.jreleaser.model.api.announce.HttpAnnouncer asImmutable() { + return immutable; + } + @Override - public void merge(HttpAnnouncer http) { - freezeCheck(); - super.merge(http); - this.url = merge(this.url, http.url); - this.username = merge(this.username, http.username); - this.password = merge(this.password, http.password); - this.authorization = merge(this.authorization, http.authorization); - this.method = merge(this.method, http.method); - this.payload = merge(this.payload, http.payload); - this.payloadTemplate = merge(this.payloadTemplate, http.payloadTemplate); - setHeaders(merge(this.headers, http.headers)); + public void merge(HttpAnnouncer source) { + super.merge(source); + this.url = merge(this.url, source.url); + this.username = merge(this.username, source.username); + this.password = merge(this.password, source.password); + this.authorization = merge(this.authorization, source.authorization); + this.method = merge(this.method, source.method); + this.payload = merge(this.payload, source.payload); + this.payloadTemplate = merge(this.payloadTemplate, source.payloadTemplate); + setHeaders(merge(this.headers, source.headers)); } @Override @@ -103,7 +197,7 @@ public String getResolvedPayload(JReleaserContext context) { public String getResolvedPayloadTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -118,39 +212,37 @@ public String getResolvedPayloadTemplate(JReleaserContext context, Map getHeaders() { - return freezeWrap(headers); + return headers; } public void setHeaders(Map headers) { - freezeCheck(); this.headers.putAll(headers); } @@ -182,7 +272,6 @@ public String getUrl() { } public void setUrl(String url) { - freezeCheck(); this.url = url; } @@ -191,7 +280,6 @@ public String getPayload() { } public void setPayload(String payload) { - freezeCheck(); this.payload = payload; } @@ -200,7 +288,6 @@ public String getPayloadTemplate() { } public void setPayloadTemplate(String payloadTemplate) { - freezeCheck(); this.payloadTemplate = payloadTemplate; } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/HttpAnnouncers.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/HttpAnnouncers.java new file mode 100644 index 000000000..f27fad52e --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/HttpAnnouncers.java @@ -0,0 +1,152 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import org.jreleaser.model.Active; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static java.util.Collections.unmodifiableMap; +import static java.util.function.Function.identity; +import static java.util.stream.Collectors.toMap; +import static org.jreleaser.model.api.announce.HttpAnnouncers.TYPE; + +/** + * @author Andres Almiray + * @since 1.3.0 + */ +public final class HttpAnnouncers extends AbstractAnnouncer { + private final Map httpAnnouncers = new LinkedHashMap<>(); + + private final org.jreleaser.model.api.announce.HttpAnnouncers immutable = new org.jreleaser.model.api.announce.HttpAnnouncers() { + private Map httpAnnouncers; + + @Override + public Map getHttpAnnouncers() { + if (null == httpAnnouncers) { + httpAnnouncers = HttpAnnouncers.this.httpAnnouncers.values().stream() + .map(HttpAnnouncer::asImmutable) + .collect(toMap(org.jreleaser.model.api.announce.HttpAnnouncer::getName, identity())); + } + return httpAnnouncers; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return HttpAnnouncers.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return HttpAnnouncers.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(HttpAnnouncers.this.asMap(full)); + } + + @Override + public String getPrefix() { + return HttpAnnouncers.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public HttpAnnouncers() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.HttpAnnouncers asImmutable() { + return immutable; + } + + @Override + public void merge(HttpAnnouncers source) { + super.merge(source); + setHttpAnnouncers(mergeModel(this.httpAnnouncers, source.httpAnnouncers)); + } + + public List getActiveHttpAnnouncers() { + return httpAnnouncers.values().stream() + .filter(HttpAnnouncer::isEnabled) + .collect(Collectors.toList()); + } + + public Map getHttpAnnouncers() { + return httpAnnouncers; + } + + public void setHttpAnnouncers(Map https) { + this.httpAnnouncers.clear(); + this.httpAnnouncers.putAll(https); + } + + public void addHttpAnnouncer(HttpAnnouncer http) { + this.httpAnnouncers.put(http.getName(), http); + } + + @Override + public Map asMap(boolean full) { + if (!full && !isEnabled()) return Collections.emptyMap(); + + Map props = new LinkedHashMap<>(); + asMap(full, props); + + Map map = new LinkedHashMap<>(); + map.put(getName(), props); + return map; + } + + @Override + protected void asMap(boolean full, Map props) { + this.httpAnnouncers.values() + .stream() + .filter(h -> full || h.isEnabled()) + .map(d -> d.asMap(full)) + .forEach(props::putAll); + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MastodonAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MastodonAnnouncer.java new file mode 100644 index 000000000..7ffd00d7e --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MastodonAnnouncer.java @@ -0,0 +1,163 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.util.Env; + +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.MastodonAnnouncer.MASTODON_ACCESS_TOKEN; +import static org.jreleaser.model.api.announce.MastodonAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; +import static org.jreleaser.util.StringUtils.isNotBlank; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public final class MastodonAnnouncer extends AbstractAnnouncer { + private String host; + private String accessToken; + private String status; + + private final org.jreleaser.model.api.announce.MastodonAnnouncer immutable = new org.jreleaser.model.api.announce.MastodonAnnouncer() { + @Override + public String getHost() { + return host; + } + + @Override + public String getAccessToken() { + return accessToken; + } + + @Override + public String getStatus() { + return status; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return MastodonAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return MastodonAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(MastodonAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return MastodonAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public MastodonAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.MastodonAnnouncer asImmutable() { + return immutable; + } + + @Override + public void merge(MastodonAnnouncer source) { + super.merge(source); + this.host = merge(this.host, source.host); + this.accessToken = merge(this.accessToken, source.accessToken); + this.status = merge(this.status, source.status); + } + + public String getResolvedStatus(JReleaserContext context) { + Map props = context.fullProps(); + applyTemplates(props, getResolvedExtraProperties()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); + return resolveTemplate(status, props); + } + + public String getResolvedAccessToken() { + return Env.env(MASTODON_ACCESS_TOKEN, accessToken); + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + @Override + protected void asMap(boolean full, Map props) { + props.put("host", host); + props.put("accessToken", isNotBlank(getResolvedAccessToken()) ? HIDE : UNSET); + props.put("status", status); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Mattermost.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MattermostAnnouncer.java similarity index 50% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Mattermost.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MattermostAnnouncer.java index 6f7090e69..e2a784b7e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Mattermost.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/MattermostAnnouncer.java @@ -15,48 +15,115 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.MattermostAnnouncer.MATTERMOST_WEBHOOK; +import static org.jreleaser.model.api.announce.MattermostAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.4.0 */ -public class Mattermost extends AbstractAnnouncer { - public static final String NAME = "mattermost"; - public static final String MATTERMOST_WEBHOOK = "MATTERMOST_WEBHOOK"; - +public final class MattermostAnnouncer extends AbstractAnnouncer { private String webhook; private String message; private String messageTemplate; - public Mattermost() { - super(NAME); + private final org.jreleaser.model.api.announce.MattermostAnnouncer immutable = new org.jreleaser.model.api.announce.MattermostAnnouncer() { + @Override + public String getWebhook() { + return webhook; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return MattermostAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return MattermostAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(MattermostAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return MattermostAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public MattermostAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.MattermostAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Mattermost mattermost) { - freezeCheck(); - super.merge(mattermost); - this.webhook = merge(this.webhook, mattermost.webhook); - this.message = merge(this.message, mattermost.message); - this.messageTemplate = merge(this.messageTemplate, mattermost.messageTemplate); + public void merge(MattermostAnnouncer source) { + super.merge(source); + this.webhook = merge(this.webhook, source.webhook); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } public String getResolvedMessage(JReleaserContext context) { @@ -68,7 +135,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -91,7 +158,6 @@ public String getWebhook() { } public void setWebhook(String webhook) { - freezeCheck(); this.webhook = webhook; } @@ -100,7 +166,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -109,7 +174,6 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SdkmanAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SdkmanAnnouncer.java new file mode 100644 index 000000000..7248a5710 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SdkmanAnnouncer.java @@ -0,0 +1,229 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Sdkman; +import org.jreleaser.model.api.packagers.SdkmanPackager; +import org.jreleaser.util.Env; + +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.SdkmanAnnouncer.TYPE; +import static org.jreleaser.util.StringUtils.isNotBlank; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public final class SdkmanAnnouncer extends AbstractAnnouncer { + private String consumerKey; + private String consumerToken; + private String candidate; + private String releaseNotesUrl; + private String downloadUrl; + private Sdkman.Command command; + + private final org.jreleaser.model.api.announce.SdkmanAnnouncer immutable = new org.jreleaser.model.api.announce.SdkmanAnnouncer() { + @Override + public String getConsumerKey() { + return consumerKey; + } + + @Override + public String getConsumerToken() { + return consumerToken; + } + + @Override + public String getCandidate() { + return candidate; + } + + @Override + public String getReleaseNotesUrl() { + return releaseNotesUrl; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public Sdkman.Command getCommand() { + return command; + } + + @Override + public boolean isMajor() { + return SdkmanAnnouncer.this.isMajor(); + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return SdkmanAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return SdkmanAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(SdkmanAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return SdkmanAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public SdkmanAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.SdkmanAnnouncer asImmutable() { + return immutable; + } + + @Override + public void merge(SdkmanAnnouncer source) { + super.merge(source); + this.consumerKey = merge(this.consumerKey, source.consumerKey); + this.consumerToken = merge(this.consumerToken, source.consumerToken); + this.candidate = merge(this.candidate, source.candidate); + this.releaseNotesUrl = merge(this.releaseNotesUrl, source.releaseNotesUrl); + this.downloadUrl = merge(this.downloadUrl, source.downloadUrl); + this.command = merge(this.command, source.command); + } + + @Override + public boolean isSnapshotSupported() { + return false; + } + + public String getResolvedConsumerKey() { + return Env.env(SdkmanPackager.SDKMAN_CONSUMER_KEY, consumerKey); + } + + public String getResolvedConsumerToken() { + return Env.env(SdkmanPackager.SDKMAN_CONSUMER_TOKEN, consumerToken); + } + + public String getConsumerKey() { + return consumerKey; + } + + public void setConsumerKey(String consumerKey) { + this.consumerKey = consumerKey; + } + + public String getConsumerToken() { + return consumerToken; + } + + public void setConsumerToken(String consumerToken) { + this.consumerToken = consumerToken; + } + + public String getCandidate() { + return candidate; + } + + public void setCandidate(String candidate) { + this.candidate = candidate; + } + + public String getReleaseNotesUrl() { + return releaseNotesUrl; + } + + public void setReleaseNotesUrl(String releaseNotesUrl) { + this.releaseNotesUrl = releaseNotesUrl; + } + + public String getDownloadUrl() { + return downloadUrl; + } + + public void setDownloadUrl(String downloadUrl) { + this.downloadUrl = downloadUrl; + } + + public Sdkman.Command getCommand() { + return command; + } + + public void setCommand(Sdkman.Command command) { + this.command = command; + } + + public void setCommand(String str) { + setCommand(Sdkman.Command.of(str)); + } + + public boolean isCommandSet() { + return command != null; + } + + public boolean isMajor() { + return command == Sdkman.Command.MAJOR; + } + + + @Override + protected void asMap(boolean full, Map props) { + props.put("consumerKey", isNotBlank(getResolvedConsumerKey()) ? HIDE : UNSET); + props.put("consumerToken", isNotBlank(getResolvedConsumerToken()) ? HIDE : UNSET); + props.put("candidate", candidate); + props.put("releaseNotesUrl", releaseNotesUrl); + props.put("downloadUrl", downloadUrl); + props.put("command", command); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Slack.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SlackAnnouncer.java similarity index 52% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Slack.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SlackAnnouncer.java index 3897e4693..b6549a0df 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Slack.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SlackAnnouncer.java @@ -15,53 +15,130 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.SlackAnnouncer.SLACK_TOKEN; +import static org.jreleaser.model.api.announce.SlackAnnouncer.SLACK_WEBHOOK; +import static org.jreleaser.model.api.announce.SlackAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class Slack extends AbstractAnnouncer { - public static final String NAME = "slack"; - public static final String SLACK_TOKEN = "SLACK_TOKEN"; - public static final String SLACK_WEBHOOK = "SLACK_WEBHOOK"; - +public final class SlackAnnouncer extends AbstractAnnouncer { private String token; private String webhook; private String channel; private String message; private String messageTemplate; - public Slack() { - super(NAME); + private final org.jreleaser.model.api.announce.SlackAnnouncer immutable = new org.jreleaser.model.api.announce.SlackAnnouncer() { + @Override + public String getToken() { + return token; + } + + @Override + public String getWebhook() { + return webhook; + } + + @Override + public String getChannel() { + return channel; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return SlackAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return SlackAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(SlackAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return SlackAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public SlackAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.SlackAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Slack slack) { - freezeCheck(); - super.merge(slack); - this.token = merge(this.token, slack.token); - this.channel = merge(this.channel, slack.channel); - this.webhook = merge(this.webhook, slack.webhook); - this.message = merge(this.message, slack.message); - this.messageTemplate = merge(this.messageTemplate, slack.messageTemplate); + public void merge(SlackAnnouncer source) { + super.merge(source); + this.token = merge(this.token, source.token); + this.channel = merge(this.channel, source.channel); + this.webhook = merge(this.webhook, source.webhook); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } public String getResolvedMessage(JReleaserContext context) { @@ -73,7 +150,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -96,7 +173,6 @@ public String getToken() { } public void setToken(String token) { - freezeCheck(); this.token = token; } @@ -109,7 +185,6 @@ public String getWebhook() { } public void setWebhook(String webhook) { - freezeCheck(); this.webhook = webhook; } @@ -118,7 +193,6 @@ public String getChannel() { } public void setChannel(String channel) { - freezeCheck(); this.channel = channel; } @@ -127,7 +201,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -136,7 +209,6 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Mail.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SmtpAnnouncer.java similarity index 53% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Mail.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SmtpAnnouncer.java index 15824faaa..9d7519f31 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Mail.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/SmtpAnnouncer.java @@ -15,11 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.Mail; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; @@ -28,25 +31,25 @@ import java.util.Locale; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.SmtpAnnouncer.MAIL_PASSWORD; +import static org.jreleaser.model.api.announce.SmtpAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class Mail extends AbstractAnnouncer { - public static final String NAME = "mail"; - public static final String MAIL_PASSWORD = "MAIL_PASSWORD"; - +public final class SmtpAnnouncer extends AbstractAnnouncer { private final Map properties = new LinkedHashMap<>(); - private Transport transport; + private Mail.Transport transport; private String host; private Integer port; private Boolean auth; @@ -59,51 +62,176 @@ public class Mail extends AbstractAnnouncer { private String subject; private String message; private String messageTemplate; - private MimeType mimeType; + private Mail.MimeType mimeType; + + private final org.jreleaser.model.api.announce.SmtpAnnouncer immutable = new org.jreleaser.model.api.announce.SmtpAnnouncer() { + @Override + public Mail.Transport getTransport() { + return transport; + } + + @Override + public String getHost() { + return host; + } + + @Override + public Integer getPort() { + return port; + } + + @Override + public boolean isAuth() { + return SmtpAnnouncer.this.isAuth(); + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public String getFrom() { + return from; + } + + @Override + public String getTo() { + return to; + } + + @Override + public String getCc() { + return cc; + } + + @Override + public String getBcc() { + return bcc; + } + + @Override + public String getSubject() { + return subject; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public Mail.MimeType getMimeType() { + return mimeType; + } + + @Override + public Map getProperties() { + return unmodifiableMap(properties); + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return SmtpAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return SmtpAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(SmtpAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return SmtpAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } - public Mail() { - super(NAME); + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public SmtpAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.SmtpAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Mail mail) { - freezeCheck(); - super.merge(mail); - this.transport = merge(this.transport, mail.transport); - this.host = merge(this.host, mail.host); - this.port = merge(this.port, mail.port); - this.auth = merge(this.auth, mail.auth); - this.username = merge(this.username, mail.username); - this.password = merge(this.password, mail.password); - this.from = merge(this.from, mail.from); - this.to = merge(this.to, mail.to); - this.cc = merge(this.cc, mail.cc); - this.bcc = merge(this.bcc, mail.bcc); - this.subject = merge(this.subject, mail.subject); - this.message = merge(this.message, mail.message); - this.messageTemplate = merge(this.messageTemplate, mail.messageTemplate); - this.mimeType = merge(this.mimeType, mail.mimeType); - setProperties(merge(this.properties, mail.properties)); + public void merge(SmtpAnnouncer source) { + super.merge(source); + this.transport = merge(this.transport, source.transport); + this.host = merge(this.host, source.host); + this.port = merge(this.port, source.port); + this.auth = merge(this.auth, source.auth); + this.username = merge(this.username, source.username); + this.password = merge(this.password, source.password); + this.from = merge(this.from, source.from); + this.to = merge(this.to, source.to); + this.cc = merge(this.cc, source.cc); + this.bcc = merge(this.bcc, source.bcc); + this.subject = merge(this.subject, source.subject); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); + this.mimeType = merge(this.mimeType, source.mimeType); + setProperties(merge(this.properties, source.properties)); } public String getResolvedSubject(JReleaserContext context) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService().getEffectiveTagName(context.getModel())); + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser().getEffectiveTagName(context.getModel())); return resolveTemplate(subject, props); } public String getResolvedMessage(JReleaserContext context) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService().getEffectiveTagName(context.getModel())); + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser().getEffectiveTagName(context.getModel())); return resolveTemplate(message, props); } public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -121,19 +249,17 @@ public String getResolvedPassword() { return Env.env(MAIL_PASSWORD, password); } - public Transport getTransport() { + public Mail.Transport getTransport() { return transport; } public void setTransport(String transport) { - freezeCheck(); - this.transport = Transport.valueOf(transport.replaceAll(" ", "_") + this.transport = Mail.Transport.valueOf(transport.replaceAll(" ", "_") .replaceAll("-", "_") .toUpperCase(Locale.ENGLISH)); } - public void setTransport(Transport transport) { - freezeCheck(); + public void setTransport(Mail.Transport transport) { this.transport = transport; } @@ -142,7 +268,6 @@ public String getHost() { } public void setHost(String host) { - freezeCheck(); this.host = host; } @@ -151,16 +276,14 @@ public Integer getPort() { } public void setPort(Integer port) { - freezeCheck(); this.port = port; } - public Boolean isAuth() { + public boolean isAuth() { return auth != null && auth; } public void setAuth(Boolean auth) { - freezeCheck(); this.auth = auth; } @@ -173,7 +296,6 @@ public String getUsername() { } public void setUsername(String username) { - freezeCheck(); this.username = username; } @@ -182,7 +304,6 @@ public String getPassword() { } public void setPassword(String password) { - freezeCheck(); this.password = password; } @@ -191,7 +312,6 @@ public String getFrom() { } public void setFrom(String from) { - freezeCheck(); this.from = from; } @@ -200,7 +320,6 @@ public String getTo() { } public void setTo(String to) { - freezeCheck(); this.to = to; } @@ -209,7 +328,6 @@ public String getCc() { } public void setCc(String cc) { - freezeCheck(); this.cc = cc; } @@ -218,7 +336,6 @@ public String getBcc() { } public void setBcc(String bcc) { - freezeCheck(); this.bcc = bcc; } @@ -227,7 +344,6 @@ public String getSubject() { } public void setSubject(String subject) { - freezeCheck(); this.subject = subject; } @@ -236,7 +352,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -245,32 +360,28 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } - public MimeType getMimeType() { + public Mail.MimeType getMimeType() { return mimeType; } public void setMimeType(String mimeType) { - freezeCheck(); - this.mimeType = MimeType.valueOf(mimeType.replaceAll(" ", "_") + this.mimeType = Mail.MimeType.valueOf(mimeType.replaceAll(" ", "_") .replaceAll("-", "_") .toUpperCase(Locale.ENGLISH)); } - public void setMimeType(MimeType mimeType) { - freezeCheck(); + public void setMimeType(Mail.MimeType mimeType) { this.mimeType = mimeType; } public Map getProperties() { - return freezeWrap(properties); + return properties; } public void setProperties(Map properties) { - freezeCheck(); this.properties.putAll(properties); } @@ -292,24 +403,4 @@ protected void asMap(boolean full, Map props) { props.put("mimeType", mimeType); props.put("properties", properties); } - - public enum MimeType { - TEXT("text/plain"), - HTML("text/html"); - - private final String code; - - MimeType(String code) { - this.code = code; - } - - public String code() { - return code; - } - } - - public enum Transport { - SMTP, - SMTPS - } } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TeamsAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TeamsAnnouncer.java new file mode 100644 index 000000000..9ae5d13c4 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TeamsAnnouncer.java @@ -0,0 +1,163 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.util.Env; + +import java.io.IOException; +import java.io.Reader; +import java.nio.file.Path; +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.TeamsAnnouncer.TEAMS_WEBHOOK; +import static org.jreleaser.model.api.announce.TeamsAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.util.StringUtils.isNotBlank; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public final class TeamsAnnouncer extends AbstractAnnouncer { + private String webhook; + private String messageTemplate; + + private final org.jreleaser.model.api.announce.TeamsAnnouncer immutable = new org.jreleaser.model.api.announce.TeamsAnnouncer() { + @Override + public String getWebhook() { + return webhook; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return TeamsAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return TeamsAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(TeamsAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return TeamsAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public TeamsAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.TeamsAnnouncer asImmutable() { + return immutable; + } + + @Override + public void merge(TeamsAnnouncer source) { + super.merge(source); + this.webhook = merge(this.webhook, source.webhook); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); + } + + public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { + Map props = context.fullProps(); + applyTemplates(props, getResolvedExtraProperties()); + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() + .getEffectiveTagName(context.getModel())); + props.putAll(extraProps); + + Path templatePath = context.getBasedir().resolve(messageTemplate); + try { + Reader reader = java.nio.file.Files.newBufferedReader(templatePath); + return applyTemplate(reader, props); + } catch (IOException e) { + throw new JReleaserException(RB.$("ERROR_unexpected_error_reading_template", + context.relativizeToBasedir(templatePath))); + } + } + + public String getResolvedWebhook() { + return Env.env(TEAMS_WEBHOOK, webhook); + } + + public String getWebhook() { + return webhook; + } + + public void setWebhook(String webhook) { + this.webhook = webhook; + } + + public String getMessageTemplate() { + return messageTemplate; + } + + public void setMessageTemplate(String messageTemplate) { + this.messageTemplate = messageTemplate; + } + + @Override + protected void asMap(boolean full, Map props) { + props.put("webhook", isNotBlank(getResolvedWebhook()) ? HIDE : UNSET); + props.put("messageTemplate", messageTemplate); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Telegram.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TelegramAnnouncer.java similarity index 51% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Telegram.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TelegramAnnouncer.java index 6275ca5d4..3104d14d3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Telegram.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TelegramAnnouncer.java @@ -15,51 +15,123 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.TelegramAnnouncer.TELEGRAM_CHAT_ID; +import static org.jreleaser.model.api.announce.TelegramAnnouncer.TELEGRAM_TOKEN; +import static org.jreleaser.model.api.announce.TelegramAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.8.0 */ -public class Telegram extends AbstractAnnouncer { - public static final String NAME = "telegram"; - public static final String TELEGRAM_TOKEN = "TELEGRAM_TOKEN"; - public static final String TELEGRAM_CHAT_ID = "TELEGRAM_CHAT_ID"; - +public final class TelegramAnnouncer extends AbstractAnnouncer { private String token; private String chatId; private String message; private String messageTemplate; - public Telegram() { - super(NAME); + private final org.jreleaser.model.api.announce.TelegramAnnouncer immutable = new org.jreleaser.model.api.announce.TelegramAnnouncer() { + @Override + public String getToken() { + return token; + } + + @Override + public String getChatId() { + return chatId; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return TelegramAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return TelegramAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(TelegramAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return TelegramAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public TelegramAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.TelegramAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Telegram telegram) { - freezeCheck(); - super.merge(telegram); - this.token = merge(this.token, telegram.token); - this.chatId = merge(this.chatId, telegram.chatId); - this.message = merge(this.message, telegram.message); - this.messageTemplate = merge(this.messageTemplate, telegram.messageTemplate); + public void merge(TelegramAnnouncer source) { + super.merge(source); + this.token = merge(this.token, source.token); + this.chatId = merge(this.chatId, source.chatId); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } public String getResolvedMessage(JReleaserContext context) { @@ -71,7 +143,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -98,7 +170,6 @@ public String getToken() { } public void setToken(String token) { - freezeCheck(); this.token = token; } @@ -107,7 +178,6 @@ public String getChatId() { } public void setChatId(String chatId) { - freezeCheck(); this.chatId = chatId; } @@ -116,7 +186,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -125,11 +194,9 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } - @Override protected void asMap(boolean full, Map props) { props.put("token", isNotBlank(getResolvedToken()) ? HIDE : UNSET); props.put("chatId", isNotBlank(getResolvedChatId()) ? HIDE : UNSET); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Twitter.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TwitterAnnouncer.java similarity index 53% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Twitter.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TwitterAnnouncer.java index f1f7fc4c6..244ac057a 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Twitter.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/TwitterAnnouncer.java @@ -15,11 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; @@ -28,24 +30,26 @@ import java.util.List; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_ACCESS_TOKEN; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_ACCESS_TOKEN_SECRET; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_CONSUMER_KEY; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_CONSUMER_SECRET; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class Twitter extends AbstractAnnouncer { - public static final String NAME = "twitter"; - public static final String TWITTER_CONSUMER_KEY = "TWITTER_CONSUMER_KEY"; - public static final String TWITTER_CONSUMER_SECRET = "TWITTER_CONSUMER_SECRET"; - public static final String TWITTER_ACCESS_TOKEN = "TWITTER_ACCESS_TOKEN"; - public static final String TWITTER_ACCESS_TOKEN_SECRET = "TWITTER_ACCESS_TOKEN_SECRET"; +public final class TwitterAnnouncer extends AbstractAnnouncer { private final List statuses = new ArrayList<>(); private String consumerKey; private String consumerSecret; @@ -54,34 +58,119 @@ public class Twitter extends AbstractAnnouncer { private String status; private String statusTemplate; - public Twitter() { - super(NAME); + private final org.jreleaser.model.api.announce.TwitterAnnouncer immutable = new org.jreleaser.model.api.announce.TwitterAnnouncer() { + @Override + public String getConsumerKey() { + return consumerKey; + } + + @Override + public String getConsumerSecret() { + return consumerSecret; + } + + @Override + public String getAccessToken() { + return accessToken; + } + + @Override + public String getAccessTokenSecret() { + return accessTokenSecret; + } + + @Override + public String getStatus() { + return status; + } + + @Override + public List getStatuses() { + return unmodifiableList(statuses); + } + + @Override + public String getStatusTemplate() { + return statusTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return TwitterAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return TwitterAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(TwitterAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return TwitterAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public TwitterAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.TwitterAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Twitter twitter) { - freezeCheck(); - super.merge(twitter); - this.consumerKey = merge(this.consumerKey, twitter.consumerKey); - this.consumerSecret = merge(this.consumerSecret, twitter.consumerSecret); - this.accessToken = merge(this.accessToken, twitter.accessToken); - this.accessTokenSecret = merge(this.accessTokenSecret, twitter.accessTokenSecret); - this.status = merge(this.status, twitter.status); - setStatuses(merge(this.statuses, twitter.statuses)); - this.statusTemplate = merge(this.statusTemplate, twitter.statusTemplate); + public void merge(TwitterAnnouncer source) { + super.merge(source); + this.consumerKey = merge(this.consumerKey, source.consumerKey); + this.consumerSecret = merge(this.consumerSecret, source.consumerSecret); + this.accessToken = merge(this.accessToken, source.accessToken); + this.accessTokenSecret = merge(this.accessTokenSecret, source.accessTokenSecret); + this.status = merge(this.status, source.status); + setStatuses(merge(this.statuses, source.statuses)); + this.statusTemplate = merge(this.statusTemplate, source.statusTemplate); } public String getResolvedStatus(JReleaserContext context) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); return resolveTemplate(status, props); } public String getResolvedStatusTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -116,7 +205,6 @@ public String getConsumerKey() { } public void setConsumerKey(String consumerKey) { - freezeCheck(); this.consumerKey = consumerKey; } @@ -125,7 +213,6 @@ public String getConsumerSecret() { } public void setConsumerSecret(String consumerSecret) { - freezeCheck(); this.consumerSecret = consumerSecret; } @@ -134,7 +221,6 @@ public String getAccessToken() { } public void setAccessToken(String accessToken) { - freezeCheck(); this.accessToken = accessToken; } @@ -143,7 +229,6 @@ public String getAccessTokenSecret() { } public void setAccessTokenSecret(String accessTokenSecret) { - freezeCheck(); this.accessTokenSecret = accessTokenSecret; } @@ -152,16 +237,14 @@ public String getStatus() { } public void setStatus(String status) { - freezeCheck(); this.status = status; } public List getStatuses() { - return freezeWrap(statuses); + return statuses; } public void setStatuses(List statuses) { - freezeCheck(); this.statuses.clear(); this.statuses.addAll(statuses); } @@ -171,7 +254,6 @@ public String getStatusTemplate() { } public void setStatusTemplate(String statusTemplate) { - freezeCheck(); this.statusTemplate = statusTemplate; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Webhook.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhookAnnouncer.java similarity index 54% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Webhook.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhookAnnouncer.java index 54559318a..3a149877b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Webhook.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhookAnnouncer.java @@ -15,48 +15,121 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.5.0 */ -public class Webhook extends AbstractAnnouncer { +public final class WebhookAnnouncer extends AbstractAnnouncer { private String webhook; private String message; private String messageProperty; private String messageTemplate; - public Webhook() { + private final org.jreleaser.model.api.announce.WebhookAnnouncer immutable = new org.jreleaser.model.api.announce.WebhookAnnouncer() { + @Override + public String getWebhook() { + return webhook; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageProperty() { + return messageProperty; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return WebhookAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return WebhookAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(WebhookAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return WebhookAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public WebhookAnnouncer() { super(""); } + public org.jreleaser.model.api.announce.WebhookAnnouncer asImmutable() { + return immutable; + } + @Override - public void merge(Webhook webhook) { - freezeCheck(); - super.merge(webhook); - this.name = merge(this.name, webhook.name); - this.webhook = merge(this.webhook, webhook.webhook); - this.message = merge(this.message, webhook.message); - this.messageTemplate = merge(this.messageTemplate, webhook.messageTemplate); - this.messageProperty = merge(this.messageProperty, webhook.messageProperty); + public void merge(WebhookAnnouncer source) { + super.merge(source); + this.name = merge(this.name, source.name); + this.webhook = merge(this.webhook, source.webhook); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); + this.messageProperty = merge(this.messageProperty, source.messageProperty); } public String getResolvedMessage(JReleaserContext context) { @@ -68,7 +141,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -92,7 +165,6 @@ public String getPrefix() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -101,7 +173,6 @@ public String getWebhook() { } public void setWebhook(String webhook) { - freezeCheck(); this.webhook = webhook; } @@ -110,7 +181,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -119,7 +189,6 @@ public String getMessageProperty() { } public void setMessageProperty(String messageProperty) { - freezeCheck(); this.messageProperty = messageProperty; } @@ -128,7 +197,6 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhooksAnnouncer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhooksAnnouncer.java new file mode 100644 index 000000000..a0ca83288 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/WebhooksAnnouncer.java @@ -0,0 +1,152 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.announce; + +import org.jreleaser.model.Active; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static java.util.Collections.unmodifiableMap; +import static java.util.function.Function.identity; +import static java.util.stream.Collectors.toMap; +import static org.jreleaser.model.api.announce.WebhooksAnnouncer.TYPE; + +/** + * @author Andres Almiray + * @since 0.5.0 + */ +public final class WebhooksAnnouncer extends AbstractAnnouncer { + private final Map webhooks = new LinkedHashMap<>(); + + private final org.jreleaser.model.api.announce.WebhooksAnnouncer immutable = new org.jreleaser.model.api.announce.WebhooksAnnouncer() { + private Map webhooks; + + @Override + public Map getWebhooks() { + if (null == webhooks) { + webhooks = WebhooksAnnouncer.this.webhooks.values().stream() + .map(WebhookAnnouncer::asImmutable) + .collect(toMap(org.jreleaser.model.api.announce.WebhookAnnouncer::getName, identity())); + } + return webhooks; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return WebhooksAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return WebhooksAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(WebhooksAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return WebhooksAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public WebhooksAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.WebhooksAnnouncer asImmutable() { + return immutable; + } + + @Override + public void merge(WebhooksAnnouncer source) { + super.merge(source); + setWebhooks(mergeModel(this.webhooks, source.webhooks)); + } + + public List getActiveWebhooks() { + return webhooks.values().stream() + .filter(WebhookAnnouncer::isEnabled) + .collect(Collectors.toList()); + } + + public Map getWebhooks() { + return webhooks; + } + + public void setWebhooks(Map webhooks) { + this.webhooks.clear(); + this.webhooks.putAll(webhooks); + } + + public void addWebhook(WebhookAnnouncer webhook) { + this.webhooks.put(webhook.getName(), webhook); + } + + @Override + public Map asMap(boolean full) { + if (!full && !isEnabled()) return Collections.emptyMap(); + + Map props = new LinkedHashMap<>(); + asMap(full, props); + + Map map = new LinkedHashMap<>(); + map.put(getName(), props); + return map; + } + + @Override + protected void asMap(boolean full, Map props) { + this.webhooks.values() + .stream() + .filter(w -> full || w.isEnabled()) + .map(d -> d.asMap(full)) + .forEach(props::putAll); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Zulip.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/ZulipAnnouncer.java similarity index 54% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Zulip.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/ZulipAnnouncer.java index 8bdaf752a..a84cc8c45 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Zulip.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/announce/ZulipAnnouncer.java @@ -15,33 +15,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.announce; import org.jreleaser.bundle.RB; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.io.Reader; import java.nio.file.Path; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.announce.ZulipAnnouncer.TYPE; +import static org.jreleaser.model.api.announce.ZulipAnnouncer.ZULIP_API_KEY; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class Zulip extends AbstractAnnouncer { - public static final String NAME = "zulip"; - public static final String ZULIP_API_KEY = "ZULIP_API_KEY"; - +public final class ZulipAnnouncer extends AbstractAnnouncer { private String account; private String apiKey; private String apiHost; @@ -50,21 +52,106 @@ public class Zulip extends AbstractAnnouncer { private String message; private String messageTemplate; - public Zulip() { - super(NAME); + private final org.jreleaser.model.api.announce.ZulipAnnouncer immutable = new org.jreleaser.model.api.announce.ZulipAnnouncer() { + @Override + public String getAccount() { + return account; + } + + @Override + public String getApiKey() { + return apiKey; + } + + @Override + public String getApiHost() { + return apiHost; + } + + @Override + public String getChannel() { + return channel; + } + + @Override + public String getSubject() { + return subject; + } + + @Override + public String getMessage() { + return message; + } + + @Override + public String getMessageTemplate() { + return messageTemplate; + } + + @Override + public String getName() { + return name; + } + + @Override + public boolean isSnapshotSupported() { + return ZulipAnnouncer.this.isSnapshotSupported(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return ZulipAnnouncer.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(ZulipAnnouncer.this.asMap(full)); + } + + @Override + public String getPrefix() { + return ZulipAnnouncer.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public ZulipAnnouncer() { + super(TYPE); + } + + public org.jreleaser.model.api.announce.ZulipAnnouncer asImmutable() { + return immutable; } @Override - public void merge(Zulip zulip) { - freezeCheck(); - super.merge(zulip); - this.account = merge(this.account, zulip.account); - this.apiKey = merge(this.apiKey, zulip.apiKey); - this.apiHost = merge(this.apiHost, zulip.apiHost); - this.channel = merge(this.channel, zulip.channel); - this.subject = merge(this.subject, zulip.subject); - this.message = merge(this.message, zulip.message); - this.messageTemplate = merge(this.messageTemplate, zulip.messageTemplate); + public void merge(ZulipAnnouncer source) { + super.merge(source); + this.account = merge(this.account, source.account); + this.apiKey = merge(this.apiKey, source.apiKey); + this.apiHost = merge(this.apiHost, source.apiHost); + this.channel = merge(this.channel, source.channel); + this.subject = merge(this.subject, source.subject); + this.message = merge(this.message, source.message); + this.messageTemplate = merge(this.messageTemplate, source.messageTemplate); } public String getResolvedSubject(JReleaserContext context) { @@ -82,7 +169,7 @@ public String getResolvedMessage(JReleaserContext context) { public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { Map props = context.fullProps(); applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser() .getEffectiveTagName(context.getModel())); props.putAll(extraProps); @@ -105,7 +192,6 @@ public String getAccount() { } public void setAccount(String account) { - freezeCheck(); this.account = account; } @@ -114,7 +200,6 @@ public String getApiKey() { } public void setApiKey(String apiKey) { - freezeCheck(); this.apiKey = apiKey; } @@ -123,7 +208,6 @@ public String getApiHost() { } public void setApiHost(String apiHost) { - freezeCheck(); this.apiHost = apiHost; } @@ -132,7 +216,6 @@ public String getChannel() { } public void setChannel(String channel) { - freezeCheck(); this.channel = channel; } @@ -141,7 +224,6 @@ public String getSubject() { } public void setSubject(String subject) { - freezeCheck(); this.subject = subject; } @@ -150,7 +232,6 @@ public String getMessage() { } public void setMessage(String message) { - freezeCheck(); this.message = message; } @@ -159,7 +240,6 @@ public String getMessageTemplate() { } public void setMessageTemplate(String messageTemplate) { - freezeCheck(); this.messageTemplate = messageTemplate; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractAssembler.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/AbstractAssembler.java similarity index 78% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractAssembler.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/AbstractAssembler.java index 2c22f0268..651d618f3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractAssembler.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/AbstractAssembler.java @@ -15,9 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.assemble; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.platform.Platform; +import org.jreleaser.model.internal.project.Project; import java.util.ArrayList; import java.util.Collections; @@ -27,15 +34,15 @@ import java.util.Map; import java.util.Set; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_STEREOTYPE; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_STEREOTYPE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; /** * @author Andres Almiray * @since 0.2.0 */ -abstract class AbstractAssembler> extends AbstractModelObject implements Assembler { +public abstract class AbstractAssembler> extends AbstractModelObject implements Assembler { @JsonIgnore protected final Set outputs = new LinkedHashSet<>(); protected final Map extraProperties = new LinkedHashMap<>(); @@ -56,28 +63,18 @@ protected AbstractAssembler(String type) { } @Override - public void freeze() { - super.freeze(); - platform.freeze(); - outputs.forEach(Artifact::freeze); - fileSets.forEach(FileSet::freeze); + public void merge(S source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + this.exported = merge(this.exported, source.exported); + this.name = merge(this.name, source.name); + this.platform.merge(source.platform); + this.stereotype = merge(this.stereotype, source.getStereotype()); + setOutputs(merge(this.outputs, source.outputs)); + setFileSets(merge(this.fileSets, source.fileSets)); + setExtraProperties(merge(this.extraProperties, source.extraProperties)); } - @Override - public void merge(S assembler) { - freezeCheck(); - this.active = merge(this.active, assembler.active); - this.enabled = merge(this.enabled, assembler.enabled); - this.exported = merge(this.exported, assembler.exported); - this.name = merge(this.name, assembler.name); - this.platform.merge(assembler.platform); - this.stereotype = merge(this.stereotype, assembler.getStereotype()); - setOutputs(merge(this.outputs, assembler.outputs)); - setFileSets(merge(this.fileSets, assembler.fileSets)); - setExtraProperties(merge(this.extraProperties, assembler.extraProperties)); - } - - @Override public Map props() { Map props = new LinkedHashMap<>(); applyTemplates(props, getResolvedExtraProperties()); @@ -93,7 +90,6 @@ public Stereotype getStereotype() { @Override public void setStereotype(Stereotype stereotype) { - freezeCheck(); this.stereotype = stereotype; } @@ -132,7 +128,6 @@ public Platform getPlatform() { @Override public void setPlatform(Platform platform) { - freezeCheck(); this.platform.merge(platform); } @@ -143,7 +138,6 @@ public boolean isExported() { @Override public void setExported(Boolean exported) { - freezeCheck(); this.exported = exported; } @@ -154,7 +148,6 @@ public String getName() { @Override public void setName(String name) { - freezeCheck(); this.name = name; } @@ -165,7 +158,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -181,19 +173,17 @@ public boolean isActiveSet() { @Override public Set getOutputs() { - return freezeWrap(Artifact.sortArtifacts(outputs)); + return Artifact.sortArtifacts(outputs); } @Override public void setOutputs(Set output) { - freezeCheck(); this.outputs.clear(); this.outputs.addAll(output); } @Override public void addOutput(Artifact artifact) { - freezeCheck(); if (null != artifact) { this.outputs.add(artifact); } @@ -201,19 +191,17 @@ public void addOutput(Artifact artifact) { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @@ -224,25 +212,22 @@ public String getPrefix() { @Override public List getFileSets() { - return freezeWrap(fileSets); + return fileSets; } @Override public void setFileSets(List fileSets) { - freezeCheck(); this.fileSets.clear(); this.fileSets.addAll(fileSets); } @Override public void addFileSets(List files) { - freezeCheck(); this.fileSets.addAll(files); } @Override public void addFileSet(FileSet file) { - freezeCheck(); if (null != file) { this.fileSets.add(file); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractJavaAssembler.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/AbstractJavaAssembler.java similarity index 82% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractJavaAssembler.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/AbstractJavaAssembler.java index d564dce64..f41e934f5 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractJavaAssembler.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/AbstractJavaAssembler.java @@ -15,10 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.assemble; -import org.jreleaser.util.Constants; -import org.jreleaser.util.SemVer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.internal.common.Java; +import org.jreleaser.version.SemanticVersion; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -32,7 +35,7 @@ * @author Andres Almiray * @since 0.8.0 */ -abstract class AbstractJavaAssembler> extends AbstractAssembler implements JavaAssembler { +public abstract class AbstractJavaAssembler> extends AbstractAssembler implements JavaAssembler { protected final Artifact mainJar = new Artifact(); protected final List jars = new ArrayList<>(); protected final List files = new ArrayList<>(); @@ -46,24 +49,14 @@ protected AbstractJavaAssembler(String type) { } @Override - public void freeze() { - super.freeze(); - mainJar.freeze(); - jars.forEach(Glob::freeze); - files.forEach(Glob::freeze); - java.freeze(); - } - - @Override - public void merge(S assembler) { - freezeCheck(); - super.merge(assembler); - this.executable = merge(this.executable, assembler.executable); - this.templateDirectory = merge(this.templateDirectory, assembler.templateDirectory); - setJava(assembler.java); - setMainJar(assembler.mainJar); - setJars(merge(this.jars, assembler.jars)); - setFiles(merge(this.files, assembler.files)); + public void merge(S source) { + super.merge(source); + this.executable = merge(this.executable, source.executable); + this.templateDirectory = merge(this.templateDirectory, source.templateDirectory); + setJava(source.java); + setMainJar(source.mainJar); + setJars(merge(this.jars, source.jars)); + setFiles(merge(this.files, source.files)); } @Override @@ -76,7 +69,7 @@ public Map props() { safePut(Constants.KEY_DISTRIBUTION_JAVA_MAIN_CLASS, java.getMainClass(), props, true); if (isNotBlank(java.getVersion())) { props.put(Constants.KEY_DISTRIBUTION_JAVA_VERSION, java.getVersion()); - SemVer jv = SemVer.of(java.getVersion()); + SemanticVersion jv = SemanticVersion.of(java.getVersion()); safePut(Constants.KEY_DISTRIBUTION_JAVA_VERSION_MAJOR, jv.getMajor(), props, true); safePut(Constants.KEY_DISTRIBUTION_JAVA_VERSION_MINOR, jv.getMinor(), props, true); safePut(Constants.KEY_DISTRIBUTION_JAVA_VERSION_PATCH, jv.getPatch(), props, true); @@ -100,7 +93,6 @@ public String getExecutable() { @Override public void setExecutable(String executable) { - freezeCheck(); this.executable = executable; } @@ -111,7 +103,6 @@ public String getTemplateDirectory() { @Override public void setTemplateDirectory(String templateDirectory) { - freezeCheck(); this.templateDirectory = templateDirectory; } @@ -137,25 +128,22 @@ public void setMainJar(Artifact mainJar) { @Override public List getJars() { - return freezeWrap(jars); + return jars; } @Override public void setJars(List jars) { - freezeCheck(); this.jars.clear(); this.jars.addAll(jars); } @Override public void addJars(List jars) { - freezeCheck(); this.jars.addAll(jars); } @Override public void addJar(Glob jar) { - freezeCheck(); if (null != jar) { this.jars.add(jar); } @@ -163,25 +151,22 @@ public void addJar(Glob jar) { @Override public List getFiles() { - return freezeWrap(files); + return files; } @Override public void setFiles(List files) { - freezeCheck(); this.files.clear(); this.files.addAll(files); } @Override public void addFiles(List files) { - freezeCheck(); this.files.addAll(files); } @Override public void addFile(Glob file) { - freezeCheck(); if (null != file) { this.files.add(file); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/ArchiveAssembler.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/ArchiveAssembler.java new file mode 100644 index 000000000..4474c1c85 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/ArchiveAssembler.java @@ -0,0 +1,231 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.assemble; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Archive; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.util.PlatformUtils; + +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; +import static org.jreleaser.model.api.assemble.ArchiveAssembler.TYPE; +import static org.jreleaser.mustache.Templates.resolveTemplate; + +/** + * @author Andres Almiray + * @since 0.8.0 + */ +public final class ArchiveAssembler extends AbstractAssembler { + private final Set formats = new LinkedHashSet<>(); + + private String archiveName; + private Boolean attachPlatform; + private Distribution.DistributionType distributionType; + + private final org.jreleaser.model.api.assemble.ArchiveAssembler immutable = new org.jreleaser.model.api.assemble.ArchiveAssembler() { + private List fileSets; + private Set outputs; + + @Override + public String getArchiveName() { + return archiveName; + } + + @Override + public boolean isAttachPlatform() { + return ArchiveAssembler.this.isAttachPlatform(); + } + + @Override + public Set getFormats() { + return unmodifiableSet(formats); + } + + @Override + public org.jreleaser.model.api.platform.Platform getPlatform() { + return platform.asImmutable(); + } + + @Override + public Distribution.DistributionType getDistributionType() { + return ArchiveAssembler.this.getDistributionType(); + } + + @Override + public String getType() { + return type; + } + + @Override + public Stereotype getStereotype() { + return ArchiveAssembler.this.getStereotype(); + } + + @Override + public boolean isExported() { + return ArchiveAssembler.this.isExported(); + } + + @Override + public String getName() { + return name; + } + + @Override + public List getFileSets() { + if (null == fileSets) { + fileSets = ArchiveAssembler.this.fileSets.stream() + .map(FileSet::asImmutable) + .collect(toList()); + } + return fileSets; + } + + @Override + public Set getOutputs() { + if (null == outputs) { + outputs = ArchiveAssembler.this.outputs.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return outputs; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return ArchiveAssembler.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(ArchiveAssembler.this.asMap(full)); + } + + @Override + public String getPrefix() { + return ArchiveAssembler.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public ArchiveAssembler() { + super(TYPE); + } + + public org.jreleaser.model.api.assemble.ArchiveAssembler asImmutable() { + return immutable; + } + + @Override + public Distribution.DistributionType getDistributionType() { + return distributionType; + } + + public void setDistributionType(Distribution.DistributionType distributionType) { + this.distributionType = distributionType; + } + + public void setDistributionType(String distributionType) { + this.distributionType = Distribution.DistributionType.of(distributionType); + } + + @Override + public void merge(ArchiveAssembler source) { + super.merge(source); + this.archiveName = merge(source.archiveName, source.archiveName); + this.distributionType = merge(source.distributionType, source.distributionType); + this.attachPlatform = merge(source.attachPlatform, source.attachPlatform); + setFormats(merge(this.formats, source.formats)); + } + + public String getResolvedArchiveName(JReleaserContext context) { + Map props = context.fullProps(); + props.putAll(props()); + String result = resolveTemplate(archiveName, props); + if (isAttachPlatform()) { + result += "-" + getPlatform().applyReplacements(PlatformUtils.getCurrentFull()); + } + return result; + } + + public String getArchiveName() { + return archiveName; + } + + public void setArchiveName(String archiveName) { + this.archiveName = archiveName; + } + + public boolean isAttachPlatformSet() { + return attachPlatform != null; + } + + public boolean isAttachPlatform() { + return attachPlatform != null && attachPlatform; + } + + public void setAttachPlatform(Boolean attachPlatform) { + this.attachPlatform = attachPlatform; + } + + public Set getFormats() { + return formats; + } + + public void setFormats(Set formats) { + this.formats.clear(); + this.formats.addAll(formats); + } + + public void addFormat(Archive.Format format) { + this.formats.add(format); + } + + public void addFormat(String str) { + this.formats.add(Archive.Format.of(str)); + } + + @Override + protected void asMap(boolean full, Map props) { + props.put("archiveName", archiveName); + props.put("distributionType", distributionType); + props.put("attachPlatform", isAttachPlatform()); + props.put("formats", formats); + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/Assemble.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/Assemble.java new file mode 100644 index 000000000..3d0f724bb --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/Assemble.java @@ -0,0 +1,327 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.assemble; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.util.Env; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; +import static java.util.function.Function.identity; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; +import static org.jreleaser.model.JReleaserOutput.nag; +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public final class Assemble extends AbstractModelObject implements Domain, Activatable { + private final Map archive = new LinkedHashMap<>(); + private final Map jlink = new LinkedHashMap<>(); + private final Map jpackage = new LinkedHashMap<>(); + private final Map nativeImage = new LinkedHashMap<>(); + + private Active active; + @JsonIgnore + private boolean enabled = true; + + private final org.jreleaser.model.api.assemble.Assemble immutable = new org.jreleaser.model.api.assemble.Assemble() { + private Map archive; + private Map jlink; + private Map jpackage; + private Map nativeImage; + + @Override + public Map getArchive() { + if (null == archive) { + archive = Assemble.this.archive.values().stream() + .map(ArchiveAssembler::asImmutable) + .collect(toMap(org.jreleaser.model.api.assemble.Assembler::getName, identity())); + } + return archive; + } + + @Override + public Map getJlink() { + if (null == jlink) { + jlink = Assemble.this.jlink.values().stream() + .map(JlinkAssembler::asImmutable) + .collect(toMap(org.jreleaser.model.api.assemble.Assembler::getName, identity())); + } + return jlink; + } + + @Override + public Map getJpackage() { + if (null == jpackage) { + jpackage = Assemble.this.jpackage.values().stream() + .map(JpackageAssembler::asImmutable) + .collect(toMap(org.jreleaser.model.api.assemble.Assembler::getName, identity())); + } + return jpackage; + } + + @Override + public Map getNativeImage() { + if (null == nativeImage) { + nativeImage = Assemble.this.nativeImage.values().stream() + .map(NativeImageAssembler::asImmutable) + .collect(toMap(org.jreleaser.model.api.assemble.Assembler::getName, identity())); + } + return nativeImage; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Assemble.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Assemble.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.assemble.Assemble asImmutable() { + return immutable; + } + + @Override + public void merge(Assemble source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + setArchive(mergeModel(this.archive, source.archive)); + setJlink(mergeModel(this.jlink, source.jlink)); + setJpackage(mergeModel(this.jpackage, source.jpackage)); + setNativeImage(mergeModel(this.nativeImage, source.nativeImage)); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Deprecated + public void setEnabled(Boolean enabled) { + nag("assemble.enabled is deprecated since 1.1.0 and will be removed in 2.0.0"); + if (null != enabled) { + this.active = enabled ? Active.ALWAYS : Active.NEVER; + } + } + + public void disable() { + active = Active.NEVER; + enabled = false; + } + + public boolean resolveEnabled(Project project) { + if (null == active) { + setActive(Env.resolveOrDefault("assemble.active", "", "ALWAYS")); + } + enabled = active.check(project); + return enabled; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public void setActive(Active active) { + this.active = active; + } + + @Override + public void setActive(String str) { + setActive(Active.of(str)); + } + + @Override + public boolean isActiveSet() { + return active != null; + } + + public List getActiveArchives() { + return archive.values().stream() + .filter(ArchiveAssembler::isEnabled) + .collect(toList()); + } + + public Map getArchive() { + return archive; + } + + public void setArchive(Map archive) { + this.archive.clear(); + this.archive.putAll(archive); + } + + public void addArchive(ArchiveAssembler archive) { + this.archive.put(archive.getName(), archive); + } + + public List getActiveJlinks() { + return jlink.values().stream() + .filter(JlinkAssembler::isEnabled) + .collect(toList()); + } + + public Map getJlink() { + return jlink; + } + + public void setJlink(Map jlink) { + this.jlink.clear(); + this.jlink.putAll(jlink); + } + + public void addJlink(JlinkAssembler jlink) { + this.jlink.put(jlink.getName(), jlink); + } + + public JlinkAssembler findJlink(String name) { + if (isBlank(name)) { + throw new JReleaserException("Jlink name must not be blank"); + } + + if (jlink.containsKey(name)) { + return jlink.get(name); + } + + throw new JReleaserException("Jlink '" + name + "' not found"); + } + + public List getActiveJpackages() { + return jpackage.values().stream() + .filter(JpackageAssembler::isEnabled) + .collect(toList()); + } + + public Map getJpackage() { + return jpackage; + } + + public void setJpackage(Map jpackage) { + this.jpackage.clear(); + this.jpackage.putAll(jpackage); + } + + public void addJpackage(JpackageAssembler jpackage) { + this.jpackage.put(jpackage.getName(), jpackage); + } + + public List getActiveNativeImages() { + return nativeImage.values().stream() + .filter(NativeImageAssembler::isEnabled) + .collect(toList()); + } + + public Map getNativeImage() { + return nativeImage; + } + + public void setNativeImage(Map nativeImage) { + this.nativeImage.clear(); + this.nativeImage.putAll(nativeImage); + } + + public void addNativeImage(NativeImageAssembler nativeImage) { + this.nativeImage.put(nativeImage.getName(), nativeImage); + } + + @Override + public Map asMap(boolean full) { + Map map = new LinkedHashMap<>(); + map.put("enabled", isEnabled()); + map.put("active", active); + + List> archive = this.archive.values() + .stream() + .filter(d -> full || d.isEnabled()) + .map(d -> d.asMap(full)) + .collect(toList()); + if (!archive.isEmpty()) map.put("archive", archive); + + List> jlink = this.jlink.values() + .stream() + .filter(d -> full || d.isEnabled()) + .map(d -> d.asMap(full)) + .collect(toList()); + if (!jlink.isEmpty()) map.put("jlink", jlink); + + List> jpackage = this.jpackage.values() + .stream() + .filter(d -> full || d.isEnabled()) + .map(d -> d.asMap(full)) + .collect(toList()); + if (!jpackage.isEmpty()) map.put("jpackage", jpackage); + + List> nativeImage = this.nativeImage.values() + .stream() + .filter(d -> full || d.isEnabled()) + .map(d -> d.asMap(full)) + .collect(toList()); + if (!nativeImage.isEmpty()) map.put("nativeImage", nativeImage); + + return map; + } + + public Map findAssemblersByType(String assemblerName) { + switch (assemblerName) { + case org.jreleaser.model.api.assemble.ArchiveAssembler.TYPE: + return (Map) archive; + case org.jreleaser.model.api.assemble.JlinkAssembler.TYPE: + return (Map) jlink; + case org.jreleaser.model.api.assemble.JpackageAssembler.TYPE: + return (Map) jpackage; + case org.jreleaser.model.api.assemble.NativeImageAssembler.TYPE: + return (Map) nativeImage; + } + + return Collections.emptyMap(); + } + + public Collection findAllAssemblers() { + List assemblers = new ArrayList<>(); + assemblers.addAll((List) getActiveArchives()); + assemblers.addAll((List) getActiveJlinks()); + assemblers.addAll((List) getActiveJpackages()); + assemblers.addAll((List) getActiveNativeImages()); + return assemblers; + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Assembler.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/Assembler.java similarity index 77% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Assembler.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/Assembler.java index 63754a6d5..f2cda13b1 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Assembler.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/Assembler.java @@ -15,7 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.assemble; + +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.platform.Platform; import java.util.List; import java.util.Map; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JavaAssembler.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JavaAssembler.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/JavaAssembler.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JavaAssembler.java index 126dc2dca..8691f5132 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JavaAssembler.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JavaAssembler.java @@ -15,7 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.assemble; + +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.internal.common.Java; import java.util.List; diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JlinkAssembler.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JlinkAssembler.java new file mode 100644 index 000000000..f6e0fbe8f --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JlinkAssembler.java @@ -0,0 +1,495 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.assemble; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.EnabledAware; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.common.Glob; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; +import static org.jreleaser.model.api.assemble.JlinkAssembler.TYPE; +import static org.jreleaser.mustache.Templates.resolveTemplate; +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public final class JlinkAssembler extends AbstractJavaAssembler { + private final Set targetJdks = new LinkedHashSet<>(); + private final Set moduleNames = new LinkedHashSet<>(); + private final Set additionalModuleNames = new LinkedHashSet<>(); + private final List args = new ArrayList<>(); + private final Artifact jdk = new Artifact(); + private final Jdeps jdeps = new Jdeps(); + + private String imageName; + private String imageNameTransform; + private Boolean copyJars; + + private final org.jreleaser.model.api.assemble.JlinkAssembler immutable = new org.jreleaser.model.api.assemble.JlinkAssembler() { + private List fileSets; + private Set outputs; + private List jars; + private List files; + private Set targetJdks; + + @Override + public Jdeps getJdeps() { + return jdeps.asImmutable(); + } + + @Override + public org.jreleaser.model.api.common.Artifact getJdk() { + return jdk.asImmutable(); + } + + @Override + public String getImageName() { + return imageName; + } + + @Override + public String getImageNameTransform() { + return imageNameTransform; + } + + @Override + public Set getTargetJdks() { + if (null == targetJdks) { + targetJdks = JlinkAssembler.this.targetJdks.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return targetJdks; + } + + @Override + public Set getModuleNames() { + return unmodifiableSet(moduleNames); + } + + @Override + public List getArgs() { + return unmodifiableList(args); + } + + @Override + public boolean isCopyJars() { + return JlinkAssembler.this.isCopyJars(); + } + + @Override + public String getExecutable() { + return executable; + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public org.jreleaser.model.api.common.Java getJava() { + return java.asImmutable(); + } + + @Override + public org.jreleaser.model.api.common.Artifact getMainJar() { + return mainJar.asImmutable(); + } + + @Override + public List getJars() { + if (null == jars) { + jars = JlinkAssembler.this.jars.stream() + .map(Glob::asImmutable) + .collect(toList()); + } + return jars; + } + + @Override + public List getFiles() { + if (null == files) { + files = JlinkAssembler.this.files.stream() + .map(Glob::asImmutable) + .collect(toList()); + } + return files; + } + + @Override + public org.jreleaser.model.api.platform.Platform getPlatform() { + return platform.asImmutable(); + } + + @Override + public Distribution.DistributionType getDistributionType() { + return JlinkAssembler.this.getDistributionType(); + } + + @Override + public String getType() { + return type; + } + + @Override + public Stereotype getStereotype() { + return JlinkAssembler.this.getStereotype(); + } + + @Override + public boolean isExported() { + return isExported(); + } + + @Override + public String getName() { + return name; + } + + @Override + public List getFileSets() { + if (null == fileSets) { + fileSets = JlinkAssembler.this.fileSets.stream() + .map(FileSet::asImmutable) + .collect(toList()); + } + return fileSets; + } + + @Override + public Set getOutputs() { + if (null == outputs) { + outputs = JlinkAssembler.this.outputs.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return outputs; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(JlinkAssembler.this.asMap(full)); + } + + @Override + public String getPrefix() { + return JlinkAssembler.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public JlinkAssembler() { + super(TYPE); + } + + public org.jreleaser.model.api.assemble.JlinkAssembler asImmutable() { + return immutable; + } + + @Override + public Distribution.DistributionType getDistributionType() { + return Distribution.DistributionType.JLINK; + } + + @Override + public void merge(JlinkAssembler source) { + super.merge(source); + this.imageName = merge(this.imageName, source.imageName); + this.imageNameTransform = merge(this.imageNameTransform, source.imageNameTransform); + this.copyJars = merge(this.copyJars, source.copyJars); + setJdeps(source.jdeps); + setJdk(source.jdk); + setTargetJdks(merge(this.targetJdks, source.targetJdks)); + setModuleNames(merge(this.moduleNames, source.moduleNames)); + setAdditionalModuleNames(merge(this.additionalModuleNames, source.additionalModuleNames)); + setArgs(merge(this.args, source.args)); + } + + public String getResolvedImageName(JReleaserContext context) { + Map props = context.getModel().props(); + props.putAll(props()); + return resolveTemplate(imageName, props); + } + + public String getResolvedImageNameTransform(JReleaserContext context) { + if (isBlank(imageNameTransform)) return null; + Map props = context.getModel().props(); + props.putAll(props()); + return resolveTemplate(imageNameTransform, props); + } + + public Jdeps getJdeps() { + return jdeps; + } + + public void setJdeps(Jdeps jdeps) { + this.jdeps.merge(jdeps); + } + + public Artifact getJdk() { + return jdk; + } + + public void setJdk(Artifact jdk) { + this.jdk.merge(jdk); + } + + public String getImageName() { + return imageName; + } + + public void setImageName(String imageName) { + this.imageName = imageName; + } + + public String getImageNameTransform() { + return imageNameTransform; + } + + public void setImageNameTransform(String imageNameTransform) { + this.imageNameTransform = imageNameTransform; + } + + public Set getTargetJdks() { + return Artifact.sortArtifacts(targetJdks); + } + + public void setTargetJdks(Set targetJdks) { + this.targetJdks.clear(); + this.targetJdks.addAll(targetJdks); + } + + public void addTargetJdk(Artifact jdk) { + if (null != jdk) { + this.targetJdks.add(jdk); + } + } + + public Set getModuleNames() { + return moduleNames; + } + + public void setModuleNames(Set moduleNames) { + this.moduleNames.clear(); + this.moduleNames.addAll(moduleNames); + } + + public Set getAdditionalModuleNames() { + return additionalModuleNames; + } + + public void setAdditionalModuleNames(Set additionalModuleNames) { + this.additionalModuleNames.clear(); + this.additionalModuleNames.addAll(additionalModuleNames); + } + + public List getArgs() { + return args; + } + + public void setArgs(List args) { + this.args.clear(); + this.args.addAll(args); + } + + public boolean isCopyJars() { + return copyJars == null || copyJars; + } + + public void setCopyJars(Boolean copyJars) { + this.copyJars = copyJars; + } + + public boolean isCopyJarsSet() { + return copyJars != null; + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("imageName", imageName); + props.put("imageNameTransform", imageNameTransform); + props.put("moduleNames", moduleNames); + props.put("additionalModuleNames", additionalModuleNames); + props.put("args", args); + props.put("jdeps", jdeps.asMap(full)); + Map> mappedJdks = new LinkedHashMap<>(); + int i = 0; + for (Artifact targetJdk : getTargetJdks()) { + mappedJdks.put("jdk " + (i++), targetJdk.asMap(full)); + } + props.put("jdk", jdk.asMap(full)); + props.put("targetJdks", mappedJdks); + props.put("copyJars", isCopyJars()); + } + + public static final class Jdeps extends AbstractModelObject implements Domain, EnabledAware { + private final Set targets = new LinkedHashSet<>(); + private String multiRelease; + private Boolean ignoreMissingDeps; + private Boolean useWildcardInPath; + private Boolean enabled; + + private final org.jreleaser.model.api.assemble.JlinkAssembler.Jdeps immutable = new org.jreleaser.model.api.assemble.JlinkAssembler.Jdeps() { + @Override + public String getMultiRelease() { + return multiRelease; + } + + @Override + public boolean isIgnoreMissingDeps() { + return Jdeps.this.isIgnoreMissingDeps(); + } + + @Override + public boolean isUseWildcardInPath() { + return Jdeps.this.isUseWildcardInPath(); + } + + @Override + public Set getTargets() { + return unmodifiableSet(targets); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Jdeps.this.asMap(full)); + } + + @Override + public boolean isEnabled() { + return Jdeps.this.isEnabled(); + } + }; + + public org.jreleaser.model.api.assemble.JlinkAssembler.Jdeps asImmutable() { + return immutable; + } + + @Override + public void merge(Jdeps jdeps) { + this.multiRelease = this.merge(this.multiRelease, jdeps.multiRelease); + this.ignoreMissingDeps = this.merge(this.ignoreMissingDeps, jdeps.ignoreMissingDeps); + this.useWildcardInPath = this.merge(this.useWildcardInPath, jdeps.useWildcardInPath); + this.enabled = merge(this.enabled, jdeps.enabled); + setTargets(merge(this.targets, jdeps.targets)); + } + + public String getMultiRelease() { + return multiRelease; + } + + public void setMultiRelease(String multiRelease) { + this.multiRelease = multiRelease; + } + + public boolean isIgnoreMissingDeps() { + return ignoreMissingDeps != null && ignoreMissingDeps; + } + + public void setIgnoreMissingDeps(Boolean ignoreMissingDeps) { + this.ignoreMissingDeps = ignoreMissingDeps; + } + + public boolean isIgnoreMissingDepsSet() { + return ignoreMissingDeps != null; + } + + public boolean isUseWildcardInPath() { + return useWildcardInPath == null || useWildcardInPath; + } + + public void setUseWildcardInPath(Boolean useWildcardInPath) { + this.useWildcardInPath = useWildcardInPath; + } + + public boolean isUseWildcardInPathSet() { + return useWildcardInPath != null; + } + + public Set getTargets() { + return targets; + } + + public void setTargets(Set targets) { + this.targets.clear(); + this.targets.addAll(targets); + } + + @Override + public boolean isEnabled() { + return enabled != null && enabled; + } + + @Override + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + @Override + public boolean isEnabledSet() { + return enabled != null; + } + + @Override + public Map asMap(boolean full) { + Map props = new LinkedHashMap<>(); + props.put("enabled", isEnabled()); + props.put("multiRelease", multiRelease); + props.put("ignoreMissingDeps", isIgnoreMissingDeps()); + props.put("useWildcardInPath", isUseWildcardInPath()); + props.put("targets", targets); + return props; + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Jpackage.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JpackageAssembler.java similarity index 51% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Jpackage.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JpackageAssembler.java index 75078dd17..762417a56 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Jpackage.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/JpackageAssembler.java @@ -15,9 +15,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.assemble; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.common.Glob; import org.jreleaser.util.PlatformUtils; import java.util.ArrayList; @@ -30,17 +39,20 @@ import java.util.Optional; import java.util.Set; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; import static java.util.Collections.unmodifiableSet; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; +import static org.jreleaser.model.api.assemble.JpackageAssembler.TYPE; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.10.0 */ -public class Jpackage extends AbstractJavaAssembler { - public static final String TYPE = "jpackage"; - +public final class JpackageAssembler extends AbstractJavaAssembler { private final Set runtimeImages = new LinkedHashSet<>(); private final ApplicationPackage applicationPackage = new ApplicationPackage(); @@ -53,39 +65,217 @@ public class Jpackage extends AbstractJavaAssembler { private Boolean attachPlatform; private Boolean verbose; - public Jpackage() { + private final org.jreleaser.model.api.assemble.JpackageAssembler immutable = new org.jreleaser.model.api.assemble.JpackageAssembler() { + private Set runtimeImages; + private Set platformPackagers; + private List jars; + private List files; + private List fileSets; + private Set outputs; + + @Override + public String getJlink() { + return jlink; + } + + @Override + public boolean isAttachPlatform() { + return JpackageAssembler.this.isAttachPlatform(); + } + + @Override + public boolean isVerbose() { + return JpackageAssembler.this.isVerbose(); + } + + @Override + public Set getRuntimeImages() { + if (null == runtimeImages) { + runtimeImages = JpackageAssembler.this.runtimeImages.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return runtimeImages; + } + + @Override + public ApplicationPackage getApplicationPackage() { + return applicationPackage.asImmutable(); + } + + @Override + public Launcher getLauncher() { + return launcher.asImmutable(); + } + + @Override + public Linux getLinux() { + return linux.asImmutable(); + } + + @Override + public Windows getWindows() { + return windows.asImmutable(); + } + + @Override + public Osx getOsx() { + return osx.asImmutable(); + } + + @Override + public Set getPlatformPackagers() { + if (null == platformPackagers) { + platformPackagers = unmodifiableSet(setOf( + osx.asImmutable(), + linux.asImmutable(), + windows.asImmutable() + )); + } + return platformPackagers; + } + + @Override + public String getExecutable() { + return executable; + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public org.jreleaser.model.api.common.Java getJava() { + return java.asImmutable(); + } + + @Override + public org.jreleaser.model.api.common.Artifact getMainJar() { + return mainJar.asImmutable(); + } + + @Override + public List getJars() { + if (null == jars) { + jars = JpackageAssembler.this.jars.stream() + .map(Glob::asImmutable) + .collect(toList()); + } + return jars; + } + + @Override + public List getFiles() { + if (null == files) { + files = JpackageAssembler.this.files.stream() + .map(Glob::asImmutable) + .collect(toList()); + } + return files; + } + + @Override + public org.jreleaser.model.api.platform.Platform getPlatform() { + return platform.asImmutable(); + } + + @Override + public Distribution.DistributionType getDistributionType() { + return JpackageAssembler.this.getDistributionType(); + } + + @Override + public String getType() { + return type; + } + + @Override + public Stereotype getStereotype() { + return JpackageAssembler.this.getStereotype(); + } + + @Override + public boolean isExported() { + return JpackageAssembler.this.isExported(); + } + + @Override + public String getName() { + return name; + } + + @Override + public List getFileSets() { + if (null == fileSets) { + fileSets = JpackageAssembler.this.fileSets.stream() + .map(FileSet::asImmutable) + .collect(toList()); + } + return fileSets; + } + + @Override + public Set getOutputs() { + if (null == outputs) { + outputs = JpackageAssembler.this.outputs.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return outputs; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return JpackageAssembler.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(JpackageAssembler.this.asMap(full)); + } + + @Override + public String getPrefix() { + return JpackageAssembler.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public JpackageAssembler() { super(TYPE); } - @Override - public Distribution.DistributionType getDistributionType() { - return Distribution.DistributionType.NATIVE_PACKAGE; + public org.jreleaser.model.api.assemble.JpackageAssembler asImmutable() { + return immutable; } @Override - public void freeze() { - super.freeze(); - runtimeImages.forEach(Artifact::freeze); - applicationPackage.freeze(); - launcher.freeze(); - linux.freeze(); - windows.freeze(); - osx.freeze(); + public Distribution.DistributionType getDistributionType() { + return Distribution.DistributionType.NATIVE_PACKAGE; } @Override - public void merge(Jpackage jpackage) { - freezeCheck(); - super.merge(jpackage); - this.jlink = merge(this.jlink, jpackage.jlink); - this.attachPlatform = merge(this.attachPlatform, jpackage.attachPlatform); - this.verbose = merge(this.verbose, jpackage.verbose); - setRuntimeImages(jpackage.runtimeImages); - setApplicationPackage(jpackage.applicationPackage); - setLauncher(jpackage.launcher); - setLinux(jpackage.linux); - setWindows(jpackage.windows); - setOsx(jpackage.osx); + public void merge(JpackageAssembler source) { + super.merge(source); + this.jlink = merge(this.jlink, source.jlink); + this.attachPlatform = merge(this.attachPlatform, source.attachPlatform); + this.verbose = merge(this.verbose, source.verbose); + setRuntimeImages(source.runtimeImages); + setApplicationPackage(source.applicationPackage); + setLauncher(source.launcher); + setLinux(source.linux); + setWindows(source.windows); + setOsx(source.osx); } public String getJlink() { @@ -93,7 +283,6 @@ public String getJlink() { } public void setJlink(String jlink) { - freezeCheck(); this.jlink = jlink; } @@ -106,7 +295,6 @@ public boolean isAttachPlatform() { } public void setAttachPlatform(Boolean attachPlatform) { - freezeCheck(); this.attachPlatform = attachPlatform; } @@ -119,22 +307,19 @@ public boolean isVerbose() { } public void setVerbose(Boolean verbose) { - freezeCheck(); this.verbose = verbose; } public Set getRuntimeImages() { - return freezeWrap(Artifact.sortArtifacts(runtimeImages)); + return Artifact.sortArtifacts(runtimeImages); } public void setRuntimeImages(Set runtimeImages) { - freezeCheck(); this.runtimeImages.clear(); this.runtimeImages.addAll(runtimeImages); } public void addRuntimeImage(Artifact jdk) { - freezeCheck(); if (null != jdk) { this.runtimeImages.add(jdk); } @@ -223,7 +408,7 @@ public interface PlatformPackager extends Domain { void setAppName(String appName); - String getResolvedAppName(JReleaserContext context, Jpackage jpackage); + String getResolvedAppName(JReleaserContext context, JpackageAssembler jpackage); String getIcon(); @@ -256,7 +441,7 @@ public interface PlatformPackager extends Domain { void setResourceDir(String resourceDir); } - public static class ApplicationPackage extends AbstractModelObject implements Domain { + public static final class ApplicationPackage extends AbstractModelObject implements Domain { private final List fileAssociations = new ArrayList<>(); private String appName; @@ -265,9 +450,49 @@ public static class ApplicationPackage extends AbstractModelObject getFileAssociations() { + return unmodifiableList(fileAssociations); + } + + @Override + public String getLicenseFile() { + return licenseFile; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(ApplicationPackage.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.assemble.JpackageAssembler.ApplicationPackage asImmutable() { + return immutable; + } + @Override public void merge(ApplicationPackage applicationPackage) { - freezeCheck(); this.appName = this.merge(this.appName, applicationPackage.appName); this.appVersion = this.merge(this.appVersion, applicationPackage.appVersion); this.vendor = this.merge(this.vendor, applicationPackage.vendor); @@ -276,7 +501,7 @@ public void merge(ApplicationPackage applicationPackage) { setFileAssociations(merge(this.fileAssociations, applicationPackage.fileAssociations)); } - public String getResolvedAppVersion(JReleaserContext context, Jpackage jpackage) { + public String getResolvedAppVersion(JReleaserContext context, JpackageAssembler jpackage) { Map props = context.getModel().props(); props.putAll(jpackage.props()); return resolveTemplate(appVersion, props); @@ -287,7 +512,6 @@ public String getAppName() { } public void setAppName(String appName) { - freezeCheck(); this.appName = appName; } @@ -296,7 +520,6 @@ public String getAppVersion() { } public void setAppVersion(String appVersion) { - freezeCheck(); this.appVersion = appVersion; } @@ -305,7 +528,6 @@ public String getVendor() { } public void setVendor(String vendor) { - freezeCheck(); this.vendor = vendor; } @@ -314,16 +536,14 @@ public String getCopyright() { } public void setCopyright(String copyright) { - freezeCheck(); this.copyright = copyright; } public List getFileAssociations() { - return freezeWrap(fileAssociations); + return fileAssociations; } public void setFileAssociations(List fileAssociations) { - freezeCheck(); this.fileAssociations.clear(); this.fileAssociations.addAll(fileAssociations); } @@ -333,7 +553,6 @@ public String getLicenseFile() { } public void setLicenseFile(String licenseFile) { - freezeCheck(); this.licenseFile = licenseFile; } @@ -350,17 +569,42 @@ public Map asMap(boolean full) { } } - public static class Launcher extends AbstractModelObject implements Domain { + public static final class Launcher extends AbstractModelObject implements Domain { private final List arguments = new ArrayList<>(); private final List javaOptions = new ArrayList<>(); private final List launchers = new ArrayList<>(); + private final org.jreleaser.model.api.assemble.JpackageAssembler.Launcher immutable = new org.jreleaser.model.api.assemble.JpackageAssembler.Launcher() { + @Override + public List getLaunchers() { + return unmodifiableList(launchers); + } + + @Override + public List getArguments() { + return unmodifiableList(arguments); + } + + @Override + public List getJavaOptions() { + return unmodifiableList(javaOptions); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Launcher.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.assemble.JpackageAssembler.Launcher asImmutable() { + return immutable; + } + @Override - public void merge(Launcher launcher) { - freezeCheck(); - setArguments(merge(this.arguments, launcher.arguments)); - setJavaOptions(merge(this.javaOptions, launcher.javaOptions)); - setLaunchers(merge(this.launchers, launcher.launchers)); + public void merge(Launcher source) { + setArguments(merge(this.arguments, source.arguments)); + setJavaOptions(merge(this.javaOptions, source.javaOptions)); + setLaunchers(merge(this.launchers, source.launchers)); } public boolean isSet() { @@ -370,47 +614,41 @@ public boolean isSet() { } public List getLaunchers() { - return freezeWrap(launchers); + return launchers; } public void setLaunchers(List launchers) { - freezeCheck(); this.launchers.clear(); this.launchers.addAll(launchers); } public void addLaunchers(List launchers) { - freezeCheck(); this.launchers.addAll(launchers); } public List getArguments() { - return freezeWrap(arguments); + return arguments; } public void setArguments(List arguments) { - freezeCheck(); this.arguments.clear(); this.arguments.addAll(arguments); } public void addArguments(List arguments) { - freezeCheck(); this.arguments.addAll(arguments); } public List getJavaOptions() { - return freezeWrap(javaOptions); + return javaOptions; } public void setJavaOptions(List javaOptions) { - freezeCheck(); this.javaOptions.clear(); this.javaOptions.addAll(javaOptions); } public void addJavaOptions(List javaOptions) { - freezeCheck(); this.javaOptions.addAll(javaOptions); } @@ -424,7 +662,7 @@ public Map asMap(boolean full) { } } - private static abstract class AbstractPlatformPackager> extends AbstractModelObject implements PlatformPackager { + public static abstract class AbstractPlatformPackager> extends AbstractModelObject implements PlatformPackager { protected final Artifact jdk = new Artifact(); protected final List types = new ArrayList<>(); protected final List validTypes = new ArrayList<>(); @@ -443,25 +681,17 @@ protected AbstractPlatformPackager(String platform, List validTypes) { } @Override - public void freeze() { - super.freeze(); - jdk.freeze(); - } - - @Override - public void merge(S packager) { - freezeCheck(); - this.icon = this.merge(this.icon, packager.icon); - this.appName = this.merge(this.appName, packager.appName); - this.enabled = this.merge(this.enabled, packager.enabled); - this.installDir = this.merge(this.installDir, packager.installDir); - this.resourceDir = this.merge(this.resourceDir, packager.resourceDir); - setJdk(packager.jdk); - setTypes(merge(this.types, packager.types)); + public void merge(S source) { + this.icon = this.merge(this.icon, source.icon); + this.appName = this.merge(this.appName, source.appName); + this.enabled = this.merge(this.enabled, source.enabled); + this.installDir = this.merge(this.installDir, source.installDir); + this.resourceDir = this.merge(this.resourceDir, source.resourceDir); + setJdk(source.jdk); + setTypes(merge(this.types, source.types)); } - @Override - public String getResolvedAppName(JReleaserContext context, Jpackage jpackage) { + public String getResolvedAppName(JReleaserContext context, JpackageAssembler jpackage) { Map props = context.getModel().props(); props.putAll(jpackage.props()); return resolveTemplate(appName, props); @@ -474,7 +704,6 @@ public String getAppName() { @Override public void setAppName(String appName) { - freezeCheck(); this.appName = appName; } @@ -485,13 +714,11 @@ public String getIcon() { @Override public void setIcon(String icon) { - freezeCheck(); this.icon = icon; } - @Override public List getValidTypes() { - return freezeWrap(validTypes); + return validTypes; } @Override @@ -506,7 +733,6 @@ public String getResourceDir() { @Override public void setResourceDir(String resourceDir) { - freezeCheck(); this.resourceDir = resourceDir; } @@ -537,12 +763,11 @@ public void setJdk(Artifact jdk) { @Override public List getTypes() { - return freezeWrap(types); + return types; } @Override public void setTypes(List types) { - freezeCheck(); this.types.clear(); this.types.addAll(types); } @@ -554,7 +779,6 @@ public String getInstallDir() { @Override public void setInstallDir(String installDir) { - freezeCheck(); this.installDir = installDir; } @@ -580,7 +804,7 @@ public Map asMap(boolean full) { protected abstract void asMap(boolean full, Map props); } - public static class Linux extends AbstractPlatformPackager { + public static final class Linux extends AbstractPlatformPackager { private final List packageDeps = new ArrayList<>(); private String packageName; private String maintainer; @@ -590,30 +814,119 @@ public static class Linux extends AbstractPlatformPackager { private String appCategory; private Boolean shortcut; + private final org.jreleaser.model.api.assemble.JpackageAssembler.Linux immutable = new org.jreleaser.model.api.assemble.JpackageAssembler.Linux() { + @Override + public List getPackageDeps() { + return unmodifiableList(packageDeps); + } + + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getMaintainer() { + return maintainer; + } + + @Override + public String getMenuGroup() { + return menuGroup; + } + + @Override + public String getLicense() { + return license; + } + + @Override + public String getAppRelease() { + return appRelease; + } + + @Override + public String getAppCategory() { + return appCategory; + } + + @Override + public boolean isShortcut() { + return Linux.this.isShortcut(); + } + + @Override + public String getAppName() { + return appName; + } + + @Override + public String getIcon() { + return icon; + } + + @Override + public String getPlatform() { + return platform; + } + + @Override + public boolean isEnabled() { + return Linux.this.isEnabled(); + } + + @Override + public org.jreleaser.model.api.common.Artifact getJdk() { + return jdk.asImmutable(); + } + + @Override + public List getTypes() { + return unmodifiableList(types); + } + + @Override + public String getInstallDir() { + return installDir; + } + + @Override + public String getResourceDir() { + return resourceDir; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Linux.this.asMap(full)); + } + }; + public Linux() { super("linux", Arrays.asList("deb", "rpm")); } + public org.jreleaser.model.api.assemble.JpackageAssembler.Linux asImmutable() { + return immutable; + } + @Override - public void merge(Linux packager) { - freezeCheck(); - super.merge(packager); - this.packageName = this.merge(this.packageName, packager.packageName); - this.maintainer = this.merge(this.maintainer, packager.maintainer); - this.menuGroup = this.merge(this.menuGroup, packager.menuGroup); - this.license = this.merge(this.license, packager.license); - this.appRelease = this.merge(this.appRelease, packager.appRelease); - this.appCategory = this.merge(this.appCategory, packager.appCategory); - this.shortcut = this.merge(this.shortcut, packager.shortcut); - setPackageDeps(merge(this.packageDeps, packager.packageDeps)); + public void merge(Linux source) { + super.merge(source); + this.packageName = this.merge(this.packageName, source.packageName); + this.maintainer = this.merge(this.maintainer, source.maintainer); + this.menuGroup = this.merge(this.menuGroup, source.menuGroup); + this.license = this.merge(this.license, source.license); + this.appRelease = this.merge(this.appRelease, source.appRelease); + this.appCategory = this.merge(this.appCategory, source.appCategory); + this.shortcut = this.merge(this.shortcut, source.shortcut); + setPackageDeps(merge(this.packageDeps, source.packageDeps)); } public List getPackageDeps() { - return freezeWrap(packageDeps); + return packageDeps; } public void setPackageDeps(List packageDeps) { - freezeCheck(); this.packageDeps.clear(); this.packageDeps.addAll(packageDeps); } @@ -623,7 +936,6 @@ public String getPackageName() { } public void setPackageName(String packageName) { - freezeCheck(); this.packageName = packageName; } @@ -632,7 +944,6 @@ public String getMaintainer() { } public void setMaintainer(String maintainer) { - freezeCheck(); this.maintainer = maintainer; } @@ -641,7 +952,6 @@ public String getMenuGroup() { } public void setMenuGroup(String menuGroup) { - freezeCheck(); this.menuGroup = menuGroup; } @@ -650,7 +960,6 @@ public String getLicense() { } public void setLicense(String license) { - freezeCheck(); this.license = license; } @@ -659,7 +968,6 @@ public String getAppRelease() { } public void setAppRelease(String appRelease) { - freezeCheck(); this.appRelease = appRelease; } @@ -668,7 +976,6 @@ public String getAppCategory() { } public void setAppCategory(String appCategory) { - freezeCheck(); this.appCategory = appCategory; } @@ -677,7 +984,6 @@ public boolean isShortcut() { } public void setShortcut(Boolean shortcut) { - freezeCheck(); this.shortcut = shortcut; } @@ -694,7 +1000,7 @@ protected void asMap(boolean full, Map props) { } } - public static class Windows extends AbstractPlatformPackager { + public static final class Windows extends AbstractPlatformPackager { private Boolean console; private Boolean dirChooser; private Boolean menu; @@ -703,21 +1009,106 @@ public static class Windows extends AbstractPlatformPackager { private String menuGroup; private String upgradeUuid; + private final org.jreleaser.model.api.assemble.JpackageAssembler.Windows immutable = new org.jreleaser.model.api.assemble.JpackageAssembler.Windows() { + @Override + public boolean isConsole() { + return Windows.this.isConsole(); + } + + @Override + public boolean isDirChooser() { + return Windows.this.isDirChooser(); + } + + @Override + public boolean isMenu() { + return Windows.this.isMenu(); + } + + @Override + public boolean isPerUserInstall() { + return Windows.this.isPerUserInstall(); + } + + @Override + public boolean isShortcut() { + return Windows.this.isShortcut(); + } + + @Override + public String getMenuGroup() { + return menuGroup; + } + + @Override + public String getUpgradeUuid() { + return upgradeUuid; + } + + @Override + public String getAppName() { + return appName; + } + + @Override + public String getIcon() { + return icon; + } + + @Override + public String getPlatform() { + return platform; + } + + @Override + public boolean isEnabled() { + return Windows.this.isEnabled(); + } + + @Override + public org.jreleaser.model.api.common.Artifact getJdk() { + return jdk.asImmutable(); + } + + @Override + public List getTypes() { + return unmodifiableList(types); + } + + @Override + public String getInstallDir() { + return installDir; + } + + @Override + public String getResourceDir() { + return resourceDir; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Windows.this.asMap(full)); + } + }; + public Windows() { super("windows", Arrays.asList("msi", "exe")); } + public org.jreleaser.model.api.assemble.JpackageAssembler.Windows asImmutable() { + return immutable; + } + @Override - public void merge(Windows packager) { - freezeCheck(); - super.merge(packager); - this.console = this.merge(this.console, packager.console); - this.dirChooser = this.merge(this.dirChooser, packager.dirChooser); - this.menu = this.merge(this.menu, packager.menu); - this.perUserInstall = this.merge(this.perUserInstall, packager.perUserInstall); - this.shortcut = this.merge(this.shortcut, packager.shortcut); - this.menuGroup = this.merge(this.menuGroup, packager.menuGroup); - this.upgradeUuid = this.merge(this.upgradeUuid, packager.upgradeUuid); + public void merge(Windows source) { + super.merge(source); + this.console = this.merge(this.console, source.console); + this.dirChooser = this.merge(this.dirChooser, source.dirChooser); + this.menu = this.merge(this.menu, source.menu); + this.perUserInstall = this.merge(this.perUserInstall, source.perUserInstall); + this.shortcut = this.merge(this.shortcut, source.shortcut); + this.menuGroup = this.merge(this.menuGroup, source.menuGroup); + this.upgradeUuid = this.merge(this.upgradeUuid, source.upgradeUuid); } public boolean isConsole() { @@ -725,7 +1116,6 @@ public boolean isConsole() { } public void setConsole(Boolean console) { - freezeCheck(); this.console = console; } @@ -734,7 +1124,6 @@ public boolean isDirChooser() { } public void setDirChooser(Boolean dirChooser) { - freezeCheck(); this.dirChooser = dirChooser; } @@ -743,7 +1132,6 @@ public boolean isMenu() { } public void setMenu(Boolean menu) { - freezeCheck(); this.menu = menu; } @@ -752,7 +1140,6 @@ public boolean isPerUserInstall() { } public void setPerUserInstall(Boolean perUserInstall) { - freezeCheck(); this.perUserInstall = perUserInstall; } @@ -761,7 +1148,6 @@ public boolean isShortcut() { } public void setShortcut(Boolean shortcut) { - freezeCheck(); this.shortcut = shortcut; } @@ -770,7 +1156,6 @@ public String getMenuGroup() { } public void setMenuGroup(String menuGroup) { - freezeCheck(); this.menuGroup = menuGroup; } @@ -779,7 +1164,6 @@ public String getUpgradeUuid() { } public void setUpgradeUuid(String upgradeUuid) { - freezeCheck(); this.upgradeUuid = upgradeUuid; } @@ -795,7 +1179,7 @@ protected void asMap(boolean full, Map props) { } } - public static class Osx extends AbstractPlatformPackager { + public static final class Osx extends AbstractPlatformPackager { private String packageIdentifier; private String packageName; private String packageSigningPrefix; @@ -803,20 +1187,100 @@ public static class Osx extends AbstractPlatformPackager { private String signingKeyUsername; private Boolean sign; + private final org.jreleaser.model.api.assemble.JpackageAssembler.Osx immutable = new org.jreleaser.model.api.assemble.JpackageAssembler.Osx() { + @Override + public String getPackageIdentifier() { + return packageIdentifier; + } + + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getPackageSigningPrefix() { + return packageSigningPrefix; + } + + @Override + public String getSigningKeychain() { + return signingKeychain; + } + + @Override + public String getSigningKeyUsername() { + return signingKeyUsername; + } + + @Override + public boolean isSign() { + return Osx.this.isSign(); + } + + @Override + public String getAppName() { + return appName; + } + + @Override + public String getIcon() { + return icon; + } + + @Override + public String getPlatform() { + return platform; + } + + @Override + public boolean isEnabled() { + return Osx.this.isEnabled(); + } + + @Override + public org.jreleaser.model.api.common.Artifact getJdk() { + return jdk.asImmutable(); + } + + @Override + public List getTypes() { + return unmodifiableList(types); + } + + @Override + public String getInstallDir() { + return installDir; + } + + @Override + public String getResourceDir() { + return resourceDir; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Osx.this.asMap(full)); + } + }; + public Osx() { super("osx", Arrays.asList("dmg", "pkg")); } + public org.jreleaser.model.api.assemble.JpackageAssembler.Osx asImmutable() { + return immutable; + } + @Override - public void merge(Osx packager) { - freezeCheck(); - super.merge(packager); - this.packageIdentifier = this.merge(this.packageIdentifier, packager.packageIdentifier); - this.packageName = this.merge(this.packageName, packager.packageName); - this.packageSigningPrefix = this.merge(this.packageSigningPrefix, packager.packageSigningPrefix); - this.signingKeychain = this.merge(this.signingKeychain, packager.signingKeychain); - this.signingKeyUsername = this.merge(this.signingKeyUsername, packager.signingKeyUsername); - this.sign = this.merge(this.sign, packager.sign); + public void merge(Osx source) { + super.merge(source); + this.packageIdentifier = this.merge(this.packageIdentifier, source.packageIdentifier); + this.packageName = this.merge(this.packageName, source.packageName); + this.packageSigningPrefix = this.merge(this.packageSigningPrefix, source.packageSigningPrefix); + this.signingKeychain = this.merge(this.signingKeychain, source.signingKeychain); + this.signingKeyUsername = this.merge(this.signingKeyUsername, source.signingKeyUsername); + this.sign = this.merge(this.sign, source.sign); } public String getPackageIdentifier() { @@ -824,7 +1288,6 @@ public String getPackageIdentifier() { } public void setPackageIdentifier(String packageIdentifier) { - freezeCheck(); this.packageIdentifier = packageIdentifier; } @@ -833,7 +1296,6 @@ public String getPackageName() { } public void setPackageName(String packageName) { - freezeCheck(); this.packageName = packageName; } @@ -842,7 +1304,6 @@ public String getPackageSigningPrefix() { } public void setPackageSigningPrefix(String packageSigningPrefix) { - freezeCheck(); this.packageSigningPrefix = packageSigningPrefix; } @@ -851,7 +1312,6 @@ public String getSigningKeychain() { } public void setSigningKeychain(String signingKeychain) { - freezeCheck(); this.signingKeychain = signingKeychain; } @@ -860,7 +1320,6 @@ public String getSigningKeyUsername() { } public void setSigningKeyUsername(String signingKeyUsername) { - freezeCheck(); this.signingKeyUsername = signingKeyUsername; } @@ -869,7 +1328,6 @@ public boolean isSign() { } public void setSign(Boolean sign) { - freezeCheck(); this.sign = sign; } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/NativeImageAssembler.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/NativeImageAssembler.java new file mode 100644 index 000000000..724b122fa --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/assemble/NativeImageAssembler.java @@ -0,0 +1,654 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.assemble; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.Archive; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.util.PlatformUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; +import static org.jreleaser.model.api.assemble.NativeImageAssembler.TYPE; +import static org.jreleaser.mustache.Templates.resolveTemplate; +import static org.jreleaser.util.StringUtils.isBlank; + +/** + * @author Andres Almiray + * @since 0.2.0 + */ +public final class NativeImageAssembler extends AbstractJavaAssembler { + private final List args = new ArrayList<>(); + private final Artifact graal = new Artifact(); + private final Set graalJdks = new LinkedHashSet<>(); + private final Upx upx = new Upx(); + private final Linux linux = new Linux(); + private final Windows windows = new Windows(); + private final Osx osx = new Osx(); + + private String imageName; + private String imageNameTransform; + private Archive.Format archiveFormat; + + private final org.jreleaser.model.api.assemble.NativeImageAssembler immutable = new org.jreleaser.model.api.assemble.NativeImageAssembler() { + private Set graalJdks; + private List fileSets; + private Set outputs; + private List jars; + private List files; + + @Override + public String getImageName() { + return imageName; + } + + @Override + public String getImageNameTransform() { + return imageNameTransform; + } + + @Override + public Archive.Format getArchiveFormat() { + return archiveFormat; + } + + @Override + public org.jreleaser.model.api.common.Artifact getGraal() { + return graal.asImmutable(); + } + + @Override + public Set getGraalJdks() { + if (null == graalJdks) { + graalJdks = NativeImageAssembler.this.graalJdks.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return graalJdks; + } + + @Override + public List getArgs() { + return unmodifiableList(args); + } + + @Override + public Upx getUpx() { + return upx.asImmutable(); + } + + @Override + public Linux getLinux() { + return linux.asImmutable(); + } + + @Override + public Windows getWindows() { + return windows.asImmutable(); + } + + @Override + public Osx getOsx() { + return osx.asImmutable(); + } + + @Override + public String getExecutable() { + return executable; + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public org.jreleaser.model.api.common.Java getJava() { + return java.asImmutable(); + } + + @Override + public org.jreleaser.model.api.common.Artifact getMainJar() { + return mainJar.asImmutable(); + } + + @Override + public List getJars() { + if (null == jars) { + jars = NativeImageAssembler.this.jars.stream() + .map(Glob::asImmutable) + .collect(toList()); + } + return jars; + } + + @Override + public List getFiles() { + if (null == files) { + files = NativeImageAssembler.this.files.stream() + .map(Glob::asImmutable) + .collect(toList()); + } + return files; + } + + @Override + public org.jreleaser.model.api.platform.Platform getPlatform() { + return platform.asImmutable(); + } + + @Override + public Distribution.DistributionType getDistributionType() { + return NativeImageAssembler.this.getDistributionType(); + } + + @Override + public String getType() { + return type; + } + + @Override + public Stereotype getStereotype() { + return NativeImageAssembler.this.getStereotype(); + } + + @Override + public boolean isExported() { + return NativeImageAssembler.this.isExported(); + } + + @Override + public String getName() { + return name; + } + + @Override + public List getFileSets() { + if (null == fileSets) { + fileSets = NativeImageAssembler.this.fileSets.stream() + .map(FileSet::asImmutable) + .collect(toList()); + } + return fileSets; + } + + @Override + public Set getOutputs() { + if (null == outputs) { + outputs = NativeImageAssembler.this.outputs.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return outputs; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return NativeImageAssembler.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(NativeImageAssembler.this.asMap(full)); + } + + @Override + public String getPrefix() { + return NativeImageAssembler.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public NativeImageAssembler() { + super(TYPE); + } + + public org.jreleaser.model.api.assemble.NativeImageAssembler asImmutable() { + return immutable; + } + + @Override + public Distribution.DistributionType getDistributionType() { + return Distribution.DistributionType.NATIVE_IMAGE; + } + + @Override + public void merge(NativeImageAssembler source) { + super.merge(source); + this.imageName = merge(this.imageName, source.imageName); + this.imageNameTransform = merge(this.imageNameTransform, source.imageNameTransform); + this.archiveFormat = merge(this.archiveFormat, source.archiveFormat); + setGraal(source.graal); + setGraalJdks(merge(this.graalJdks, source.graalJdks)); + setArgs(merge(this.args, source.args)); + setUpx(source.upx); + setLinux(source.linux); + setWindows(source.windows); + setOsx(source.osx); + } + + public String getResolvedImageName(JReleaserContext context) { + Map props = context.getModel().props(); + props.putAll(props()); + return resolveTemplate(imageName, props); + } + + public String getResolvedImageNameTransform(JReleaserContext context) { + if (isBlank(imageNameTransform)) return null; + Map props = context.getModel().props(); + props.putAll(props()); + return resolveTemplate(imageNameTransform, props); + } + + public PlatformCustomizer getResolvedPlatformCustomizer() { + String currentPlatform = PlatformUtils.getCurrentFull(); + if (PlatformUtils.isMac(currentPlatform)) { + return getOsx(); + } else if (PlatformUtils.isWindows(currentPlatform)) { + return getWindows(); + } + return getLinux(); + } + + public String getImageName() { + return imageName; + } + + public void setImageName(String imageName) { + this.imageName = imageName; + } + + public String getImageNameTransform() { + return imageNameTransform; + } + + public void setImageNameTransform(String imageNameTransform) { + this.imageNameTransform = imageNameTransform; + } + + public Archive.Format getArchiveFormat() { + return archiveFormat; + } + + public void setArchiveFormat(Archive.Format archiveFormat) { + this.archiveFormat = archiveFormat; + } + + public void setArchiveFormat(String archiveFormat) { + this.archiveFormat = Archive.Format.of(archiveFormat); + } + + public Artifact getGraal() { + return graal; + } + + public void setGraal(Artifact graal) { + this.graal.merge(graal); + } + + public Set getGraalJdks() { + return Artifact.sortArtifacts(graalJdks); + } + + public void setGraalJdks(Set graalJdks) { + this.graalJdks.clear(); + this.graalJdks.addAll(graalJdks); + } + + public void addGraalJdks(Set graalJdks) { + this.graalJdks.addAll(graalJdks); + } + + public void addGraalJdk(Artifact jdk) { + if (null != jdk) { + this.graalJdks.add(jdk); + } + } + + public List getArgs() { + return args; + } + + public void setArgs(List args) { + this.args.clear(); + this.args.addAll(args); + } + + public Upx getUpx() { + return upx; + } + + public void setUpx(Upx upx) { + this.upx.merge(upx); + } + + public Linux getLinux() { + return linux; + } + + public void setLinux(Linux linux) { + this.linux.merge(linux); + } + + public Windows getWindows() { + return windows; + } + + public void setWindows(Windows windows) { + this.windows.merge(windows); + } + + public Osx getOsx() { + return osx; + } + + public void setOsx(Osx osx) { + this.osx.merge(osx); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("imageName", imageName); + props.put("imageNameTransform", imageNameTransform); + props.put("archiveFormat", archiveFormat); + Map> mappedJdks = new LinkedHashMap<>(); + int i = 0; + for (Artifact graalJdk : getGraalJdks()) { + mappedJdks.put("jdk " + (i++), graalJdk.asMap(full)); + } + props.put("graal", graal.asMap(full)); + props.put("graalJdks", mappedJdks); + props.put("args", args); + props.put("upx", upx.asMap(full)); + props.putAll(linux.asMap(full)); + props.putAll(osx.asMap(full)); + props.putAll(windows.asMap(full)); + } + + public interface PlatformCustomizer extends Domain { + String getPlatform(); + + List getArgs(); + + void setArgs(List args); + } + + public static final class Upx extends AbstractModelObject implements Domain, Activatable { + private final List args = new ArrayList<>(); + + @JsonIgnore + private boolean enabled; + private Active active; + private String version; + + private final org.jreleaser.model.api.assemble.NativeImageAssembler.Upx immutable = new org.jreleaser.model.api.assemble.NativeImageAssembler.Upx() { + @Override + public String getVersion() { + return version; + } + + @Override + public List getArgs() { + return unmodifiableList(args); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Upx.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Upx.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.assemble.NativeImageAssembler.Upx asImmutable() { + return immutable; + } + + @Override + public void merge(Upx source) { + this.active = this.merge(this.active, source.active); + this.enabled = this.merge(this.enabled, source.enabled); + this.version = this.merge(this.version, source.version); + setArgs(merge(this.args, source.args)); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + public void disable() { + active = Active.NEVER; + enabled = false; + } + + public boolean resolveEnabled(Project project) { + if (null == active) { + active = Active.NEVER; + } + enabled = active.check(project); + return enabled; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public void setActive(Active active) { + this.active = active; + } + + @Override + public void setActive(String str) { + setActive(Active.of(str)); + } + + @Override + public boolean isActiveSet() { + return active != null; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public List getArgs() { + return args; + } + + public void setArgs(List args) { + this.args.clear(); + this.args.addAll(args); + } + + @Override + public Map asMap(boolean full) { + if (!full && !isEnabled()) return Collections.emptyMap(); + + Map props = new LinkedHashMap<>(); + props.put("enabled", isEnabled()); + props.put("active", active); + props.put("version", version); + + return props; + } + } + + private static abstract class AbstractPlatformCustomizer> extends AbstractModelObject implements PlatformCustomizer { + protected final List args = new ArrayList<>(); + protected final String platform; + + protected AbstractPlatformCustomizer(String platform) { + this.platform = platform; + } + + @Override + public void merge(S customizer) { + setArgs(merge(this.args, customizer.args)); + } + + public List getArgs() { + return args; + } + + @Override + public void setArgs(List args) { + this.args.clear(); + this.args.addAll(args); + } + + public String getPlatform() { + return platform; + } + + @Override + public Map asMap(boolean full) { + Map props = new LinkedHashMap<>(); + props.put("args", args); + + Map map = new LinkedHashMap<>(); + map.put(platform, props); + return map; + } + } + + public static final class Linux extends NativeImageAssembler.AbstractPlatformCustomizer { + private final org.jreleaser.model.api.assemble.NativeImageAssembler.Linux immutable = new org.jreleaser.model.api.assemble.NativeImageAssembler.Linux() { + @Override + public String getPlatform() { + return platform; + } + + @Override + public List getArgs() { + return unmodifiableList(args); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Linux.this.asMap(full)); + } + }; + + public Linux() { + super("linux"); + } + + public org.jreleaser.model.api.assemble.NativeImageAssembler.Linux asImmutable() { + return immutable; + } + } + + public static final class Windows extends NativeImageAssembler.AbstractPlatformCustomizer { + private final org.jreleaser.model.api.assemble.NativeImageAssembler.Windows immutable = new org.jreleaser.model.api.assemble.NativeImageAssembler.Windows() { + @Override + public String getPlatform() { + return platform; + } + + @Override + public List getArgs() { + return unmodifiableList(args); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Windows.this.asMap(full)); + } + }; + + public Windows() { + super("windows"); + } + + public org.jreleaser.model.api.assemble.NativeImageAssembler.Windows asImmutable() { + return immutable; + } + } + + public static final class Osx extends NativeImageAssembler.AbstractPlatformCustomizer { + private final org.jreleaser.model.api.assemble.NativeImageAssembler.Osx immutable = new org.jreleaser.model.api.assemble.NativeImageAssembler.Osx() { + @Override + public String getPlatform() { + return platform; + } + + @Override + public List getArgs() { + return unmodifiableList(args); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Osx.this.asMap(full)); + } + }; + + public Osx() { + super("osx"); + } + + public org.jreleaser.model.api.assemble.NativeImageAssembler.Osx asImmutable() { + return immutable; + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Checksum.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/checksum/Checksum.java similarity index 61% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Checksum.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/checksum/Checksum.java index 8ec85dfd5..d97a06945 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Checksum.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/checksum/Checksum.java @@ -15,8 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.checksum; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Domain; import org.jreleaser.util.Algorithm; import java.util.LinkedHashMap; @@ -24,33 +27,62 @@ import java.util.Map; import java.util.Set; -import static org.jreleaser.util.Templates.resolveTemplate; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.mustache.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.4.0 */ -public class Checksum extends AbstractModelObject implements Domain { - public static final String KEY_SKIP_CHECKSUM = "skipChecksum"; - public static final String INDIVIDUAL_CHECKSUM = "individualChecksum"; - +public final class Checksum extends AbstractModelObject implements Domain { private final Set algorithms = new LinkedHashSet<>(); private Boolean individual; private String name; private Boolean files; + private final org.jreleaser.model.api.checksum.Checksum immutable = new org.jreleaser.model.api.checksum.Checksum() { + @Override + public String getName() { + return name; + } + + @Override + public boolean isIndividual() { + return Checksum.this.isIndividual(); + } + + @Override + public Set getAlgorithms() { + return unmodifiableSet(algorithms); + } + + @Override + public boolean isFiles() { + return Checksum.this.isFiles(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Checksum.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.checksum.Checksum asImmutable() { + return immutable; + } + @Override - public void merge(Checksum checksum) { - freezeCheck(); - this.name = merge(this.name, checksum.name); - this.individual = merge(this.individual, checksum.individual); - this.files = merge(this.files, checksum.files); - setAlgorithms(merge(this.algorithms, checksum.algorithms)); + public void merge(Checksum source) { + this.name = merge(this.name, source.name); + this.individual = merge(this.individual, source.individual); + this.files = merge(this.files, source.files); + setAlgorithms(merge(this.algorithms, source.algorithms)); } public String getResolvedName(JReleaserContext context) { Map props = context.fullProps(); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); return resolveTemplate(name, props); } @@ -71,16 +103,14 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } - public Boolean isIndividual() { + public boolean isIndividual() { return individual != null && individual; } public void setIndividual(Boolean individual) { - freezeCheck(); this.individual = individual; } @@ -89,28 +119,26 @@ public boolean isIndividualSet() { } public Set getAlgorithms() { - return freezeWrap(algorithms); + return algorithms; } public void setAlgorithms(Set algorithms) { - freezeCheck(); this.algorithms.clear(); this.algorithms.addAll(algorithms); } - public Boolean isFiles() { + public boolean isFiles() { return files == null || files; } - public boolean isFilesSet() { - return files != null; - } - public void setFiles(Boolean files) { - freezeCheck(); this.files = files; } + public boolean isFilesSet() { + return files != null; + } + @Override public Map asMap(boolean full) { Map props = new LinkedHashMap<>(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractModelObject.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/AbstractModelObject.java similarity index 74% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractModelObject.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/AbstractModelObject.java index 0b2f572f4..2f3ae09e4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractModelObject.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/AbstractModelObject.java @@ -15,17 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; +package org.jreleaser.model.internal.common; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.Set; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -35,46 +31,6 @@ * @since 1.1.0 */ public abstract class AbstractModelObject> implements ModelObject { - @JsonIgnore - protected boolean frozen; - - @Override - public void freeze() { - frozen = true; - } - - public void mutate(Mutator mutator) { - if (null == mutator) return; - - boolean isFrozen = frozen; - try { - frozen = false; - mutator.mutate(); - } finally { - frozen = isFrozen; - } - } - - protected void freezeCheck() { - if (frozen) throw new UnsupportedOperationException(); - } - - protected List freezeWrap(List list) { - return frozen ? Collections.unmodifiableList(list) : list; - } - - protected Set freezeWrap(Set set) { - return frozen ? Collections.unmodifiableSet(set) : set; - } - - protected Map freezeWrap(Map map) { - return frozen ? Collections.unmodifiableMap(map) : map; - } - - protected Properties freezeWrap(Properties props) { - return frozen ? new Properties(props) : props; - } - protected String merge(String existing, String incoming) { return isNotBlank(incoming) ? incoming : existing; } @@ -148,8 +104,4 @@ protected , T extends E> Map mergeModel(Map< return m1; } - - public interface Mutator { - void mutate() throws RuntimeException; - } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Activatable.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Activatable.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Activatable.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Activatable.java index bd6317adc..9247da084 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Activatable.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Activatable.java @@ -15,7 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; + +import org.jreleaser.model.Active; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Artifact.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Artifact.java similarity index 82% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Artifact.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Artifact.java index 68dcf8e35..b92f6220e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Artifact.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Artifact.java @@ -15,16 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import com.fasterxml.jackson.annotation.JsonIgnore; import org.jreleaser.bundle.RB; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.util.Artifacts; import org.jreleaser.util.Algorithm; -import org.jreleaser.util.JReleaserException; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Collections; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -34,8 +37,9 @@ import java.util.stream.Collectors; import static java.nio.file.Files.exists; -import static org.jreleaser.model.util.Artifacts.checkAndCopyFile; -import static org.jreleaser.model.util.Artifacts.resolveForArtifact; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.internal.util.Artifacts.checkAndCopyFile; +import static org.jreleaser.model.internal.util.Artifacts.resolveForArtifact; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -43,7 +47,7 @@ * @author Andres Almiray * @since 0.1.0 */ -public class Artifact extends AbstractModelObject implements Domain, ExtraProperties { +public final class Artifact extends AbstractModelObject implements Domain, ExtraProperties { private final Map extraProperties = new LinkedHashMap<>(); @JsonIgnore private final Map hashes = new LinkedHashMap<>(); @@ -57,12 +61,72 @@ public class Artifact extends AbstractModelObject implements Domain, E private Path effectivePath; @JsonIgnore private Path resolvedPath; + + private final org.jreleaser.model.api.common.Artifact immutable = new org.jreleaser.model.api.common.Artifact() { + @Override + public boolean isActive() { + return Artifact.this.isActive(); + } + + @Override + public Path getEffectivePath() { + return effectivePath; + } + + @Override + public Path getResolvedPath() { + return resolvedPath; + } + + @Override + public String getPath() { + return path; + } + + @Override + public String getHash() { + return Artifact.this.getHash(); + } + + @Override + public String getHash(Algorithm algorithm) { + return Artifact.this.getHash(algorithm); + } + + @Override + public String getPlatform() { + return platform; + } + + @Override + public String getTransform() { + return transform; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Artifact.this.asMap(full)); + } + + @Override + public String getPrefix() { + return Artifact.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; @JsonIgnore private Path resolvedTransform; + public org.jreleaser.model.api.common.Artifact asImmutable() { + return immutable; + } + @Override public void merge(Artifact artifact) { - freezeCheck(); this.effectivePath = merge(this.effectivePath, artifact.effectivePath); this.path = merge(this.path, artifact.path); this.platform = merge(this.platform, artifact.platform); @@ -88,102 +152,10 @@ public Path getEffectivePath() { return effectivePath; } - public Path getEffectivePath(JReleaserContext context) { - if (null == effectivePath) { - Path rp = getResolvedPath(context); - Path tp = getResolvedTransform(context); - effectivePath = checkAndCopyFile(context, rp, tp); - } - return effectivePath; - } - - public Path getEffectivePath(JReleaserContext context, Distribution distribution) { - if (null == effectivePath) { - Path rp = getResolvedPath(context, distribution); - Path tp = getResolvedTransform(context, distribution); - effectivePath = checkAndCopyFile(context, rp, tp); - } - return effectivePath; - } - - public Path getEffectivePath(JReleaserContext context, Assembler assembler) { - if (null == effectivePath) { - Path rp = getResolvedPath(context, assembler); - Path tp = getResolvedTransform(context, assembler); - effectivePath = checkAndCopyFile(context, rp, tp); - } - return effectivePath; - } - - public Path getResolvedPath(JReleaserContext context, Path basedir, boolean checkIfExists) { - if (null == resolvedPath) { - path = resolveForArtifact(path, context, this); - resolvedPath = basedir.resolve(Paths.get(path)).normalize(); - if (checkIfExists && !exists(resolvedPath)) { - throw new JReleaserException(RB.$("ERROR_path_does_not_exist", context.relativizeToBasedir(resolvedPath))); - } - } - return resolvedPath; - } - - public Path getResolvedPath(JReleaserContext context) { - return getResolvedPath(context, context.getBasedir(), context.getMode().validatePaths()); - } - - public Path getResolvedPath(JReleaserContext context, Distribution distribution) { - if (null == resolvedPath) { - path = resolveForArtifact(path, context, this, distribution); - resolvedPath = context.getBasedir().resolve(Paths.get(path)).normalize(); - if (context.getMode().validatePaths() && !exists(resolvedPath)) { - throw new JReleaserException(RB.$("ERROR_path_does_not_exist", context.relativizeToBasedir(resolvedPath))); - } - } - return resolvedPath; - } - - public Path getResolvedPath(JReleaserContext context, Assembler assembler) { - if (null == resolvedPath) { - path = resolveForArtifact(path, context, this, assembler); - resolvedPath = context.getBasedir().resolve(Paths.get(path)).normalize(); - if (context.getMode().validatePaths() && !exists(resolvedPath)) { - throw new JReleaserException(RB.$("ERROR_path_does_not_exist", context.relativizeToBasedir(resolvedPath))); - } - } - return resolvedPath; - } - public Path getResolvedPath() { return resolvedPath; } - public Path getResolvedTransform(JReleaserContext context, Path basedir) { - if (null == resolvedTransform && isNotBlank(transform)) { - transform = resolveForArtifact(transform, context, this); - resolvedTransform = basedir.resolve(Paths.get(transform)).normalize(); - } - return resolvedTransform; - } - - public Path getResolvedTransform(JReleaserContext context) { - return getResolvedTransform(context, context.getArtifactsDirectory()); - } - - public Path getResolvedTransform(JReleaserContext context, Distribution distribution) { - if (null == resolvedTransform && isNotBlank(transform)) { - transform = resolveForArtifact(transform, context, this, distribution); - resolvedTransform = context.getArtifactsDirectory().resolve(Paths.get(transform)).normalize(); - } - return resolvedTransform; - } - - public Path getResolvedTransform(JReleaserContext context, Assembler assembler) { - if (null == resolvedTransform && isNotBlank(transform)) { - transform = resolveForArtifact(transform, context, this, assembler); - resolvedTransform = context.getArtifactsDirectory().resolve(Paths.get(transform)).normalize(); - } - return resolvedTransform; - } - public Path getResolvedTransform() { return resolvedTransform; } @@ -218,7 +190,7 @@ public void setHash(Algorithm algorithm, String hash) { } public Map getHashes() { - return Collections.unmodifiableMap(hashes); + return unmodifiableMap(hashes); } void setHashes(Map hashes) { @@ -231,7 +203,6 @@ public String getPlatform() { } public void setPlatform(String platform) { - freezeCheck(); this.platform = platform; } @@ -240,7 +211,6 @@ public String getTransform() { } public void setTransform(String transform) { - freezeCheck(); this.transform = transform; } @@ -251,30 +221,20 @@ public String getPrefix() { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } - public void mergeExtraProperties(Map extraProperties) { - extraProperties.forEach((k, v) -> { - if (!this.extraProperties.containsKey(k)) { - this.extraProperties.put(k, v); - } - }); - } - @Override public Map asMap(boolean full) { Map map = new LinkedHashMap<>(); @@ -298,6 +258,106 @@ public int hashCode() { return Objects.hash(path); } + public void mergeExtraProperties(Map extraProperties) { + extraProperties.forEach((k, v) -> { + if (!this.extraProperties.containsKey(k)) { + this.extraProperties.put(k, v); + } + }); + } + + public Path getEffectivePath(JReleaserContext context) { + if (null == effectivePath) { + Path rp = getResolvedPath(context); + Path tp = getResolvedTransform(context); + effectivePath = checkAndCopyFile(context, rp, tp); + } + return effectivePath; + } + + public Path getEffectivePath(JReleaserContext context, Distribution distribution) { + if (null == effectivePath) { + Path rp = getResolvedPath(context, distribution); + Path tp = getResolvedTransform(context, distribution); + effectivePath = checkAndCopyFile(context, rp, tp); + } + return effectivePath; + } + + public Path getEffectivePath(JReleaserContext context, Assembler assembler) { + if (null == effectivePath) { + Path rp = getResolvedPath(context, assembler); + Path tp = getResolvedTransform(context, assembler); + effectivePath = checkAndCopyFile(context, rp, tp); + } + return effectivePath; + } + + public Path getResolvedPath(JReleaserContext context, Path basedir, boolean checkIfExists) { + if (null == resolvedPath) { + path = resolveForArtifact(path, context, this); + resolvedPath = basedir.resolve(Paths.get(path)).normalize(); + if (checkIfExists && !exists(resolvedPath)) { + throw new JReleaserException(RB.$("ERROR_path_does_not_exist", context.relativizeToBasedir(resolvedPath))); + } + } + return resolvedPath; + } + + public Path getResolvedPath(JReleaserContext context) { + return getResolvedPath(context, context.getBasedir(), context.getMode().validatePaths()); + } + + public Path getResolvedPath(JReleaserContext context, Distribution distribution) { + if (null == resolvedPath) { + path = Artifacts.resolveForArtifact(path, context, this, distribution); + resolvedPath = context.getBasedir().resolve(Paths.get(path)).normalize(); + if (context.getMode().validatePaths() && !exists(resolvedPath)) { + throw new JReleaserException(RB.$("ERROR_path_does_not_exist", context.relativizeToBasedir(resolvedPath))); + } + } + return resolvedPath; + } + + public Path getResolvedPath(JReleaserContext context, Assembler assembler) { + if (null == resolvedPath) { + path = Artifacts.resolveForArtifact(path, context, this, assembler); + resolvedPath = context.getBasedir().resolve(Paths.get(path)).normalize(); + if (context.getMode().validatePaths() && !exists(resolvedPath)) { + throw new JReleaserException(RB.$("ERROR_path_does_not_exist", context.relativizeToBasedir(resolvedPath))); + } + } + return resolvedPath; + } + + public Path getResolvedTransform(JReleaserContext context, Path basedir) { + if (null == resolvedTransform && isNotBlank(transform)) { + transform = resolveForArtifact(transform, context, this); + resolvedTransform = basedir.resolve(Paths.get(transform)).normalize(); + } + return resolvedTransform; + } + + public Path getResolvedTransform(JReleaserContext context) { + return getResolvedTransform(context, context.getArtifactsDirectory()); + } + + public Path getResolvedTransform(JReleaserContext context, Distribution distribution) { + if (null == resolvedTransform && isNotBlank(transform)) { + transform = Artifacts.resolveForArtifact(transform, context, this, distribution); + resolvedTransform = context.getArtifactsDirectory().resolve(Paths.get(transform)).normalize(); + } + return resolvedTransform; + } + + public Path getResolvedTransform(JReleaserContext context, Assembler assembler) { + if (null == resolvedTransform && isNotBlank(transform)) { + transform = Artifacts.resolveForArtifact(transform, context, this, assembler); + resolvedTransform = context.getArtifactsDirectory().resolve(Paths.get(transform)).normalize(); + } + return resolvedTransform; + } + public void mergeWith(Artifact other) { if (this == other) return; if (isBlank(this.platform)) this.platform = other.platform; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommitAuthor.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/CommitAuthor.java similarity index 65% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/CommitAuthor.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/CommitAuthor.java index 47dd56348..c4018fd1e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommitAuthor.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/CommitAuthor.java @@ -15,22 +15,44 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import java.util.LinkedHashMap; import java.util.Map; +import static java.util.Collections.unmodifiableMap; + /** * @author Andres Almiray * @since 0.1.0 */ -public class CommitAuthor extends AbstractModelObject implements Domain { +public final class CommitAuthor extends AbstractModelObject implements Domain { private String email; private String name; + private final org.jreleaser.model.api.common.CommitAuthor immutable = new org.jreleaser.model.api.common.CommitAuthor() { + @Override + public String getName() { + return name; + } + + @Override + public String getEmail() { + return email; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(CommitAuthor.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.common.CommitAuthor asImmutable() { + return immutable; + } + @Override public void merge(CommitAuthor author) { - freezeCheck(); this.email = merge(this.email, author.email); this.name = merge(this.name, author.name); } @@ -40,7 +62,6 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -49,7 +70,6 @@ public String getEmail() { } public void setEmail(String email) { - freezeCheck(); this.email = email; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommitAuthorAware.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/CommitAuthorAware.java similarity index 94% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/CommitAuthorAware.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/CommitAuthorAware.java index f82bf365c..cfe7a2658 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommitAuthorAware.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/CommitAuthorAware.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; /** * @author Andres Almiray diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Domain.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Domain.java new file mode 100644 index 000000000..a2891241b --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Domain.java @@ -0,0 +1,29 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.common; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Domain extends Serializable { + Map asMap(boolean full); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/EnabledAware.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/EnabledAware.java similarity index 94% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/EnabledAware.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/EnabledAware.java index d9a18cc4d..0324b78dd 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/EnabledAware.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/EnabledAware.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/ExtraProperties.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/ExtraProperties.java similarity index 98% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/ExtraProperties.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/ExtraProperties.java index e913ec443..080bf2c12 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/ExtraProperties.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/ExtraProperties.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import org.jreleaser.util.StringUtils; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/FileSet.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/FileSet.java similarity index 80% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/FileSet.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/FileSet.java index 07fdbf3ff..cdfec1818 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/FileSet.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/FileSet.java @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; +import org.jreleaser.model.internal.JReleaserContext; import java.io.IOException; import java.nio.file.FileSystem; @@ -35,15 +36,17 @@ import static java.nio.file.FileVisitResult.CONTINUE; import static java.nio.file.FileVisitResult.SKIP_SUBTREE; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; import static java.util.stream.Collectors.toSet; -import static org.jreleaser.model.util.Artifacts.resolveForFileSet; +import static org.jreleaser.model.internal.util.Artifacts.resolveForFileSet; import static org.jreleaser.util.CollectionUtils.setOf; /** * @author Andres Almiray * @since 0.8.0 */ -public class FileSet extends AbstractModelObject implements Domain, ExtraProperties { +public final class FileSet extends AbstractModelObject implements Domain, ExtraProperties { private static final String GLOB_PREFIX = "glob:"; private final Map extraProperties = new LinkedHashMap<>(); @@ -54,58 +57,81 @@ public class FileSet extends AbstractModelObject implements Domain, Ext private String output; private Boolean failOnMissingInput; - @Override - public void merge(FileSet fileSet) { - freezeCheck(); - this.input = merge(this.input, fileSet.input); - this.output = merge(this.output, fileSet.output); - this.failOnMissingInput = merge(this.failOnMissingInput, fileSet.failOnMissingInput); - setIncludes(merge(this.includes, fileSet.includes)); - setExcludes(merge(this.excludes, fileSet.excludes)); - setExtraProperties(merge(this.extraProperties, fileSet.extraProperties)); - } + private final org.jreleaser.model.api.common.FileSet immutable = new org.jreleaser.model.api.common.FileSet() { + @Override + public Set getIncludes() { + return unmodifiableSet(includes); + } - @Override - public String getPrefix() { - return "artifact"; - } + @Override + public Set getExcludes() { + return unmodifiableSet(excludes); + } - public String getResolvedInput(JReleaserContext context) { - return resolveForFileSet(input, context, this); - } + @Override + public String getInput() { + return input; + } - public String getResolvedOutput(JReleaserContext context) { - return resolveForFileSet(output, context, this); + @Override + public String getOutput() { + return output; + } + + @Override + public boolean isFailOnMissingInput() { + return FileSet.this.isFailOnMissingInput(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(FileSet.this.asMap(full)); + } + + @Override + public String getPrefix() { + return FileSet.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public org.jreleaser.model.api.common.FileSet asImmutable() { + return immutable; } - public Set getResolvedIncludes(JReleaserContext context) { - return includes.stream() - .map(s -> resolveForFileSet(s, context, this)) - .collect(toSet()); + @Override + public void merge(FileSet source) { + this.input = merge(this.input, source.input); + this.output = merge(this.output, source.output); + this.failOnMissingInput = merge(this.failOnMissingInput, source.failOnMissingInput); + setIncludes(merge(this.includes, source.includes)); + setExcludes(merge(this.excludes, source.excludes)); + setExtraProperties(merge(this.extraProperties, source.extraProperties)); } - public Set getResolvedExcludes(JReleaserContext context) { - return excludes.stream() - .map(s -> resolveForFileSet(s, context, this)) - .collect(toSet()); + @Override + public String getPrefix() { + return "artifact"; } public Set getIncludes() { - return freezeWrap(includes); + return includes; } public void setIncludes(Set includes) { - freezeCheck(); this.includes.clear(); this.includes.addAll(includes); } public Set getExcludes() { - return freezeWrap(excludes); + return excludes; } public void setExcludes(Set excludes) { - freezeCheck(); this.excludes.clear(); this.excludes.addAll(excludes); } @@ -115,7 +141,6 @@ public String getInput() { } public void setInput(String input) { - freezeCheck(); this.input = input; } @@ -124,7 +149,6 @@ public String getOutput() { } public void setOutput(String output) { - freezeCheck(); this.output = output; } @@ -133,7 +157,6 @@ public boolean isFailOnMissingInput() { } public void setFailOnMissingInput(Boolean failOnMissingInput) { - freezeCheck(); this.failOnMissingInput = failOnMissingInput; } @@ -143,19 +166,17 @@ public boolean isFailOnMissingInputSet() { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @@ -171,6 +192,26 @@ public Map asMap(boolean full) { return props; } + public String getResolvedInput(JReleaserContext context) { + return resolveForFileSet(input, context, this); + } + + public String getResolvedOutput(JReleaserContext context) { + return resolveForFileSet(output, context, this); + } + + public Set getResolvedIncludes(JReleaserContext context) { + return includes.stream() + .map(s -> resolveForFileSet(s, context, this)) + .collect(toSet()); + } + + public Set getResolvedExcludes(JReleaserContext context) { + return excludes.stream() + .map(s -> resolveForFileSet(s, context, this)) + .collect(toSet()); + } + public Set getResolvedPaths(JReleaserContext context) throws IOException { Path basedir = context.getBasedir().resolve(getResolvedInput(context)).normalize().toAbsolutePath(); @@ -208,7 +249,7 @@ public Set getResolvedPaths(JReleaserContext context) throws IOException { return resolver.paths; } - private static class GlobResolver extends SimpleFileVisitor { + private static final class GlobResolver extends SimpleFileVisitor { private final JReleaserLogger logger; private final Set includes = new LinkedHashSet<>(); private final Set excludes = new LinkedHashSet<>(); @@ -271,7 +312,7 @@ public FileVisitResult visitFileFailed(Path file, IOException e) throws IOExcept } } - private static class ExtPathMatcher { + private static final class ExtPathMatcher { private final PathMatcher matcher; private final boolean recursive; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Ftp.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Ftp.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Ftp.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Ftp.java index a6542c04d..e3445bb9e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Ftp.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Ftp.java @@ -15,15 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; /** * @author Andres Almiray * @since 1.1.0 */ public interface Ftp { - String TYPE = "ftp"; - String getResolvedUsername(); String getResolvedPassword(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Glob.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Glob.java similarity index 76% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Glob.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Glob.java index 7b7a0b055..a3ea68c6f 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Glob.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Glob.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import com.fasterxml.jackson.annotation.JsonIgnore; import org.jreleaser.bundle.RB; -import org.jreleaser.model.util.Artifacts; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.util.Artifacts; import org.jreleaser.util.PlatformUtils; import java.io.File; @@ -32,6 +33,7 @@ import java.util.Set; import static java.nio.file.Files.exists; +import static java.util.Collections.unmodifiableMap; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -39,7 +41,7 @@ * @author Andres Almiray * @since 0.1.0 */ -public class Glob extends AbstractModelObject implements Domain, ExtraProperties { +public final class Glob extends AbstractModelObject implements Domain, ExtraProperties { private static final String GLOB_PREFIX = "glob:"; private static final String REGEX_PREFIX = "regex:"; @@ -49,15 +51,49 @@ public class Glob extends AbstractModelObject implements Domain, ExtraProp private String platform; @JsonIgnore private Set artifacts; - private String directory; + private final org.jreleaser.model.api.common.Glob immutable = new org.jreleaser.model.api.common.Glob() { + @Override + public String getPattern() { + return pattern; + } + + @Override + public String getPlatform() { + return platform; + } + + @Override + public String getDirectory() { + return directory; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Glob.this.asMap(full)); + } + + @Override + public String getPrefix() { + return Glob.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public org.jreleaser.model.api.common.Glob asImmutable() { + return immutable; + } + @Override - public void merge(Glob glob) { - freezeCheck(); - this.pattern = merge(this.pattern, glob.pattern); - this.platform = merge(this.platform, glob.platform); - setExtraProperties(merge(this.extraProperties, glob.extraProperties)); + public void merge(Glob source) { + this.pattern = merge(this.pattern, source.pattern); + this.platform = merge(this.platform, source.platform); + setExtraProperties(merge(this.extraProperties, source.extraProperties)); } @Override @@ -67,29 +103,63 @@ public String getPrefix() { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } + public String getPattern() { + return pattern; + } + + public void setPattern(String pattern) { + if (isBlank(pattern)) return; + this.pattern = pattern.trim(); + } + + public String getPlatform() { + return platform; + } + + public void setPlatform(String platform) { + this.platform = platform; + } + + public String getDirectory() { + return directory; + } + + public void setDirectory(String directory) { + this.directory = directory; + } + + @Override + public Map asMap(boolean full) { + Map props = new LinkedHashMap<>(); + props.put("pattern", pattern); + props.put("platform", platform); + props.put("extraProperties", getResolvedExtraProperties()); + props.put("directory", directory); + return props; + } + public Set getResolvedArtifacts(JReleaserContext context) { return getResolvedArtifactsPattern(context); } public Set getResolvedArtifactsPattern(JReleaserContext context) { if (null == artifacts) { - mutate(() -> setPattern(Artifacts.resolveForGlob(getPattern(), context, this))); + // mutate(() -> setPattern(Artifacts.resolveForGlob(getPattern(), context, this))); + setPattern(Artifacts.resolveForGlob(getPattern(), context, this)); normalizePattern(resolveDirectory(context)); artifacts = Artifacts.resolveFiles(context, resolveDirectory(context), Collections.singletonList(pattern)); artifacts.forEach(artifact -> { @@ -116,16 +186,6 @@ private Path resolveDirectory(JReleaserContext context) { return path; } - public String getPattern() { - return pattern; - } - - public void setPattern(String pattern) { - freezeCheck(); - if (isBlank(pattern)) return; - this.pattern = pattern.trim(); - } - private void normalizePattern(Path basedir) { if (!pattern.startsWith(GLOB_PREFIX) && !pattern.startsWith(REGEX_PREFIX)) { this.pattern = GLOB_PREFIX + pattern; @@ -160,37 +220,9 @@ private void normalizePattern(Path basedir) { } } - public Path relativize(Path base, Path other) { + private Path relativize(Path base, Path other) { Path p1 = base.toAbsolutePath(); Path p2 = other.toAbsolutePath(); return p1.relativize(p2).normalize(); } - - public String getPlatform() { - return platform; - } - - public void setPlatform(String platform) { - freezeCheck(); - this.platform = platform; - } - - public String getDirectory() { - return directory; - } - - public void setDirectory(String directory) { - freezeCheck(); - this.directory = directory; - } - - @Override - public Map asMap(boolean full) { - Map props = new LinkedHashMap<>(); - props.put("pattern", pattern); - props.put("platform", platform); - props.put("extraProperties", getResolvedExtraProperties()); - props.put("directory", directory); - return props; - } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Icon.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Icon.java similarity index 67% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Icon.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Icon.java index fba9ed480..655e8b2a2 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Icon.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Icon.java @@ -15,29 +15,68 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import java.util.LinkedHashMap; -import java.util.Locale; import java.util.Map; -import static org.jreleaser.util.StringUtils.isBlank; +import static java.util.Collections.unmodifiableMap; /** * @author Andres Almiray * @since 1.2.0 */ -public class Icon extends AbstractModelObject implements Domain, ExtraProperties { - protected final Map extraProperties = new LinkedHashMap<>(); +public final class Icon extends AbstractModelObject implements Domain, ExtraProperties { + private final Map extraProperties = new LinkedHashMap<>(); private String url; private Integer width; private Integer height; private Boolean primary; + private final org.jreleaser.model.api.common.Icon immutable = new org.jreleaser.model.api.common.Icon() { + @Override + public String getUrl() { + return url; + } + + @Override + public Integer getWidth() { + return width; + } + + @Override + public Integer getHeight() { + return height; + } + + @Override + public boolean isPrimary() { + return Icon.this.isPrimary(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Icon.this.asMap(full)); + } + + @Override + public String getPrefix() { + return Icon.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public org.jreleaser.model.api.common.Icon asImmutable() { + return immutable; + } + @Override public void merge(Icon source) { - freezeCheck(); this.url = merge(this.url, source.url); this.width = merge(this.width, source.width); this.height = merge(this.height, source.height); @@ -50,7 +89,6 @@ public String getUrl() { } public void setUrl(String url) { - freezeCheck(); this.url = url; } @@ -59,7 +97,6 @@ public Integer getWidth() { } public void setWidth(Integer width) { - freezeCheck(); this.width = width; } @@ -68,7 +105,6 @@ public Integer getHeight() { } public void setHeight(Integer height) { - freezeCheck(); this.height = height; } @@ -77,7 +113,6 @@ public boolean isPrimary() { } public void setPrimary(Boolean primary) { - freezeCheck(); this.primary = primary; } @@ -88,19 +123,17 @@ public String getPrefix() { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @@ -110,23 +143,8 @@ public Map asMap(boolean full) { map.put("url", url); map.put("width", width); map.put("height", height); - if (isPrimary()) map.put("primary", isPrimary()); + if (isPrimary()) map.put("primary", true); map.put("extraProperties", getResolvedExtraProperties()); return map; } - - public enum Type { - SOURCE, - THUMBNAIL; - - @Override - public String toString() { - return name().toLowerCase(Locale.ENGLISH); - } - - public static Type of(String str) { - if (isBlank(str)) return null; - return Type.valueOf(str.toUpperCase(Locale.ENGLISH).trim()); - } - } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Java.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Java.java similarity index 64% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Java.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Java.java index 8dd4b63aa..b5f0dac8f 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Java.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Java.java @@ -15,22 +15,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; +import static java.util.Collections.unmodifiableMap; import static org.jreleaser.util.StringUtils.isNotBlank; /** * @author Andres Almiray * @since 0.1.0 */ -public class Java extends AbstractModelObject implements Domain, ExtraProperties, EnabledAware { +public final class Java extends AbstractModelObject implements Domain, ExtraProperties, EnabledAware { private final Map extraProperties = new LinkedHashMap<>(); - protected Boolean enabled; + private Boolean enabled; private String version; private String groupId; private String artifactId; @@ -38,17 +39,72 @@ public class Java extends AbstractModelObject implements Domain, ExtraProp private String mainClass; private Boolean multiProject; + private final org.jreleaser.model.api.common.Java immutable = new org.jreleaser.model.api.common.Java() { + @Override + public String getVersion() { + return version; + } + + @Override + public String getGroupId() { + return groupId; + } + + @Override + public String getArtifactId() { + return artifactId; + } + + @Override + public boolean isMultiProject() { + return Java.this.isMultiProject(); + } + + @Override + public String getMainClass() { + return mainClass; + } + + @Override + public String getMainModule() { + return mainModule; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Java.this.asMap(full)); + } + + @Override + public boolean isEnabled() { + return Java.this.isEnabled(); + } + + @Override + public String getPrefix() { + return Java.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public org.jreleaser.model.api.common.Java asImmutable() { + return immutable; + } + @Override - public void merge(Java java) { - freezeCheck(); - this.enabled = merge(this.enabled, java.enabled); - this.version = merge(this.version, java.version); - this.groupId = merge(this.groupId, java.groupId); - this.artifactId = merge(this.artifactId, java.artifactId); - this.mainModule = merge(this.mainModule, java.mainModule); - this.mainClass = merge(this.mainClass, java.mainClass); - this.multiProject = merge(this.multiProject, java.multiProject); - setExtraProperties(merge(this.extraProperties, java.extraProperties)); + public void merge(Java source) { + this.enabled = merge(this.enabled, source.enabled); + this.version = merge(this.version, source.version); + this.groupId = merge(this.groupId, source.groupId); + this.artifactId = merge(this.artifactId, source.artifactId); + this.mainModule = merge(this.mainModule, source.mainModule); + this.mainClass = merge(this.mainClass, source.mainClass); + this.multiProject = merge(this.multiProject, source.multiProject); + setExtraProperties(merge(this.extraProperties, source.extraProperties)); } @Override @@ -58,7 +114,6 @@ public boolean isEnabled() { @Override public void setEnabled(Boolean enabled) { - freezeCheck(); this.enabled = enabled; } @@ -77,7 +132,6 @@ public String getVersion() { } public void setVersion(String version) { - freezeCheck(); if (isNotBlank(version) && version.startsWith("1.8")) { this.version = "8"; } else { @@ -90,7 +144,6 @@ public String getGroupId() { } public void setGroupId(String groupId) { - freezeCheck(); this.groupId = groupId; } @@ -99,7 +152,6 @@ public String getArtifactId() { } public void setArtifactId(String artifactId) { - freezeCheck(); this.artifactId = artifactId; } @@ -108,7 +160,6 @@ public boolean isMultiProject() { } public void setMultiProject(Boolean multiProject) { - freezeCheck(); this.multiProject = multiProject; } @@ -117,7 +168,6 @@ public String getMainClass() { } public void setMainClass(String mainClass) { - freezeCheck(); this.mainClass = mainClass; } @@ -126,7 +176,6 @@ public String getMainModule() { } public void setMainModule(String mainModule) { - freezeCheck(); this.mainModule = mainModule; } @@ -136,19 +185,17 @@ public boolean isMultiProjectSet() { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/ModelObject.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/ModelObject.java similarity index 94% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/ModelObject.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/ModelObject.java index 03d608898..1d4ea1af3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/ModelObject.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/ModelObject.java @@ -15,14 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; /** * @author Andres Almiray * @since 1.1.0 */ public interface ModelObject> { - void freeze(); - void merge(S source); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/OwnerAware.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/OwnerAware.java similarity index 94% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/OwnerAware.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/OwnerAware.java index 0b7ab7c64..c188d5417 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/OwnerAware.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/OwnerAware.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; public interface OwnerAware { String getOwner(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Screenshot.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Screenshot.java similarity index 71% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Screenshot.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Screenshot.java index fcb4487db..33998fe71 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Screenshot.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Screenshot.java @@ -15,33 +15,82 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; import com.github.mustachejava.TemplateFunction; import java.util.LinkedHashMap; -import java.util.Locale; import java.util.Map; -import static org.jreleaser.util.StringUtils.isBlank; +import static java.util.Collections.unmodifiableMap; /** * @author Andres Almiray * @since 1.2.0 */ -public class Screenshot extends AbstractModelObject implements Domain, ExtraProperties { - protected final Map extraProperties = new LinkedHashMap<>(); +public final class Screenshot extends AbstractModelObject implements Domain, ExtraProperties { + private final Map extraProperties = new LinkedHashMap<>(); - private Type type = Type.SOURCE; + private org.jreleaser.model.Screenshot.Type type = org.jreleaser.model.Screenshot.Type.SOURCE; private Boolean primary; private String url; private String caption; private Integer width; private Integer height; + private final org.jreleaser.model.api.common.Screenshot immutable = new org.jreleaser.model.api.common.Screenshot() { + @Override + public org.jreleaser.model.Screenshot.Type getType() { + return type; + } + + @Override + public boolean isPrimary() { + return Screenshot.this.isPrimary(); + } + + @Override + public String getUrl() { + return url; + } + + @Override + public String getCaption() { + return caption; + } + + @Override + public Integer getWidth() { + return width; + } + + @Override + public Integer getHeight() { + return height; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Screenshot.this.asMap(full)); + } + + @Override + public String getPrefix() { + return Screenshot.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public org.jreleaser.model.api.common.Screenshot asImmutable() { + return immutable; + } + @Override public void merge(Screenshot source) { - freezeCheck(); this.type = merge(this.type, source.type); this.primary = merge(this.primary, source.primary); this.url = merge(this.url, source.url); @@ -51,17 +100,16 @@ public void merge(Screenshot source) { setExtraProperties(merge(this.extraProperties, source.extraProperties)); } - public Type getType() { + public org.jreleaser.model.Screenshot.Type getType() { return type; } - public void setType(Type type) { - freezeCheck(); + public void setType(org.jreleaser.model.Screenshot.Type type) { this.type = type; } public void setType(String str) { - setType(Type.of(str)); + setType(org.jreleaser.model.Screenshot.Type.of(str)); } public boolean isPrimary() { @@ -69,7 +117,6 @@ public boolean isPrimary() { } public void setPrimary(Boolean primary) { - freezeCheck(); this.primary = primary; } @@ -78,7 +125,6 @@ public String getUrl() { } public void setUrl(String url) { - freezeCheck(); this.url = url; } @@ -87,7 +133,6 @@ public String getCaption() { } public void setCaption(String caption) { - freezeCheck(); this.caption = caption; } @@ -96,7 +141,6 @@ public Integer getWidth() { } public void setWidth(Integer width) { - freezeCheck(); this.width = width; } @@ -105,7 +149,6 @@ public Integer getHeight() { } public void setHeight(Integer height) { - freezeCheck(); this.height = height; } @@ -116,19 +159,17 @@ public String getPrefix() { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @@ -149,21 +190,6 @@ public ScreenshotTemplate asScreenshotTemplate() { return new ScreenshotTemplate(this); } - public enum Type { - SOURCE, - THUMBNAIL; - - @Override - public String toString() { - return name().toLowerCase(Locale.ENGLISH); - } - - public static Type of(String str) { - if (isBlank(str)) return null; - return Type.valueOf(str.toUpperCase(Locale.ENGLISH).trim()); - } - } - public static final class ScreenshotTemplate { private final String type; private final boolean primary; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Ssh.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Ssh.java similarity index 97% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Ssh.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Ssh.java index 0a6650c8d..5da7a0b51 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Ssh.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/Ssh.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/TimeoutAware.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/TimeoutAware.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/TimeoutAware.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/TimeoutAware.java index 1aeb2d3fc..fbdc5d4e4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/TimeoutAware.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/common/TimeoutAware.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.common; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Distribution.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/distributions/Distribution.java similarity index 57% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Distribution.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/distributions/Distribution.java index 33a97a7fa..8fc1f32f1 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Distribution.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/distributions/Distribution.java @@ -15,17 +15,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.distributions; import com.fasterxml.jackson.annotation.JsonIgnore; import org.jreleaser.bundle.RB; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.Active; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.common.Java; +import org.jreleaser.model.internal.packagers.Packager; +import org.jreleaser.model.internal.packagers.Packagers; +import org.jreleaser.model.internal.platform.Platform; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; +import org.jreleaser.version.SemanticVersion; import java.util.ArrayList; import java.util.Collections; -import java.util.EnumSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -33,27 +44,30 @@ import java.util.Map; import java.util.Set; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toSet; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_EXECUTABLE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_EXECUTABLE_EXTENSION_UNIX; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_EXECUTABLE_EXTENSION_WINDOWS; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_EXECUTABLE_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_EXECUTABLE_UNIX; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_EXECUTABLE_WINDOWS; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_ARTIFACT_ID; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_GROUP_ID; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_MAIN_CLASS; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_VERSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_VERSION_BUILD; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_VERSION_MAJOR; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_VERSION_MINOR; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_VERSION_PATCH; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_JAVA_VERSION_TAG; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_STEREOTYPE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_TAGS_BY_COMMA; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_TAGS_BY_SPACE; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; import static org.jreleaser.util.CollectionUtils.safePut; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_EXECUTABLE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_EXECUTABLE_EXTENSION_UNIX; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_EXECUTABLE_EXTENSION_WINDOWS; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_EXECUTABLE_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_EXECUTABLE_UNIX; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_EXECUTABLE_WINDOWS; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_ARTIFACT_ID; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_GROUP_ID; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_MAIN_CLASS; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_VERSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_VERSION_BUILD; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_VERSION_MAJOR; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_VERSION_MINOR; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_VERSION_PATCH; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_JAVA_VERSION_TAG; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_STEREOTYPE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_TAGS_BY_COMMA; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_TAGS_BY_SPACE; -import static org.jreleaser.util.MustacheUtils.applyTemplates; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -61,13 +75,7 @@ * @author Andres Almiray * @since 0.1.0 */ -public class Distribution extends Packagers implements ExtraProperties, Activatable { - public static final EnumSet JAVA_DISTRIBUTION_TYPES = EnumSet.of( - DistributionType.JAVA_BINARY, - DistributionType.JLINK, - DistributionType.SINGLE_JAR - ); - +public final class Distribution extends Packagers implements Domain, Activatable, ExtraProperties { private final List tags = new ArrayList<>(); private final Map extraProperties = new LinkedHashMap<>(); private final Set artifacts = new LinkedHashSet<>(); @@ -79,21 +87,154 @@ public class Distribution extends Packagers implements ExtraProper @JsonIgnore private boolean enabled; private String name; - private DistributionType type = DistributionType.JAVA_BINARY; + private org.jreleaser.model.Distribution.DistributionType type = org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; private Stereotype stereotype; - @Override - public void freeze() { - super.freeze(); - artifacts.forEach(Artifact::freeze); - java.freeze(); - platform.freeze(); - executable.freeze(); + private final org.jreleaser.model.api.distributions.Distribution immutable = new org.jreleaser.model.api.distributions.Distribution() { + private Set artifacts; + + @Override + public org.jreleaser.model.api.platform.Platform getPlatform() { + return platform.asImmutable(); + } + + @Override + public org.jreleaser.model.Distribution.DistributionType getType() { + return type; + } + + @Override + public Stereotype getStereotype() { + return stereotype; + } + + @Override + public String getName() { + return name; + } + + @Override + public Executable getExecutable() { + return executable.asImmutable(); + } + + @Override + public Set getArtifacts() { + if (null == artifacts) { + artifacts = Distribution.this.artifacts.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return artifacts; + } + + @Override + public List getTags() { + return unmodifiableList(tags); + } + + @Override + public org.jreleaser.model.api.common.Java getJava() { + return java.asImmutable(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Distribution.this.isEnabled(); + } + + @Override + public String getPrefix() { + return Distribution.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public org.jreleaser.model.api.packagers.AppImagePackager getAppImage() { + return appImage.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.AsdfPackager getAsdf() { + return asdf.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.BrewPackager getBrew() { + return brew.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.ChocolateyPackager getChocolatey() { + return chocolatey.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.DockerPackager getDocker() { + return docker.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.GofishPackager getGofish() { + return gofish.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.FlatpakPackager getFlatpak() { + return flatpak.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.JbangPackager getJbang() { + return jbang.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.MacportsPackager getMacports() { + return macports.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.ScoopPackager getScoop() { + return scoop.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.SdkmanPackager getSdkman() { + return sdkman.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.SnapPackager getSnap() { + return snap.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.SpecPackager getSpec() { + return spec.asImmutable(); + } + + @Override + public Map asMap(boolean full) { + return Collections.unmodifiableMap(Distribution.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.distributions.Distribution asImmutable() { + return immutable; } @Override public void merge(Distribution distribution) { - freezeCheck(); super.merge(distribution); this.active = merge(this.active, distribution.active); this.enabled = merge(this.enabled, distribution.enabled); @@ -127,7 +268,7 @@ public Map props() { safePut(KEY_DISTRIBUTION_JAVA_MAIN_CLASS, java.getMainClass(), props, true); if (isNotBlank(java.getVersion())) { props.put(KEY_DISTRIBUTION_JAVA_VERSION, java.getVersion()); - SemVer jv = SemVer.of(java.getVersion()); + SemanticVersion jv = SemanticVersion.of(java.getVersion()); safePut(KEY_DISTRIBUTION_JAVA_VERSION_MAJOR, jv.getMajor(), props, true); safePut(KEY_DISTRIBUTION_JAVA_VERSION_MINOR, jv.getMinor(), props, true); safePut(KEY_DISTRIBUTION_JAVA_VERSION_PATCH, jv.getPatch(), props, true); @@ -169,7 +310,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -196,18 +336,16 @@ public String getPrefix() { return "distribution"; } - public DistributionType getType() { + public org.jreleaser.model.Distribution.DistributionType getType() { return type; } - public void setType(DistributionType type) { - freezeCheck(); + public void setType(org.jreleaser.model.Distribution.DistributionType type) { this.type = type; } public void setType(String type) { - freezeCheck(); - this.type = DistributionType.of(type); + this.type = org.jreleaser.model.Distribution.DistributionType.of(type); } public Stereotype getStereotype() { @@ -215,7 +353,6 @@ public Stereotype getStereotype() { } public void setStereotype(Stereotype stereotype) { - freezeCheck(); this.stereotype = stereotype; } @@ -228,7 +365,6 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -241,44 +377,38 @@ public void setExecutable(Executable executable) { } public Set getArtifacts() { - return freezeWrap(Artifact.sortArtifacts(artifacts)); + return Artifact.sortArtifacts(artifacts); } public void setArtifacts(Set artifacts) { - freezeCheck(); this.artifacts.clear(); this.artifacts.addAll(artifacts); } public void addArtifacts(Set artifacts) { - freezeCheck(); this.artifacts.addAll(artifacts); } public void addArtifact(Artifact artifact) { - freezeCheck(); if (null != artifact) { this.artifacts.add(artifact); } } public List getTags() { - return freezeWrap(tags); + return tags; } public void setTags(List tags) { - freezeCheck(); this.tags.clear(); this.tags.addAll(tags); } public void addTags(List tags) { - freezeCheck(); this.tags.addAll(tags); } public void addTag(String tag) { - freezeCheck(); if (isNotBlank(tag)) { this.tags.add(tag.trim()); } @@ -294,19 +424,17 @@ public void setJava(Java java) { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @@ -338,31 +466,31 @@ public T getPackager(String name) { private T resolvePackager(String name) { switch (name.toLowerCase(Locale.ENGLISH).trim()) { - case AppImage.TYPE: + case org.jreleaser.model.api.packagers.AppImagePackager.TYPE: return (T) getAppImage(); - case Asdf.TYPE: + case org.jreleaser.model.api.packagers.AsdfPackager.TYPE: return (T) getAsdf(); - case Brew.TYPE: + case org.jreleaser.model.api.packagers.BrewPackager.TYPE: return (T) getBrew(); - case Chocolatey.TYPE: + case org.jreleaser.model.api.packagers.ChocolateyPackager.TYPE: return (T) getChocolatey(); - case Docker.TYPE: + case org.jreleaser.model.api.packagers.DockerPackager.TYPE: return (T) getDocker(); - case Flatpak.TYPE: + case org.jreleaser.model.api.packagers.FlatpakPackager.TYPE: return (T) getFlatpak(); - case Gofish.TYPE: + case org.jreleaser.model.api.packagers.GofishPackager.TYPE: return (T) getGofish(); - case Jbang.TYPE: + case org.jreleaser.model.api.packagers.JbangPackager.TYPE: return (T) getJbang(); - case Macports.TYPE: + case org.jreleaser.model.api.packagers.MacportsPackager.TYPE: return (T) getMacports(); - case Scoop.TYPE: + case org.jreleaser.model.api.packagers.ScoopPackager.TYPE: return (T) getScoop(); - case Sdkman.TYPE: + case org.jreleaser.model.api.packagers.SdkmanPackager.TYPE: return (T) getSdkman(); - case Snap.TYPE: + case org.jreleaser.model.api.packagers.SnapPackager.TYPE: return (T) getSnap(); - case Spec.TYPE: + case org.jreleaser.model.api.packagers.SpecPackager.TYPE: return (T) getSpec(); default: throw new JReleaserException(RB.$("ERROR_unsupported_packager", name)); @@ -400,67 +528,42 @@ public Map asMap(boolean full) { return map; } - public static Set supportedPackagers() { - Set set = new LinkedHashSet<>(); - set.add(AppImage.TYPE); - set.add(Asdf.TYPE); - set.add(Brew.TYPE); - set.add(Chocolatey.TYPE); - set.add(Docker.TYPE); - set.add(Flatpak.TYPE); - set.add(Gofish.TYPE); - set.add(Jbang.TYPE); - set.add(Macports.TYPE); - set.add(Scoop.TYPE); - set.add(Sdkman.TYPE); - set.add(Snap.TYPE); - set.add(Spec.TYPE); - return Collections.unmodifiableSet(set); - } - - public enum DistributionType { - BINARY("binary"), - JAVA_BINARY("java"), - JLINK("jlink"), - SINGLE_JAR("uberjar"), - NATIVE_IMAGE("graal"), - NATIVE_PACKAGE("jpackage"); - - private final String alias; - - DistributionType(String alias) { - this.alias = alias.toUpperCase(Locale.ENGLISH); - } - - public static DistributionType of(String str) { - if (isBlank(str)) return null; - - String value = str.replaceAll(" ", "_") - .replaceAll("-", "_") - .toUpperCase(Locale.ENGLISH).trim(); - - // try alias - for (DistributionType type : DistributionType.values()) { - if (type.alias.equals(value)) { - return type; - } - } - - return DistributionType.valueOf(value); - } - } - public static class Executable extends AbstractModelObject implements Domain { private String name; private String unixExtension; private String windowsExtension = "bat"; + private final org.jreleaser.model.api.distributions.Distribution.Executable immutable = new org.jreleaser.model.api.distributions.Distribution.Executable() { + @Override + public String getName() { + return name; + } + + @Override + public String getUnixExtension() { + return unixExtension; + } + + @Override + public String getWindowsExtension() { + return windowsExtension; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Executable.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.distributions.Distribution.Executable asImmutable() { + return immutable; + } + @Override - public void merge(Distribution.Executable executable) { - freezeCheck(); - this.name = this.merge(this.name, executable.name); - this.unixExtension = this.merge(this.unixExtension, executable.unixExtension); - this.windowsExtension = this.merge(this.windowsExtension, executable.windowsExtension); + public void merge(Executable source) { + this.name = this.merge(this.name, source.name); + this.unixExtension = this.merge(this.unixExtension, source.unixExtension); + this.windowsExtension = this.merge(this.windowsExtension, source.windowsExtension); } public String resolveExecutable(String platform) { @@ -484,7 +587,6 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -493,7 +595,6 @@ public String getUnixExtension() { } public void setUnixExtension(String unixExtension) { - freezeCheck(); this.unixExtension = unixExtension; } @@ -502,7 +603,6 @@ public String getWindowsExtension() { } public void setWindowsExtension(String windowsExtension) { - freezeCheck(); this.windowsExtension = windowsExtension; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/AbstractDownloader.java similarity index 89% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractDownloader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/AbstractDownloader.java index cc3fc1c06..9998ba428 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractDownloader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/AbstractDownloader.java @@ -15,9 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.download; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.project.Project; import java.util.ArrayList; import java.util.Collections; @@ -29,7 +32,7 @@ * @author Andres Almiray * @since 1.1.0 */ -abstract class AbstractDownloader> extends AbstractModelObject implements Downloader { +public abstract class AbstractDownloader> extends AbstractModelObject implements Downloader { @JsonIgnore protected final String type; protected final Map extraProperties = new LinkedHashMap<>(); @@ -46,15 +49,8 @@ protected AbstractDownloader(String type) { this.type = type; } - @Override - public void freeze() { - super.freeze(); - assets.forEach(Asset::freeze); - } - @Override public void merge(S downloader) { - freezeCheck(); this.name = merge(this.name, downloader.name); this.active = merge(this.active, downloader.active); this.enabled = merge(this.enabled, downloader.enabled); @@ -92,9 +88,7 @@ public String getName() { return name; } - @Override public void setName(String name) { - freezeCheck(); this.name = name; } @@ -105,7 +99,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -131,7 +124,6 @@ public Integer getConnectTimeout() { @Override public void setConnectTimeout(Integer connectTimeout) { - freezeCheck(); this.connectTimeout = connectTimeout; } @@ -142,43 +134,36 @@ public Integer getReadTimeout() { @Override public void setReadTimeout(Integer readTimeout) { - freezeCheck(); this.readTimeout = readTimeout; } @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @Override public List getAssets() { - return freezeWrap(assets); + return assets; } - @Override public void setAssets(List assets) { - freezeCheck(); this.assets.clear(); this.assets.addAll(assets); } - @Override public void addAsset(Asset asset) { - freezeCheck(); if (null != asset) { this.assets.add(asset); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractSshDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/AbstractSshDownloader.java similarity index 83% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractSshDownloader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/AbstractSshDownloader.java index 8fe323cac..ac61f6c65 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractSshDownloader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/AbstractSshDownloader.java @@ -15,15 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.download; import org.jreleaser.util.Env; import java.util.Map; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; import static org.jreleaser.util.CollectionUtils.listOf; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -47,23 +47,21 @@ public AbstractSshDownloader(String type) { } @Override - public void merge(S downloader) { - freezeCheck(); - super.merge(downloader); - this.username = merge(this.username, downloader.username); - this.password = merge(this.password, downloader.password); - this.host = merge(this.host, downloader.host); - this.port = merge(this.port, downloader.port); - this.knownHostsFile = merge(this.knownHostsFile, downloader.knownHostsFile); - this.publicKey = merge(this.publicKey, downloader.publicKey); - this.privateKey = merge(this.privateKey, downloader.privateKey); - this.passphrase = merge(this.passphrase, downloader.passphrase); - this.fingerprint = merge(this.fingerprint, downloader.fingerprint); + public void merge(S source) { + super.merge(source); + this.username = merge(this.username, source.username); + this.password = merge(this.password, source.password); + this.host = merge(this.host, source.host); + this.port = merge(this.port, source.port); + this.knownHostsFile = merge(this.knownHostsFile, source.knownHostsFile); + this.publicKey = merge(this.publicKey, source.publicKey); + this.privateKey = merge(this.privateKey, source.privateKey); + this.passphrase = merge(this.passphrase, source.passphrase); + this.fingerprint = merge(this.fingerprint, source.fingerprint); } protected abstract String getEnvPrefix(); - @Override public String getResolvedUsername() { return Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_USERNAME", @@ -73,7 +71,6 @@ public String getResolvedUsername() { username); } - @Override public String getResolvedPassword() { return Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_PASSWORD", @@ -83,7 +80,6 @@ public String getResolvedPassword() { password); } - @Override public String getResolvedHost() { return Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_HOST", @@ -93,7 +89,6 @@ public String getResolvedHost() { host); } - @Override public Integer getResolvedPort() { String value = Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_PORT", @@ -104,7 +99,6 @@ public Integer getResolvedPort() { return isBlank(value) ? 22 : Integer.parseInt(value); } - @Override public String getResolvedPublicKey() { return Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_PUBLIC_KEY", @@ -114,7 +108,6 @@ public String getResolvedPublicKey() { publicKey); } - @Override public String getResolvedPrivateKey() { return Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_PRIVATE_KEY", @@ -124,7 +117,6 @@ public String getResolvedPrivateKey() { privateKey); } - @Override public String getResolvedPassphrase() { return Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_PASSPHRASE", @@ -134,7 +126,6 @@ public String getResolvedPassphrase() { passphrase); } - @Override public String getResolvedFingerprint() { return Env.env(listOf( getEnvPrefix() + "_" + Env.toVar(name) + "_FINGERPRINT", @@ -149,9 +140,7 @@ public String getUsername() { return username; } - @Override public void setUsername(String username) { - freezeCheck(); this.username = username; } @@ -160,9 +149,7 @@ public String getPassword() { return password; } - @Override public void setPassword(String password) { - freezeCheck(); this.password = password; } @@ -171,9 +158,7 @@ public String getHost() { return host; } - @Override public void setHost(String host) { - freezeCheck(); this.host = host; } @@ -182,9 +167,7 @@ public Integer getPort() { return port; } - @Override public void setPort(Integer port) { - freezeCheck(); this.port = port; } @@ -193,9 +176,7 @@ public String getKnownHostsFile() { return knownHostsFile; } - @Override public void setKnownHostsFile(String knownHostsFile) { - freezeCheck(); this.knownHostsFile = knownHostsFile; } @@ -204,9 +185,7 @@ public String getPublicKey() { return publicKey; } - @Override public void setPublicKey(String publicKey) { - freezeCheck(); this.publicKey = publicKey; } @@ -215,9 +194,7 @@ public String getPrivateKey() { return privateKey; } - @Override public void setPrivateKey(String privateKey) { - freezeCheck(); this.privateKey = privateKey; } @@ -226,9 +203,7 @@ public String getPassphrase() { return passphrase; } - @Override public void setPassphrase(String passphrase) { - freezeCheck(); this.passphrase = passphrase; } @@ -237,9 +212,7 @@ public String getFingerprint() { return fingerprint; } - @Override public void setFingerprint(String fingerprint) { - freezeCheck(); this.fingerprint = fingerprint; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Download.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/Download.java similarity index 60% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Download.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/Download.java index d539d9f29..95e06fb9a 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Download.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/Download.java @@ -15,53 +15,115 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.download; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.Env; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; -import java.util.Set; +import static java.util.Collections.unmodifiableMap; +import static java.util.function.Function.identity; import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; /** * @author Andres Almiray * @since 1.1.0 */ -public class Download extends AbstractModelObject implements Domain, Activatable { +public final class Download extends AbstractModelObject implements Domain, Activatable { private final Map ftp = new LinkedHashMap<>(); private final Map http = new LinkedHashMap<>(); private final Map scp = new LinkedHashMap<>(); private final Map sftp = new LinkedHashMap<>(); - private Active active; @JsonIgnore private boolean enabled = true; - @Override - public void freeze() { - super.freeze(); - ftp.values().forEach(FtpDownloader::freeze); - http.values().forEach(HttpDownloader::freeze); - scp.values().forEach(ScpDownloader::freeze); - sftp.values().forEach(SftpDownloader::freeze); + private final org.jreleaser.model.api.download.Download immutable = new org.jreleaser.model.api.download.Download() { + private Map ftp; + private Map http; + private Map scp; + private Map sftp; + + @Override + public Map getFtp() { + if (null == ftp) { + ftp = Download.this.ftp.values().stream() + .map(FtpDownloader::asImmutable) + .collect(toMap(org.jreleaser.model.api.download.Downloader::getName, identity())); + } + return ftp; + } + + @Override + public Map getHttp() { + if (null == http) { + http = Download.this.http.values().stream() + .map(HttpDownloader::asImmutable) + .collect(toMap(org.jreleaser.model.api.download.Downloader::getName, identity())); + } + return http; + } + + @Override + public Map getScp() { + if (null == scp) { + scp = Download.this.scp.values().stream() + .map(ScpDownloader::asImmutable) + .collect(toMap(org.jreleaser.model.api.download.Downloader::getName, identity())); + } + return scp; + } + + @Override + public Map getSftp() { + if (null == sftp) { + sftp = Download.this.sftp.values().stream() + .map(SftpDownloader::asImmutable) + .collect(toMap(org.jreleaser.model.api.download.Downloader::getName, identity())); + } + return sftp; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Download.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Download.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.download.Download asImmutable() { + return immutable; } + @Override - public void merge(Download download) { - freezeCheck(); - this.active = merge(this.active, download.active); - this.enabled = merge(this.enabled, download.enabled); - setFtp(mergeModel(this.ftp, download.ftp)); - setHttp(mergeModel(this.http, download.http)); - setScp(mergeModel(this.scp, download.scp)); - setSftp(mergeModel(this.sftp, download.sftp)); + public void merge(Download source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + setFtp(mergeModel(this.ftp, source.ftp)); + setHttp(mergeModel(this.http, source.http)); + setScp(mergeModel(this.scp, source.scp)); + setSftp(mergeModel(this.sftp, source.sftp)); } @Override @@ -89,7 +151,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -110,17 +171,15 @@ public List getActiveFtps() { } public Map getFtp() { - return freezeWrap(ftp); + return ftp; } public void setFtp(Map ftp) { - freezeCheck(); this.ftp.clear(); this.ftp.putAll(ftp); } public void addFtp(FtpDownloader ftp) { - freezeCheck(); this.ftp.put(ftp.getName(), ftp); } @@ -131,17 +190,15 @@ public List getActiveHttps() { } public Map getHttp() { - return freezeWrap(http); + return http; } public void setHttp(Map http) { - freezeCheck(); this.http.clear(); this.http.putAll(http); } public void addHttp(HttpDownloader http) { - freezeCheck(); this.http.put(http.getName(), http); } @@ -152,17 +209,15 @@ public List getActiveScps() { } public Map getScp() { - return freezeWrap(scp); + return scp; } public void setScp(Map scp) { - freezeCheck(); this.scp.clear(); this.scp.putAll(scp); } public void addScp(ScpDownloader scp) { - freezeCheck(); this.scp.put(scp.getName(), scp); } @@ -173,17 +228,15 @@ public List getActiveSftps() { } public Map getSftp() { - return freezeWrap(sftp); + return sftp; } public void setSftp(Map sftp) { - freezeCheck(); this.sftp.clear(); this.sftp.putAll(sftp); } public void addSftp(SftpDownloader sftp) { - freezeCheck(); this.sftp.put(sftp.getName(), sftp); } @@ -226,13 +279,13 @@ public Map asMap(boolean full) { public Map findDownloadersByType(String downloaderType) { switch (downloaderType) { - case FtpDownloader.TYPE: + case org.jreleaser.model.api.download.FtpDownloader.TYPE: return (Map) ftp; - case HttpDownloader.TYPE: + case org.jreleaser.model.api.download.HttpDownloader.TYPE: return (Map) http; - case ScpDownloader.TYPE: + case org.jreleaser.model.api.download.ScpDownloader.TYPE: return (Map) scp; - case SftpDownloader.TYPE: + case org.jreleaser.model.api.download.SftpDownloader.TYPE: return (Map) sftp; } @@ -247,13 +300,4 @@ public List findAllActiveDownloaders() { downloaders.addAll((List) getActiveSftps()); return downloaders; } - - public static Set supportedDownloaders() { - Set set = new LinkedHashSet<>(); - set.add(FtpDownloader.TYPE); - set.add(HttpDownloader.TYPE); - set.add(ScpDownloader.TYPE); - set.add(SftpDownloader.TYPE); - return Collections.unmodifiableSet(set); - } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Downloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/Downloader.java similarity index 61% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Downloader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/Downloader.java index 562061aaa..07c4c10e4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Downloader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/Downloader.java @@ -15,17 +15,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.download; + +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.EnabledAware; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.common.TimeoutAware; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DOWNLOADER_NAME; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DOWNLOADER_NAME; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -48,10 +57,31 @@ class Unpack extends AbstractModelObject implements Domain, EnabledAware private Boolean enabled; private Boolean skipRootEntry; + public final org.jreleaser.model.api.download.Downloader.Unpack immutable = new org.jreleaser.model.api.download.Downloader.Unpack() { + @Override + public boolean isSkipRootEntry() { + return Downloader.Unpack.this.isSkipRootEntry(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Downloader.Unpack.this.asMap(full)); + } + + @Override + public boolean isEnabled() { + return Downloader.Unpack.this.isEnabled(); + } + }; + + public org.jreleaser.model.api.download.Downloader.Unpack asImmutable() { + return immutable; + } + @Override - public void merge(Unpack unpack) { - this.enabled = merge(this.enabled, unpack.enabled); - this.skipRootEntry = merge(this.skipRootEntry, unpack.skipRootEntry); + public void merge(Unpack source) { + this.enabled = merge(this.enabled, source.enabled); + this.skipRootEntry = merge(this.skipRootEntry, source.skipRootEntry); } @Override @@ -98,17 +128,37 @@ class Asset extends AbstractModelObject implements Domain { private String input; private String output; - @Override - public void freeze() { - super.freeze(); - unpack.freeze(); + private final org.jreleaser.model.api.download.Downloader.Asset immutable = new org.jreleaser.model.api.download.Downloader.Asset() { + @Override + public String getInput() { + return input; + } + + @Override + public String getOutput() { + return output; + } + + @Override + public org.jreleaser.model.api.download.Downloader.Unpack getUnpack() { + return unpack.asImmutable(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Downloader.Asset.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.download.Downloader.Asset asImmutable() { + return immutable; } @Override - public void merge(Asset asset) { - this.input = merge(this.input, asset.input); - this.output = merge(this.output, asset.output); - setUnpack(asset.unpack); + public void merge(Asset source) { + this.input = merge(this.input, source.input); + this.output = merge(this.output, source.output); + setUnpack(source.unpack); } public String getResolvedInput(JReleaserContext context, Downloader downloader) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/FtpDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/FtpDownloader.java similarity index 52% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/FtpDownloader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/FtpDownloader.java index 07def1f09..41a84f8d1 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/FtpDownloader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/FtpDownloader.java @@ -15,14 +15,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.download; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.Ftp; import org.jreleaser.util.Env; +import java.util.List; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.download.FtpDownloader.TYPE; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -30,20 +36,101 @@ * @author Andres Almiray * @since 1.1.0 */ -public class FtpDownloader extends AbstractDownloader implements Ftp { - public static final String TYPE = "ftp"; +public final class FtpDownloader extends AbstractDownloader implements Ftp { private String username; private String password; private String host; private Integer port; + private final org.jreleaser.model.api.download.FtpDownloader immutable = new org.jreleaser.model.api.download.FtpDownloader() { + private List assets; + + @Override + public String getType() { + return type; + } + + @Override + public String getName() { + return name; + } + + @Override + public List getAssets() { + if (null == assets) { + assets = FtpDownloader.this.assets.stream() + .map(AbstractDownloader.Asset::asImmutable) + .collect(toList()); + } + return assets; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return FtpDownloader.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(FtpDownloader.this.asMap(full)); + } + + @Override + public String getPrefix() { + return FtpDownloader.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public String getHost() { + return host; + } + + @Override + public Integer getPort() { + return port; + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + public FtpDownloader() { super(TYPE); } + public org.jreleaser.model.api.download.FtpDownloader asImmutable() { + return immutable; + } + @Override public void merge(FtpDownloader ftp) { - freezeCheck(); super.merge(ftp); this.username = merge(this.username, ftp.username); this.password = merge(this.password, ftp.password); @@ -51,68 +138,35 @@ public void merge(FtpDownloader ftp) { this.port = merge(this.port, ftp.port); } - @Override - public String getResolvedUsername() { - return Env.env("FTP_" + Env.toVar(name) + "_USERNAME", username); - } - - @Override - public String getResolvedPassword() { - return Env.env("FTP_" + Env.toVar(name) + "_PASSWORD", password); - } - - @Override - public String getResolvedHost() { - return Env.env("FTP_" + Env.toVar(name) + "_HOST", host); - } - - @Override - public Integer getResolvedPort() { - String value = Env.env("FTP_" + Env.toVar(name) + "_PORT", null == port ? "" : String.valueOf(port)); - return isBlank(value) ? 21 : Integer.parseInt(value); - } - - @Override public String getUsername() { return username; } - @Override public void setUsername(String username) { - freezeCheck(); this.username = username; } - @Override public String getPassword() { return password; } - @Override public void setPassword(String password) { - freezeCheck(); this.password = password; } - @Override public String getHost() { return host; } - @Override public void setHost(String host) { - freezeCheck(); this.host = host; } - @Override public Integer getPort() { return port; } - @Override public void setPort(Integer port) { - freezeCheck(); this.port = port; } @@ -123,4 +177,21 @@ protected void asMap(boolean full, Map props) { props.put("username", isNotBlank(getResolvedUsername()) ? HIDE : UNSET); props.put("password", isNotBlank(getResolvedPassword()) ? HIDE : UNSET); } + + public String getResolvedUsername() { + return Env.env("FTP_" + Env.toVar(name) + "_USERNAME", username); + } + + public String getResolvedPassword() { + return Env.env("FTP_" + Env.toVar(name) + "_PASSWORD", password); + } + + public String getResolvedHost() { + return Env.env("FTP_" + Env.toVar(name) + "_HOST", host); + } + + public Integer getResolvedPort() { + String value = Env.env("FTP_" + Env.toVar(name) + "_PORT", null == port ? "" : String.valueOf(port)); + return isBlank(value) ? 21 : Integer.parseInt(value); + } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/HttpDownloader.java similarity index 53% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/HttpDownloader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/HttpDownloader.java index 6096d8b2f..dd5bb8f01 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpDownloader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/HttpDownloader.java @@ -15,36 +15,122 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.download; +import org.jreleaser.model.Active; +import org.jreleaser.model.Http; import org.jreleaser.util.Env; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.api.download.HttpDownloader.TYPE; import static org.jreleaser.util.StringUtils.isNotBlank; /** * @author Andres Almiray * @since 1.1.0 */ -public class HttpDownloader extends AbstractDownloader implements Http { - public static final String TYPE = "http"; - +public final class HttpDownloader extends AbstractDownloader implements Http { private final Map headers = new LinkedHashMap<>(); private String username; private String password; private Authorization authorization; + private final org.jreleaser.model.api.download.HttpDownloader immutable = new org.jreleaser.model.api.download.HttpDownloader() { + private List assets; + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public Authorization getAuthorization() { + return authorization; + } + + @Override + public Map getHeaders() { + return unmodifiableMap(HttpDownloader.this.getHeaders()); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getName() { + return name; + } + + @Override + public List getAssets() { + if (null == assets) { + assets = HttpDownloader.this.assets.stream() + .map(AbstractDownloader.Asset::asImmutable) + .collect(toList()); + } + return assets; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return HttpDownloader.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(HttpDownloader.this.asMap(full)); + } + + @Override + public String getPrefix() { + return HttpDownloader.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + public HttpDownloader() { super(TYPE); } + public org.jreleaser.model.api.download.HttpDownloader asImmutable() { + return immutable; + } + @Override public void merge(HttpDownloader http) { - freezeCheck(); super.merge(http); this.username = merge(this.username, http.username); this.password = merge(this.password, http.password); @@ -52,65 +138,47 @@ public void merge(HttpDownloader http) { setHeaders(merge(this.headers, http.headers)); } - public Http.Authorization resolveAuthorization() { - if (null == authorization) { - authorization = Http.Authorization.NONE; - } - - return authorization; - } - - public String getResolvedUsername() { - return Env.env("HTTP_" + Env.toVar(name) + "_USERNAME", username); - } - - public String getResolvedPassword() { - return Env.env("HTTP_" + Env.toVar(name) + "_PASSWORD", password); - } - + @Override public String getUsername() { return username; } public void setUsername(String username) { - freezeCheck(); this.username = username; } + @Override public String getPassword() { return password; } public void setPassword(String password) { - freezeCheck(); this.password = password; } + @Override public Http.Authorization getAuthorization() { return authorization; } public void setAuthorization(Http.Authorization authorization) { - freezeCheck(); this.authorization = authorization; } public void setAuthorization(String authorization) { - freezeCheck(); this.authorization = Http.Authorization.of(authorization); } + @Override public Map getHeaders() { - return freezeWrap(headers); + return headers; } public void setHeaders(Map headers) { - freezeCheck(); this.headers.putAll(headers); } public void addHeaders(Map headers) { - freezeCheck(); this.headers.putAll(headers); } @@ -121,4 +189,20 @@ protected void asMap(boolean full, Map props) { props.put("password", isNotBlank(getResolvedPassword()) ? HIDE : UNSET); props.put("headers", headers); } + + public String getResolvedUsername() { + return Env.env("HTTP_" + Env.toVar(name) + "_USERNAME", username); + } + + public String getResolvedPassword() { + return Env.env("HTTP_" + Env.toVar(name) + "_PASSWORD", password); + } + + public Http.Authorization resolveAuthorization() { + if (null == authorization) { + authorization = Http.Authorization.NONE; + } + + return authorization; + } } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/ScpDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/ScpDownloader.java new file mode 100644 index 000000000..377885b52 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/ScpDownloader.java @@ -0,0 +1,150 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.download; + +import org.jreleaser.model.Active; + +import java.util.List; +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.api.download.ScpDownloader.TYPE; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public final class ScpDownloader extends AbstractSshDownloader { + private final org.jreleaser.model.api.download.ScpDownloader immutable = new org.jreleaser.model.api.download.ScpDownloader() { + private List assets; + + @Override + public String getType() { + return type; + } + + @Override + public String getName() { + return name; + } + + @Override + public List getAssets() { + if (null == assets) { + assets = ScpDownloader.this.assets.stream() + .map(AbstractDownloader.Asset::asImmutable) + .collect(toList()); + } + return assets; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return ScpDownloader.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(ScpDownloader.this.asMap(full)); + } + + @Override + public String getPrefix() { + return ScpDownloader.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public String getHost() { + return host; + } + + @Override + public Integer getPort() { + return port; + } + + @Override + public String getKnownHostsFile() { + return knownHostsFile; + } + + @Override + public String getPublicKey() { + return publicKey; + } + + @Override + public String getPrivateKey() { + return privateKey; + } + + @Override + public String getPassphrase() { + return passphrase; + } + + @Override + public String getFingerprint() { + return fingerprint; + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public ScpDownloader() { + super(TYPE); + } + + @Override + protected String getEnvPrefix() { + return "SCTP"; + } + + public org.jreleaser.model.api.download.ScpDownloader asImmutable() { + return immutable; + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/SftpDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/SftpDownloader.java new file mode 100644 index 000000000..b40f2661c --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/SftpDownloader.java @@ -0,0 +1,150 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.download; + +import org.jreleaser.model.Active; + +import java.util.List; +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.api.download.SftpDownloader.TYPE; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public final class SftpDownloader extends AbstractSshDownloader { + private final org.jreleaser.model.api.download.SftpDownloader immutable = new org.jreleaser.model.api.download.SftpDownloader() { + private List assets; + + @Override + public String getType() { + return type; + } + + @Override + public String getName() { + return name; + } + + @Override + public List getAssets() { + if (null == assets) { + assets = SftpDownloader.this.assets.stream() + .map(AbstractDownloader.Asset::asImmutable) + .collect(toList()); + } + return assets; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return SftpDownloader.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(SftpDownloader.this.asMap(full)); + } + + @Override + public String getPrefix() { + return SftpDownloader.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public String getHost() { + return host; + } + + @Override + public Integer getPort() { + return port; + } + + @Override + public String getKnownHostsFile() { + return knownHostsFile; + } + + @Override + public String getPublicKey() { + return publicKey; + } + + @Override + public String getPrivateKey() { + return privateKey; + } + + @Override + public String getPassphrase() { + return passphrase; + } + + @Override + public String getFingerprint() { + return fingerprint; + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + }; + + public SftpDownloader() { + super(TYPE); + } + + @Override + protected String getEnvPrefix() { + return "SFTP"; + } + + public org.jreleaser.model.api.download.SftpDownloader asImmutable() { + return immutable; + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/SshDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/SshDownloader.java new file mode 100644 index 000000000..d02edcd7c --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/download/SshDownloader.java @@ -0,0 +1,27 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.download; + +import org.jreleaser.model.internal.common.Ssh; + +/** + * @author Andres Almiray + * @since 1.1.0 + */ +public interface SshDownloader extends Downloader, Ssh { +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Environment.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/environment/Environment.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Environment.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/environment/Environment.java index b505d307b..4cdc8cbc0 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Environment.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/environment/Environment.java @@ -15,12 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.environment; import com.fasterxml.jackson.annotation.JsonIgnore; import org.jreleaser.bundle.RB; import org.jreleaser.config.JReleaserConfigLoader; import org.jreleaser.config.JReleaserConfigParser; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Domain; import org.jreleaser.util.Env; import java.io.File; @@ -35,6 +38,7 @@ import java.util.Properties; import java.util.ServiceLoader; +import static java.util.Collections.unmodifiableMap; import static org.jreleaser.util.StringUtils.getPropertyNameForLowerCaseHyphenSeparatedName; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -43,7 +47,7 @@ * @author Andres Almiray * @since 0.1.0 */ -public class Environment extends AbstractModelObject implements Domain { +public final class Environment extends AbstractModelObject implements Domain { private final Map properties = new LinkedHashMap<>(); @JsonIgnore private final Map sourcedProperties = new LinkedHashMap<>(); @@ -52,19 +56,45 @@ public class Environment extends AbstractModelObject implements Dom private String variables; @JsonIgnore private Properties vars; + + private final org.jreleaser.model.api.environment.Environment immutable = new org.jreleaser.model.api.environment.Environment() { + @Override + public Properties getVars() { + return vars; + } + + @Override + public String getVariables() { + return variables; + } + + @Override + public Map getProperties() { + return unmodifiableMap(properties); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Environment.this.asMap(full)); + } + }; + @JsonIgnore private Path propertiesFile; + public org.jreleaser.model.api.environment.Environment asImmutable() { + return immutable; + } + @Override - public void merge(Environment environment) { - freezeCheck(); - this.variables = merge(this.variables, environment.variables); - setProperties(merge(this.properties, environment.properties)); - setPropertiesSource(merge(this.propertiesSource, environment.propertiesSource)); + public void merge(Environment source) { + this.variables = merge(this.variables, source.variables); + setProperties(merge(this.properties, source.properties)); + setPropertiesSource(merge(this.propertiesSource, source.propertiesSource)); } public Properties getVars() { - return freezeWrap(vars); + return vars; } public String getVariable(String key) { @@ -81,7 +111,6 @@ public PropertiesSource getPropertiesSource() { } public void setPropertiesSource(PropertiesSource propertiesSource) { - freezeCheck(); this.propertiesSource = propertiesSource; if (null != this.propertiesSource) { sourcedProperties.putAll(propertiesSource.getProperties()); @@ -93,21 +122,19 @@ public String getVariables() { } public void setVariables(String variables) { - freezeCheck(); this.variables = variables; } public Map getProperties() { - return freezeWrap(properties); + return properties; } public void setProperties(Map properties) { - freezeCheck(); this.properties.putAll(properties); } public Map getSourcedProperties() { - return freezeWrap(sourcedProperties); + return sourcedProperties; } public Path getPropertiesFile() { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Extension.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/extensions/Extension.java similarity index 61% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Extension.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/extensions/Extension.java index 0b21daee5..8cd93fc3a 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Extension.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/extensions/Extension.java @@ -15,7 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.extensions; + +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.EnabledAware; import java.util.ArrayList; import java.util.Collections; @@ -23,25 +27,59 @@ import java.util.List; import java.util.Map; +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; + /** * @author Andres Almiray * @since 1.3.0 */ -public class Extension extends AbstractModelObject implements Domain, EnabledAware { +public final class Extension extends AbstractModelObject implements Domain, EnabledAware { private final List providers = new ArrayList<>(); private Boolean enabled; private String name; private String directory; - @Override - public void freeze() { - super.freeze(); - providers.forEach(ModelObject::freeze); + private final org.jreleaser.model.api.extensions.Extension immutable = new org.jreleaser.model.api.extensions.Extension() { + private List providers; + + @Override + public String getName() { + return name; + } + + @Override + public String getDirectory() { + return directory; + } + + @Override + public List getProviders() { + if (null == providers) { + providers = Extension.this.providers.stream() + .map(Extension.Provider::asImmutable) + .collect(toList()); + } + return providers; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Extension.this.asMap(full)); + } + + @Override + public boolean isEnabled() { + return Extension.this.isEnabled(); + } + }; + + public org.jreleaser.model.api.extensions.Extension asImmutable() { + return immutable; } @Override public void merge(Extension source) { - freezeCheck(); this.enabled = merge(this.enabled, source.enabled); this.name = merge(this.name, source.name); this.directory = merge(this.directory, source.directory); @@ -55,7 +93,6 @@ public boolean isEnabled() { @Override public void setEnabled(Boolean enabled) { - freezeCheck(); this.enabled = enabled; } @@ -65,7 +102,6 @@ public boolean isEnabledSet() { } public String getName() { - freezeCheck(); return name; } @@ -78,22 +114,19 @@ public String getDirectory() { } public void setDirectory(String directory) { - freezeCheck(); this.directory = directory; } public List getProviders() { - return freezeWrap(providers); + return providers; } public void setProviders(List providers) { - freezeCheck(); this.providers.clear(); this.providers.addAll(providers); } public void addProvider(Provider provider) { - freezeCheck(); if (null != provider) { this.providers.add(provider); } @@ -117,19 +150,39 @@ public Map asMap(boolean full) { return map; } - public static class Provider extends AbstractModelObject implements Domain { + + public static final class Provider extends AbstractModelObject implements Domain { private final Map properties = new LinkedHashMap<>(); private String type; + private final org.jreleaser.model.api.extensions.Extension.Provider immutable = new org.jreleaser.model.api.extensions.Extension.Provider() { + @Override + public String getType() { + return type; + } + + @Override + public Map getProperties() { + return unmodifiableMap(properties); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Provider.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.extensions.Extension.Provider asImmutable() { + return immutable; + } + @Override public void merge(Provider source) { - freezeCheck(); this.type = merge(this.type, source.type); setProperties(merge(this.properties, source.properties)); } public String getType() { - freezeCheck(); return type; } @@ -138,17 +191,15 @@ public void setType(String type) { } public Map getProperties() { - return freezeWrap(properties); + return properties; } public void setProperties(Map properties) { - freezeCheck(); this.properties.clear(); this.properties.putAll(properties); } public void addProperties(Map properties) { - freezeCheck(); this.properties.putAll(properties); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Files.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/files/Files.java similarity index 59% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Files.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/files/Files.java index 564cbaa3b..bb6f0e3bb 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Files.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/files/Files.java @@ -15,9 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.files; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.Env; import java.util.ArrayList; @@ -28,11 +35,15 @@ import java.util.Map; import java.util.Set; +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; + /** * @author Andres Almiray * @since 0.1.0 */ -public class Files extends AbstractModelObject implements Domain, Activatable { +public final class Files extends AbstractModelObject implements Domain, Activatable { private final Set artifacts = new LinkedHashSet<>(); private final List globs = new ArrayList<>(); @JsonIgnore @@ -43,20 +54,67 @@ public class Files extends AbstractModelObject implements Domain, Activat @JsonIgnore private boolean enabled; - @Override - public void freeze() { - super.freeze(); - artifacts.forEach(Artifact::freeze); - globs.forEach(Glob::freeze); + private final org.jreleaser.model.api.files.Files immutable = new org.jreleaser.model.api.files.Files() { + private Set paths; + private Set artifacts; + private List globs; + + @Override + public Set getPaths() { + if (null == paths) { + paths = Files.this.paths.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return paths; + } + + @Override + public Set getArtifacts() { + if (null == artifacts) { + artifacts = Files.this.artifacts.stream() + .map(Artifact::asImmutable) + .collect(toSet()); + } + return artifacts; + } + + @Override + public List getGlobs() { + if (null == globs) { + globs = Files.this.globs.stream() + .map(Glob::asImmutable) + .collect(toList()); + } + return globs; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Files.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Files.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.files.Files asImmutable() { + return immutable; } @Override - public void merge(Files files) { - freezeCheck(); - this.active = merge(this.active, files.active); - this.enabled = merge(this.enabled, files.enabled); - setArtifacts(merge(this.artifacts, files.artifacts)); - setGlobs(merge(this.globs, files.globs)); + public void merge(Files source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + setArtifacts(merge(this.artifacts, source.artifacts)); + setGlobs(merge(this.globs, source.globs)); } @Override @@ -84,7 +142,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -107,55 +164,48 @@ public boolean arePathsResolved() { } public Set getPaths() { - return freezeWrap(Artifact.sortArtifacts(paths)); + return Artifact.sortArtifacts(paths); } public void setPaths(Set paths) { - freezeCheck(); this.paths.clear(); this.paths.addAll(paths); this.resolved = true; } public Set getArtifacts() { - return freezeWrap(Artifact.sortArtifacts(artifacts)); + return Artifact.sortArtifacts(artifacts); } public void setArtifacts(Set artifacts) { - freezeCheck(); this.artifacts.clear(); this.artifacts.addAll(artifacts); } public void addArtifacts(Set artifacts) { - freezeCheck(); this.artifacts.addAll(artifacts); } public void addArtifact(Artifact artifact) { - freezeCheck(); if (null != artifact) { this.artifacts.add(artifact); } } public List getGlobs() { - return freezeWrap(globs); + return globs; } public void setGlobs(List globs) { - freezeCheck(); this.globs.clear(); this.globs.addAll(globs); } public void addGlobs(List globs) { - freezeCheck(); this.globs.addAll(globs); } public void addGlob(Glob glob) { - freezeCheck(); if (null != glob) { this.globs.add(glob); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/AbstractHook.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/AbstractHook.java new file mode 100644 index 000000000..7ea83a8b3 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/AbstractHook.java @@ -0,0 +1,62 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.hooks; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public abstract class AbstractHook> extends AbstractModelObject implements Hook { + protected final Filter filter = new Filter(); + protected Boolean continueOnError; + protected Active active; + @JsonIgnore + protected boolean enabled; + + @Override + public void merge(S source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + this.continueOnError = merge(this.continueOnError, source.continueOnError); + setFilter(source.filter); + } + + @Override + public Map asMap(boolean full) { + Map map = new LinkedHashMap<>(); + map.put("enabled", isEnabled()); + map.put("active", active); + map.put("continueOnError", isContinueOnError()); + Map filterAsMap = filter.asMap(full); + if (full || !filterAsMap.isEmpty()) { + map.put("filter", filterAsMap); + } + asMap(full, map); + + return map; + } + + protected abstract void asMap(boolean full, Map map); +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommandHook.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/CommandHook.java similarity index 64% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/CommandHook.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/CommandHook.java index bcccc3a7e..aec3f32c3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommandHook.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/CommandHook.java @@ -15,42 +15,65 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.hooks; -import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.api.hooks.ExecutionEvent; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.project.Project; -import java.util.LinkedHashMap; import java.util.Map; -import static org.jreleaser.util.Templates.resolveTemplate; +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.mustache.Templates.resolveTemplate; /** * @author Andres Almiray * @since 1.2.0 */ -public class CommandHook extends AbstractModelObject implements Hook { - private final Filter filter = new Filter(); - protected Boolean continueOnError; +public final class CommandHook extends AbstractHook { private String cmd; - private Active active; - @JsonIgnore - private boolean enabled; + private final org.jreleaser.model.api.hooks.CommandHook immutable = new org.jreleaser.model.api.hooks.CommandHook() { + @Override + public String getCmd() { + return cmd; + } - @Override - public void freeze() { - super.freeze(); - filter.freeze(); + @Override + public Filter getFilter() { + return filter.asImmutable(); + } + + @Override + public boolean isContinueOnError() { + return CommandHook.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return CommandHook.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(CommandHook.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.hooks.CommandHook asImmutable() { + return immutable; } @Override public void merge(CommandHook source) { - freezeCheck(); + super.merge(source); this.active = merge(this.active, source.active); - this.enabled = merge(this.enabled, source.enabled); - this.cmd = merge(this.cmd, source.cmd); - this.continueOnError = merge(this.continueOnError, source.continueOnError); - setFilter(source.filter); } public String getResolvedCmd(JReleaserContext context, ExecutionEvent event) { @@ -84,7 +107,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -105,7 +127,6 @@ public boolean isContinueOnError() { @Override public void setContinueOnError(Boolean continueOnError) { - freezeCheck(); this.continueOnError = continueOnError; } @@ -119,7 +140,6 @@ public String getCmd() { } public void setCmd(String cmd) { - freezeCheck(); this.cmd = cmd; } @@ -128,23 +148,12 @@ public Filter getFilter() { return filter; } - @Override public void setFilter(Filter filter) { this.filter.merge(filter); } @Override - public Map asMap(boolean full) { - Map map = new LinkedHashMap<>(); - map.put("enabled", isEnabled()); - map.put("active", active); - map.put("continueOnError", isContinueOnError()); - Map filterAsMap = filter.asMap(full); - if (full || !filterAsMap.isEmpty()) { - map.put("filter", filterAsMap); - } + public void asMap(boolean full, Map map) { map.put("cmd", cmd); - - return map; } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommandHooks.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/CommandHooks.java similarity index 63% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/CommandHooks.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/CommandHooks.java index d04000004..e4b1cbd78 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/CommandHooks.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/CommandHooks.java @@ -15,21 +15,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.hooks; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.Env; import java.util.ArrayList; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import static java.util.stream.Collectors.toList; + /** * @author Andres Almiray * @since 1.2.0 */ -public class CommandHooks extends AbstractModelObject implements Domain, Activatable { +public final class CommandHooks extends AbstractModelObject implements Domain, Activatable { private final List before = new ArrayList<>(); private final List success = new ArrayList<>(); private final List failure = new ArrayList<>(); @@ -38,17 +46,63 @@ public class CommandHooks extends AbstractModelObject implements D @JsonIgnore private boolean enabled = true; - @Override - public void freeze() { - super.freeze(); - before.forEach(CommandHook::freeze); - success.forEach(CommandHook::freeze); - failure.forEach(CommandHook::freeze); + private final org.jreleaser.model.api.hooks.CommandHooks immutable = new org.jreleaser.model.api.hooks.CommandHooks() { + private List before; + private List success; + private List failure; + + @Override + public List getBefore() { + if (null == before) { + before = CommandHooks.this.before.stream() + .map(CommandHook::asImmutable) + .collect(toList()); + } + return before; + } + + @Override + public List getSuccess() { + if (null == success) { + success = CommandHooks.this.success.stream() + .map(CommandHook::asImmutable) + .collect(toList()); + } + return success; + } + + @Override + public List getFailure() { + if (null == failure) { + failure = CommandHooks.this.failure.stream() + .map(CommandHook::asImmutable) + .collect(toList()); + } + return failure; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return CommandHooks.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return Collections.unmodifiableMap(CommandHooks.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.hooks.CommandHooks asImmutable() { + return immutable; } @Override public void merge(CommandHooks source) { - freezeCheck(); this.active = merge(this.active, source.active); this.enabled = merge(this.enabled, source.enabled); setBefore(merge(this.before, source.before)); @@ -87,7 +141,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -102,51 +155,45 @@ public boolean isActiveSet() { } public List getBefore() { - return freezeWrap(before); + return before; } public void setBefore(List before) { - freezeCheck(); this.before.clear(); this.before.addAll(before); } public List getSuccess() { - return freezeWrap(success); + return success; } public void setSuccess(List success) { - freezeCheck(); this.success.clear(); this.success.addAll(success); } public List getFailure() { - return freezeWrap(failure); + return failure; } public void setFailure(List failure) { - freezeCheck(); this.failure.clear(); this.failure.addAll(failure); } public void addBefore(CommandHook hook) { - freezeCheck(); if (null != hook) { this.before.add(hook); } } public void addSuccess(CommandHook hook) { - freezeCheck(); if (null != hook) { this.success.add(hook); } } public void addFailure(CommandHook hook) { - freezeCheck(); if (null != hook) { this.failure.add(hook); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Hook.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/Hook.java similarity index 70% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Hook.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/Hook.java index 5fb60d088..db3d9a190 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Hook.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/Hook.java @@ -15,13 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.hooks; + +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; import static java.util.stream.Collectors.toSet; /** @@ -43,9 +49,29 @@ class Filter extends AbstractModelObject implements Domain { private final Set includes = new LinkedHashSet<>(); private final Set excludes = new LinkedHashSet<>(); + private final org.jreleaser.model.api.hooks.Hook.Filter immutable = new org.jreleaser.model.api.hooks.Hook.Filter() { + @Override + public Set getIncludes() { + return unmodifiableSet(includes); + } + + @Override + public Set getExcludes() { + return unmodifiableSet(excludes); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Hook.Filter.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.hooks.Hook.Filter asImmutable() { + return immutable; + } + @Override public void merge(Filter source) { - freezeCheck(); setIncludes(merge(this.includes, source.includes)); setExcludes(merge(this.excludes, source.excludes)); } @@ -63,21 +89,19 @@ public Set getResolvedExcludes() { } public Set getIncludes() { - return freezeWrap(includes); + return includes; } public void setIncludes(Set includes) { - freezeCheck(); this.includes.clear(); this.includes.addAll(includes); } public Set getExcludes() { - return freezeWrap(excludes); + return excludes; } public void setExcludes(Set excludes) { - freezeCheck(); this.excludes.clear(); this.excludes.addAll(excludes); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Hooks.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/Hooks.java similarity index 68% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Hooks.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/Hooks.java index a9b9ccef0..f007b6c46 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Hooks.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/hooks/Hooks.java @@ -15,34 +15,60 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.hooks; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.Env; import java.util.LinkedHashMap; import java.util.Map; +import static java.util.Collections.unmodifiableMap; + /** * @author Andres Almiray * @since 1.2.0 */ -public class Hooks extends AbstractModelObject implements Domain, Activatable { +public final class Hooks extends AbstractModelObject implements Domain, Activatable { private final CommandHooks command = new CommandHooks(); private Active active; @JsonIgnore private boolean enabled = true; - @Override - public void freeze() { - super.freeze(); - command.freeze(); + private final org.jreleaser.model.api.hooks.Hooks immutable = new org.jreleaser.model.api.hooks.Hooks() { + @Override + public org.jreleaser.model.api.hooks.CommandHooks getCommand() { + return command.asImmutable(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return Hooks.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Hooks.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.hooks.Hooks asImmutable() { + return immutable; } @Override public void merge(Hooks source) { - freezeCheck(); this.active = merge(this.active, source.active); this.enabled = merge(this.enabled, source.enabled); setCommand(source.command); @@ -77,7 +103,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractDockerConfiguration.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractDockerConfiguration.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractDockerConfiguration.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractDockerConfiguration.java index b584f1f6b..4d423886c 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractDockerConfiguration.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractDockerConfiguration.java @@ -15,9 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.project.Project; import java.util.ArrayList; import java.util.Collections; @@ -34,7 +40,8 @@ * @author Andres Almiray * @since 0.4.0 */ -public abstract class AbstractDockerConfiguration> extends AbstractModelObject implements DockerConfiguration { +public abstract class AbstractDockerConfiguration> extends AbstractModelObject + implements DockerConfiguration, ExtraProperties, Activatable { protected final Map extraProperties = new LinkedHashMap<>(); protected final Map labels = new LinkedHashMap<>(); protected final Set imageNames = new LinkedHashSet<>(); @@ -52,15 +59,8 @@ public abstract class AbstractDockerConfiguration getSkipTemplates() { - return freezeWrap(skipTemplates); + return skipTemplates; } - @Override public void setSkipTemplates(List skipTemplates) { - freezeCheck(); this.skipTemplates.clear(); this.skipTemplates.addAll(skipTemplates); } - @Override public void addSkipTemplates(List templates) { - freezeCheck(); this.skipTemplates.addAll(templates); } - @Override public void addSkipTemplate(String template) { - freezeCheck(); if (isNotBlank(template)) { this.skipTemplates.add(template.trim()); } @@ -167,19 +158,17 @@ public void addSkipTemplate(String template) { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @@ -188,33 +177,25 @@ public String getBaseImage() { return baseImage; } - @Override public void setBaseImage(String baseImage) { - freezeCheck(); this.baseImage = baseImage; } @Override public Map getLabels() { - return freezeWrap(labels); + return labels; } - @Override public void setLabels(Map labels) { - freezeCheck(); this.labels.clear(); this.labels.putAll(labels); } - @Override public void addLabels(Map labels) { - freezeCheck(); this.labels.putAll(labels); } - @Override public void addLabel(String key, String value) { - freezeCheck(); if (isNotBlank(value)) { this.labels.put(key, value); } @@ -222,21 +203,17 @@ public void addLabel(String key, String value) { @Override public Set getImageNames() { - return freezeWrap(imageNames); + return imageNames; } - @Override public void setImageNames(Set imageNames) { - freezeCheck(); if (imageNames != null) { this.imageNames.clear(); this.imageNames.addAll(imageNames); } } - @Override public void addImageName(String imageName) { - freezeCheck(); if (isNotBlank(imageName)) { this.imageNames.add(imageName); } @@ -244,21 +221,17 @@ public void addImageName(String imageName) { @Override public List getBuildArgs() { - return freezeWrap(buildArgs); + return buildArgs; } - @Override public void setBuildArgs(List buildArgs) { - freezeCheck(); if (buildArgs != null) { this.buildArgs.clear(); this.buildArgs.addAll(buildArgs); } } - @Override public void addBuildArg(String buildArg) { - freezeCheck(); if (isNotBlank(buildArg)) { this.buildArgs.add(buildArg); } @@ -266,49 +239,39 @@ public void addBuildArg(String buildArg) { @Override public List getPreCommands() { - return freezeWrap(preCommands); + return preCommands; } - @Override public void setPreCommands(List preCommands) { - freezeCheck(); if (preCommands != null) { this.preCommands.clear(); this.preCommands.addAll(preCommands); } } - @Override public List getPostCommands() { - return freezeWrap(postCommands); + return postCommands; } - @Override public void setPostCommands(List postCommands) { - freezeCheck(); if (postCommands != null) { this.postCommands.clear(); this.postCommands.addAll(postCommands); } } - @Override public Set getRegistries() { - return freezeWrap(registries); + return registries; } - @Override - public void setRegistries(Set registries) { - freezeCheck(); + public void setRegistries(Set registries) { if (registries != null) { this.registries.clear(); this.registries.addAll(registries); } } - @Override public void addRegistry(Registry registry) { - freezeCheck(); if (null != registry) { this.registries.add(registry); } @@ -319,13 +282,10 @@ public boolean isUseLocalArtifact() { return useLocalArtifact == null || useLocalArtifact; } - @Override public void setUseLocalArtifact(Boolean useLocalArtifact) { - freezeCheck(); this.useLocalArtifact = useLocalArtifact; } - @Override public boolean isUseLocalArtifactSet() { return useLocalArtifact != null; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractPackager.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractPackager.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractPackager.java index 35ded96ba..dd8aa9860 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractPackager.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractPackager.java @@ -15,9 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.FileType; import java.util.ArrayList; @@ -52,14 +59,13 @@ protected AbstractPackager(String type) { } @Override - public void merge(S packager) { - freezeCheck(); - this.active = merge(this.active, packager.active); - this.enabled = merge(this.enabled, packager.enabled); - this.continueOnError = merge(this.continueOnError, packager.continueOnError); - this.downloadUrl = merge(this.downloadUrl, packager.downloadUrl); - this.failed = packager.failed; - setExtraProperties(merge(this.extraProperties, packager.extraProperties)); + public void merge(S source) { + this.active = merge(this.active, source.active); + this.enabled = merge(this.enabled, source.enabled); + this.continueOnError = merge(this.continueOnError, source.continueOnError); + this.downloadUrl = merge(this.downloadUrl, source.downloadUrl); + this.failed = source.failed; + setExtraProperties(merge(this.extraProperties, source.extraProperties)); } @Override @@ -77,9 +83,8 @@ public boolean isFailed() { return failed; } - @Override public List resolveCandidateArtifacts(JReleaserContext context, Distribution distribution) { - List fileExtensions = new ArrayList<>(getSupportedExtensions(distribution)); + List fileExtensions = new ArrayList<>(getSupportedFileExtensions(distribution.getType())); fileExtensions.sort(naturalOrder()); return distribution.getArtifacts().stream() @@ -113,7 +118,6 @@ public boolean isEnabled() { @Override public void disable() { - freezeCheck(); active = Active.NEVER; enabled = false; } @@ -125,7 +129,6 @@ public boolean isContinueOnError() { @Override public void setContinueOnError(Boolean continueOnError) { - freezeCheck(); this.continueOnError = continueOnError; } @@ -135,7 +138,6 @@ public boolean isContinueOnErrorSet() { } public boolean resolveEnabled(Project project) { - freezeCheck(); if (null == active) { active = Active.NEVER; } @@ -145,12 +147,11 @@ public boolean resolveEnabled(Project project) { } public boolean resolveEnabled(Project project, Distribution distribution) { - freezeCheck(); if (null == active) { active = Active.NEVER; } enabled = active.check(project); - if (!supportsDistribution(distribution)) { + if (!supportsDistribution(distribution.getType())) { enabled = false; } return enabled; @@ -163,7 +164,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -184,19 +184,17 @@ public String getType() { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } @@ -207,7 +205,6 @@ public String getDownloadUrl() { @Override public void setDownloadUrl(String downloadUrl) { - freezeCheck(); this.downloadUrl = downloadUrl; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractRepositoryPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractRepositoryPackager.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractRepositoryPackager.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractRepositoryPackager.java index c0575d3ef..30297ad13 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractRepositoryPackager.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractRepositoryPackager.java @@ -15,7 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.internal.common.CommitAuthor; import java.util.Map; @@ -31,16 +33,9 @@ protected AbstractRepositoryPackager(String type) { } @Override - public void freeze() { - super.freeze(); - commitAuthor.freeze(); - } - - @Override - public void merge(S packager) { - freezeCheck(); - super.merge(packager); - setCommitAuthor(packager.commitAuthor); + public void merge(S source) { + super.merge(source); + setCommitAuthor(source.commitAuthor); } @Override diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractRepositoryTap.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractRepositoryTap.java similarity index 87% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractRepositoryTap.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractRepositoryTap.java index 56343981b..8700706b4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractRepositoryTap.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractRepositoryTap.java @@ -15,18 +15,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Env; import java.util.LinkedHashMap; import java.util.Map; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -48,7 +52,7 @@ public abstract class AbstractRepositoryTap> protected String token; protected String commitMessage; - AbstractRepositoryTap(String basename, String tapName) { + public AbstractRepositoryTap(String basename, String tapName) { this.basename = basename; this.tapName = tapName; } @@ -59,13 +63,11 @@ public String getBasename() { } public void setTapName(String tapName) { - freezeCheck(); this.tapName = tapName; } @Override public void merge(S tap) { - freezeCheck(); this.active = merge(this.active, tap.active); this.enabled = merge(this.enabled, tap.enabled); this.owner = merge(this.owner, tap.owner); @@ -103,7 +105,6 @@ public Active getActive() { @Override public void setActive(Active active) { - freezeCheck(); this.active = active; } @@ -122,7 +123,6 @@ public String getCanonicalRepoName() { return owner + "/" + getResolvedName(); } - @Override public String getResolvedName() { if (isNotBlank(name)) { return name; @@ -130,24 +130,20 @@ public String getResolvedName() { return tapName; } - @Override public String getResolvedCommitMessage(Map props) { return resolveTemplate(commitMessage, props); } - @Override public String getResolvedTagName(Map props) { return resolveTemplate(tagName, props); } - @Override - public String getResolvedUsername(GitService service) { + public String getResolvedUsername(BaseReleaser service) { return Env.env(Env.toVar(basename + "_" + service.getServiceName()) + "_USERNAME", username); } - @Override - public String getResolvedToken(GitService service) { + public String getResolvedToken(BaseReleaser service) { return Env.env(Env.toVar(basename + "_" + service.getServiceName()) + "_TOKEN", token); } @@ -157,9 +153,7 @@ public String getOwner() { return owner; } - @Override public void setOwner(String owner) { - freezeCheck(); this.owner = owner; } @@ -168,9 +162,7 @@ public String getName() { return name; } - @Override public void setName(String name) { - freezeCheck(); this.name = name; } @@ -179,9 +171,7 @@ public String getTagName() { return tagName; } - @Override public void setTagName(String tagName) { - freezeCheck(); this.tagName = tagName; } @@ -190,9 +180,7 @@ public String getBranch() { return branch; } - @Override public void setBranch(String branch) { - freezeCheck(); this.branch = branch; } @@ -201,9 +189,7 @@ public String getUsername() { return username; } - @Override public void setUsername(String username) { - freezeCheck(); this.username = username; } @@ -212,9 +198,7 @@ public String getToken() { return token; } - @Override public void setToken(String token) { - freezeCheck(); this.token = token; } @@ -223,9 +207,7 @@ public String getCommitMessage() { return commitMessage; } - @Override public void setCommitMessage(String commitMessage) { - freezeCheck(); this.commitMessage = commitMessage; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractTemplatePackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractTemplatePackager.java similarity index 83% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractTemplatePackager.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractTemplatePackager.java index 36145b498..9dcad97e7 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AbstractTemplatePackager.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AbstractTemplatePackager.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; import java.util.ArrayList; import java.util.List; @@ -36,11 +36,10 @@ protected AbstractTemplatePackager(String type) { } @Override - public void merge(S packager) { - freezeCheck(); - super.merge(packager); - this.templateDirectory = merge(this.templateDirectory, packager.templateDirectory); - setSkipTemplates(merge(this.skipTemplates, packager.skipTemplates)); + public void merge(S source) { + super.merge(source); + this.templateDirectory = merge(this.templateDirectory, source.templateDirectory); + setSkipTemplates(merge(this.skipTemplates, source.skipTemplates)); } @Override @@ -50,31 +49,27 @@ public String getTemplateDirectory() { @Override public void setTemplateDirectory(String templateDirectory) { - freezeCheck(); this.templateDirectory = templateDirectory; } @Override public List getSkipTemplates() { - return freezeWrap(skipTemplates); + return skipTemplates; } @Override public void setSkipTemplates(List skipTemplates) { - freezeCheck(); this.skipTemplates.clear(); this.skipTemplates.addAll(skipTemplates); } @Override public void addSkipTemplates(List templates) { - freezeCheck(); this.skipTemplates.addAll(templates); } @Override public void addSkipTemplate(String template) { - freezeCheck(); if (isNotBlank(template)) { this.skipTemplates.add(template.trim()); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/AppImage.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AppImagePackager.java similarity index 52% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/AppImage.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AppImagePackager.java index 3c16cbf76..23ac0de72 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/AppImage.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AppImagePackager.java @@ -15,22 +15,34 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; - +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.common.Screenshot; import org.jreleaser.util.PlatformUtils; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static java.util.stream.Collectors.toList; import static org.jreleaser.model.Distribution.DistributionType.BINARY; import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; import static org.jreleaser.model.Distribution.DistributionType.JLINK; import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.api.packagers.AppImagePackager.SKIP_APPIMAGE; +import static org.jreleaser.model.api.packagers.AppImagePackager.TYPE; import static org.jreleaser.util.CollectionUtils.setOf; import static org.jreleaser.util.FileType.TAR; import static org.jreleaser.util.FileType.TAR_GZ; @@ -45,11 +57,8 @@ * @author Andres Almiray * @since 1.2.0 */ -public class AppImage extends AbstractRepositoryPackager { - public static final String TYPE = "appimage"; - public static final String SKIP_APPIMAGE = "skipAppImage"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); +public final class AppImagePackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); static { Set extensions = setOf( @@ -75,20 +84,156 @@ public class AppImage extends AbstractRepositoryPackager { private String developerName; private Boolean requiresTerminal; - public AppImage() { + private final org.jreleaser.model.api.packagers.AppImagePackager immutable = new org.jreleaser.model.api.packagers.AppImagePackager() { + private List screenshots; + private List icons; + + @Override + public String getComponentId() { + return componentId; + } + + @Override + public List getCategories() { + return unmodifiableList(categories); + } + + @Override + public String getDeveloperName() { + return developerName; + } + + @Override + public boolean isRequiresTerminal() { + return AppImagePackager.this.isRequiresTerminal(); + } + + @Override + public List getScreenshots() { + if (null == screenshots) { + screenshots = AppImagePackager.this.screenshots.stream() + .map(Screenshot::asImmutable) + .collect(toList()); + } + return screenshots; + } + + @Override + public List getIcons() { + if (null == icons) { + icons = AppImagePackager.this.icons.stream() + .map(Icon::asImmutable) + .collect(toList()); + } + return icons; + } + + @Override + public Set getSkipReleases() { + return unmodifiableSet(skipReleases); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getRepository() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getRepository(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return AppImagePackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return AppImagePackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return AppImagePackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return AppImagePackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return AppImagePackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return AppImagePackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return AppImagePackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(AppImagePackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return AppImagePackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public AppImagePackager() { super(TYPE); } - @Override - public void freeze() { - super.freeze(); - screenshots.forEach(ModelObject::freeze); - icons.forEach(ModelObject::freeze); + public org.jreleaser.model.api.packagers.AppImagePackager asImmutable() { + return immutable; } @Override - public void merge(AppImage source) { - freezeCheck(); + public void merge(AppImagePackager source) { super.merge(source); this.componentId = merge(this.componentId, source.componentId); this.developerName = merge(this.developerName, source.developerName); @@ -110,16 +255,14 @@ public String getComponentId() { } public void setComponentId(String componentId) { - freezeCheck(); this.componentId = componentId; } public List getCategories() { - return freezeWrap(categories); + return categories; } public void setCategories(List tags) { - freezeCheck(); this.categories.clear(); this.categories.addAll(tags); } @@ -129,7 +272,6 @@ public String getDeveloperName() { } public void setDeveloperName(String developerName) { - freezeCheck(); this.developerName = developerName; } @@ -138,7 +280,6 @@ public boolean isRequiresTerminal() { } public void setRequiresTerminal(Boolean requiresTerminal) { - freezeCheck(); this.requiresTerminal = requiresTerminal; } @@ -147,45 +288,40 @@ public boolean isRequiresTerminalSet() { } public List getScreenshots() { - return freezeWrap(screenshots); + return screenshots; } public void setScreenshots(List screenshots) { - freezeCheck(); this.screenshots.clear(); this.screenshots.addAll(screenshots); } public void addScreenshot(Screenshot screenshot) { - freezeCheck(); if (null != screenshot) { this.screenshots.add(screenshot); } } public List getIcons() { - return freezeWrap(icons); + return icons; } public void setIcons(List icons) { - freezeCheck(); this.icons.clear(); this.icons.addAll(icons); } public void addIcon(Icon icon) { - freezeCheck(); if (null != icon) { this.icons.add(icon); } } public Set getSkipReleases() { - return freezeWrap(skipReleases); + return skipReleases; } public void setSkipReleases(Set tags) { - freezeCheck(); this.skipReleases.clear(); this.skipReleases.addAll(tags); } @@ -223,6 +359,10 @@ protected void asMap(boolean full, Map map) { @Override public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { return repository; } @@ -233,13 +373,13 @@ public boolean supportsPlatform(String platform) { } @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); } @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); } @Override @@ -247,7 +387,7 @@ protected boolean isNotSkipped(Artifact artifact) { return isFalse(artifact.getExtraProperties().get(SKIP_APPIMAGE)); } - public static class AppImageRepository extends AbstractRepositoryTap { + public static final class AppImageRepository extends PackagerRepository { public AppImageRepository() { super("appimage", "appimage"); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AsdfPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AsdfPackager.java new file mode 100644 index 000000000..d3a69e92c --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/AsdfPackager.java @@ -0,0 +1,248 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.util.PlatformUtils; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Distribution.DistributionType.BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.api.packagers.AsdfPackager.SKIP_ASDF; +import static org.jreleaser.model.api.packagers.AsdfPackager.TYPE; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.TAR; +import static org.jreleaser.util.FileType.TAR_GZ; +import static org.jreleaser.util.FileType.TAR_XZ; +import static org.jreleaser.util.FileType.TGZ; +import static org.jreleaser.util.FileType.TXZ; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isFalse; + +/** + * @author Andres Almiray + * @since 1.2.0 + */ +public final class AsdfPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf( + TAR_GZ.extension(), + TAR_XZ.extension(), + TGZ.extension(), + TXZ.extension(), + TAR.extension(), + ZIP.extension()); + + SUPPORTED.put(BINARY, extensions); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + } + + private final AsdfRepository repository = new AsdfRepository(); + + private String toolCheck; + + private final org.jreleaser.model.api.packagers.AsdfPackager immutable = new org.jreleaser.model.api.packagers.AsdfPackager() { + @Override + public String getToolCheck() { + return toolCheck; + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getRepository() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getRepository(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return Collections.unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return AsdfPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return AsdfPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return AsdfPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return AsdfPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return AsdfPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return AsdfPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return AsdfPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(AsdfPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return AsdfPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public AsdfPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.AsdfPackager asImmutable() { + return immutable; + } + + @Override + public void merge(AsdfPackager source) { + super.merge(source); + this.toolCheck = merge(this.toolCheck, source.toolCheck); + setRepository(source.repository); + } + + public String getToolCheck() { + return toolCheck; + } + + public void setToolCheck(String toolCheck) { + this.toolCheck = toolCheck; + } + + public AsdfRepository getRepository() { + return repository; + } + + public void setRepository(AsdfRepository repository) { + this.repository.merge(repository); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("toolcheck", toolCheck); + props.put("repository", repository.asMap(full)); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; + } + + @Override + public boolean supportsPlatform(String platform) { + return isBlank(platform) || + PlatformUtils.isMac(platform) || + PlatformUtils.isLinux(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_ASDF)); + } + + public static final class AsdfRepository extends PackagerRepository { + public AsdfRepository() { + super("asdf", "asdf"); + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Brew.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/BrewPackager.java similarity index 64% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Brew.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/BrewPackager.java index 5c09b7926..34d3380ca 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Brew.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/BrewPackager.java @@ -15,13 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.distributions.Distribution; import org.jreleaser.util.PlatformUtils; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; @@ -29,6 +35,10 @@ import java.util.Objects; import java.util.Set; +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; import static java.util.stream.Collectors.toList; import static org.jreleaser.model.Distribution.DistributionType.BINARY; import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; @@ -36,6 +46,9 @@ import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; +import static org.jreleaser.model.api.packagers.BrewPackager.SKIP_BREW; +import static org.jreleaser.model.api.packagers.BrewPackager.TYPE; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.CollectionUtils.setOf; import static org.jreleaser.util.FileType.DMG; import static org.jreleaser.util.FileType.JAR; @@ -46,17 +59,13 @@ import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isFalse; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class Brew extends AbstractRepositoryPackager { - public static final String TYPE = "brew"; - public static final String SKIP_BREW = "skipBrew"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); +public final class BrewPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); static { Set extensions = setOf(ZIP.extension()); @@ -70,34 +79,142 @@ public class Brew extends AbstractRepositoryPackager { private final List dependencies = new ArrayList<>(); private final List livecheck = new ArrayList<>(); - private final HomebrewTap tap = new HomebrewTap(); + private final HomebrewTap repository = new HomebrewTap(); private final Cask cask = new Cask(); private String formulaName; private String cachedFormulaName; private Boolean multiPlatform; - public Brew() { + private final org.jreleaser.model.api.packagers.BrewPackager immutable = new org.jreleaser.model.api.packagers.BrewPackager() { + @Override + public String getFormulaName() { + return formulaName; + } + + @Override + public boolean isMultiPlatform() { + return BrewPackager.this.isMultiPlatform(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getTap() { + return repository.asImmutable(); + } + + @Override + public Cask getCask() { + return cask.asImmutable(); + } + + @Override + public List getLivecheck() { + return unmodifiableList(livecheck); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getTap(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return BrewPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return BrewPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return BrewPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return BrewPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return BrewPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return BrewPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return BrewPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(BrewPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return BrewPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public BrewPackager() { super(TYPE); } - @Override - public void freeze() { - super.freeze(); - tap.freeze(); - cask.freeze(); + public org.jreleaser.model.api.packagers.BrewPackager asImmutable() { + return immutable; } @Override - public void merge(Brew brew) { - freezeCheck(); - super.merge(brew); - this.formulaName = merge(this.formulaName, brew.formulaName); - this.multiPlatform = merge(this.multiPlatform, brew.multiPlatform); - setTap(brew.tap); - setDependenciesAsList(merge(this.dependencies, brew.dependencies)); - setLivecheck(merge(this.livecheck, brew.livecheck)); - setCask(brew.cask); + public void merge(BrewPackager source) { + super.merge(source); + this.formulaName = merge(this.formulaName, source.formulaName); + this.multiPlatform = merge(this.multiPlatform, source.multiPlatform); + setTap(source.repository); + setDependenciesAsList(merge(this.dependencies, source.dependencies)); + setLivecheck(merge(this.livecheck, source.livecheck)); + setCask(source.cask); } public String getResolvedFormulaName(JReleaserContext context) { @@ -124,7 +241,6 @@ public String getFormulaName() { } public void setFormulaName(String formulaName) { - freezeCheck(); this.formulaName = formulaName; } @@ -133,7 +249,6 @@ public boolean isMultiPlatform() { } public void setMultiPlatform(Boolean multiPlatform) { - freezeCheck(); this.multiPlatform = multiPlatform; } @@ -142,12 +257,11 @@ public boolean isMultiPlatformSet() { } public HomebrewTap getTap() { - return tap; + return repository; } - public void setTap(HomebrewTap tap) { - freezeCheck(); - this.tap.merge(tap); + public void setTap(HomebrewTap repository) { + this.repository.merge(repository); } public Cask getCask() { @@ -155,12 +269,10 @@ public Cask getCask() { } public void setCask(Cask cask) { - freezeCheck(); this.cask.merge(cask); } public void setDependencies(Map dependencies) { - freezeCheck(); if (null == dependencies || dependencies.isEmpty()) { return; } @@ -169,11 +281,10 @@ public void setDependencies(Map dependencies) { } public List getDependenciesAsList() { - return freezeWrap(dependencies); + return dependencies; } public void setDependenciesAsList(List dependencies) { - freezeCheck(); if (null == dependencies || dependencies.isEmpty()) { return; } @@ -182,7 +293,6 @@ public void setDependenciesAsList(List dependencies) { } public void addDependencies(Map dependencies) { - freezeCheck(); if (null == dependencies || dependencies.isEmpty()) { return; } @@ -190,21 +300,18 @@ public void addDependencies(Map dependencies) { } public void addDependency(String key, String value) { - freezeCheck(); dependencies.add(new Dependency(key, value)); } public void addDependency(String key) { - freezeCheck(); dependencies.add(new Dependency(key)); } public List getLivecheck() { - return freezeWrap(livecheck); + return livecheck; } public void setLivecheck(List livecheck) { - freezeCheck(); this.livecheck.clear(); this.livecheck.addAll(livecheck); } @@ -218,7 +325,7 @@ protected void asMap(boolean full, Map props) { super.asMap(full, props); props.put("formulaName", formulaName); props.put("multiPlatform", isMultiPlatform()); - props.put("tap", tap.asMap(full)); + props.put("tap", repository.asMap(full)); props.put("dependencies", dependencies); props.put("livecheck", livecheck); props.put("cask", cask.asMap(full)); @@ -226,7 +333,11 @@ protected void asMap(boolean full, Map props) { @Override public RepositoryTap getRepositoryTap() { - return tap; + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; } @Override @@ -239,16 +350,15 @@ public boolean supportsPlatform(String platform) { } @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); } @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); } - @Override public List resolveCandidateArtifacts(JReleaserContext context, Distribution distribution) { List candidateArtifacts = super.resolveCandidateArtifacts(context, distribution); @@ -266,7 +376,7 @@ protected boolean isNotSkipped(Artifact artifact) { return isFalse(artifact.getExtraProperties().get(SKIP_BREW)); } - public static class Dependency { + public static final class Dependency { private final String key; private final String value; @@ -319,22 +429,82 @@ public int hashCode() { } } - public static class HomebrewTap extends AbstractRepositoryTap { + public static final class HomebrewTap extends PackagerRepository { public HomebrewTap() { super("homebrew", "homebrew-tap"); } } - public static class Cask extends AbstractModelObject implements Domain { + public static final class Cask extends AbstractModelObject implements Domain { private final List uninstall = new ArrayList<>(); private final List zap = new ArrayList<>(); - protected Boolean enabled; + private Boolean enabled; private String name; private String displayName; private String pkgName; private String appName; private String appcast; + private final org.jreleaser.model.api.packagers.BrewPackager.Cask immutable = new org.jreleaser.model.api.packagers.BrewPackager.Cask() { + private List uninstall; + private List zap; + + @Override + public boolean isEnabled() { + return Cask.this.isEnabled(); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getDisplayName() { + return displayName; + } + + @Override + public String getPkgName() { + return pkgName; + } + + @Override + public String getAppName() { + return appName; + } + + @Override + public String getAppcast() { + return appcast; + } + + @Override + public List getUninstallItems() { + if (null == uninstall) { + uninstall = Cask.this.uninstall.stream() + .map(CaskItem::asImmutable) + .collect(toList()); + } + return uninstall; + } + + @Override + public List getZapItems() { + if (null == zap) { + zap = Cask.this.zap.stream() + .map(CaskItem::asImmutable) + .collect(toList()); + } + return zap; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Cask.this.asMap(full)); + } + }; + @JsonIgnore private String cachedCaskName; @JsonIgnore @@ -344,24 +514,20 @@ public static class Cask extends AbstractModelObject implements Domain { @JsonIgnore private String cachedPkgName; - @Override - public void freeze() { - super.freeze(); - uninstall.forEach(CaskItem::freeze); - zap.forEach(CaskItem::freeze); + public org.jreleaser.model.api.packagers.BrewPackager.Cask asImmutable() { + return immutable; } @Override - public void merge(Cask cask) { - freezeCheck(); - this.enabled = this.merge(this.enabled, cask.enabled); - this.name = this.merge(this.name, cask.name); - this.displayName = this.merge(this.displayName, cask.displayName); - this.pkgName = this.merge(this.pkgName, cask.pkgName); - this.appName = this.merge(this.appName, cask.appName); - this.appcast = this.merge(this.appcast, cask.appcast); - setUninstallItems(merge(this.uninstall, cask.uninstall)); - setZapItems(merge(this.zap, cask.zap)); + public void merge(Cask spurce) { + this.enabled = this.merge(this.enabled, spurce.enabled); + this.name = this.merge(this.name, spurce.name); + this.displayName = this.merge(this.displayName, spurce.displayName); + this.pkgName = this.merge(this.pkgName, spurce.pkgName); + this.appName = this.merge(this.appName, spurce.appName); + this.appcast = this.merge(this.appcast, spurce.appcast); + setUninstallItems(merge(this.uninstall, spurce.uninstall)); + setZapItems(merge(this.zap, spurce.zap)); } public void enable() { @@ -372,12 +538,12 @@ public void disable() { this.enabled = false; } + public boolean isEnabled() { return enabled != null && enabled; } public void setEnabled(Boolean enabled) { - freezeCheck(); this.enabled = enabled; } @@ -467,7 +633,6 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -476,7 +641,6 @@ public String getDisplayName() { } public void setDisplayName(String displayName) { - freezeCheck(); this.displayName = displayName; } @@ -485,7 +649,6 @@ public String getPkgName() { } public void setPkgName(String pkgName) { - freezeCheck(); this.pkgName = pkgName; } @@ -494,7 +657,6 @@ public String getAppName() { } public void setAppName(String appName) { - freezeCheck(); this.appName = appName; } @@ -503,28 +665,24 @@ public String getAppcast() { } public void setAppcast(String appcast) { - freezeCheck(); this.appcast = appcast; } public List getUninstallItems() { - return freezeWrap(uninstall); + return uninstall; } void setUninstallItems(List uninstall) { - freezeCheck(); this.uninstall.clear(); this.uninstall.addAll(uninstall); } public void setUninstall(Map> uninstall) { - freezeCheck(); this.uninstall.clear(); uninstall.forEach((name, items) -> this.uninstall.add(new CaskItem(name, items))); } public void addUninstall(CaskItem item) { - freezeCheck(); if (null != item) { this.uninstall.add(item); } @@ -535,23 +693,20 @@ public boolean getHasUninstall() { } public List getZapItems() { - return freezeWrap(zap); + return zap; } void setZapItems(List zap) { - freezeCheck(); this.zap.clear(); this.zap.addAll(zap); } public void setZap(Map> zap) { - freezeCheck(); this.zap.clear(); zap.forEach((name, items) -> this.zap.add(new CaskItem(name, items))); } public void addZap(CaskItem item) { - freezeCheck(); if (null != item) { this.zap.add(item); } @@ -584,30 +739,49 @@ public Map asMap(boolean full) { } } - public static class CaskItem extends AbstractModelObject implements Domain { + public static final class CaskItem extends AbstractModelObject implements Domain { private final List items = new ArrayList<>(); private String name; + private final org.jreleaser.model.api.packagers.BrewPackager.CaskItem immutable = new org.jreleaser.model.api.packagers.BrewPackager.CaskItem() { + @Override + public String getName() { + return name; + } + + @Override + public List getItems() { + return unmodifiableList(items); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(CaskItem.this.asMap(full)); + } + }; + public CaskItem(String name, List items) { this.name = name; this.items.addAll(items); } + public org.jreleaser.model.api.packagers.BrewPackager.CaskItem asImmutable() { + return immutable; + } + public String getName() { return name; } public void setName(String name) { - freezeCheck(); this.name = name; } public List getItems() { - return freezeWrap(items); + return items; } public void setItems(List items) { - freezeCheck(); this.items.clear(); this.items.addAll(items); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/ChocolateyPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/ChocolateyPackager.java new file mode 100644 index 000000000..59fbf5e96 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/ChocolateyPackager.java @@ -0,0 +1,363 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.util.Env; +import org.jreleaser.util.PlatformUtils; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.Distribution.DistributionType.BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; +import static org.jreleaser.model.api.packagers.ChocolateyPackager.CHOCOLATEY_API_KEY; +import static org.jreleaser.model.api.packagers.ChocolateyPackager.SKIP_CHOCOLATEY; +import static org.jreleaser.model.api.packagers.ChocolateyPackager.TYPE; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.EXE; +import static org.jreleaser.util.FileType.MSI; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isFalse; +import static org.jreleaser.util.StringUtils.isNotBlank; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public final class ChocolateyPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf(ZIP.extension()); + SUPPORTED.put(BINARY, extensions); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + SUPPORTED.put(NATIVE_PACKAGE, setOf(EXE.extension(), MSI.extension())); + } + + private final ChocolateyRepository repository = new ChocolateyRepository(); + private String packageName; + private String packageVersion; + private String username; + private String apiKey; + private String title; + private String iconUrl; + private String source; + private Boolean remoteBuild; + + private final org.jreleaser.model.api.packagers.ChocolateyPackager immutable = new org.jreleaser.model.api.packagers.ChocolateyPackager() { + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getPackageVersion() { + return packageVersion; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getApiKey() { + return apiKey; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public String getIconUrl() { + return iconUrl; + } + + @Override + public String getSource() { + return source; + } + + @Override + public boolean isRemoteBuild() { + return ChocolateyPackager.this.isRemoteBuild(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getBucket() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getBucket(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return ChocolateyPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return ChocolateyPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return ChocolateyPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return ChocolateyPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return ChocolateyPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return ChocolateyPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return ChocolateyPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(ChocolateyPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return ChocolateyPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public ChocolateyPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.ChocolateyPackager asImmutable() { + return immutable; + } + + @Override + public void merge(ChocolateyPackager source) { + super.merge(source); + this.packageName = merge(this.packageName, source.packageName); + this.packageVersion = merge(this.packageVersion, source.packageVersion); + this.username = merge(this.username, source.username); + this.apiKey = merge(this.apiKey, source.apiKey); + this.title = merge(this.title, source.title); + this.iconUrl = merge(this.iconUrl, source.iconUrl); + this.source = merge(this.source, source.source); + this.remoteBuild = merge(this.remoteBuild, source.remoteBuild); + setBucket(source.repository); + } + + public String getResolvedApiKey() { + return Env.env(CHOCOLATEY_API_KEY, apiKey); + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getPackageVersion() { + return packageVersion; + } + + public void setPackageVersion(String packageVersion) { + this.packageVersion = packageVersion; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getApiKey() { + return apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getIconUrl() { + return iconUrl; + } + + public void setIconUrl(String iconUrl) { + this.iconUrl = iconUrl; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public boolean isRemoteBuild() { + return remoteBuild != null && remoteBuild; + } + + public void setRemoteBuild(Boolean remoteBuild) { + this.remoteBuild = remoteBuild; + } + + public boolean isRemoteBuildSet() { + return remoteBuild != null; + } + + public ChocolateyRepository getBucket() { + return repository; + } + + public void setBucket(ChocolateyRepository repository) { + this.repository.merge(repository); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("packageName", packageName); + props.put("packageVersion", packageVersion); + props.put("username", username); + props.put("apiKey", isNotBlank(getResolvedApiKey()) ? HIDE : UNSET); + props.put("remoteBuild", isRemoteBuild()); + props.put("title", title); + props.put("iconUrl", iconUrl); + props.put("source", source); + props.put("bucket", repository.asMap(full)); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; + } + + @Override + public boolean supportsPlatform(String platform) { + return isBlank(platform) || + PlatformUtils.isWindows(platform) && PlatformUtils.isIntel(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_CHOCOLATEY)); + } + + public static final class ChocolateyRepository extends PackagerRepository { + public ChocolateyRepository() { + super("chocolatey", "chocolatey-bucket"); + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerConfiguration.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerConfiguration.java new file mode 100644 index 000000000..479deb70c --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerConfiguration.java @@ -0,0 +1,244 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.util.Env; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +import static java.util.Collections.unmodifiableMap; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.util.StringUtils.isNotBlank; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public interface DockerConfiguration extends Domain, ExtraProperties, Activatable { + String TYPE = "docker"; + String LABEL_OCI_IMAGE_TITLE = "org.opencontainers.image.title"; + String LABEL_OCI_IMAGE_DESCRIPTION = "org.opencontainers.image.description"; + String LABEL_OCI_IMAGE_REVISION = "org.opencontainers.image.revision"; + String LABEL_OCI_IMAGE_VERSION = "org.opencontainers.image.version"; + String LABEL_OCI_IMAGE_LICENSES = "org.opencontainers.image.licenses"; + String LABEL_OCI_IMAGE_URL = "org.opencontainers.image.url"; + + String getTemplateDirectory(); + + void setTemplateDirectory(String templateDirectory); + + List getSkipTemplates(); + + void setSkipTemplates(List skipTemplates); + + void addSkipTemplates(List skipTemplates); + + void addSkipTemplate(String skipTemplate); + + String getBaseImage(); + + void setBaseImage(String baseImage); + + Map getLabels(); + + void setLabels(Map labels); + + void addLabels(Map labels); + + void addLabel(String key, String value); + + Set getImageNames(); + + void setImageNames(Set imageNames); + + void addImageName(String imageName); + + List getBuildArgs(); + + void setBuildArgs(List buildArgs); + + void addBuildArg(String buildArg); + + List getPreCommands(); + + void setPreCommands(List preCommands); + + List getPostCommands(); + + void setPostCommands(List postCommands); + + Set getRegistries(); + + void setRegistries(Set registries); + + void addRegistry(Registry registry); + + boolean isUseLocalArtifact(); + + void setUseLocalArtifact(Boolean useLocalArtifact); + + boolean isUseLocalArtifactSet(); + + final class Registry extends AbstractModelObject implements Domain, Comparable { + public static final String DEFAULT_NAME = "DEFAULT"; + + private String server; + private String serverName = DEFAULT_NAME; + private String repositoryName; + private String username; + private String password; + + private final org.jreleaser.model.api.packagers.DockerConfiguration.Registry immutable = new org.jreleaser.model.api.packagers.DockerConfiguration.Registry() { + @Override + public String getServer() { + return server; + } + + @Override + public String getServerName() { + return serverName; + } + + @Override + public String getRepositoryName() { + return repositoryName; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public int compareTo(org.jreleaser.model.api.packagers.DockerConfiguration.Registry o) { + if (null == o) return -1; + return serverName.compareTo(o.getServerName()); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(DockerConfiguration.Registry.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.packagers.DockerConfiguration.Registry asImmutable() { + return immutable; + } + + @Override + public void merge(DockerConfiguration.Registry registry) { + this.server = merge(this.server, registry.server); + this.serverName = merge(this.serverName, registry.serverName); + this.repositoryName = merge(this.repositoryName, registry.repositoryName); + this.username = merge(this.username, registry.username); + this.password = merge(this.password, registry.password); + } + + public String getResolvedPassword() { + return Env.env("DOCKER_" + Env.toVar(serverName) + "_PASSWORD", password); + } + + public String getResolvedUsername() { + return Env.env("DOCKER_" + Env.toVar(serverName) + "_USERNAME", username); + } + + public String getServer() { + return server; + } + + public void setServer(String server) { + this.server = server; + } + + public String getServerName() { + return serverName; + } + + public void setServerName(String serverName) { + this.serverName = serverName; + } + + public String getRepositoryName() { + return repositoryName; + } + + public void setRepositoryName(String repositoryName) { + this.repositoryName = repositoryName; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public Map asMap(boolean full) { + Map map = new LinkedHashMap<>(); + map.put("server", server); + map.put("serverName", serverName); + map.put("repositoryName", repositoryName); + map.put("username", getResolvedUsername()); + map.put("password", isNotBlank(password) ? HIDE : UNSET); + return map; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DockerConfiguration.Registry that = (DockerConfiguration.Registry) o; + return serverName.equals(that.serverName); + } + + @Override + public int hashCode() { + return Objects.hash(serverName); + } + + @Override + public int compareTo(Registry o) { + if (null == o) return -1; + return serverName.compareTo(o.getServerName()); + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerPackager.java new file mode 100644 index 000000000..ba6a9b092 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerPackager.java @@ -0,0 +1,510 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.CommitAuthor; +import org.jreleaser.model.internal.common.CommitAuthorAware; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.util.FileType; +import org.jreleaser.util.PlatformUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.EnumSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static java.util.Comparator.naturalOrder; +import static java.util.function.Function.identity; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toMap; +import static java.util.stream.Collectors.toSet; +import static org.jreleaser.model.Distribution.DistributionType.BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; +import static org.jreleaser.model.api.packagers.DockerPackager.SKIP_DOCKER; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.JAR; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isFalse; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public final class DockerPackager extends AbstractDockerConfiguration implements RepositoryPackager, CommitAuthorAware { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf(ZIP.extension()); + SUPPORTED.put(BINARY, extensions); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + SUPPORTED.put(SINGLE_JAR, setOf(JAR.extension())); + } + + private final Map specs = new LinkedHashMap<>(); + private final CommitAuthor commitAuthor = new CommitAuthor(); + private final DockerRepository repository = new DockerRepository(); + + private Boolean continueOnError; + private String downloadUrl; + + private final org.jreleaser.model.api.packagers.DockerPackager immutable = new org.jreleaser.model.api.packagers.DockerPackager() { + private Set registries; + private Map specs; + + @Override + public Map getSpecs() { + if (null == specs) { + specs = DockerPackager.this.specs.values().stream() + .map(DockerSpec::asImmutable) + .collect(toMap(org.jreleaser.model.api.packagers.DockerSpec::getName, identity())); + } + return specs; + } + + @Override + public DockerRepository getRepository() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getBaseImage() { + return baseImage; + } + + @Override + public Map getLabels() { + return unmodifiableMap(labels); + } + + @Override + public Set getImageNames() { + return unmodifiableSet(imageNames); + } + + @Override + public List getBuildArgs() { + return unmodifiableList(buildArgs); + } + + @Override + public List getPreCommands() { + return unmodifiableList(preCommands); + } + + @Override + public List getPostCommands() { + return unmodifiableList(postCommands); + } + + @Override + public Set getRegistries() { + if (null == registries) { + registries = DockerPackager.this.registries.stream() + .map(DockerConfiguration.Registry::asImmutable) + .collect(toSet()); + } + return registries; + } + + @Override + public boolean isUseLocalArtifact() { + return DockerPackager.this.isUseLocalArtifact(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getRepository(); + } + + @Override + public String getType() { + return TYPE; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return DockerPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return DockerPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return DockerPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return DockerPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return DockerPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return DockerPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return DockerPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(DockerPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return DockerPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + @JsonIgnore + private boolean failed; + + public org.jreleaser.model.api.packagers.DockerPackager asImmutable() { + return immutable; + } + + @Override + public void merge(DockerPackager docker) { + super.merge(docker); + this.continueOnError = merge(this.continueOnError, docker.continueOnError); + this.downloadUrl = merge(this.downloadUrl, docker.downloadUrl); + this.failed = docker.failed; + setSpecs(mergeModel(this.specs, docker.specs)); + setCommitAuthor(docker.commitAuthor); + setRepository(docker.repository); + } + + @Override + public void fail() { + this.failed = true; + } + + @Override + public boolean isFailed() { + return failed; + } + + @Override + public boolean isContinueOnError() { + return continueOnError != null && continueOnError; + } + + @Override + public void setContinueOnError(Boolean continueOnError) { + this.continueOnError = continueOnError; + } + + @Override + public boolean isContinueOnErrorSet() { + return continueOnError != null; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public void setDownloadUrl(String downloadUrl) { + this.downloadUrl = downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return isBlank(platform) || PlatformUtils.isUnix(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + public Set getSupportedStereotypes() { + return EnumSet.allOf(Stereotype.class); + } + + @Override + public List resolveCandidateArtifacts(JReleaserContext context, Distribution distribution) { + List fileExtensions = new ArrayList<>(getSupportedFileExtensions(distribution.getType())); + fileExtensions.sort(naturalOrder()); + + return distribution.getArtifacts().stream() + .filter(Artifact::isActive) + .filter(artifact -> fileExtensions.stream().anyMatch(ext -> artifact.getResolvedPath(context, distribution).toString().endsWith(ext))) + .filter(artifact -> supportsPlatform(artifact.getPlatform())) + .filter(this::isNotSkipped) + .sorted(Artifact.comparatorByPlatform().thenComparingInt(artifact -> { + String ext = FileType.getExtension(artifact.getResolvedPath(context, distribution)); + return fileExtensions.indexOf(ext); + })) + .collect(toList()); + } + + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_DOCKER)); + } + + @Override + public boolean isSnapshotSupported() { + return true; + } + + @Override + public String getType() { + return TYPE; + } + + @Override + public CommitAuthor getCommitAuthor() { + return commitAuthor; + } + + @Override + public void setCommitAuthor(CommitAuthor commitAuthor) { + this.commitAuthor.merge(commitAuthor); + } + + public List getActiveSpecs() { + return specs.values().stream() + .filter(DockerSpec::isEnabled) + .collect(Collectors.toList()); + } + + public Map getSpecs() { + return specs; + } + + public void setSpecs(Map specs) { + this.specs.clear(); + this.specs.putAll(specs); + } + + public void addSpecs(Map specs) { + this.specs.putAll(specs); + } + + public void addSpec(DockerSpec spec) { + this.specs.put(spec.getName(), spec); + } + + @Override + public Map asMap(boolean full) { + if (!full && !isEnabled()) return Collections.emptyMap(); + + Map map = new LinkedHashMap<>(); + map.put(getType(), super.asMap(full)); + return map; + } + + @Override + protected void asMap(boolean full, Map props) { + props.put("commitAuthor", commitAuthor.asMap(full)); + props.put("repository", repository.asMap(full)); + props.put("downloadUrl", downloadUrl); + props.put("continueOnError", isContinueOnError()); + List> specs = this.specs.values() + .stream() + .filter(d -> full || d.isEnabled()) + .map(d -> d.asMap(full)) + .collect(Collectors.toList()); + if (!specs.isEmpty()) props.put("specs", specs); + } + + public void setRepository(DockerRepository repository) { + this.repository.merge(repository); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public DockerRepository getPackagerRepository() { + return repository; + } + + public static final class DockerRepository extends AbstractRepositoryTap implements Domain { + private Boolean versionedSubfolders; + + private final org.jreleaser.model.api.packagers.DockerPackager.DockerRepository immutable = new org.jreleaser.model.api.packagers.DockerPackager.DockerRepository() { + @Override + public boolean isVersionedSubfolders() { + return DockerRepository.this.isVersionedSubfolders(); + } + + @Override + public String getBasename() { + return basename; + } + + @Override + public String getCanonicalRepoName() { + return DockerRepository.this.getCanonicalRepoName(); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getTagName() { + return tagName; + } + + @Override + public String getBranch() { + return branch; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getToken() { + return token; + } + + @Override + public String getCommitMessage() { + return commitMessage; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return DockerRepository.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(DockerRepository.this.asMap(full)); + } + + @Override + public String getOwner() { + return owner; + } + }; + + public DockerRepository() { + super("docker", "docker"); + } + + public org.jreleaser.model.api.packagers.DockerPackager.DockerRepository asImmutable() { + return immutable; + } + + @Override + public void merge(DockerRepository tap) { + super.merge(tap); + this.versionedSubfolders = this.merge(this.versionedSubfolders, tap.versionedSubfolders); + } + + public boolean isVersionedSubfolders() { + return versionedSubfolders != null && versionedSubfolders; + } + + public void setVersionedSubfolders(Boolean versionedSubfolders) { + this.versionedSubfolders = versionedSubfolders; + } + + public boolean isVersionedSubfoldersSet() { + return versionedSubfolders != null; + } + + @Override + public Map asMap(boolean full) { + Map map = super.asMap(full); + map.put("versionedSubfolders", isVersionedSubfolders()); + return map; + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerSpec.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerSpec.java new file mode 100644 index 000000000..b2389def2 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/DockerSpec.java @@ -0,0 +1,215 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.util.PlatformUtils; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static java.util.stream.Collectors.toSet; + +/** + * @author Andres Almiray + * @since 0.4.0 + */ +public final class DockerSpec extends AbstractDockerConfiguration implements Domain { + private final Map matchers = new LinkedHashMap<>(); + private Artifact artifact; + private String name; + + private final org.jreleaser.model.api.packagers.DockerSpec immutable = new org.jreleaser.model.api.packagers.DockerSpec() { + private Set registries; + + @Override + public org.jreleaser.model.api.common.Artifact getArtifact() { + return artifact.asImmutable(); + } + + @Override + public String getName() { + return name; + } + + @Override + public Map getMatchers() { + return unmodifiableMap(matchers); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getBaseImage() { + return baseImage; + } + + @Override + public Map getLabels() { + return unmodifiableMap(labels); + } + + @Override + public Set getImageNames() { + return unmodifiableSet(imageNames); + } + + @Override + public List getBuildArgs() { + return unmodifiableList(buildArgs); + } + + @Override + public List getPreCommands() { + return unmodifiableList(preCommands); + } + + @Override + public List getPostCommands() { + return unmodifiableList(postCommands); + } + + @Override + public Set getRegistries() { + if (null == registries) { + registries = DockerSpec.this.registries.stream() + .map(DockerConfiguration.Registry::asImmutable) + .collect(toSet()); + } + return registries; + } + + @Override + public boolean isUseLocalArtifact() { + return DockerSpec.this.isUseLocalArtifact(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return DockerSpec.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(DockerSpec.this.asMap(full)); + } + + @Override + public String getPrefix() { + return DockerSpec.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public org.jreleaser.model.api.packagers.DockerSpec asImmutable() { + return immutable; + } + + @Override + public void merge(DockerSpec source) { + super.merge(source); + this.name = merge(this.name, source.name); + this.artifact = source.artifact; + setMatchers(merge(this.matchers, source.matchers)); + } + + public Artifact getArtifact() { + return artifact; + } + + public void setArtifact(Artifact artifact) { + this.artifact = artifact; + this.artifact.activate(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Map getMatchers() { + return matchers; + } + + public void setMatchers(Map matchers) { + this.matchers.putAll(matchers); + } + + @Override + public Map asMap(boolean full) { + Map props = super.asMap(full); + + if (!props.isEmpty()) { + Map map = new LinkedHashMap<>(); + map.put(name, props); + return map; + } + + return props; + } + + @Override + protected void asMap(boolean full, Map props) { + props.put("matchers", matchers); + if (artifact != null) { + props.put("artifact", artifact.asMap(full)); + } + } + + public boolean matches(Artifact artifact) { + boolean matched = true; + + for (Map.Entry e : matchers.entrySet()) { + String key = e.getKey(); + if ("platform".equals(key)) { + matched &= PlatformUtils.isCompatible(String.valueOf(e.getValue()), artifact.getPlatform()); + } else if (artifact.getExtraProperties().containsKey(key)) { + matched &= e.getValue().equals(artifact.getExtraProperties().get(key)); + } + } + + return matched; + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Flatpak.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/FlatpakPackager.java similarity index 54% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Flatpak.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/FlatpakPackager.java index 875e93ade..e204b0371 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Flatpak.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/FlatpakPackager.java @@ -15,23 +15,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; - +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Flatpak; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.common.Screenshot; import org.jreleaser.util.PlatformUtils; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.Set; +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static java.util.stream.Collectors.toList; import static org.jreleaser.model.Distribution.DistributionType.BINARY; import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; import static org.jreleaser.model.Distribution.DistributionType.JLINK; import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.api.packagers.FlatpakPackager.SKIP_FLATPAK; +import static org.jreleaser.model.api.packagers.FlatpakPackager.TYPE; import static org.jreleaser.util.CollectionUtils.setOf; import static org.jreleaser.util.FileType.TAR; import static org.jreleaser.util.FileType.TAR_GZ; @@ -46,11 +58,8 @@ * @author Andres Almiray * @since 1.2.0 */ -public class Flatpak extends AbstractRepositoryPackager { - public static final String TYPE = "flatpak"; - public static final String SKIP_FLATPAK = "skipFlatpak"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); +public final class FlatpakPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); static { Set extensions = setOf( @@ -76,23 +85,174 @@ public class Flatpak extends AbstractRepositoryPackager { private final Set skipReleases = new LinkedHashSet<>(); private String componentId; private String developerName; - private Runtime runtime; + private Flatpak.Runtime runtime; private String runtimeVersion; - public Flatpak() { + private final org.jreleaser.model.api.packagers.FlatpakPackager immutable = new org.jreleaser.model.api.packagers.FlatpakPackager() { + private List screenshots; + private List icons; + + @Override + public String getComponentId() { + return componentId; + } + + @Override + public List getCategories() { + return unmodifiableList(categories); + } + + @Override + public String getDeveloperName() { + return developerName; + } + + @Override + public Flatpak.Runtime getRuntime() { + return runtime; + } + + @Override + public String getRuntimeVersion() { + return runtimeVersion; + } + + @Override + public Set getSdkExtensions() { + return unmodifiableSet(sdkExtensions); + } + + @Override + public Set getFinishArgs() { + return unmodifiableSet(finishArgs); + } + + @Override + public List getScreenshots() { + if (null == screenshots) { + screenshots = FlatpakPackager.this.screenshots.stream() + .map(Screenshot::asImmutable) + .collect(toList()); + } + return screenshots; + } + + @Override + public List getIcons() { + if (null == icons) { + icons = FlatpakPackager.this.icons.stream() + .map(Icon::asImmutable) + .collect(toList()); + } + return icons; + } + + @Override + public Set getSkipReleases() { + return unmodifiableSet(skipReleases); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getRepository() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getRepository(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return FlatpakPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return FlatpakPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return FlatpakPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return FlatpakPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return FlatpakPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return FlatpakPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return FlatpakPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(FlatpakPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return FlatpakPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public FlatpakPackager() { super(TYPE); } - @Override - public void freeze() { - super.freeze(); - screenshots.forEach(ModelObject::freeze); - icons.forEach(ModelObject::freeze); + public org.jreleaser.model.api.packagers.FlatpakPackager asImmutable() { + return immutable; } @Override - public void merge(Flatpak source) { - freezeCheck(); + public void merge(FlatpakPackager source) { super.merge(source); this.componentId = merge(this.componentId, source.componentId); this.developerName = merge(this.developerName, source.developerName); @@ -117,16 +277,14 @@ public String getComponentId() { } public void setComponentId(String componentId) { - freezeCheck(); this.componentId = componentId; } public List getCategories() { - return freezeWrap(categories); + return categories; } public void setCategories(List tags) { - freezeCheck(); this.categories.clear(); this.categories.addAll(tags); } @@ -136,21 +294,19 @@ public String getDeveloperName() { } public void setDeveloperName(String developerName) { - freezeCheck(); this.developerName = developerName; } - public Runtime getRuntime() { + public Flatpak.Runtime getRuntime() { return runtime; } - public void setRuntime(Runtime runtime) { - freezeCheck(); + public void setRuntime(Flatpak.Runtime runtime) { this.runtime = runtime; } public void setRuntime(String runtime) { - setRuntime(Runtime.of(runtime)); + setRuntime(Flatpak.Runtime.of(runtime)); } public String getRuntimeVersion() { @@ -158,70 +314,62 @@ public String getRuntimeVersion() { } public void setRuntimeVersion(String runtimeVersion) { - freezeCheck(); this.runtimeVersion = runtimeVersion; } public Set getSdkExtensions() { - return freezeWrap(sdkExtensions); + return sdkExtensions; } public void setSdkExtensions(Set sdkExtensions) { - freezeCheck(); this.sdkExtensions.clear(); this.sdkExtensions.addAll(sdkExtensions); } public Set getFinishArgs() { - return freezeWrap(finishArgs); + return finishArgs; } public void setFinishArgs(Set finishArgs) { - freezeCheck(); this.finishArgs.clear(); this.finishArgs.addAll(finishArgs); } public List getScreenshots() { - return freezeWrap(screenshots); + return screenshots; } public void setScreenshots(List screenshots) { - freezeCheck(); this.screenshots.clear(); this.screenshots.addAll(screenshots); } public void addScreenshot(Screenshot screenshot) { - freezeCheck(); if (null != screenshot) { this.screenshots.add(screenshot); } } public List getIcons() { - return freezeWrap(icons); + return icons; } public void setIcons(List icons) { - freezeCheck(); this.icons.clear(); this.icons.addAll(icons); } public void addIcon(Icon icon) { - freezeCheck(); if (null != icon) { this.icons.add(icon); } } public Set getSkipReleases() { - return freezeWrap(skipReleases); + return skipReleases; } public void setSkipReleases(Set tags) { - freezeCheck(); this.skipReleases.clear(); this.skipReleases.addAll(tags); } @@ -262,6 +410,10 @@ protected void asMap(boolean full, Map map) { @Override public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { return repository; } @@ -272,13 +424,13 @@ public boolean supportsPlatform(String platform) { } @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); } @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); } @Override @@ -286,40 +438,7 @@ protected boolean isNotSkipped(Artifact artifact) { return isFalse(artifact.getExtraProperties().get(SKIP_FLATPAK)); } - public enum Runtime { - FREEDESKTOP("org.freedesktop.Platform", "org.freedesktop.Sdk"), - GNOME("org.gnome.Platform", "org.gnome.Sdk"), - KDE("org.kde.Platform", "org.kde.Sdk"), - ELEMENTARY("io.elementary.Platform", "io.elementary.Sdk"); - - private final String runtime; - private final String sdk; - - Runtime(String runtime, String sdk) { - this.runtime = runtime; - this.sdk = sdk; - } - - public String runtime() { - return runtime; - } - - public String sdk() { - return sdk; - } - - @Override - public String toString() { - return name().toLowerCase(Locale.ENGLISH); - } - - public static Runtime of(String str) { - if (isBlank(str)) return null; - return Runtime.valueOf(str.toUpperCase(Locale.ENGLISH).trim()); - } - } - - public static class FlatpakRepository extends AbstractRepositoryTap { + public static final class FlatpakRepository extends PackagerRepository { public FlatpakRepository() { super("flatpak", "flatpak"); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/GofishPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/GofishPackager.java new file mode 100644 index 000000000..4a4551776 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/GofishPackager.java @@ -0,0 +1,232 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.util.PlatformUtils; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Distribution.DistributionType.BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.api.packagers.GofishPackager.SKIP_GOFISH; +import static org.jreleaser.model.api.packagers.GofishPackager.TYPE; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.TAR; +import static org.jreleaser.util.FileType.TAR_GZ; +import static org.jreleaser.util.FileType.TAR_XZ; +import static org.jreleaser.util.FileType.TGZ; +import static org.jreleaser.util.FileType.TXZ; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isFalse; + +/** + * @author Andres Almiray + * @since 0.10.0 + */ +public final class GofishPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf( + TAR_GZ.extension(), + TAR_XZ.extension(), + TGZ.extension(), + TXZ.extension(), + TAR.extension(), + ZIP.extension()); + + SUPPORTED.put(BINARY, extensions); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + } + + private final GofishRepository repository = new GofishRepository(); + + private final org.jreleaser.model.api.packagers.GofishPackager immutable = new org.jreleaser.model.api.packagers.GofishPackager() { + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getRepository() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getRepository(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return GofishPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return GofishPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return GofishPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return GofishPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return GofishPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return GofishPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return GofishPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(GofishPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return GofishPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public GofishPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.GofishPackager asImmutable() { + return immutable; + } + + @Override + public void merge(GofishPackager source) { + super.merge(source); + setRepository(source.repository); + } + + public GofishRepository getRepository() { + return repository; + } + + public void setRepository(GofishRepository repository) { + this.repository.merge(repository); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("repository", repository.asMap(full)); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; + } + + @Override + public boolean supportsPlatform(String platform) { + return isBlank(platform) || + PlatformUtils.isMac(platform) || + PlatformUtils.isWindows(platform) || + PlatformUtils.isLinux(platform) && !PlatformUtils.isAlpineLinux(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_GOFISH)); + } + + public static final class GofishRepository extends PackagerRepository { + public GofishRepository() { + super("gofish", "fish-food"); + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/JbangPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/JbangPackager.java new file mode 100644 index 000000000..38372f3d6 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/JbangPackager.java @@ -0,0 +1,234 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; +import static org.jreleaser.model.api.packagers.JbangPackager.TYPE; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public final class JbangPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + SUPPORTED.put(JAVA_BINARY, emptySet()); + SUPPORTED.put(JLINK, emptySet()); + SUPPORTED.put(SINGLE_JAR, emptySet()); + } + + private final JbangRepository repository = new JbangRepository(); + private String alias; + + private final org.jreleaser.model.api.packagers.JbangPackager immutable = new org.jreleaser.model.api.packagers.JbangPackager() { + @Override + public String getAlias() { + return alias; + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getCatalog() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getCatalog(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return JbangPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return JbangPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return JbangPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return JbangPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return JbangPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return JbangPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return JbangPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(JbangPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return JbangPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public JbangPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.JbangPackager asImmutable() { + return immutable; + } + + @Override + public void merge(JbangPackager source) { + super.merge(source); + this.alias = merge(this.alias, source.alias); + setCatalog(source.repository); + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public JbangRepository getCatalog() { + return repository; + } + + public void setCatalog(JbangRepository tap) { + this.repository.merge(tap); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("alias", alias); + props.put("catalog", repository.asMap(full)); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; + } + + @Override + public boolean supportsPlatform(String platform) { + return true; + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return true; + } + + @Override + public boolean isSnapshotSupported() { + return true; + } + + public static final class JbangRepository extends PackagerRepository { + public JbangRepository() { + super("jbang", "jbang-catalog"); + } + + @Override + public String getResolvedName() { + return tapName; + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/MacportsPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/MacportsPackager.java new file mode 100644 index 000000000..3f2fc8c42 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/MacportsPackager.java @@ -0,0 +1,305 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.util.PlatformUtils; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Distribution.DistributionType.BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; +import static org.jreleaser.model.api.packagers.MacportsPackager.SKIP_MACPORTS; +import static org.jreleaser.model.api.packagers.MacportsPackager.TYPE; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.DMG; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isFalse; +import static org.jreleaser.util.StringUtils.isNotBlank; + +/** + * @author Andres Almiray + * @since 0.9.0 + */ +public final class MacportsPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf(ZIP.extension()); + SUPPORTED.put(BINARY, extensions); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + SUPPORTED.put(NATIVE_PACKAGE, setOf(DMG.extension())); + } + + private final List categories = new ArrayList<>(); + private final List maintainers = new ArrayList<>(); + private final MacportsRepository repository = new MacportsRepository(); + + private String packageName; + private Integer revision; + + private final org.jreleaser.model.api.packagers.MacportsPackager immutable = new org.jreleaser.model.api.packagers.MacportsPackager() { + @Override + public String getPackageName() { + return packageName; + } + + @Override + public Integer getRevision() { + return revision; + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getRepository() { + return repository.asImmutable(); + } + + @Override + public List getCategories() { + return unmodifiableList(categories); + } + + @Override + public List getMaintainers() { + return unmodifiableList(maintainers); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getRepository(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return MacportsPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return MacportsPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return MacportsPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return MacportsPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return MacportsPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return MacportsPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return MacportsPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(MacportsPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return MacportsPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public MacportsPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.MacportsPackager asImmutable() { + return immutable; + } + + @Override + public void merge(MacportsPackager source) { + super.merge(source); + this.packageName = merge(this.packageName, source.packageName); + this.revision = merge(this.revision, source.revision); + setRepository(source.repository); + setCategories(merge(this.categories, source.categories)); + setMaintainers(merge(this.maintainers, source.maintainers)); + } + + public List getResolvedMaintainers(JReleaserContext context) { + if (maintainers.isEmpty()) { + GithubReleaser github = context.getModel().getRelease().getGithub(); + if (github != null) { + String maintainer = github.getResolvedUsername(); + if (isNotBlank(maintainer)) { + maintainers.add("@" + maintainer); + } + } + } + return maintainers; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public Integer getRevision() { + return revision; + } + + public void setRevision(Integer revision) { + this.revision = revision; + } + + public MacportsRepository getRepository() { + return repository; + } + + public void setRepository(MacportsRepository repository) { + this.repository.merge(repository); + } + + public List getCategories() { + return categories; + } + + public void setCategories(List categories) { + this.categories.clear(); + this.categories.addAll(categories); + } + + public List getMaintainers() { + return maintainers; + } + + public void setMaintainers(List maintainers) { + this.maintainers.clear(); + this.maintainers.addAll(maintainers); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("packageName", packageName); + props.put("revision", revision); + props.put("categories", categories); + props.put("maintainers", maintainers); + props.put("repository", repository.asMap(full)); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; + } + + @Override + public boolean supportsPlatform(String platform) { + return isBlank(platform) || + PlatformUtils.isMac(platform) && PlatformUtils.isIntel(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_MACPORTS)); + } + + public static final class MacportsRepository extends PackagerRepository { + public MacportsRepository() { + super("macports", "macports"); + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/Packager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/Packager.java new file mode 100644 index 000000000..ce0ea7873 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/Packager.java @@ -0,0 +1,63 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.distributions.Distribution; + +import java.util.List; +import java.util.Set; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface Packager extends Domain, ExtraProperties, Activatable { + String getType(); + + String getDownloadUrl(); + + void setDownloadUrl(String downloadUrl); + + boolean supportsPlatform(String platform); + + boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType); + + Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType); + + Set getSupportedStereotypes(); + + List resolveCandidateArtifacts(JReleaserContext context, Distribution distribution); + + boolean isSnapshotSupported(); + + boolean isContinueOnError(); + + void setContinueOnError(Boolean continueOnError); + + boolean isContinueOnErrorSet(); + + boolean isFailed(); + + void fail(); +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/PackagerRepository.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/PackagerRepository.java new file mode 100644 index 000000000..e56cabcfa --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/PackagerRepository.java @@ -0,0 +1,100 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; + +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public class PackagerRepository extends AbstractRepositoryTap { + private final org.jreleaser.model.api.packagers.PackagerRepository immutable = new org.jreleaser.model.api.packagers.PackagerRepository() { + @Override + public String getBasename() { + return basename; + } + + @Override + public String getCanonicalRepoName() { + return PackagerRepository.this.getCanonicalRepoName(); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getTagName() { + return tagName; + } + + @Override + public String getBranch() { + return branch; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public String getToken() { + return token; + } + + @Override + public String getCommitMessage() { + return commitMessage; + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return PackagerRepository.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(PackagerRepository.this.asMap(full)); + } + + @Override + public String getOwner() { + return owner; + } + }; + + public PackagerRepository(String basename, String tapName) { + super(basename, tapName); + } + + public org.jreleaser.model.api.packagers.PackagerRepository asImmutable() { + return immutable; + } +} \ No newline at end of file diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/Packagers.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/Packagers.java new file mode 100644 index 000000000..327b079c6 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/Packagers.java @@ -0,0 +1,278 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Domain; + +import java.util.LinkedHashMap; +import java.util.Map; + +import static java.util.Collections.unmodifiableMap; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public class Packagers> extends AbstractModelObject implements Domain { + protected final AppImagePackager appImage = new AppImagePackager(); + protected final AsdfPackager asdf = new AsdfPackager(); + protected final BrewPackager brew = new BrewPackager(); + protected final ChocolateyPackager chocolatey = new ChocolateyPackager(); + protected final DockerPackager docker = new DockerPackager(); + protected final FlatpakPackager flatpak = new FlatpakPackager(); + protected final GofishPackager gofish = new GofishPackager(); + protected final JbangPackager jbang = new JbangPackager(); + protected final MacportsPackager macports = new MacportsPackager(); + protected final ScoopPackager scoop = new ScoopPackager(); + protected final SdkmanPackager sdkman = new SdkmanPackager(); + protected final SnapPackager snap = new SnapPackager(); + protected final SpecPackager spec = new SpecPackager(); + + private final org.jreleaser.model.api.packagers.Packagers immutable = new org.jreleaser.model.api.packagers.Packagers() { + @Override + public org.jreleaser.model.api.packagers.AppImagePackager getAppImage() { + return appImage.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.AsdfPackager getAsdf() { + return asdf.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.BrewPackager getBrew() { + return brew.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.ChocolateyPackager getChocolatey() { + return chocolatey.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.DockerPackager getDocker() { + return docker.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.GofishPackager getGofish() { + return gofish.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.FlatpakPackager getFlatpak() { + return flatpak.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.JbangPackager getJbang() { + return jbang.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.MacportsPackager getMacports() { + return macports.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.ScoopPackager getScoop() { + return scoop.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.SdkmanPackager getSdkman() { + return sdkman.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.SnapPackager getSnap() { + return snap.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.SpecPackager getSpec() { + return spec.asImmutable(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Packagers.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.packagers.Packagers asImmutable() { + return immutable; + } + + public boolean hasEnabledPackagers() { + return appImage.isEnabled() || + asdf.isEnabled() || + brew.isEnabled() || + chocolatey.isEnabled() || + docker.isEnabled() || + flatpak.isEnabled() || + gofish.isEnabled() || + jbang.isEnabled() || + macports.isEnabled() || + scoop.isEnabled() || + sdkman.isEnabled() || + snap.isEnabled() || + spec.isEnabled(); + } + + @Override + public void merge(S packagers) { + setAppImage(packagers.appImage); + setAsdf(packagers.asdf); + setBrew(packagers.brew); + setChocolatey(packagers.chocolatey); + setDocker(packagers.docker); + setFlatpak(packagers.flatpak); + setGofish(packagers.gofish); + setJbang(packagers.jbang); + setMacports(packagers.macports); + setScoop(packagers.scoop); + setSdkman(packagers.sdkman); + setSnap(packagers.snap); + setSpec(packagers.spec); + } + + public AppImagePackager getAppImage() { + return appImage; + } + + public void setAppImage(AppImagePackager appimage) { + this.appImage.merge(appimage); + } + + public AsdfPackager getAsdf() { + return asdf; + } + + public void setAsdf(AsdfPackager asdf) { + this.asdf.merge(asdf); + } + + public BrewPackager getBrew() { + return brew; + } + + public void setBrew(BrewPackager brew) { + this.brew.merge(brew); + } + + public ChocolateyPackager getChocolatey() { + return chocolatey; + } + + public void setChocolatey(ChocolateyPackager chocolatey) { + this.chocolatey.merge(chocolatey); + } + + public DockerPackager getDocker() { + return docker; + } + + public void setDocker(DockerPackager docker) { + this.docker.merge(docker); + } + + public GofishPackager getGofish() { + return gofish; + } + + public void setGofish(GofishPackager gofish) { + this.gofish.merge(gofish); + } + + public FlatpakPackager getFlatpak() { + return flatpak; + } + + public void setFlatpak(FlatpakPackager flatpak) { + this.flatpak.merge(flatpak); + } + + public JbangPackager getJbang() { + return jbang; + } + + public void setJbang(JbangPackager jbang) { + this.jbang.merge(jbang); + } + + public MacportsPackager getMacports() { + return macports; + } + + public void setMacports(MacportsPackager macports) { + this.macports.merge(macports); + } + + public ScoopPackager getScoop() { + return scoop; + } + + public void setScoop(ScoopPackager scoop) { + this.scoop.merge(scoop); + } + + public SdkmanPackager getSdkman() { + return sdkman; + } + + public void setSdkman(SdkmanPackager sdkman) { + this.sdkman.merge(sdkman); + } + + public SnapPackager getSnap() { + return snap; + } + + public void setSnap(SnapPackager snap) { + this.snap.merge(snap); + } + + public SpecPackager getSpec() { + return spec; + } + + public void setSpec(SpecPackager spec) { + this.spec.merge(spec); + } + + @Override + public Map asMap(boolean full) { + Map map = new LinkedHashMap<>(); + map.putAll(appImage.asMap(full)); + map.putAll(asdf.asMap(full)); + map.putAll(brew.asMap(full)); + map.putAll(chocolatey.asMap(full)); + map.putAll(docker.asMap(full)); + map.putAll(flatpak.asMap(full)); + map.putAll(gofish.asMap(full)); + map.putAll(jbang.asMap(full)); + map.putAll(macports.asMap(full)); + map.putAll(scoop.asMap(full)); + map.putAll(sdkman.asMap(full)); + map.putAll(snap.asMap(full)); + map.putAll(spec.asMap(full)); + return map; + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/RepositoryPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/RepositoryPackager.java similarity index 88% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/RepositoryPackager.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/RepositoryPackager.java index 266abb1c3..97f2a2acc 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/RepositoryPackager.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/RepositoryPackager.java @@ -15,7 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.internal.common.CommitAuthorAware; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/RepositoryTap.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/RepositoryTap.java similarity index 79% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/RepositoryTap.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/RepositoryTap.java index 42d4c0e80..c71f48a4e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/RepositoryTap.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/RepositoryTap.java @@ -15,7 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.OwnerAware; +import org.jreleaser.model.internal.release.BaseReleaser; import java.util.Map; @@ -30,10 +35,6 @@ public interface RepositoryTap extends Domain, OwnerAware, Activatable { String getResolvedName(); - String getResolvedUsername(GitService service); - - String getResolvedToken(GitService service); - String getName(); void setName(String name); @@ -61,4 +62,8 @@ public interface RepositoryTap extends Domain, OwnerAware, Activatable { String getResolvedCommitMessage(Map props); String getResolvedTagName(Map props); + + String getResolvedUsername(BaseReleaser service); + + String getResolvedToken(BaseReleaser service); } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/ScoopPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/ScoopPackager.java new file mode 100644 index 000000000..6c2536023 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/ScoopPackager.java @@ -0,0 +1,271 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.util.PlatformUtils; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Distribution.DistributionType.BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; +import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; +import static org.jreleaser.model.api.packagers.ScoopPackager.SKIP_SCOOP; +import static org.jreleaser.model.api.packagers.ScoopPackager.TYPE; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.JAR; +import static org.jreleaser.util.FileType.MSI; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isFalse; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public final class ScoopPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf(ZIP.extension()); + SUPPORTED.put(BINARY, extensions); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + SUPPORTED.put(NATIVE_PACKAGE, setOf(MSI.extension())); + SUPPORTED.put(SINGLE_JAR, setOf(JAR.extension())); + } + + private final ScoopRepository repository = new ScoopRepository(); + private String packageName; + private String checkverUrl; + private String autoupdateUrl; + + private final org.jreleaser.model.api.packagers.ScoopPackager immutable = new org.jreleaser.model.api.packagers.ScoopPackager() { + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getCheckverUrl() { + return checkverUrl; + } + + @Override + public String getAutoupdateUrl() { + return autoupdateUrl; + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getBucket() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getBucket(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return ScoopPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return ScoopPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return ScoopPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return ScoopPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return ScoopPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return ScoopPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return ScoopPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(ScoopPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return ScoopPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public ScoopPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.ScoopPackager asImmutable() { + return immutable; + } + + @Override + public void merge(ScoopPackager source) { + super.merge(source); + this.packageName = merge(this.packageName, source.packageName); + this.checkverUrl = merge(this.checkverUrl, source.checkverUrl); + this.autoupdateUrl = merge(this.autoupdateUrl, source.autoupdateUrl); + setBucket(source.repository); + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getCheckverUrl() { + return checkverUrl; + } + + public void setCheckverUrl(String checkverUrl) { + this.checkverUrl = checkverUrl; + } + + public String getAutoupdateUrl() { + return autoupdateUrl; + } + + public void setAutoupdateUrl(String autoupdateUrl) { + this.autoupdateUrl = autoupdateUrl; + } + + public ScoopRepository getBucket() { + return repository; + } + + public void setBucket(ScoopRepository repository) { + this.repository.merge(repository); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("packageName", packageName); + props.put("checkverUrl", checkverUrl); + props.put("autoupdateUrl", autoupdateUrl); + props.put("bucket", repository.asMap(full)); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; + } + + @Override + public boolean supportsPlatform(String platform) { + return isBlank(platform) || PlatformUtils.isWindows(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_SCOOP)); + } + + public static final class ScoopRepository extends PackagerRepository { + public ScoopRepository() { + super("scoop", "scoop"); + } + } +} diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SdkmanPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SdkmanPackager.java new file mode 100644 index 000000000..e5588fd3c --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SdkmanPackager.java @@ -0,0 +1,316 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Sdkman; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.TimeoutAware; +import org.jreleaser.util.Env; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Constants.HIDE; +import static org.jreleaser.model.Constants.UNSET; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SDKMAN_CONSUMER_KEY; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SDKMAN_CONSUMER_TOKEN; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SKIP_SDKMAN; +import static org.jreleaser.model.api.packagers.SdkmanPackager.TYPE; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isFalse; +import static org.jreleaser.util.StringUtils.isNotBlank; + +/** + * @author Andres Almiray + * @since 0.6.0 + */ +public final class SdkmanPackager extends AbstractPackager implements TimeoutAware { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf(ZIP.extension()); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + } + + private Sdkman.Command command; + private String candidate; + private String releaseNotesUrl; + private String consumerKey; + private String consumerToken; + private int connectTimeout; + private int readTimeout; + @JsonIgnore + private boolean published; + + private final org.jreleaser.model.api.packagers.SdkmanPackager immutable = new org.jreleaser.model.api.packagers.SdkmanPackager() { + @Override + public String getCandidate() { + return candidate; + } + + @Override + public String getReleaseNotesUrl() { + return releaseNotesUrl; + } + + @Override + public Sdkman.Command getCommand() { + return command; + } + + @Override + public String getConsumerKey() { + return consumerKey; + } + + @Override + public String getConsumerToken() { + return consumerToken; + } + + @Override + public boolean isPublished() { + return SdkmanPackager.this.isPublished(); + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return SdkmanPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return SdkmanPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return SdkmanPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return SdkmanPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return SdkmanPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return SdkmanPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return SdkmanPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(SdkmanPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return SdkmanPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public SdkmanPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.SdkmanPackager asImmutable() { + return immutable; + } + + @Override + public void merge(SdkmanPackager source) { + super.merge(source); + this.candidate = merge(this.candidate, source.candidate); + this.releaseNotesUrl = merge(this.releaseNotesUrl, source.releaseNotesUrl); + this.command = merge(this.command, source.command); + this.consumerKey = merge(this.consumerKey, source.consumerKey); + this.consumerToken = merge(this.consumerToken, source.consumerToken); + this.connectTimeout = merge(this.connectTimeout, source.connectTimeout); + this.readTimeout = merge(this.readTimeout, source.readTimeout); + this.published = merge(this.published, source.published); + } + + public String getResolvedConsumerKey() { + return Env.env(SDKMAN_CONSUMER_KEY, consumerKey); + } + + public String getResolvedConsumerToken() { + return Env.env(SDKMAN_CONSUMER_TOKEN, consumerToken); + } + + public String getCandidate() { + return candidate; + } + + public void setCandidate(String candidate) { + this.candidate = candidate; + } + + public String getReleaseNotesUrl() { + return releaseNotesUrl; + } + + public void setReleaseNotesUrl(String releaseNotesUrl) { + this.releaseNotesUrl = releaseNotesUrl; + } + + public Sdkman.Command getCommand() { + return command; + } + + public void setCommand(Sdkman.Command command) { + this.command = command; + } + + public void setCommand(String str) { + setCommand(Sdkman.Command.of(str)); + } + + public boolean isCommandSet() { + return command != null; + } + + public String getConsumerKey() { + return consumerKey; + } + + public void setConsumerKey(String consumerKey) { + this.consumerKey = consumerKey; + } + + public String getConsumerToken() { + return consumerToken; + } + + public void setConsumerToken(String consumerToken) { + this.consumerToken = consumerToken; + } + + @Override + public Integer getConnectTimeout() { + return connectTimeout; + } + + @Override + public void setConnectTimeout(Integer connectTimeout) { + this.connectTimeout = connectTimeout; + } + + @Override + public Integer getReadTimeout() { + return readTimeout; + } + + @Override + public void setReadTimeout(Integer readTimeout) { + this.readTimeout = readTimeout; + } + + public boolean isPublished() { + return published; + } + + public void setPublished(boolean published) { + this.published = published; + } + + @Override + protected void asMap(boolean full, Map props) { + props.put("candidate", candidate); + props.put("command", command); + props.put("releaseNotesUrl", releaseNotesUrl); + props.put("connectTimeout", connectTimeout); + props.put("readTimeout", readTimeout); + props.put("consumerKey", isNotBlank(getResolvedConsumerKey()) ? HIDE : UNSET); + props.put("consumerToken", isNotBlank(getResolvedConsumerToken()) ? HIDE : UNSET); + } + + @Override + public boolean supportsPlatform(String platform) { + return true; + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_SDKMAN)); + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Snap.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SnapPackager.java similarity index 54% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Snap.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SnapPackager.java index 16c5710be..41f5e898b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Snap.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SnapPackager.java @@ -15,19 +15,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; - +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; import org.jreleaser.util.PlatformUtils; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; import static java.util.stream.Collectors.toList; import static org.jreleaser.model.Distribution.DistributionType.BINARY; import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; @@ -35,6 +44,8 @@ import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; +import static org.jreleaser.model.api.packagers.SnapPackager.SKIP_SNAP; +import static org.jreleaser.model.api.packagers.SnapPackager.TYPE; import static org.jreleaser.util.CollectionUtils.setOf; import static org.jreleaser.util.FileType.DEB; import static org.jreleaser.util.FileType.JAR; @@ -53,11 +64,8 @@ * @author Andres Almiray * @since 0.1.0 */ -public class Snap extends AbstractRepositoryPackager { - public static final String TYPE = "snap"; - public static final String SKIP_SNAP = "skipSnap"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); +public final class SnapPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); static { Set extensions = setOf( @@ -82,7 +90,7 @@ public class Snap extends AbstractRepositoryPackager { private final List plugs = new ArrayList<>(); private final List slots = new ArrayList<>(); private final List architectures = new ArrayList<>(); - private final SnapTap snap = new SnapTap(); + private final SnapRepository repository = new SnapRepository(); private String packageName; private String base = "core20"; @@ -91,35 +99,195 @@ public class Snap extends AbstractRepositoryPackager { private String exportedLogin; private Boolean remoteBuild; - public Snap() { + private final org.jreleaser.model.api.packagers.SnapPackager immutable = new org.jreleaser.model.api.packagers.SnapPackager() { + private List architectures; + private List slots; + private List plugs; + + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getBase() { + return base; + } + + @Override + public String getGrade() { + return grade; + } + + @Override + public String getConfinement() { + return confinement; + } + + @Override + public Set getLocalPlugs() { + return unmodifiableSet(localPlugs); + } + + @Override + public Set getLocalSlots() { + return unmodifiableSet(localSlots); + } + + @Override + public List getPlugs() { + if (null == plugs) { + plugs = SnapPackager.this.plugs.stream() + .map(SnapPackager.Plug::asImmutable) + .collect(toList()); + } + return plugs; + } + + @Override + public List getSlots() { + if (null == slots) { + slots = SnapPackager.this.slots.stream() + .map(SnapPackager.Slot::asImmutable) + .collect(toList()); + } + return slots; + } + + @Override + public List getArchitectures() { + if (null == architectures) { + architectures = SnapPackager.this.architectures.stream() + .map(SnapPackager.Architecture::asImmutable) + .collect(toList()); + } + return architectures; + } + + @Override + public String getExportedLogin() { + return exportedLogin; + } + + @Override + public boolean isRemoteBuild() { + return SnapPackager.this.isRemoteBuild(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getSnap() { + return repository.asImmutable(); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getSnap(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return SnapPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return SnapPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return SnapPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return SnapPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return SnapPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return SnapPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return SnapPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(SnapPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return SnapPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public SnapPackager() { super(TYPE); } - @Override - public void freeze() { - super.freeze(); - plugs.forEach(Plug::freeze); - slots.forEach(Slot::freeze); - architectures.forEach(Architecture::freeze); - snap.freeze(); + public org.jreleaser.model.api.packagers.SnapPackager asImmutable() { + return immutable; } @Override - public void merge(Snap snap) { - freezeCheck(); - super.merge(snap); - this.packageName = merge(this.packageName, snap.packageName); - this.base = merge(this.base, snap.base); - this.grade = merge(this.grade, snap.grade); - this.confinement = merge(this.confinement, snap.confinement); - this.exportedLogin = merge(this.exportedLogin, snap.exportedLogin); - this.remoteBuild = merge(this.remoteBuild, snap.remoteBuild); - setLocalPlugs(merge(this.localPlugs, snap.localPlugs)); - setLocalSlots(merge(this.localSlots, snap.localSlots)); - setPlugs(merge(this.plugs, snap.plugs)); - setSlots(merge(this.slots, snap.slots)); - setArchitectures(merge(this.architectures, snap.architectures)); - setSnap(snap.snap); + public void merge(SnapPackager source) { + super.merge(source); + this.packageName = merge(this.packageName, source.packageName); + this.base = merge(this.base, source.base); + this.grade = merge(this.grade, source.grade); + this.confinement = merge(this.confinement, source.confinement); + this.exportedLogin = merge(this.exportedLogin, source.exportedLogin); + this.remoteBuild = merge(this.remoteBuild, source.remoteBuild); + setLocalPlugs(merge(this.localPlugs, source.localPlugs)); + setLocalSlots(merge(this.localSlots, source.localSlots)); + setPlugs(merge(this.plugs, source.plugs)); + setSlots(merge(this.slots, source.slots)); + setArchitectures(merge(this.architectures, source.architectures)); + setSnap(source.repository); } public String getPackageName() { @@ -127,7 +295,6 @@ public String getPackageName() { } public void setPackageName(String packageName) { - freezeCheck(); this.packageName = packageName; } @@ -136,7 +303,6 @@ public String getBase() { } public void setBase(String base) { - freezeCheck(); this.base = base; } @@ -145,7 +311,6 @@ public String getGrade() { } public void setGrade(String grade) { - freezeCheck(); this.grade = grade; } @@ -154,67 +319,59 @@ public String getConfinement() { } public void setConfinement(String confinement) { - freezeCheck(); this.confinement = confinement; } public Set getLocalPlugs() { - return freezeWrap(localPlugs); + return localPlugs; } public void setLocalPlugs(Set localPlugs) { - freezeCheck(); this.localPlugs.clear(); this.localPlugs.addAll(localPlugs); } public Set getLocalSlots() { - return freezeWrap(localSlots); + return localSlots; } public void setLocalSlots(Set localSlots) { - freezeCheck(); this.localSlots.clear(); this.localSlots.addAll(localSlots); } public List getPlugs() { - return freezeWrap(plugs); + return plugs; } public void setPlugs(List plugs) { - freezeCheck(); this.plugs.clear(); this.plugs.addAll(plugs); } public List getSlots() { - return freezeWrap(slots); + return slots; } public void setSlots(List slots) { - freezeCheck(); this.slots.clear(); this.slots.addAll(slots); } public List getArchitectures() { - return freezeWrap(architectures); + return architectures; } public void setArchitectures(List architectures) { - freezeCheck(); this.architectures.clear(); this.architectures.addAll(architectures); } public void addArchitecture(List architectures) { - freezeCheck(); this.architectures.addAll(architectures); } public void addArchitecture(Architecture architecture) { - freezeCheck(); if (null != architecture) { this.architectures.add(architecture); } @@ -225,7 +382,6 @@ public String getExportedLogin() { } public void setExportedLogin(String exportedLogin) { - freezeCheck(); this.exportedLogin = exportedLogin; } @@ -234,7 +390,6 @@ public boolean isRemoteBuild() { } public void setRemoteBuild(Boolean remoteBuild) { - freezeCheck(); this.remoteBuild = remoteBuild; } @@ -242,12 +397,12 @@ public boolean isRemoteBuildSet() { return remoteBuild != null; } - public SnapTap getSnap() { - return snap; + public SnapRepository getSnap() { + return repository; } - public void setSnap(SnapTap snap) { - this.snap.merge(snap); + public void setSnap(SnapRepository repository) { + this.repository.merge(repository); } @Override @@ -259,7 +414,7 @@ protected void asMap(boolean full, Map props) { props.put("confinement", confinement); props.put("exportedLogin", exportedLogin); props.put("remoteBuild", isRemoteBuild()); - props.put("snap", snap.asMap(full)); + props.put("snap", repository.asMap(full)); props.put("localPlugs", localPlugs); props.put("localSlots", localSlots); @@ -284,7 +439,11 @@ protected void asMap(boolean full, Map props) { @Override public RepositoryTap getRepositoryTap() { - return snap; + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; } @Override @@ -293,13 +452,13 @@ public boolean supportsPlatform(String platform) { } @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); } @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); } @Override @@ -307,7 +466,7 @@ protected boolean isNotSkipped(Artifact artifact) { return isFalse(artifact.getExtraProperties().get(SKIP_SNAP)); } - public static class Attribute { + public static final class Attribute { public final String key; public final String value; @@ -317,12 +476,43 @@ public Attribute(String key, String value) { } } - public static class Slot extends AbstractModelObject implements Domain { + public static final class Slot extends AbstractModelObject implements Domain { private final Map attributes = new LinkedHashMap<>(); private final List reads = new ArrayList<>(); private final List writes = new ArrayList<>(); private String name; + private final org.jreleaser.model.api.packagers.SnapPackager.Slot immutable = new org.jreleaser.model.api.packagers.SnapPackager.Slot() { + @Override + public String getName() { + return name; + } + + @Override + public Map getAttributes() { + return unmodifiableMap(attributes); + } + + @Override + public List getReads() { + return unmodifiableList(reads); + } + + @Override + public List getWrites() { + return unmodifiableList(writes); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Slot.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.packagers.SnapPackager.Slot asImmutable() { + return immutable; + } + @Override public void merge(Slot source) { this.name = merge(this.name, source.name); @@ -336,16 +526,14 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } public Map getAttributes() { - return freezeWrap(attributes); + return attributes; } public void setAttributes(Map attributes) { - freezeCheck(); this.attributes.clear(); this.attributes.putAll(attributes); } @@ -357,21 +545,19 @@ public Collection getAttrs() { } public List getReads() { - return freezeWrap(reads); + return reads; } public void setReads(List reads) { - freezeCheck(); this.reads.clear(); this.reads.addAll(reads); } public List getWrites() { - return freezeWrap(writes); + return writes; } public void setWrites(List writes) { - freezeCheck(); this.writes.clear(); this.writes.addAll(writes); } @@ -403,12 +589,43 @@ public static Slot copyOf(Slot other) { } } - public static class Plug extends AbstractModelObject implements Domain { + public static final class Plug extends AbstractModelObject implements Domain { private final Map attributes = new LinkedHashMap<>(); private final List reads = new ArrayList<>(); private final List writes = new ArrayList<>(); private String name; + private final org.jreleaser.model.api.packagers.SnapPackager.Plug immutable = new org.jreleaser.model.api.packagers.SnapPackager.Plug() { + @Override + public String getName() { + return name; + } + + @Override + public Map getAttributes() { + return unmodifiableMap(attributes); + } + + @Override + public List getReads() { + return unmodifiableList(reads); + } + + @Override + public List getWrites() { + return unmodifiableList(writes); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Plug.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.packagers.SnapPackager.Plug asImmutable() { + return immutable; + } + @Override public void merge(Plug source) { this.name = merge(this.name, source.name); @@ -422,16 +639,14 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } public Map getAttributes() { - return freezeWrap(attributes); + return attributes; } public void setAttributes(Map attributes) { - freezeCheck(); this.attributes.clear(); this.attributes.putAll(attributes); } @@ -443,21 +658,19 @@ public Collection getAttrs() { } public List getReads() { - return freezeWrap(reads); + return reads; } public void setReads(List reads) { - freezeCheck(); this.reads.clear(); this.reads.addAll(reads); } public List getWrites() { - return freezeWrap(writes); + return writes; } public void setWrites(List writes) { - freezeCheck(); this.writes.clear(); this.writes.addAll(writes); } @@ -489,17 +702,43 @@ public static Plug copyOf(Plug other) { } } - public static class SnapTap extends AbstractRepositoryTap { - public SnapTap() { + public static final class SnapRepository extends PackagerRepository { + public SnapRepository() { super("snap", "snap"); } } - public static class Architecture extends AbstractModelObject implements Domain { + public static final class Architecture extends AbstractModelObject implements Domain { private final List buildOn = new ArrayList<>(); private final List runOn = new ArrayList<>(); private Boolean ignoreError; + private final org.jreleaser.model.api.packagers.SnapPackager.Architecture immutable = new org.jreleaser.model.api.packagers.SnapPackager.Architecture() { + @Override + public List getBuildOn() { + return unmodifiableList(buildOn); + } + + @Override + public List getRunOn() { + return unmodifiableList(runOn); + } + + @Override + public boolean isIgnoreError() { + return Architecture.this.isIgnoreError(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Architecture.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.packagers.SnapPackager.Architecture asImmutable() { + return immutable; + } + @Override public void merge(Architecture source) { this.ignoreError = merge(this.ignoreError, source.ignoreError); @@ -508,21 +747,19 @@ public void merge(Architecture source) { } public List getBuildOn() { - return freezeWrap(buildOn); + return buildOn; } public void setBuildOn(List buildOn) { - freezeCheck(); this.buildOn.clear(); this.buildOn.addAll(buildOn); } public List getRunOn() { - return freezeWrap(runOn); + return runOn; } public void setRunOn(List runOn) { - freezeCheck(); this.runOn.clear(); this.runOn.addAll(runOn); } @@ -540,7 +777,6 @@ public boolean isIgnoreError() { } public void setIgnoreError(Boolean ignoreError) { - freezeCheck(); this.ignoreError = ignoreError; } diff --git a/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SpecPackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SpecPackager.java new file mode 100644 index 000000000..d0c424087 --- /dev/null +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/SpecPackager.java @@ -0,0 +1,285 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.model.internal.packagers; + +import org.jreleaser.model.Active; +import org.jreleaser.model.Distribution; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.util.PlatformUtils; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.model.Distribution.DistributionType.BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; +import static org.jreleaser.model.Distribution.DistributionType.JLINK; +import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; +import static org.jreleaser.model.api.packagers.SpecPackager.SKIP_SPEC; +import static org.jreleaser.model.api.packagers.SpecPackager.TYPE; +import static org.jreleaser.util.CollectionUtils.setOf; +import static org.jreleaser.util.FileType.TAR; +import static org.jreleaser.util.FileType.TAR_BZ2; +import static org.jreleaser.util.FileType.TAR_GZ; +import static org.jreleaser.util.FileType.TAR_XZ; +import static org.jreleaser.util.FileType.TBZ2; +import static org.jreleaser.util.FileType.TGZ; +import static org.jreleaser.util.FileType.TXZ; +import static org.jreleaser.util.FileType.ZIP; +import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isFalse; + +/** + * @author Andres Almiray + * @since 0.9.1 + */ +public final class SpecPackager extends AbstractRepositoryPackager { + private static final Map> SUPPORTED = new LinkedHashMap<>(); + + static { + Set extensions = setOf( + TAR_BZ2.extension(), + TAR_GZ.extension(), + TAR_XZ.extension(), + TBZ2.extension(), + TGZ.extension(), + TXZ.extension(), + TAR.extension(), + ZIP.extension()); + + SUPPORTED.put(BINARY, extensions); + SUPPORTED.put(JAVA_BINARY, extensions); + SUPPORTED.put(JLINK, extensions); + SUPPORTED.put(NATIVE_IMAGE, extensions); + } + + private final List requires = new ArrayList<>(); + private final SpecRepository repository = new SpecRepository(); + + private String packageName; + private String release; + + private final org.jreleaser.model.api.packagers.SpecPackager immutable = new org.jreleaser.model.api.packagers.SpecPackager() { + @Override + public String getPackageName() { + return packageName; + } + + @Override + public String getRelease() { + return release; + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getRepository() { + return repository.asImmutable(); + } + + @Override + public List getRequires() { + return unmodifiableList(requires); + } + + @Override + public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() { + return getRepository(); + } + + @Override + public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() { + return commitAuthor.asImmutable(); + } + + @Override + public String getTemplateDirectory() { + return templateDirectory; + } + + @Override + public List getSkipTemplates() { + return unmodifiableList(skipTemplates); + } + + @Override + public String getType() { + return type; + } + + @Override + public String getDownloadUrl() { + return downloadUrl; + } + + @Override + public boolean supportsPlatform(String platform) { + return SpecPackager.this.supportsPlatform(platform); + } + + @Override + public boolean supportsDistribution(Distribution.DistributionType distributionType) { + return SpecPackager.this.supportsDistribution(distributionType); + } + + @Override + public Set getSupportedFileExtensions(Distribution.DistributionType distributionType) { + return SpecPackager.this.getSupportedFileExtensions(distributionType); + } + + @Override + public Set getSupportedStereotypes() { + return SpecPackager.this.getSupportedStereotypes(); + } + + @Override + public boolean isSnapshotSupported() { + return SpecPackager.this.isSnapshotSupported(); + } + + @Override + public boolean isContinueOnError() { + return SpecPackager.this.isContinueOnError(); + } + + @Override + public Active getActive() { + return active; + } + + @Override + public boolean isEnabled() { + return SpecPackager.this.isEnabled(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(SpecPackager.this.asMap(full)); + } + + @Override + public String getPrefix() { + return SpecPackager.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public SpecPackager() { + super(TYPE); + } + + public org.jreleaser.model.api.packagers.SpecPackager asImmutable() { + return immutable; + } + + @Override + public void merge(SpecPackager source) { + super.merge(source); + this.packageName = merge(this.packageName, source.packageName); + this.release = merge(this.release, source.release); + setRepository(source.repository); + setRequires(merge(this.requires, source.requires)); + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getRelease() { + return release; + } + + public void setRelease(String release) { + this.release = release; + } + + public SpecRepository getRepository() { + return repository; + } + + public void setRepository(SpecRepository repository) { + this.repository.merge(repository); + } + + public List getRequires() { + return requires; + } + + public void setRequires(List requires) { + this.requires.clear(); + this.requires.addAll(requires); + } + + @Override + protected void asMap(boolean full, Map props) { + super.asMap(full, props); + props.put("packageName", packageName); + props.put("release", release); + props.put("requires", requires); + props.put("repository", repository.asMap(full)); + } + + @Override + public RepositoryTap getRepositoryTap() { + return getPackagerRepository(); + } + + public PackagerRepository getPackagerRepository() { + return repository; + } + + @Override + public boolean supportsPlatform(String platform) { + return isBlank(platform) || + PlatformUtils.isLinux(platform) && PlatformUtils.isIntel(platform) && !PlatformUtils.isAlpineLinux(platform); + } + + @Override + public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) { + return SUPPORTED.containsKey(distributionType); + } + + @Override + public Set getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) { + return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet())); + } + + @Override + protected boolean isNotSkipped(Artifact artifact) { + return isFalse(artifact.getExtraProperties().get(SKIP_SPEC)); + } + + public static final class SpecRepository extends PackagerRepository { + public SpecRepository() { + super("spec", "spec"); + } + } +} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/TemplatePackager.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/TemplatePackager.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/TemplatePackager.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/TemplatePackager.java index eefe9dcba..e191107a3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/TemplatePackager.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/TemplatePackager.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.packagers; import java.util.List; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Platform.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/platform/Platform.java similarity index 75% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Platform.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/platform/Platform.java index e781049f4..12e855bb4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Platform.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/platform/Platform.java @@ -15,23 +15,47 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.platform; + +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Domain; import java.util.LinkedHashMap; import java.util.Map; +import static java.util.Collections.unmodifiableMap; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.10.0 */ -public class Platform extends AbstractModelObject implements Domain { +public final class Platform extends AbstractModelObject implements Domain { private final Map replacements = new LinkedHashMap<>(); + private final org.jreleaser.model.api.platform.Platform immutable = new org.jreleaser.model.api.platform.Platform() { + @Override + public Map getReplacements() { + return unmodifiableMap(replacements); + } + + @Override + public String applyReplacements(String platform) { + return Platform.this.applyReplacements(platform); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Platform.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.platform.Platform asImmutable() { + return immutable; + } + @Override public void merge(Platform platform) { - freezeCheck(); setReplacements(merge(this.replacements, platform.replacements)); } @@ -40,11 +64,10 @@ public boolean isSet() { } public Map getReplacements() { - return freezeWrap(replacements); + return replacements; } public void setReplacements(Map replacements) { - freezeCheck(); this.replacements.putAll(replacements); } @@ -52,7 +75,6 @@ public void setReplacements(Map replacements) { public Map asMap(boolean full) { Map map = new LinkedHashMap<>(); map.put("replacements", replacements); - return map; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Project.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/project/Project.java similarity index 73% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Project.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/project/Project.java index 6609e2818..4e61673a4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Project.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/project/Project.java @@ -15,22 +15,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.project; import com.github.mustachejava.TemplateFunction; import org.jreleaser.bundle.RB; -import org.jreleaser.util.CalVer; -import org.jreleaser.util.ChronVer; -import org.jreleaser.util.Constants; -import org.jreleaser.util.CustomVersion; +import org.jreleaser.model.Active; +import org.jreleaser.model.Constants; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.Stereotype; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.common.Java; +import org.jreleaser.model.internal.common.Screenshot; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; -import org.jreleaser.util.JavaModuleVersion; -import org.jreleaser.util.JavaRuntimeVersion; -import org.jreleaser.util.MustacheUtils; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; -import org.jreleaser.util.Version; +import org.jreleaser.version.CalVer; +import org.jreleaser.version.ChronVer; +import org.jreleaser.version.CustomVersion; +import org.jreleaser.version.JavaModuleVersion; +import org.jreleaser.version.JavaRuntimeVersion; +import org.jreleaser.version.SemanticVersion; +import org.jreleaser.version.Version; import java.util.ArrayList; import java.util.Collection; @@ -38,27 +47,26 @@ import java.util.List; import java.util.Map; -import static org.jreleaser.util.JReleaserOutput.nag; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableList; +import static java.util.Collections.unmodifiableMap; +import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.JReleaserOutput.nag; +import static org.jreleaser.model.api.project.Project.DEFAULT_SNAPSHOT_PATTERN; +import static org.jreleaser.model.api.project.Project.PROJECT_NAME; +import static org.jreleaser.model.api.project.Project.PROJECT_SNAPSHOT_LABEL; +import static org.jreleaser.model.api.project.Project.PROJECT_SNAPSHOT_PATTERN; +import static org.jreleaser.model.api.project.Project.PROJECT_VERSION; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.getCapitalizedName; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public class Project extends AbstractModelObject implements Domain, ExtraProperties { - public static final String PROJECT_NAME = "PROJECT_NAME"; - public static final String PROJECT_VERSION = "PROJECT_VERSION"; - public static final String PROJECT_VERSION_PATTERN = "PROJECT_VERSION_PATTERN"; - public static final String PROJECT_SNAPSHOT_PATTERN = "PROJECT_SNAPSHOT_PATTERN"; - public static final String PROJECT_SNAPSHOT_LABEL = "PROJECT_SNAPSHOT_LABEL"; - public static final String PROJECT_SNAPSHOT_FULL_CHANGELOG = "PROJECT_SNAPSHOT_FULL_CHANGELOG"; - public static final String DEFAULT_SNAPSHOT_PATTERN = ".*-SNAPSHOT"; - public static final String DEFAULT_SNAPSHOT_LABEL = "early-access"; - +public final class Project extends AbstractModelObject implements Domain, ExtraProperties, Active.Releaseable { private final List authors = new ArrayList<>(); private final List tags = new ArrayList<>(); private final List maintainers = new ArrayList<>(); @@ -79,20 +87,162 @@ public class Project extends AbstractModelObject implements Domain, Ext private String vendor; private Stereotype stereotype = Stereotype.NONE; - @Override - public void freeze() { - super.freeze(); - links.freeze(); - java.freeze(); - snapshot.freeze(); - versionPattern.freeze(); - screenshots.forEach(ModelObject::freeze); - icons.forEach(ModelObject::freeze); + private final org.jreleaser.model.api.project.Project immutable = new org.jreleaser.model.api.project.Project() { + private List screenshots; + private List icons; + + @Override + public boolean isSnapshot() { + return Project.this.isSnapshot(); + } + + @Override + public boolean isRelease() { + return Project.this.isRelease(); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getVersion() { + return version; + } + + @Override + public String getVersionPattern() { + return versionPattern.toString(); + } + + @Override + public Snapshot getSnapshot() { + return snapshot.asImmutable(); + } + + @Override + public String getDescription() { + return description; + } + + @Override + public String getLongDescription() { + return longDescription; + } + + @Override + public String getWebsite() { + return Project.this.getWebsite(); + } + + @Override + public String getLicense() { + return license; + } + + @Override + public String getLicenseUrl() { + return Project.this.getLicenseUrl(); + } + + @Override + public String getInceptionYear() { + return inceptionYear; + } + + @Override + public String getCopyright() { + return copyright; + } + + @Override + public String getVendor() { + return vendor; + } + + @Override + public String getDocsUrl() { + return Project.this.getDocsUrl(); + } + + @Override + public Stereotype getStereotype() { + return stereotype; + } + + @Override + public List getScreenshots() { + if (null == screenshots) { + screenshots = Project.this.screenshots.stream() + .map(Screenshot::asImmutable) + .collect(toList()); + } + return screenshots; + } + + @Override + public List getIcons() { + if (null == icons) { + icons = Project.this.icons.stream() + .map(Icon::asImmutable) + .collect(toList()); + } + return icons; + } + + @Override + public org.jreleaser.model.api.common.Java getJava() { + return java.asImmutable(); + } + + @Override + public List getAuthors() { + return unmodifiableList(authors); + } + + @Override + public List getTags() { + return unmodifiableList(tags); + } + + @Override + public List getMaintainers() { + return unmodifiableList(maintainers); + } + + @Override + public Links getLinks() { + return links.asImmutable(); + } + + @Override + public Version version() { + return Project.this.version(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Project.this.asMap(full)); + } + + @Override + public String getPrefix() { + return Project.this.getPrefix(); + } + + @Override + public Map getExtraProperties() { + return unmodifiableMap(extraProperties); + } + }; + + public org.jreleaser.model.api.project.Project asImmutable() { + return immutable; } @Override public void merge(Project project) { - freezeCheck(); this.name = merge(this.name, project.name); this.version = merge(this.version, project.version); this.versionPattern = merge(this.versionPattern, project.versionPattern); @@ -131,6 +281,7 @@ public boolean isSnapshot() { return snapshot.isSnapshot(getResolvedVersion()); } + @Override public boolean isRelease() { return !isSnapshot(); } @@ -150,7 +301,6 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -159,7 +309,6 @@ public String getVersion() { } public void setVersion(String version) { - freezeCheck(); this.version = version; } @@ -192,7 +341,6 @@ public String getDescription() { } public void setDescription(String description) { - freezeCheck(); this.description = description; } @@ -201,7 +349,6 @@ public String getLongDescription() { } public void setLongDescription(String longDescription) { - freezeCheck(); this.longDescription = longDescription; } @@ -221,7 +368,6 @@ public String getLicense() { } public void setLicense(String license) { - freezeCheck(); this.license = license; } @@ -241,7 +387,6 @@ public String getInceptionYear() { } public void setInceptionYear(String inceptionYear) { - freezeCheck(); this.inceptionYear = inceptionYear; } @@ -250,7 +395,6 @@ public String getCopyright() { } public void setCopyright(String copyright) { - freezeCheck(); this.copyright = copyright; } @@ -259,7 +403,6 @@ public String getVendor() { } public void setVendor(String vendor) { - freezeCheck(); this.vendor = vendor; } @@ -279,7 +422,6 @@ public Stereotype getStereotype() { } public void setStereotype(Stereotype stereotype) { - freezeCheck(); this.stereotype = stereotype; } @@ -288,34 +430,30 @@ public void setStereotype(String str) { } public List getScreenshots() { - return freezeWrap(screenshots); + return screenshots; } public void setScreenshots(List screenshots) { - freezeCheck(); this.screenshots.clear(); this.screenshots.addAll(screenshots); } public void addScreenshot(Screenshot screenshot) { - freezeCheck(); if (null != screenshot) { this.screenshots.add(screenshot); } } public List getIcons() { - return freezeWrap(icons); + return icons; } public void setIcons(List icons) { - freezeCheck(); this.icons.clear(); this.icons.addAll(icons); } public void addIcon(Icon icon) { - freezeCheck(); if (null != icon) { this.icons.add(icon); } @@ -331,48 +469,43 @@ public void setJava(Java java) { @Override public Map getExtraProperties() { - return freezeWrap(extraProperties); + return extraProperties; } @Override public void setExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.clear(); this.extraProperties.putAll(extraProperties); } @Override public void addExtraProperties(Map extraProperties) { - freezeCheck(); this.extraProperties.putAll(extraProperties); } public List getAuthors() { - return freezeWrap(authors); + return authors; } public void setAuthors(List authors) { - freezeCheck(); this.authors.clear(); this.authors.addAll(authors); } public List getTags() { - return freezeWrap(tags); + return tags; } public void setTags(List tags) { - freezeCheck(); this.tags.clear(); this.tags.addAll(tags); } public List getMaintainers() { - return freezeWrap(maintainers); + return maintainers; } public void setMaintainers(List maintainers) { - freezeCheck(); this.maintainers.clear(); this.maintainers.addAll(maintainers); } @@ -423,24 +556,13 @@ public Map asMap(boolean full) { } public void parseVersion() { - boolean isFrozen = frozen; - - try { - frozen = false; - doParseVersion(); - } finally { - frozen = isFrozen; - } - } - - private void doParseVersion() { String v = getResolvedVersion(); if (isBlank(v)) return; switch (versionPattern().getType()) { case SEMVER: try { - SemVer parsedVersion = SemVer.of(v); + SemanticVersion parsedVersion = SemanticVersion.of(v); StringBuilder vn = new StringBuilder().append(parsedVersion.getMajor()); addExtraProperty(Constants.KEY_VERSION_MAJOR, parsedVersion.getMajor()); if (parsedVersion.hasMinor()) { @@ -461,7 +583,7 @@ private void doParseVersion() { } catch (IllegalArgumentException e) { throw new JReleaserException(RB.$("ERROR_version_invalid", v, "semver"), e); } - break; + break; case JAVA_RUNTIME: try { JavaRuntimeVersion parsedVersion = JavaRuntimeVersion.of(v); @@ -478,7 +600,7 @@ private void doParseVersion() { } catch (IllegalArgumentException e) { throw new JReleaserException(RB.$("ERROR_version_invalid", v, "Java runtime"), e); } - break; + break; case JAVA_MODULE: try { JavaModuleVersion parsedVersion = JavaModuleVersion.of(v); @@ -492,7 +614,7 @@ private void doParseVersion() { } catch (IllegalArgumentException e) { throw new JReleaserException(RB.$("ERROR_version_invalid", v, "Java module"), e); } - break; + break; case CALVER: try { CalVer parsedVersion = CalVer.of(versionPattern().getFormat(), v); @@ -519,7 +641,7 @@ private void doParseVersion() { } catch (IllegalArgumentException e) { throw new JReleaserException(RB.$("ERROR_version_invalid", v, "calver"), e); } - break; + break; case CHRONVER: try { ChronVer parsedVersion = ChronVer.of(v); @@ -533,7 +655,7 @@ private void doParseVersion() { } catch (IllegalArgumentException e) { throw new JReleaserException(RB.$("ERROR_version_invalid", v, "chronver"), e); } - break; + break; default: addExtraProperty(Constants.KEY_VERSION_NUMBER, v); // noop @@ -567,7 +689,7 @@ public Version version() { String v = getResolvedVersion(); switch (versionPattern().getType()) { case SEMVER: - return SemVer.of(v); + return SemanticVersion.of(v); case JAVA_RUNTIME: return JavaRuntimeVersion.of(v); case JAVA_MODULE: @@ -587,11 +709,35 @@ public static class Snapshot extends AbstractModelObject implements Do private String pattern; private String label; private Boolean fullChangelog; + private final org.jreleaser.model.api.project.Project.Snapshot immutable = new org.jreleaser.model.api.project.Project.Snapshot() { + @Override + public String getPattern() { + return pattern; + } + + @Override + public String getLabel() { + return label; + } + + @Override + public boolean isFullChangelog() { + return Snapshot.this.isFullChangelog(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Snapshot.this.asMap(full)); + } + }; private String cachedLabel; + public org.jreleaser.model.api.project.Project.Snapshot asImmutable() { + return immutable; + } + @Override public void merge(Snapshot snapshot) { - freezeCheck(); this.enabled = this.merge(this.enabled, snapshot.enabled); this.pattern = this.merge(this.pattern, snapshot.pattern); this.label = this.merge(this.label, snapshot.label); @@ -644,7 +790,6 @@ public String getPattern() { } public void setPattern(String pattern) { - freezeCheck(); this.pattern = pattern; } @@ -653,7 +798,6 @@ public String getLabel() { } public void setLabel(String label) { - freezeCheck(); this.label = label; } @@ -666,7 +810,6 @@ public boolean isFullChangelog() { } public void setFullChangelog(Boolean fullChangelog) { - freezeCheck(); this.fullChangelog = fullChangelog; } @@ -721,7 +864,7 @@ public Map props(JReleaserModel model) { props.put(Constants.KEY_PROJECT_JAVA_ARTIFACT_ID, project.getJava().getArtifactId()); props.put(Constants.KEY_PROJECT_JAVA_VERSION, project.getJava().getVersion()); props.put(Constants.KEY_PROJECT_JAVA_MAIN_CLASS, project.getJava().getMainClass()); - SemVer jv = SemVer.of(project.getJava().getVersion()); + SemanticVersion jv = SemanticVersion.of(project.getJava().getVersion()); props.put(Constants.KEY_PROJECT_JAVA_VERSION_MAJOR, jv.getMajor()); if (jv.hasMinor()) props.put(Constants.KEY_PROJECT_JAVA_VERSION_MINOR, jv.getMinor()); if (jv.hasPatch()) props.put(Constants.KEY_PROJECT_JAVA_VERSION_PATCH, jv.getPatch()); @@ -747,7 +890,7 @@ public Map props(JReleaserModel model) { } } - public static class Links extends AbstractModelObject implements Domain { + public static class Links extends AbstractModelObject implements Domain { private static final String PROJECT_LINK = "projectLink"; private String homepage; @@ -762,9 +905,74 @@ public static class Links extends AbstractModelObject implements private String vcsBrowser; private String contribute; + private final org.jreleaser.model.api.project.Project.Links immutable = new org.jreleaser.model.api.project.Project.Links() { + @Override + public String getHomepage() { + return homepage; + } + + @Override + public String getDocumentation() { + return documentation; + } + + @Override + public String getLicense() { + return license; + } + + @Override + public String getBugTracker() { + return bugTracker; + } + + @Override + public String getFaq() { + return faq; + } + + @Override + public String getHelp() { + return help; + } + + @Override + public String getDonation() { + return donation; + } + + @Override + public String getTranslate() { + return translate; + } + + @Override + public String getContact() { + return contact; + } + + @Override + public String getVcsBrowser() { + return vcsBrowser; + } + + @Override + public String getContribute() { + return contribute; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Links.this.asMap(full)); + } + }; + + public org.jreleaser.model.api.project.Project.Links asImmutable() { + return immutable; + } + @Override - public void merge(Project.Links source) { - freezeCheck(); + public void merge(Links source) { this.homepage = merge(this.homepage, source.homepage); this.documentation = merge(this.documentation, source.documentation); this.license = merge(this.license, source.license); @@ -783,7 +991,6 @@ public String getHomepage() { } public void setHomepage(String homepage) { - freezeCheck(); this.homepage = homepage; } @@ -792,7 +999,6 @@ public String getDocumentation() { } public void setDocumentation(String documentation) { - freezeCheck(); this.documentation = documentation; } @@ -801,7 +1007,6 @@ public String getLicense() { } public void setLicense(String license) { - freezeCheck(); this.license = license; } @@ -810,7 +1015,6 @@ public String getBugTracker() { } public void setBugTracker(String bugTracker) { - freezeCheck(); this.bugTracker = bugTracker; } @@ -819,7 +1023,6 @@ public String getFaq() { } public void setFaq(String faq) { - freezeCheck(); this.faq = faq; } @@ -828,7 +1031,6 @@ public String getHelp() { } public void setHelp(String help) { - freezeCheck(); this.help = help; } @@ -837,7 +1039,6 @@ public String getDonation() { } public void setDonation(String donation) { - freezeCheck(); this.donation = donation; } @@ -846,7 +1047,6 @@ public String getTranslate() { } public void setTranslate(String translate) { - freezeCheck(); this.translate = translate; } @@ -855,7 +1055,6 @@ public String getContact() { } public void setContact(String contact) { - freezeCheck(); this.contact = contact; } @@ -864,7 +1063,6 @@ public String getVcsBrowser() { } public void setVcsBrowser(String vcsBrowser) { - freezeCheck(); this.vcsBrowser = vcsBrowser; } @@ -873,7 +1071,6 @@ public String getContribute() { } public void setContribute(String contribute) { - freezeCheck(); this.contribute = contribute; } @@ -926,8 +1123,8 @@ public Collection asLinkTemplates() { } public static final class LinkTemplate { - private String type; - private String url; + private final String type; + private final String url; public LinkTemplate(String type, String url) { this.type = type; @@ -943,4 +1140,92 @@ public TemplateFunction getUrl() { } } } + + public static class VersionPattern extends AbstractModelObject { + private org.jreleaser.model.VersionPattern.Type type; + private String format; + + private final org.jreleaser.model.api.project.Project.VersionPattern immutable = new org.jreleaser.model.api.project.Project.VersionPattern() { + @Override + public org.jreleaser.model.VersionPattern.Type getType() { + return type; + } + + @Override + public String getFormat() { + return format; + } + + @Override + public String toString() { + return VersionPattern.this.toString(); + } + }; + + public VersionPattern() { + this.type = org.jreleaser.model.VersionPattern.Type.SEMVER; + } + + public org.jreleaser.model.api.project.Project.VersionPattern asImmutable() { + return immutable; + } + + public org.jreleaser.model.VersionPattern.Type getType() { + return type; + } + + public void setType(org.jreleaser.model.VersionPattern.Type type) { + this.type = type; + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + + @Override + public String toString() { + String s = type.toString(); + switch (type) { + case CALVER: + case CUSTOM: + if (isNotBlank(format)) { + s += ":" + format; + } + } + return s; + } + + @Override + public void merge(VersionPattern source) { + if (source != null) { + this.type = merge(this.type, source.type); + this.format = merge(this.format, source.format); + } + } + + public static VersionPattern of(String str) { + if (isBlank(str)) return null; + + String[] parts = str.trim().split(":"); + + VersionPattern vp = new VersionPattern(); + switch (parts.length) { + case 1: + vp.setType(org.jreleaser.model.VersionPattern.Type.of(parts[0])); + break; + case 2: + vp.setType(org.jreleaser.model.VersionPattern.Type.of(parts[0])); + vp.setFormat(parts[1].trim()); + break; + default: + throw new IllegalArgumentException(); + } + + return vp; + } + } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/GitService.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/release/BaseReleaser.java similarity index 75% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/GitService.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/release/BaseReleaser.java index 3ec5d6872..f4d0a71a6 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/GitService.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/release/BaseReleaser.java @@ -15,46 +15,41 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.release; import com.fasterxml.jackson.annotation.JsonIgnore; -import org.jreleaser.util.Constants; +import org.jreleaser.model.Active; +import org.jreleaser.model.Constants; +import org.jreleaser.model.UpdateSection; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.AbstractModelObject; +import org.jreleaser.model.internal.common.CommitAuthor; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.EnabledAware; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.util.Env; -import org.jreleaser.util.MustacheUtils; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; +import org.jreleaser.version.SemanticVersion; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static java.util.Collections.unmodifiableMap; +import static java.util.Collections.unmodifiableSet; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.getCapitalizedName; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class GitService> extends AbstractModelObject implements Releaser, CommitAuthorAware, OwnerAware, TimeoutAware { - public static final String KEY_SKIP_RELEASE = "skipRelease"; - public static final String KEY_SKIP_RELEASE_SIGNATURES = "skipReleaseSignatures"; - - public static final String TAG_NAME = "TAG_NAME"; - public static final String PREVIOUS_TAG_NAME = "PREVIOUS_TAG_NAME"; - public static final String RELEASE_NAME = "RELEASE_NAME"; - public static final String OVERWRITE = "OVERWRITE"; - public static final String UPDATE = "UPDATE"; - public static final String PRERELEASE = "PRERELEASE"; - public static final String DRAFT = "DRAFT"; - public static final String SKIP_TAG = "SKIP_TAG"; - public static final String SKIP_RELEASE = "SKIP_RELEASE"; - public static final String BRANCH = "BRANCH"; - public static final String PRERELEASE_PATTERN = "PRERELEASE_PATTERN"; - +public abstract class BaseReleaser> extends AbstractModelObject implements Releaser { @JsonIgnore protected final String serviceName; protected final Changelog changelog = new Changelog(); @@ -65,7 +60,6 @@ public abstract class GitService> extends AbstractModelO protected final Prerelease prerelease = new Prerelease(); @JsonIgnore protected final boolean releaseSupported; - @JsonIgnore protected boolean match = true; protected Boolean enabled; @@ -99,13 +93,12 @@ public abstract class GitService> extends AbstractModelO protected Boolean signatures; protected Active uploadAssets; protected Boolean uploadAssetsEnabled; - @JsonIgnore protected String cachedTagName; @JsonIgnore protected String cachedReleaseName; - protected GitService(String serviceName, boolean releaseSupported) { + protected BaseReleaser(String serviceName, boolean releaseSupported) { this.serviceName = serviceName; this.releaseSupported = releaseSupported; } @@ -121,57 +114,52 @@ public String getServiceName() { } @Override - public void freeze() { - super.freeze(); - changelog.freeze(); - milestone.freeze(); - issues.freeze(); - commitAuthor.freeze(); - update.freeze(); - prerelease.freeze(); + public void merge(S source) { + this.match = source.match; + this.enabled = merge(this.enabled, source.enabled); + this.host = merge(this.host, source.host); + this.owner = merge(this.owner, source.owner); + this.name = merge(this.name, source.name); + this.repoUrl = merge(this.repoUrl, source.repoUrl); + this.repoCloneUrl = merge(this.repoCloneUrl, source.repoCloneUrl); + this.commitUrl = merge(this.commitUrl, source.commitUrl); + this.srcUrl = merge(this.srcUrl, source.srcUrl); + this.downloadUrl = merge(this.downloadUrl, source.downloadUrl); + this.releaseNotesUrl = merge(this.releaseNotesUrl, source.releaseNotesUrl); + this.latestReleaseUrl = merge(this.latestReleaseUrl, source.latestReleaseUrl); + this.issueTrackerUrl = merge(this.issueTrackerUrl, source.issueTrackerUrl); + this.username = merge(this.username, source.username); + this.token = merge(this.token, source.token); + this.tagName = merge(this.tagName, source.tagName); + this.previousTagName = merge(this.previousTagName, source.previousTagName); + this.releaseName = merge(this.releaseName, source.releaseName); + this.branch = merge(this.branch, source.branch); + this.sign = merge(this.sign, source.sign); + this.skipTag = merge(this.skipTag, source.skipTag); + this.skipRelease = merge(this.skipRelease, source.skipRelease); + this.overwrite = merge(this.overwrite, source.overwrite); + this.apiEndpoint = merge(this.apiEndpoint, source.apiEndpoint); + this.connectTimeout = merge(this.connectTimeout, source.connectTimeout); + this.readTimeout = merge(this.readTimeout, source.readTimeout); + this.artifacts = merge(this.artifacts, source.artifacts); + this.files = merge(this.files, source.files); + this.checksums = merge(this.checksums, source.checksums); + this.signatures = merge(this.signatures, source.signatures); + this.uploadAssets = merge(this.uploadAssets, source.uploadAssets); + this.uploadAssetsEnabled = merge(this.uploadAssetsEnabled, source.uploadAssetsEnabled); + setCommitAuthor(source.commitAuthor); + setUpdate(source.update); + setPrerelease(source.prerelease); + setChangelog(source.changelog); + setMilestone(source.milestone); + setIssues(source.issues); } + public abstract String getReverseRepoHost(); + @Override - public void merge(S service) { - freezeCheck(); - this.match = service.match; - this.enabled = merge(this.enabled, service.enabled); - this.host = merge(this.host, service.host); - this.owner = merge(this.owner, service.owner); - this.name = merge(this.name, service.name); - this.repoUrl = merge(this.repoUrl, service.repoUrl); - this.repoCloneUrl = merge(this.repoCloneUrl, service.repoCloneUrl); - this.commitUrl = merge(this.commitUrl, service.commitUrl); - this.srcUrl = merge(this.srcUrl, service.srcUrl); - this.downloadUrl = merge(this.downloadUrl, service.downloadUrl); - this.releaseNotesUrl = merge(this.releaseNotesUrl, service.releaseNotesUrl); - this.latestReleaseUrl = merge(this.latestReleaseUrl, service.latestReleaseUrl); - this.issueTrackerUrl = merge(this.issueTrackerUrl, service.issueTrackerUrl); - this.username = merge(this.username, service.username); - this.token = merge(this.token, service.token); - this.tagName = merge(this.tagName, service.tagName); - this.previousTagName = merge(this.previousTagName, service.previousTagName); - this.releaseName = merge(this.releaseName, service.releaseName); - this.branch = merge(this.branch, service.branch); - this.sign = merge(this.sign, service.sign); - this.skipTag = merge(this.skipTag, service.skipTag); - this.skipRelease = merge(this.skipRelease, service.skipRelease); - this.overwrite = merge(this.overwrite, service.overwrite); - this.apiEndpoint = merge(this.apiEndpoint, service.apiEndpoint); - this.connectTimeout = merge(this.connectTimeout, service.connectTimeout); - this.readTimeout = merge(this.readTimeout, service.readTimeout); - this.artifacts = merge(this.artifacts, service.artifacts); - this.files = merge(this.files, service.files); - this.checksums = merge(this.checksums, service.checksums); - this.signatures = merge(this.signatures, service.signatures); - this.uploadAssets = merge(this.uploadAssets, service.uploadAssets); - this.uploadAssetsEnabled = merge(this.uploadAssetsEnabled, service.uploadAssetsEnabled); - setCommitAuthor(service.commitAuthor); - setUpdate(service.update); - setPrerelease(service.prerelease); - setChangelog(service.changelog); - setMilestone(service.milestone); - setIssues(service.issues); + public boolean isPrerelease() { + return getPrerelease().isEnabled(); } public String getCanonicalRepoName() { @@ -181,14 +169,12 @@ public String getCanonicalRepoName() { return name; } - public abstract String getReverseRepoHost(); - public String getConfiguredTagName() { - return Env.env(TAG_NAME, tagName); + return Env.env(org.jreleaser.model.api.release.Releaser.TAG_NAME, tagName); } public String getConfiguredPreviousTagName() { - return Env.env(PREVIOUS_TAG_NAME, previousTagName); + return Env.env(org.jreleaser.model.api.release.Releaser.PREVIOUS_TAG_NAME, previousTagName); } public String getResolvedTagName(JReleaserModel model) { @@ -213,7 +199,7 @@ public String getEffectiveTagName(JReleaserModel model) { } public String getConfiguredReleaseName() { - return Env.env(RELEASE_NAME, cachedReleaseName); + return Env.env(org.jreleaser.model.api.release.Releaser.RELEASE_NAME, cachedReleaseName); } public String getResolvedReleaseName(JReleaserModel model) { @@ -303,7 +289,6 @@ public boolean isMatch() { } public void setMatch(boolean match) { - freezeCheck(); this.match = match; } @@ -314,7 +299,6 @@ public boolean isEnabled() { @Override public void setEnabled(Boolean enabled) { - freezeCheck(); this.enabled = enabled; } @@ -328,7 +312,6 @@ public String getHost() { } public void setHost(String host) { - freezeCheck(); this.host = host; } @@ -339,7 +322,6 @@ public String getOwner() { @Override public void setOwner(String owner) { - freezeCheck(); this.owner = owner; } @@ -348,7 +330,6 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -357,7 +338,6 @@ public String getRepoUrl() { } public void setRepoUrl(String repoUrl) { - freezeCheck(); this.repoUrl = repoUrl; } @@ -366,7 +346,6 @@ public String getRepoCloneUrl() { } public void setRepoCloneUrl(String repoCloneUrl) { - freezeCheck(); this.repoCloneUrl = repoCloneUrl; } @@ -375,7 +354,6 @@ public String getCommitUrl() { } public void setCommitUrl(String commitUrl) { - freezeCheck(); this.commitUrl = commitUrl; } @@ -384,7 +362,6 @@ public String getSrcUrl() { } public void setSrcUrl(String srcUrl) { - freezeCheck(); this.srcUrl = srcUrl; } @@ -393,7 +370,6 @@ public String getDownloadUrl() { } public void setDownloadUrl(String downloadUrl) { - freezeCheck(); this.downloadUrl = downloadUrl; } @@ -402,7 +378,6 @@ public String getReleaseNotesUrl() { } public void setReleaseNotesUrl(String releaseNotesUrl) { - freezeCheck(); this.releaseNotesUrl = releaseNotesUrl; } @@ -411,7 +386,6 @@ public String getLatestReleaseUrl() { } public void setLatestReleaseUrl(String latestReleaseUrl) { - freezeCheck(); this.latestReleaseUrl = latestReleaseUrl; } @@ -420,7 +394,6 @@ public String getIssueTrackerUrl() { } public void setIssueTrackerUrl(String issueTrackerUrl) { - freezeCheck(); this.issueTrackerUrl = issueTrackerUrl; } @@ -437,7 +410,6 @@ public String getUsername() { } public void setUsername(String username) { - freezeCheck(); this.username = username; } @@ -446,7 +418,6 @@ public String getToken() { } public void setToken(String token) { - freezeCheck(); this.token = token; } @@ -455,7 +426,6 @@ public String getTagName() { } public void setTagName(String tagName) { - freezeCheck(); this.tagName = tagName; } @@ -464,7 +434,6 @@ public String getPreviousTagName() { } public void setPreviousTagName(String previousTagName) { - freezeCheck(); this.previousTagName = previousTagName; } @@ -473,7 +442,6 @@ public String getReleaseName() { } public void setReleaseName(String releaseName) { - freezeCheck(); this.releaseName = releaseName; } @@ -482,16 +450,13 @@ public String getBranch() { } public void setBranch(String branch) { - freezeCheck(); this.branch = branch; } - @Override public CommitAuthor getCommitAuthor() { return commitAuthor; } - @Override public void setCommitAuthor(CommitAuthor commitAuthor) { this.commitAuthor.merge(commitAuthor); } @@ -509,7 +474,6 @@ public boolean isSign() { } public void setSign(Boolean sign) { - freezeCheck(); this.sign = sign; } @@ -542,7 +506,6 @@ public boolean isSkipTag() { } public void setSkipTag(Boolean skipTag) { - freezeCheck(); this.skipTag = skipTag; } @@ -555,7 +518,6 @@ public boolean isSkipRelease() { } public void setSkipRelease(Boolean skipRelease) { - freezeCheck(); this.skipRelease = skipRelease; } @@ -568,7 +530,6 @@ public boolean isOverwrite() { } public void setOverwrite(Boolean overwrite) { - freezeCheck(); this.overwrite = overwrite; } @@ -589,7 +550,6 @@ public String getApiEndpoint() { } public void setApiEndpoint(String apiEndpoint) { - freezeCheck(); this.apiEndpoint = apiEndpoint; } @@ -600,7 +560,6 @@ public Integer getConnectTimeout() { @Override public void setConnectTimeout(Integer connectTimeout) { - freezeCheck(); this.connectTimeout = connectTimeout; } @@ -611,7 +570,6 @@ public Integer getReadTimeout() { @Override public void setReadTimeout(Integer readTimeout) { - freezeCheck(); this.readTimeout = readTimeout; } @@ -619,38 +577,35 @@ public boolean isArtifactsSet() { return artifacts != null; } - public Boolean isArtifacts() { + public boolean isArtifacts() { return artifacts == null || artifacts; } public void setArtifacts(Boolean artifacts) { - freezeCheck(); this.artifacts = artifacts; } - public Boolean isFiles() { + public boolean isFiles() { return files == null || files; } - public boolean isFilesSet() { - return files != null; - } - public void setFiles(Boolean files) { - freezeCheck(); this.files = files; } + public boolean isFilesSet() { + return files != null; + } + public boolean isChecksumsSet() { return checksums != null; } - public Boolean isChecksums() { + public boolean isChecksums() { return checksums == null || checksums; } public void setChecksums(Boolean checksums) { - freezeCheck(); this.checksums = checksums; } @@ -658,12 +613,11 @@ public boolean isSignaturesSet() { return signatures != null; } - public Boolean isSignatures() { + public boolean isSignatures() { return signatures == null || signatures; } public void setSignatures(Boolean signatures) { - freezeCheck(); this.signatures = signatures; } @@ -672,7 +626,6 @@ public Active getUploadAssets() { } public void setUploadAssets(Active uploadAssets) { - freezeCheck(); this.uploadAssets = uploadAssets; } @@ -771,7 +724,7 @@ public Map props(JReleaserModel model) { props.put(Constants.KEY_PROJECT_JAVA_ARTIFACT_ID, project.getJava().getArtifactId()); props.put(Constants.KEY_PROJECT_JAVA_VERSION, project.getJava().getVersion()); props.put(Constants.KEY_PROJECT_JAVA_MAIN_CLASS, project.getJava().getMainClass()); - SemVer jv = SemVer.of(project.getJava().getVersion()); + SemanticVersion jv = SemanticVersion.of(project.getJava().getVersion()); props.put(Constants.KEY_PROJECT_JAVA_VERSION_MAJOR, jv.getMajor()); if (jv.hasMinor()) props.put(Constants.KEY_PROJECT_JAVA_VERSION_MINOR, jv.getMinor()); if (jv.hasPatch()) props.put(Constants.KEY_PROJECT_JAVA_VERSION_PATCH, jv.getPatch()); @@ -825,36 +778,58 @@ public void fillProps(Map props, JReleaserModel model) { props.put(Constants.KEY_ISSUE_TRACKER_URL, getResolvedIssueTrackerUrl(model)); } - public static class Update extends AbstractModelObject implements Domain { + public static final class Update extends AbstractModelObject implements Domain, EnabledAware { private final Set sections = new LinkedHashSet<>(); private Boolean enabled; + private final org.jreleaser.model.api.release.Releaser.Update immutable = new org.jreleaser.model.api.release.Releaser.Update() { + @Override + public Set getSections() { + return unmodifiableSet(sections); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Update.this.asMap(full)); + } + + @Override + public boolean isEnabled() { + return Update.this.isEnabled(); + } + }; + + public org.jreleaser.model.api.release.Releaser.Update asImmutable() { + return immutable; + } + @Override - public void merge(Update update) { - freezeCheck(); - this.enabled = merge(this.enabled, update.enabled); - setSections(merge(this.sections, update.sections)); + public void merge(Update source) { + this.enabled = merge(this.enabled, source.enabled); + setSections(merge(this.sections, source.sections)); } + @Override public boolean isEnabled() { return enabled != null && enabled; } + @Override public void setEnabled(Boolean enabled) { - freezeCheck(); this.enabled = enabled; } + @Override public boolean isEnabledSet() { return enabled != null; } + public Set getSections() { - return freezeWrap(sections); + return sections; } public void setSections(Set sections) { - freezeCheck(); this.sections.clear(); this.sections.addAll(sections); } @@ -868,15 +843,40 @@ public Map asMap(boolean full) { } } - public static class Prerelease extends AbstractModelObject implements Domain { + public static final class Prerelease extends AbstractModelObject implements Domain, EnabledAware { private Boolean enabled; private String pattern; + private final org.jreleaser.model.api.release.Releaser.Prerelease immutable = new org.jreleaser.model.api.release.Releaser.Prerelease() { + @Override + public boolean isPrerelease(String version) { + return Prerelease.this.isPrerelease(version); + } + + @Override + public String getPattern() { + return pattern; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Prerelease.this.asMap(full)); + } + + @Override + public boolean isEnabled() { + return Prerelease.this.isEnabled(); + } + }; + + public org.jreleaser.model.api.release.Releaser.Prerelease asImmutable() { + return immutable; + } + @Override - public void merge(Prerelease prerelease) { - freezeCheck(); - this.enabled = merge(this.enabled, prerelease.enabled); - this.pattern = merge(this.pattern, prerelease.pattern); + public void merge(Prerelease source) { + this.enabled = merge(this.enabled, source.enabled); + this.pattern = merge(this.pattern, source.pattern); } public void disable() { @@ -888,10 +888,14 @@ public boolean isEnabled() { } public void setEnabled(Boolean enabled) { - freezeCheck(); this.enabled = enabled; } + @Override + public boolean isEnabledSet() { + return enabled != null; + } + public boolean isPrerelease(String version) { if (null == enabled) { String configuredPattern = getConfiguredPattern(); @@ -906,7 +910,7 @@ public boolean isPrerelease(String version) { } public String getConfiguredPattern() { - return Env.env(PRERELEASE_PATTERN, pattern); + return Env.env(org.jreleaser.model.api.release.Releaser.PRERELEASE_PATTERN, pattern); } public String getPattern() { @@ -914,7 +918,6 @@ public String getPattern() { } public void setPattern(String pattern) { - freezeCheck(); this.pattern = pattern; } @@ -927,24 +930,42 @@ public Map asMap(boolean full) { } } - public static class Milestone extends AbstractModelObject implements Domain { - public static final String MILESTONE_NAME = "MILESTONE_NAME"; - + public static final class Milestone extends AbstractModelObject implements Domain { private Boolean close; private String name; + private final org.jreleaser.model.api.release.Releaser.Milestone immutable = new org.jreleaser.model.api.release.Releaser.Milestone() { + @Override + public boolean isClose() { + return Milestone.this.isClose(); + } + + @Override + public String getName() { + return name; + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Milestone.this.asMap(full)); + } + }; + @JsonIgnore private String cachedName; + public org.jreleaser.model.api.release.Releaser.Milestone asImmutable() { + return immutable; + } + @Override - public void merge(Milestone milestone) { - freezeCheck(); - this.close = merge(this.close, milestone.close); - this.name = merge(this.name, milestone.name); + public void merge(Milestone source) { + this.close = merge(this.close, source.close); + this.name = merge(this.name, source.name); } public String getConfiguredName() { - return Env.env(MILESTONE_NAME, cachedName); + return Env.env(org.jreleaser.model.api.release.Releaser.Milestone.MILESTONE_NAME, cachedName); } public String getResolvedName(Map props) { @@ -965,12 +986,11 @@ public String getEffectiveName() { return cachedName; } - public Boolean isClose() { + public boolean isClose() { return close == null || close; } public void setClose(Boolean close) { - freezeCheck(); this.close = close; } @@ -983,7 +1003,6 @@ public String getName() { } public void setName(String name) { - freezeCheck(); this.name = name; } @@ -996,20 +1015,39 @@ public Map asMap(boolean full) { } } - public static class Issues extends AbstractModelObject implements Domain, EnabledAware { + public static final class Issues extends AbstractModelObject implements Domain, EnabledAware { private final Label label = new Label(); private String comment; private Boolean enabled; - @Override - public void freeze() { - super.freeze(); - label.freeze(); + private final org.jreleaser.model.api.release.Releaser.Issues immutable = new org.jreleaser.model.api.release.Releaser.Issues() { + @Override + public String getComment() { + return comment; + } + + @Override + public Label getLabel() { + return label.asImmutable(); + } + + @Override + public Map asMap(boolean full) { + return unmodifiableMap(Issues.this.asMap(full)); + } + + @Override + public boolean isEnabled() { + return Issues.this.isEnabled(); + } + }; + + public org.jreleaser.model.api.release.Releaser.Issues asImmutable() { + return immutable; } @Override public void merge(Issues source) { - freezeCheck(); this.comment = merge(this.comment, source.comment); this.enabled = merge(this.enabled, source.enabled); setLabel(source.label); @@ -1022,7 +1060,6 @@ public boolean isEnabled() { @Override public void setEnabled(Boolean enabled) { - freezeCheck(); this.enabled = enabled; } @@ -1036,7 +1073,6 @@ public String getComment() { } public void setComment(String comment) { - freezeCheck(); this.comment = comment; } @@ -1057,14 +1093,39 @@ public Map asMap(boolean full) { return map; } - public static class Label extends AbstractModelObject Map findUploadersByType(String uploaderType) { switch (uploaderType) { - case Artifactory.TYPE: + case org.jreleaser.model.api.upload.ArtifactoryUploader.TYPE: return (Map) artifactory; - case FtpUploader.TYPE: + case org.jreleaser.model.api.upload.FtpUploader.TYPE: return (Map) ftp; - case GiteaUploader.TYPE: + case org.jreleaser.model.api.upload.GiteaUploader.TYPE: return (Map) gitea; - case GitlabUploader.TYPE: + case org.jreleaser.model.api.upload.GitlabUploader.TYPE: return (Map) gitlab; - case HttpUploader.TYPE: + case org.jreleaser.model.api.upload.HttpUploader.TYPE: return (Map) http; - case S3.TYPE: + case org.jreleaser.model.api.upload.S3Uploader.TYPE: return (Map) s3; - case ScpUploader.TYPE: + case org.jreleaser.model.api.upload.ScpUploader.TYPE: return (Map) scp; - case SftpUploader.TYPE: + case org.jreleaser.model.api.upload.SftpUploader.TYPE: return (Map) sftp; } @@ -548,17 +636,4 @@ private boolean isSkip(ExtraProperties props, List keys) { } return false; } - - public static Set supportedUploaders() { - Set set = new LinkedHashSet<>(); - set.add(Artifactory.TYPE); - set.add(FtpUploader.TYPE); - set.add(GiteaUploader.TYPE); - set.add(GitlabUploader.TYPE); - set.add(HttpUploader.TYPE); - set.add(S3.TYPE); - set.add(ScpUploader.TYPE); - set.add(SftpUploader.TYPE); - return Collections.unmodifiableSet(set); - } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Uploader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/upload/Uploader.java similarity index 77% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/Uploader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/upload/Uploader.java index d7e82afe9..7fdad8983 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Uploader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/upload/Uploader.java @@ -15,7 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.upload; + +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Activatable; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Domain; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.common.TimeoutAware; import java.util.List; import java.util.Map; @@ -33,19 +40,19 @@ public interface Uploader extends Domain, Activatable, TimeoutAware, ExtraProper boolean isSnapshotSupported(); - Boolean isArtifacts(); + boolean isArtifacts(); void setArtifacts(Boolean artifacts); boolean isArtifactsSet(); - Boolean isFiles(); + boolean isFiles(); void setFiles(Boolean files); boolean isFilesSet(); - Boolean isSignatures(); + boolean isSignatures(); void setSignatures(Boolean signatures); @@ -53,7 +60,7 @@ public interface Uploader extends Domain, Activatable, TimeoutAware, ExtraProper boolean isChecksumsSet(); - Boolean isChecksums(); + boolean isChecksums(); void setChecksums(Boolean checksums); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/WebUploader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/upload/WebUploader.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/WebUploader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/upload/WebUploader.java index 3d5ce301d..0b28e04c5 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/WebUploader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/upload/WebUploader.java @@ -15,7 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model; +package org.jreleaser.model.internal.upload; + +import org.jreleaser.model.Http; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/util/Artifacts.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/Artifacts.java similarity index 90% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/util/Artifacts.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/Artifacts.java index d345b27b4..9be2f9950 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/util/Artifacts.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/Artifacts.java @@ -15,25 +15,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.util; +package org.jreleaser.model.internal.util; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Assembler; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.ExtraProperties; -import org.jreleaser.model.FileSet; -import org.jreleaser.model.Files; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Glob; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Packager; -import org.jreleaser.model.SdkmanAnnouncer; -import org.jreleaser.model.Upload; -import org.jreleaser.model.Uploader; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.SdkmanAnnouncer; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.files.Files; +import org.jreleaser.model.internal.packagers.Packager; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.upload.Upload; +import org.jreleaser.model.internal.upload.Uploader; import org.jreleaser.util.FileType; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.nio.file.FileSystem; @@ -55,30 +55,30 @@ import static java.nio.file.FileVisitResult.CONTINUE; import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_ARCH; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_EXTENSION; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_FORMAT; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_NAME; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_OS; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_PLATFORM; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_PLATFORM_REPLACED; -import static org.jreleaser.util.Constants.KEY_ARTIFACT_VERSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_ARCHIVE_FORMAT; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_EXTENSION; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM; -import static org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM_REPLACED; -import static org.jreleaser.util.Constants.KEY_PROJECT_EFFECTIVE_VERSION; -import static org.jreleaser.util.Constants.KEY_PROJECT_VERSION; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_ARCH; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE_EXTENSION; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE_FORMAT; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_NAME; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_OS; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_PLATFORM; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_PLATFORM_REPLACED; +import static org.jreleaser.model.Constants.KEY_ARTIFACT_VERSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_ARCHIVE_FORMAT; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_EXTENSION; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM; +import static org.jreleaser.model.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM_REPLACED; +import static org.jreleaser.model.Constants.KEY_PROJECT_EFFECTIVE_VERSION; +import static org.jreleaser.model.Constants.KEY_PROJECT_VERSION; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.capitalize; import static org.jreleaser.util.StringUtils.getFilename; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -282,7 +282,7 @@ public static String resolveDownloadUrl(JReleaserContext context, String package downloadUrl = distribution.getExtraProperty(DOWNLOAD_URL_KEY); } - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (isBlank(downloadUrl)) { if (!service.isSkipRelease() && service.isArtifacts() && service.resolveUploadAssetsEnabled(context.getModel().getProject())) { downloadUrl = service.getDownloadUrl(); @@ -316,7 +316,7 @@ public static String resolveDownloadUrl(JReleaserContext context, String package } public static String resolveDownloadUrl(JReleaserContext context, SdkmanAnnouncer announcer, Distribution distribution, Artifact artifact) { - String packager = SdkmanAnnouncer.NAME; + String packager = org.jreleaser.model.api.announce.SdkmanAnnouncer.TYPE; List keys = Collections.singletonList("skip" + capitalize(packager)); if (isSkip(artifact, keys)) return ""; @@ -336,7 +336,7 @@ public static String resolveDownloadUrl(JReleaserContext context, SdkmanAnnounce downloadUrl = distribution.getExtraProperty(DOWNLOAD_URL_KEY); } - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (isBlank(downloadUrl)) { if (!service.isSkipRelease() && service.isArtifacts() && service.resolveUploadAssetsEnabled(context.getModel().getProject())) { downloadUrl = service.getDownloadUrl(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/util/SdkmanHelper.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/SdkmanHelper.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/util/SdkmanHelper.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/SdkmanHelper.java index f75b8282f..9b42b81fc 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/util/SdkmanHelper.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/SdkmanHelper.java @@ -15,17 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.util; +package org.jreleaser.model.internal.util; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Sdkman; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; import org.jreleaser.util.PlatformUtils; import java.util.Map; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SKIP_SDKMAN; import static org.jreleaser.util.FileType.ZIP; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isTrue; @@ -58,7 +58,7 @@ public static void collectArtifacts(JReleaserContext context, Distribution distr continue; } - if (isTrue(artifact.getExtraProperties().get(Sdkman.SKIP_SDKMAN))) { + if (isTrue(artifact.getExtraProperties().get(SKIP_SDKMAN))) { context.getLogger().debug(RB.$("sdkman.artifact.explicit.skip"), artifact.getEffectivePath(context, distribution).getFileName()); continue; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/util/VersionUtils.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/VersionUtils.java similarity index 74% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/util/VersionUtils.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/VersionUtils.java index c6042f133..83e2849e3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/util/VersionUtils.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/util/VersionUtils.java @@ -15,17 +15,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.util; - -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.util.CalVer; -import org.jreleaser.util.ChronVer; -import org.jreleaser.util.CustomVersion; -import org.jreleaser.util.JavaModuleVersion; -import org.jreleaser.util.JavaRuntimeVersion; -import org.jreleaser.util.SemVer; -import org.jreleaser.util.Version; +package org.jreleaser.model.internal.util; + +import org.jreleaser.logging.JReleaserLogger; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.version.CalVer; +import org.jreleaser.version.ChronVer; +import org.jreleaser.version.CustomVersion; +import org.jreleaser.version.JavaModuleVersion; +import org.jreleaser.version.JavaRuntimeVersion; +import org.jreleaser.version.SemanticVersion; +import org.jreleaser.version.Version; import java.util.LinkedHashSet; import java.util.Set; @@ -40,7 +41,7 @@ public class VersionUtils { private final static UnparseableTags UNPARSEABLE_TAGS = new UnparseableTags(); public static Pattern resolveVersionPattern(JReleaserContext context) { - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser gitService = context.getModel().getRelease().getReleaser(); String tagName = gitService.getConfiguredTagName(); Pattern vp = Pattern.compile(tagName.replaceAll("\\{\\{.*}}", "\\(\\.\\*\\)")); if (!tagName.contains("{{")) { @@ -61,15 +62,15 @@ public static Version version(JReleaserContext context, String tagName, Pattern public static Version version(JReleaserContext context, String tagName, Pattern versionPattern, boolean strict) { switch (context.getModel().getProject().versionPattern().getType()) { case SEMVER: - return semverOf(context, tagName, versionPattern, strict); + return semverOf(context.getLogger(), tagName, versionPattern, strict); case JAVA_RUNTIME: - return javaRuntimeVersionOf(context, tagName, versionPattern, strict); + return javaRuntimeVersionOf(context.getLogger(), tagName, versionPattern, strict); case JAVA_MODULE: - return javaModuleVersionOf(context, tagName, versionPattern, strict); + return javaModuleVersionOf(context.getLogger(), tagName, versionPattern, strict); case CALVER: return calverOf(context, tagName, versionPattern, strict); case CHRONVER: - return chronVer(context, tagName, versionPattern, strict); + return chronVer(context.getLogger(), tagName, versionPattern, strict); case CUSTOM: default: return versionOf(tagName, versionPattern, strict); @@ -79,7 +80,7 @@ public static Version version(JReleaserContext context, String tagName, Pattern public static Version defaultVersion(JReleaserContext context) { switch (context.getModel().getProject().versionPattern().getType()) { case SEMVER: - return SemVer.defaultOf(); + return SemanticVersion.defaultOf(); case JAVA_RUNTIME: return JavaRuntimeVersion.defaultOf(); case JAVA_MODULE: @@ -95,37 +96,37 @@ public static Version defaultVersion(JReleaserContext context) { } } - private static SemVer semverOf(JReleaserContext context, String tagName, Pattern versionPattern, boolean strict) { + private static SemanticVersion semverOf(JReleaserLogger logger, String tagName, Pattern versionPattern, boolean strict) { Matcher matcher = versionPattern.matcher(tagName); if (matcher.matches()) { String tag = matcher.group(1); try { - return SemVer.of(tag); + return SemanticVersion.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } if (!strict && tagName.startsWith("v")) { String tag = tagName.substring(1); try { - return SemVer.of(tag); + return SemanticVersion.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } - return SemVer.defaultOf(); + return SemanticVersion.defaultOf(); } - private static JavaRuntimeVersion javaRuntimeVersionOf(JReleaserContext context, String tagName, Pattern versionPattern, boolean strict) { + private static JavaRuntimeVersion javaRuntimeVersionOf(JReleaserLogger logger, String tagName, Pattern versionPattern, boolean strict) { Matcher matcher = versionPattern.matcher(tagName); if (matcher.matches()) { String tag = matcher.group(1); try { return JavaRuntimeVersion.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } @@ -134,21 +135,21 @@ private static JavaRuntimeVersion javaRuntimeVersionOf(JReleaserContext context, try { return JavaRuntimeVersion.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } return JavaRuntimeVersion.defaultOf(); } - private static JavaModuleVersion javaModuleVersionOf(JReleaserContext context, String tagName, Pattern versionPattern, boolean strict) { + private static JavaModuleVersion javaModuleVersionOf(JReleaserLogger logger, String tagName, Pattern versionPattern, boolean strict) { Matcher matcher = versionPattern.matcher(tagName); if (matcher.matches()) { String tag = matcher.group(1); try { return JavaModuleVersion.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } @@ -157,7 +158,7 @@ private static JavaModuleVersion javaModuleVersionOf(JReleaserContext context, S try { return JavaModuleVersion.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } @@ -172,7 +173,7 @@ private static CalVer calverOf(JReleaserContext context, String tagName, Pattern try { return CalVer.of(format, tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(context.getLogger(), tag, e); } } @@ -181,21 +182,21 @@ private static CalVer calverOf(JReleaserContext context, String tagName, Pattern try { return CalVer.of(format, tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(context.getLogger(), tag, e); } } return CalVer.defaultOf(format); } - private static ChronVer chronVer(JReleaserContext context, String tagName, Pattern versionPattern, boolean strict) { + private static ChronVer chronVer(JReleaserLogger logger, String tagName, Pattern versionPattern, boolean strict) { Matcher matcher = versionPattern.matcher(tagName); if (matcher.matches()) { String tag = matcher.group(1); try { return ChronVer.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } @@ -204,7 +205,7 @@ private static ChronVer chronVer(JReleaserContext context, String tagName, Patte try { return ChronVer.of(tag); } catch (IllegalArgumentException e) { - UNPARSEABLE_TAGS.unparseable(context, tag, e); + UNPARSEABLE_TAGS.unparseable(logger, tag, e); } } @@ -229,10 +230,10 @@ public void clear() { get().clear(); } - public void unparseable(JReleaserContext context, String tag, Exception exception) { + public void unparseable(JReleaserLogger logger, String tag, Exception exception) { if (!get().contains(tag)) { get().add(tag); - context.getLogger().warn(exception.getMessage()); + logger.warn(exception.getMessage()); } } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AnnouncersValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AnnouncersValidator.java similarity index 64% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AnnouncersValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AnnouncersValidator.java index 3134d5f55..435d8203f 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AnnouncersValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AnnouncersValidator.java @@ -15,36 +15,37 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Announce; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.Announce; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.ArticleValidator.validateArticle; -import static org.jreleaser.model.validation.DiscordValidator.validateDiscord; -import static org.jreleaser.model.validation.DiscussionsValidator.validateDiscussions; -import static org.jreleaser.model.validation.GitterValidator.validateGitter; -import static org.jreleaser.model.validation.GoogleChatValidator.validateGoogleChat; -import static org.jreleaser.model.validation.HttpAnnouncerValidator.validateHttpAnnouncers; -import static org.jreleaser.model.validation.MailValidator.validateMail; -import static org.jreleaser.model.validation.MastodonValidator.validateMastodon; -import static org.jreleaser.model.validation.MattermostValidator.validateMattermost; -import static org.jreleaser.model.validation.SdkmanAnnouncerValidator.validateSdkmanAnnouncer; -import static org.jreleaser.model.validation.SlackValidator.validateSlack; -import static org.jreleaser.model.validation.TeamsValidator.validateTeams; -import static org.jreleaser.model.validation.TelegramValidator.validateTelegram; -import static org.jreleaser.model.validation.TwitterValidator.validateTwitter; -import static org.jreleaser.model.validation.WebhooksValidator.validateWebhooks; -import static org.jreleaser.model.validation.ZulipValidator.validateZulip; +import static org.jreleaser.model.internal.validation.ArticleAnnouncerValidator.validateArticle; +import static org.jreleaser.model.internal.validation.DiscordAnnouncerValidator.validateDiscord; +import static org.jreleaser.model.internal.validation.DiscussionsAnnouncerValidator.validateDiscussions; +import static org.jreleaser.model.internal.validation.GitterAnnouncerValidator.validateGitter; +import static org.jreleaser.model.internal.validation.GoogleChatAnnouncerValidator.validateGoogleChat; +import static org.jreleaser.model.internal.validation.HttpAnnouncerValidator.validateHttpAnnouncers; +import static org.jreleaser.model.internal.validation.MastodonAnnouncerValidator.validateMastodon; +import static org.jreleaser.model.internal.validation.MattermostAnnouncerValidator.validateMattermost; +import static org.jreleaser.model.internal.validation.SdkmanAnnouncerValidator.validateSdkmanAnnouncer; +import static org.jreleaser.model.internal.validation.SlackAnnouncerValidator.validateSlack; +import static org.jreleaser.model.internal.validation.SmtpAnnouncerValidator.validateSmtp; +import static org.jreleaser.model.internal.validation.TeamsAnnouncerValidator.validateTeams; +import static org.jreleaser.model.internal.validation.TelegramAnnouncerValidator.validateTelegram; +import static org.jreleaser.model.internal.validation.TwitterAnnouncerValidator.validateTwitter; +import static org.jreleaser.model.internal.validation.WebhooksAnnouncerValidator.validateWebhooks; +import static org.jreleaser.model.internal.validation.ZulipAnnouncerValidator.validateZulip; /** * @author Andres Almiray * @since 0.1.0 */ public abstract class AnnouncersValidator extends Validator { - public static void validateAnnouncers(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateAnnouncers(JReleaserContext context, Mode mode, Errors errors) { Announce announce = context.getModel().getAnnounce(); context.getLogger().debug("announce"); @@ -59,7 +60,7 @@ public static void validateAnnouncers(JReleaserContext context, JReleaserContext validateGitter(context, announce.getGitter(), errors); validateGoogleChat(context, announce.getGoogleChat(), errors); validateHttpAnnouncers(context, mode, announce.getConfiguredHttp(), errors); - validateMail(context, announce.getMail(), errors); + validateSmtp(context, announce.getMail(), errors); validateMastodon(context, announce.getMastodon(), errors); validateMattermost(context, announce.getMattermost(), errors); validateSdkmanAnnouncer(context, announce.getSdkman(), errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AppImageValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AppImagePackagerValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AppImageValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AppImagePackagerValidator.java index 769100515..d33021b45 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AppImageValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AppImagePackagerValidator.java @@ -15,26 +15,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.AppImage; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Icon; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; import org.jreleaser.model.Stereotype; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.AppImagePackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; import java.util.List; -import static org.jreleaser.model.AppImage.SKIP_APPIMAGE; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.api.packagers.AppImagePackager.SKIP_APPIMAGE; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.CollectionUtils.listOf; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -44,11 +45,11 @@ * @author Andres Almiray * @since 1.2.0 */ -public abstract class AppImageValidator extends Validator { - public static void validateAppImage(JReleaserContext context, JReleaserContext.Mode mode, Distribution distribution, AppImage packager, Errors errors) { +public abstract class AppImagePackagerValidator extends Validator { + public static void validateAppImage(JReleaserContext context, Mode mode, Distribution distribution, AppImagePackager packager, Errors errors) { context.getLogger().debug("distribution.{}.appImage", distribution.getName()); JReleaserModel model = context.getModel(); - AppImage parentPackager = model.getPackagers().getAppImage(); + AppImagePackager parentPackager = model.getPackagers().getAppImage(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -57,7 +58,7 @@ public static void validateAppImage(JReleaserContext context, JReleaserContext.M context.getLogger().debug(RB.$("validation.disabled")); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -157,7 +158,7 @@ public static void validateAppImage(JReleaserContext context, JReleaserContext.M } validateCommitAuthor(packager, parentPackager); - AppImage.AppImageRepository repository = packager.getRepository(); + AppImagePackager.AppImageRepository repository = packager.getRepository(); repository.resolveEnabled(model.getProject()); validateTap(context, distribution, repository, parentPackager.getRepository(), "appImage.repository"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArchiveResolver.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArchiveAssemblerResolver.java similarity index 79% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArchiveResolver.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArchiveAssemblerResolver.java index fb89d271d..4add1e89c 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArchiveResolver.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArchiveAssemblerResolver.java @@ -15,12 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Archive; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.ArchiveAssembler; +import org.jreleaser.model.internal.common.Artifact; import org.jreleaser.util.Errors; import org.jreleaser.util.PlatformUtils; @@ -32,17 +32,17 @@ * @author Andres Almiray * @since 0.8.0 */ -public abstract class ArchiveResolver extends Validator { +public abstract class ArchiveAssemblerResolver extends Validator { public static void resolveArchiveOutputs(JReleaserContext context, Errors errors) { - List activeArchives = context.getModel().getAssemble().getActiveArchives(); + List activeArchives = context.getModel().getAssemble().getActiveArchives(); if (!activeArchives.isEmpty()) context.getLogger().debug("assemble.archive"); - for (Archive archive : activeArchives) { + for (ArchiveAssembler archive : activeArchives) { if (archive.isExported()) resolveArchiveOutputs(context, archive, errors); } } - private static void resolveArchiveOutputs(JReleaserContext context, Archive archive, Errors errors) { + private static void resolveArchiveOutputs(JReleaserContext context, ArchiveAssembler archive, Errors errors) { if (archive.isAttachPlatform() && !context.isPlatformSelected(PlatformUtils.getCurrentFull())) return; @@ -52,7 +52,7 @@ private static void resolveArchiveOutputs(JReleaserContext context, Archive arch String archiveName = archive.getResolvedArchiveName(context); - for (Archive.Format format : archive.getFormats()) { + for (org.jreleaser.model.Archive.Format format : archive.getFormats()) { Path path = baseOutputDirectory .resolve(archiveName + "." + format.extension()) .toAbsolutePath(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArchiveValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArchiveAssemblerValidator.java similarity index 83% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArchiveValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArchiveAssemblerValidator.java index 2fea005b6..75cc593e9 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArchiveValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArchiveAssemblerValidator.java @@ -15,14 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; import org.jreleaser.model.Archive; import org.jreleaser.model.Distribution; -import org.jreleaser.model.FileSet; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.ArchiveAssembler; +import org.jreleaser.model.internal.common.FileSet; import org.jreleaser.util.Errors; import java.util.Map; @@ -33,12 +35,12 @@ * @author Andres Almiray * @since 0.8.0 */ -public abstract class ArchiveValidator extends Validator { - public static void validateArchive(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { - Map archive = context.getModel().getAssemble().getArchive(); +public abstract class ArchiveAssemblerValidator extends Validator { + public static void validateArchive(JReleaserContext context, Mode mode, Errors errors) { + Map archive = context.getModel().getAssemble().getArchive(); if (!archive.isEmpty()) context.getLogger().debug("assemble.archive"); - for (Map.Entry e : archive.entrySet()) { + for (Map.Entry e : archive.entrySet()) { e.getValue().setName(e.getKey()); if (mode.validateConfig() || mode.validateAssembly()) { validateArchive(context, mode, e.getValue(), errors); @@ -46,7 +48,7 @@ public static void validateArchive(JReleaserContext context, JReleaserContext.Mo } } - private static void validateArchive(JReleaserContext context, JReleaserContext.Mode mode, Archive archive, Errors errors) { + private static void validateArchive(JReleaserContext context, Mode mode, ArchiveAssembler archive, Errors errors) { context.getLogger().debug("assemble.archive.{}", archive.getName()); if (!archive.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArticleValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArticleAnnouncerValidator.java similarity index 88% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArticleValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArticleAnnouncerValidator.java index 90649480e..918e5275b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArticleValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArticleAnnouncerValidator.java @@ -15,13 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Article; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Repository; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.ArticleAnnouncer; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -33,16 +32,16 @@ * @author Andres Almiray * @since 0.6.0 */ -public abstract class ArticleValidator extends Validator { - public static void validateArticle(JReleaserContext context, Article article, Errors errors) { +public abstract class ArticleAnnouncerValidator extends Validator { + public static void validateArticle(JReleaserContext context, ArticleAnnouncer article, Errors errors) { context.getLogger().debug("announce.article"); if (!article.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); return; } - GitService service = context.getModel().getRelease().getGitService(); - Repository repository = article.getRepository(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); + ArticleAnnouncer.Repository repository = article.getRepository(); validateCommitAuthor(article, service); validateOwner(repository, service); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArtifactoryValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArtifactoryUploaderValidator.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArtifactoryValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArtifactoryUploaderValidator.java index a6f0a8c18..8dc0f70e0 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ArtifactoryValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ArtifactoryUploaderValidator.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifactory; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.ArtifactoryUploader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -30,12 +31,12 @@ * @author Andres Almiray * @since 0.3.0 */ -public abstract class ArtifactoryValidator extends Validator { - public static void validateArtifactory(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { - Map artifactory = context.getModel().getUpload().getArtifactory(); +public abstract class ArtifactoryUploaderValidator extends Validator { + public static void validateArtifactory(JReleaserContext context, Mode mode, Errors errors) { + Map artifactory = context.getModel().getUpload().getArtifactory(); if (!artifactory.isEmpty()) context.getLogger().debug("upload.artifactory"); - for (Map.Entry e : artifactory.entrySet()) { + for (Map.Entry e : artifactory.entrySet()) { e.getValue().setName(e.getKey()); if (mode.validateConfig()) { validateArtifactory(context, mode, e.getValue(), errors); @@ -43,7 +44,7 @@ public static void validateArtifactory(JReleaserContext context, JReleaserContex } } - private static void validateArtifactory(JReleaserContext context, JReleaserContext.Mode mode, Artifactory artifactory, Errors errors) { + private static void validateArtifactory(JReleaserContext context, Mode mode, ArtifactoryUploader artifactory, Errors errors) { context.getLogger().debug("upload.artifactory.{}", artifactory.getName()); if (!artifactory.isActiveSet()) { @@ -110,14 +111,14 @@ private static void validateArtifactory(JReleaserContext context, JReleaserConte validateTimeout(artifactory); - for (Artifactory.ArtifactoryRepository repository : artifactory.getRepositories()) { + for (ArtifactoryUploader.ArtifactoryRepository repository : artifactory.getRepositories()) { if (!repository.isActiveSet()) { repository.setActive(artifactory.getActive()); } repository.resolveEnabled(context.getModel().getProject()); } - if (artifactory.getRepositories().stream().noneMatch(Artifactory.ArtifactoryRepository::isEnabled)) { + if (artifactory.getRepositories().stream().noneMatch(ArtifactoryUploader.ArtifactoryRepository::isEnabled)) { errors.warning(RB.$("validation_artifactory_disabled_repositories", "artifactory." + artifactory.getName())); context.getLogger().debug(RB.$("validation.disabled.no.repositories")); artifactory.disable(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AsdfValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AsdfPackagerValidator.java similarity index 77% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AsdfValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AsdfPackagerValidator.java index 3b5cf81a7..735c5e7ad 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AsdfValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AsdfPackagerValidator.java @@ -15,23 +15,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Asdf; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.AsdfPackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; import java.util.List; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -39,11 +39,11 @@ * @author Andres Almiray * @since 1.2.0 */ -public abstract class AsdfValidator extends Validator { - public static void validateAsdf(JReleaserContext context, Distribution distribution, Asdf packager, Errors errors) { +public abstract class AsdfPackagerValidator extends Validator { + public static void validateAsdf(JReleaserContext context, Distribution distribution, AsdfPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.asdf", distribution.getName()); JReleaserModel model = context.getModel(); - Asdf parentPackager = model.getPackagers().getAsdf(); + AsdfPackager parentPackager = model.getPackagers().getAsdf(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -52,7 +52,7 @@ public static void validateAsdf(JReleaserContext context, Distribution distribut context.getLogger().debug(RB.$("validation.disabled")); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -87,7 +87,7 @@ public static void validateAsdf(JReleaserContext context, Distribution distribut packager.getRepository().setTapName("asdf-" + distribution.getName()); validateCommitAuthor(packager, parentPackager); - Asdf.AsdfRepository repository = packager.getRepository(); + AsdfPackager.AsdfRepository repository = packager.getRepository(); repository.resolveEnabled(model.getProject()); validateTap(context, distribution, repository, parentPackager.getRepository(), "asdf.repository"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AssemblersResolver.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AssemblersResolver.java similarity index 73% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AssemblersResolver.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AssemblersResolver.java index b8a8b4b80..780c544b1 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AssemblersResolver.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AssemblersResolver.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; -import org.jreleaser.model.Environment; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.environment.Environment; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.ArchiveResolver.resolveArchiveOutputs; -import static org.jreleaser.model.validation.JlinkResolver.resolveJlinkOutputs; -import static org.jreleaser.model.validation.JpackageResolver.resolveJpackageOutputs; -import static org.jreleaser.model.validation.NativeImageResolver.resolveNativeImageOutputs; +import static org.jreleaser.model.internal.validation.ArchiveAssemblerResolver.resolveArchiveOutputs; +import static org.jreleaser.model.internal.validation.JlinkAssemblerResolver.resolveJlinkOutputs; +import static org.jreleaser.model.internal.validation.JpackageAssemblerResolver.resolveJpackageOutputs; +import static org.jreleaser.model.internal.validation.NativeImageAssemblerResolver.resolveNativeImageOutputs; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AssemblersValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AssemblersValidator.java similarity index 72% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AssemblersValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AssemblersValidator.java index 86876b0ba..bfa23d28c 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/AssemblersValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/AssemblersValidator.java @@ -15,15 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Archive; -import org.jreleaser.model.Assemble; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jlink; -import org.jreleaser.model.Jpackage; -import org.jreleaser.model.NativeImage; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.ArchiveAssembler; +import org.jreleaser.model.internal.assemble.Assemble; +import org.jreleaser.model.internal.assemble.JlinkAssembler; +import org.jreleaser.model.internal.assemble.JpackageAssembler; +import org.jreleaser.model.internal.assemble.NativeImageAssembler; import org.jreleaser.util.Errors; import java.util.ArrayList; @@ -31,18 +32,18 @@ import java.util.List; import java.util.Map; -import static org.jreleaser.model.validation.ArchiveValidator.validateArchive; -import static org.jreleaser.model.validation.JlinkValidator.validateJlink; -import static org.jreleaser.model.validation.JpackageValidator.postValidateJpackage; -import static org.jreleaser.model.validation.JpackageValidator.validateJpackage; -import static org.jreleaser.model.validation.NativeImageValidator.validateNativeImage; +import static org.jreleaser.model.internal.validation.ArchiveAssemblerValidator.validateArchive; +import static org.jreleaser.model.internal.validation.JlinkAssemblerValidator.validateJlink; +import static org.jreleaser.model.internal.validation.JpackageAssemblerValidator.postValidateJpackage; +import static org.jreleaser.model.internal.validation.JpackageAssemblerValidator.validateJpackage; +import static org.jreleaser.model.internal.validation.NativeImageAssemblerValidator.validateNativeImage; /** * @author Andres Almiray * @since 0.2.0 */ public abstract class AssemblersValidator extends Validator { - public static void validateAssemblers(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateAssemblers(JReleaserContext context, Mode mode, Errors errors) { Assemble assemble = context.getModel().getAssemble(); context.getLogger().debug("assemble"); @@ -58,19 +59,19 @@ public static void validateAssemblers(JReleaserContext context, JReleaserContext // validate unique distribution names between exported assemblers Map> byDistributionName = new LinkedHashMap<>(); - for (Archive archive : assemble.getActiveArchives()) { + for (ArchiveAssembler archive : assemble.getActiveArchives()) { List types = byDistributionName.computeIfAbsent(archive.getName(), k -> new ArrayList<>()); types.add(archive.getType()); } - for (Jlink jlink : assemble.getActiveJlinks()) { + for (JlinkAssembler jlink : assemble.getActiveJlinks()) { List types = byDistributionName.computeIfAbsent(jlink.getName(), k -> new ArrayList<>()); if (jlink.isExported()) types.add(jlink.getType()); } - for (Jpackage jpackage : assemble.getActiveJpackages()) { + for (JpackageAssembler jpackage : assemble.getActiveJpackages()) { List types = byDistributionName.computeIfAbsent(jpackage.getName(), k -> new ArrayList<>()); if (jpackage.isExported()) types.add(jpackage.getType()); } - for (NativeImage nativeImage : assemble.getActiveNativeImages()) { + for (NativeImageAssembler nativeImage : assemble.getActiveNativeImages()) { List types = byDistributionName.computeIfAbsent(nativeImage.getName(), k -> new ArrayList<>()); if (nativeImage.isExported()) types.add(nativeImage.getType()); } @@ -98,7 +99,7 @@ public static void validateAssemblers(JReleaserContext context, JReleaserContext } } - public static void postValidateAssemblers(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void postValidateAssemblers(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("assemble"); postValidateJpackage(context, mode, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitServiceValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/BaseReleaserValidator.java similarity index 87% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitServiceValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/BaseReleaserValidator.java index 14ebadd49..662dc2f8c 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitServiceValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/BaseReleaserValidator.java @@ -15,20 +15,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.config.JReleaserConfigLoader; import org.jreleaser.model.Active; -import org.jreleaser.model.Changelog; -import org.jreleaser.model.GenericGit; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Github; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Project; -import org.jreleaser.model.Signing; import org.jreleaser.model.UpdateSection; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.Changelog; +import org.jreleaser.model.internal.release.GenericGitReleaser; +import org.jreleaser.model.internal.release.GithubReleaser; import org.jreleaser.util.Errors; import java.io.IOException; @@ -43,14 +43,14 @@ import static java.lang.System.lineSeparator; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.GitService.BRANCH; -import static org.jreleaser.model.GitService.Milestone.MILESTONE_NAME; -import static org.jreleaser.model.GitService.OVERWRITE; -import static org.jreleaser.model.GitService.RELEASE_NAME; -import static org.jreleaser.model.GitService.SKIP_RELEASE; -import static org.jreleaser.model.GitService.SKIP_TAG; -import static org.jreleaser.model.GitService.TAG_NAME; -import static org.jreleaser.model.GitService.UPDATE; +import static org.jreleaser.model.api.release.Releaser.BRANCH; +import static org.jreleaser.model.api.release.Releaser.Milestone.MILESTONE_NAME; +import static org.jreleaser.model.api.release.Releaser.OVERWRITE; +import static org.jreleaser.model.api.release.Releaser.RELEASE_NAME; +import static org.jreleaser.model.api.release.Releaser.SKIP_RELEASE; +import static org.jreleaser.model.api.release.Releaser.SKIP_TAG; +import static org.jreleaser.model.api.release.Releaser.TAG_NAME; +import static org.jreleaser.model.api.release.Releaser.UPDATE; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -58,10 +58,10 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class GitServiceValidator extends Validator { +public abstract class BaseReleaserValidator extends Validator { private static final String DEFAULT_CHANGELOG_TPL = "src/jreleaser/templates/changelog.tpl"; - public static void validateGitService(JReleaserContext context, JReleaserContext.Mode mode, GitService service, Errors errors) { + public static void validateGitService(JReleaserContext context, Mode mode, BaseReleaser service, Errors errors) { JReleaserModel model = context.getModel(); Project project = model.getProject(); @@ -75,7 +75,7 @@ public static void validateGitService(JReleaserContext context, JReleaserContext } if (!mode.validateStandalone()) { - if (isBlank(service.getOwner()) && !(service instanceof GenericGit)) { + if (isBlank(service.getOwner()) && !(service instanceof GenericGitReleaser)) { errors.configuration(RB.$("validation_must_not_be_blank", service.getServiceName() + ".owner")); } } @@ -179,7 +179,7 @@ public static void validateGitService(JReleaserContext context, JReleaserContext service.getMilestone().getName(), "{{tagName}}")); - GitService.Issues issues = service.getIssues(); + BaseReleaser.Issues issues = service.getIssues(); if (isBlank(issues.getComment())) { issues.setComment("Released in {{tagName}} -> {{releaseNotesUrl}}"); } @@ -213,15 +213,15 @@ public static void validateGitService(JReleaserContext context, JReleaserContext if (project.isSnapshot()) { boolean generate = false; - if (service instanceof Github) { - Github gh = (Github) service; + if (service instanceof GithubReleaser) { + GithubReleaser gh = (GithubReleaser) service; generate = gh.getReleaseNotes().isEnabled(); } if (!generate) { service.getChangelog().setEnabled(true); service.getChangelog().setExternal(null); - service.getChangelog().setSort(Changelog.Sort.DESC); + service.getChangelog().setSort(org.jreleaser.model.Changelog.Sort.DESC); } if (service.isReleaseSupported()) { service.setOverwrite(true); @@ -231,8 +231,8 @@ public static void validateGitService(JReleaserContext context, JReleaserContext if (!service.getChangelog().isEnabledSet()) { boolean generate = false; - if (service instanceof Github) { - Github gh = (Github) service; + if (service instanceof GithubReleaser) { + GithubReleaser gh = (GithubReleaser) service; generate = gh.getReleaseNotes().isEnabled(); } @@ -247,7 +247,7 @@ public static void validateGitService(JReleaserContext context, JReleaserContext if (mode.validateConfig()) { if (service.isSign()) { - if (model.getSigning().getMode() == Signing.Mode.COSIGN) { + if (model.getSigning().getMode() == org.jreleaser.model.Signing.Mode.COSIGN) { service.setSign(false); errors.warning(RB.$("validation_git_signing_cosign", service.getServiceName())); return; @@ -263,7 +263,7 @@ public static void validateGitService(JReleaserContext context, JReleaserContext } } - private static void validateChangelog(JReleaserContext context, GitService service, Errors errors) { + private static void validateChangelog(JReleaserContext context, BaseReleaser service, Errors errors) { Changelog changelog = service.getChangelog(); if (isNotBlank(changelog.getExternal())) { @@ -276,12 +276,12 @@ private static void validateChangelog(JReleaserContext context, GitService servi } // Special case for GitHub - if (service instanceof Github) { - Github gh = (Github) service; + if (service instanceof GithubReleaser) { + GithubReleaser gh = (GithubReleaser) service; boolean generate = gh.getReleaseNotes().isEnabled(); if (generate && changelog.isEnabled()) { - errors.configuration(RB.$("validation_github_releasenotes_changelog")); + errors.configuration(RB.$("validation_github_releasenotesgetChangelog")); return; } } @@ -289,7 +289,7 @@ private static void validateChangelog(JReleaserContext context, GitService servi if (!changelog.resolveFormatted(context.getModel().getProject())) return; if (null == changelog.getSort()) { - changelog.setSort(Changelog.Sort.DESC); + changelog.setSort(org.jreleaser.model.Changelog.Sort.DESC); } if (isBlank(changelog.getFormat())) { @@ -336,7 +336,7 @@ private static void validateChangelog(JReleaserContext context, GitService servi .collect(groupingBy(Changelog.Category::getTitle)); byTitle.forEach((title, categories) -> { if (categories.size() > 1) { - errors.configuration(RB.$("validation_changelog_multiple_categories", service.getServiceName(), title)); + errors.configuration(RB.$("validationgetChangelog_multiple_categories", service.getServiceName(), title)); } }); } @@ -379,7 +379,7 @@ private static void loadPreset(JReleaserContext context, Changelog changelog, Er String preset = changelog.getPreset().toLowerCase(Locale.ENGLISH).trim(); String presetFileName = "META-INF/jreleaser/changelog/preset-" + preset + ".yml"; - InputStream inputStream = GitServiceValidator.class.getClassLoader() + InputStream inputStream = BaseReleaserValidator.class.getClassLoader() .getResourceAsStream(presetFileName); if (null != inputStream) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/BrewValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/BrewPackagerValidator.java similarity index 81% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/BrewValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/BrewPackagerValidator.java index 30c21ab96..4ada9bdae 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/BrewValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/BrewPackagerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Brew; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.BrewPackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; import org.jreleaser.util.PlatformUtils; @@ -35,10 +35,10 @@ import java.util.stream.Collectors; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.Brew.SKIP_BREW; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.api.packagers.BrewPackager.SKIP_BREW; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; import static org.jreleaser.util.StringUtils.isTrue; @@ -47,11 +47,11 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class BrewValidator extends Validator { - public static void validateBrew(JReleaserContext context, Distribution distribution, Brew packager, Errors errors) { +public abstract class BrewPackagerValidator extends Validator { + public static void validateBrew(JReleaserContext context, Distribution distribution, BrewPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.brew", distribution.getName()); JReleaserModel model = context.getModel(); - Brew parentPackager = model.getPackagers().getBrew(); + BrewPackager parentPackager = model.getPackagers().getBrew(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -62,7 +62,7 @@ public static void validateBrew(JReleaserContext context, Distribution distribut packager.getCask().disable(); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -70,15 +70,15 @@ public static void validateBrew(JReleaserContext context, Distribution distribut return; } - Brew.Cask cask = preValidateCask(distribution, packager, parentPackager); + BrewPackager.Cask cask = preValidateCask(distribution, packager, parentPackager); if (!packager.isMultiPlatformSet() && parentPackager.isMultiPlatformSet()) { packager.setMultiPlatform(parentPackager.isMultiPlatform()); } if (packager.isMultiPlatform() && - (distribution.getType() == Distribution.DistributionType.SINGLE_JAR || - distribution.getType() == Distribution.DistributionType.JAVA_BINARY || - distribution.getType() == Distribution.DistributionType.NATIVE_PACKAGE)) { + (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE)) { packager.setMultiPlatform(false); } if (packager.isMultiPlatform()) { @@ -95,7 +95,7 @@ public static void validateBrew(JReleaserContext context, Distribution distribut } validateCommitAuthor(packager, parentPackager); - Brew.HomebrewTap tap = packager.getTap(); + BrewPackager.HomebrewTap tap = packager.getTap(); tap.resolveEnabled(model.getProject()); validateTap(context, distribution, tap, parentPackager.getTap(), "brew.tap"); validateTemplate(context, distribution, packager, parentPackager, errors); @@ -105,7 +105,7 @@ public static void validateBrew(JReleaserContext context, Distribution distribut packager.setDownloadUrl(parentPackager.getDownloadUrl()); } - List dependencies = new ArrayList<>(parentPackager.getDependenciesAsList()); + List dependencies = new ArrayList<>(parentPackager.getDependenciesAsList()); dependencies.addAll(packager.getDependenciesAsList()); packager.setDependenciesAsList(dependencies); @@ -118,14 +118,14 @@ public static void validateBrew(JReleaserContext context, Distribution distribut } } - private static Brew.Cask preValidateCask(Distribution distribution, Brew packager, Brew parentPackager) { - Brew.Cask cask = packager.getCask(); - if (distribution.getType() == Distribution.DistributionType.SINGLE_JAR) { + private static BrewPackager.Cask preValidateCask(Distribution distribution, BrewPackager packager, BrewPackager parentPackager) { + BrewPackager.Cask cask = packager.getCask(); + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR) { packager.getCask().disable(); return cask; } - Brew.Cask parentCask = parentPackager.getCask(); + BrewPackager.Cask parentCask = parentPackager.getCask(); if (!cask.isEnabledSet() && parentCask.isEnabledSet()) { cask.setEnabled(parentCask.isEnabled()); @@ -134,7 +134,7 @@ private static Brew.Cask preValidateCask(Distribution distribution, Brew package return cask; } - private static void validateCask(JReleaserContext context, Distribution distribution, Brew packager, Brew.Cask cask, Errors errors) { + private static void validateCask(JReleaserContext context, Distribution distribution, BrewPackager packager, BrewPackager.Cask cask, Errors errors) { if (cask == null || cask.isEnabledSet() && !cask.isEnabled()) { return; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ChecksumValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ChecksumValidator.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ChecksumValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ChecksumValidator.java index 45e816093..589a7efc4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ChecksumValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ChecksumValidator.java @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; -import org.jreleaser.model.Checksum; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.checksum.Checksum; import org.jreleaser.util.Algorithm; import org.jreleaser.util.Errors; @@ -29,7 +30,7 @@ * @since 0.4.0 */ public abstract class ChecksumValidator extends Validator { - public static void validateChecksum(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateChecksum(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("checksum"); Checksum checksum = context.getModel().getChecksum(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ChocolateyValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ChocolateyPackagerValidator.java similarity index 78% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ChocolateyValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ChocolateyPackagerValidator.java index aeed80ac3..0df04cfc0 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ChocolateyValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ChocolateyPackagerValidator.java @@ -15,46 +15,46 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Chocolatey; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Project; -import org.jreleaser.util.CalVer; -import org.jreleaser.util.ChronVer; -import org.jreleaser.util.CustomVersion; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.ChocolateyPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; -import org.jreleaser.util.JavaModuleVersion; -import org.jreleaser.util.JavaRuntimeVersion; -import org.jreleaser.util.SemVer; +import org.jreleaser.version.CalVer; +import org.jreleaser.version.ChronVer; +import org.jreleaser.version.CustomVersion; +import org.jreleaser.version.JavaModuleVersion; +import org.jreleaser.version.JavaRuntimeVersion; +import org.jreleaser.version.SemanticVersion; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List; -import static org.jreleaser.model.Chocolatey.CHOCOLATEY_API_KEY; -import static org.jreleaser.model.Chocolatey.DEFAULT_CHOCOLATEY_PUSH_URL; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.api.packagers.ChocolateyPackager.CHOCOLATEY_API_KEY; +import static org.jreleaser.model.api.packagers.ChocolateyPackager.DEFAULT_CHOCOLATEY_PUSH_URL; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class ChocolateyValidator extends Validator { - public static void validateChocolatey(JReleaserContext context, Distribution distribution, Chocolatey packager, Errors errors) { +public abstract class ChocolateyPackagerValidator extends Validator { + public static void validateChocolatey(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.chocolatey", distribution.getName()); JReleaserModel model = context.getModel(); - Chocolatey parentPackager = model.getPackagers().getChocolatey(); + ChocolateyPackager parentPackager = model.getPackagers().getChocolatey(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -64,7 +64,7 @@ public static void validateChocolatey(JReleaserContext context, Distribution dis context.getLogger().debug(RB.$("validation.disabled")); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -85,7 +85,7 @@ public static void validateChocolatey(JReleaserContext context, Distribution dis } validateCommitAuthor(packager, parentPackager); - Chocolatey.ChocolateyBucket bucket = packager.getBucket(); + ChocolateyPackager.ChocolateyRepository bucket = packager.getBucket(); bucket.resolveEnabled(model.getProject()); validateTap(context, distribution, bucket, parentPackager.getBucket(), "chocolatey.bucket"); validateTemplate(context, distribution, packager, parentPackager, errors); @@ -142,7 +142,7 @@ public static void validateChocolatey(JReleaserContext context, Distribution dis packager.setApiKey( checkProperty(context, CHOCOLATEY_API_KEY, - "chocolatey.apiKey", + "chocolatey.internal.mutableKey", packager.getApiKey(), errors, context.isDryrun())); @@ -156,7 +156,7 @@ public static void validateChocolatey(JReleaserContext context, Distribution dis String packageVersion = resolveTemplate(packager.getPackageVersion(), context.getModel().props()); switch (project.versionPattern().getType()) { case SEMVER: - checkSemver(context, distribution, packager, SemVer.of(packageVersion), errors); + checkSemver(context, distribution, packager, SemanticVersion.of(packageVersion), errors); break; case JAVA_RUNTIME: checkJavaRuntime(context, distribution, packager, JavaRuntimeVersion.of(packageVersion), errors); @@ -180,7 +180,7 @@ public static void validateChocolatey(JReleaserContext context, Distribution dis } } - private static void checkSemver(JReleaserContext context, Distribution distribution, Chocolatey packager, SemVer version, Errors errors) { + private static void checkSemver(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, SemanticVersion version, Errors errors) { if (version.hasBuild()) { throw new IllegalArgumentException(); } @@ -215,7 +215,7 @@ private static void checkSemver(JReleaserContext context, Distribution distribut } } - private static void checkJavaRuntime(JReleaserContext context, Distribution distribution, Chocolatey packager, JavaRuntimeVersion version, Errors errors) { + private static void checkJavaRuntime(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, JavaRuntimeVersion version, Errors errors) { if (version.hasBuild()) { throw new IllegalArgumentException(); } @@ -225,17 +225,17 @@ private static void checkJavaRuntime(JReleaserContext context, Distribution dist } } - private static void checkJavaModule(JReleaserContext context, Distribution distribution, Chocolatey packager, JavaModuleVersion version, Errors errors) { + private static void checkJavaModule(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, JavaModuleVersion version, Errors errors) { if (version.hasBuild()) { throw new IllegalArgumentException(); } } - private static void checkCalVer(JReleaserContext context, Distribution distribution, Chocolatey packager, CalVer version, Errors errors) { + private static void checkCalVer(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, CalVer version, Errors errors) { } - private static void checkChronVer(JReleaserContext context, Distribution distribution, Chocolatey packager, ChronVer version, Errors errors) { + private static void checkChronVer(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, ChronVer version, Errors errors) { if (version.hasChangeset()) { ChronVer.Changeset changeset = version.getChangeset(); if (changeset.hasTag() || changeset.hasChange2()) { @@ -244,11 +244,11 @@ private static void checkChronVer(JReleaserContext context, Distribution distrib } } - private static void checkCustomVersion(JReleaserContext context, Distribution distribution, Chocolatey packager, CustomVersion version, Errors errors) { + private static void checkCustomVersion(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, CustomVersion version, Errors errors) { } - public static void postValidateChocolatey(JReleaserContext context, Distribution distribution, Chocolatey packager, Errors errors) { + public static void postValidateChocolatey(JReleaserContext context, Distribution distribution, ChocolateyPackager packager, Errors errors) { if (!packager.isEnabled()) return; context.getLogger().debug("distribution.{}.chocolatey", distribution.getName()); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/CodebergValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/CodebergReleaserValidator.java similarity index 78% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/CodebergValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/CodebergReleaserValidator.java index 0503b92d7..da9d2b97d 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/CodebergValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/CodebergReleaserValidator.java @@ -15,21 +15,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; -import org.jreleaser.model.Codeberg; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.CodebergReleaser; import org.jreleaser.util.Errors; -import static org.jreleaser.model.GitService.DRAFT; -import static org.jreleaser.model.GitService.PRERELEASE_PATTERN; +import static org.jreleaser.model.api.release.Releaser.DRAFT; +import static org.jreleaser.model.api.release.Releaser.PRERELEASE_PATTERN; + /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class CodebergValidator extends GitServiceValidator { - public static boolean validateCodeberg(JReleaserContext context, JReleaserContext.Mode mode, Codeberg codeberg, Errors errors) { +public abstract class CodebergReleaserValidator extends BaseReleaserValidator { + public static boolean validateCodeberg(JReleaserContext context, Mode mode, CodebergReleaser codeberg, Errors errors) { if (null == codeberg) return false; context.getLogger().debug("release.codeberg"); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/CommandHooksValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/CommandHooksValidator.java similarity index 87% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/CommandHooksValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/CommandHooksValidator.java index 455360ccc..6a0543660 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/CommandHooksValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/CommandHooksValidator.java @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.CommandHook; -import org.jreleaser.model.CommandHooks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.hooks.CommandHook; +import org.jreleaser.model.internal.hooks.CommandHooks; import org.jreleaser.util.Errors; import static org.jreleaser.util.StringUtils.isBlank; @@ -31,7 +32,7 @@ * @since 1.2.0 */ public abstract class CommandHooksValidator extends Validator { - public static void validateCommandHooks(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateCommandHooks(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("hooks.command"); CommandHooks hooks = context.getModel().getHooks().getCommand(); @@ -60,7 +61,7 @@ public static void validateCommandHooks(JReleaserContext context, JReleaserConte } } - private static void validateCommandHook(JReleaserContext context, JReleaserContext.Mode mode, CommandHook hook, String type, int index, Errors errors) { + private static void validateCommandHook(JReleaserContext context, Mode mode, CommandHook hook, String type, int index, Errors errors) { context.getLogger().debug("hooks.command.{}[{}]", type, index); if (!hook.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DiscordValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DiscordAnnouncerValidator.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DiscordValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DiscordAnnouncerValidator.java index 6f590f0bb..606819bc8 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DiscordValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DiscordAnnouncerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Discord; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.DiscordAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Discord.DISCORD_WEBHOOK; +import static org.jreleaser.model.api.announce.DiscordAnnouncer.DISCORD_WEBHOOK; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -32,10 +32,10 @@ * @author Andres Almiray * @since 0.2.0 */ -public abstract class DiscordValidator extends Validator { +public abstract class DiscordAnnouncerValidator extends Validator { private static final String DEFAULT_DISCORD_TPL = "src/jreleaser/templates/discord.tpl"; - public static void validateDiscord(JReleaserContext context, Discord discord, Errors errors) { + public static void validateDiscord(JReleaserContext context, DiscordAnnouncer discord, Errors errors) { context.getLogger().debug("announce.discord"); if (!discord.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DiscussionsValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DiscussionsAnnouncerValidator.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DiscussionsValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DiscussionsAnnouncerValidator.java index 053eeae59..32aa3bdb5 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DiscussionsValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DiscussionsAnnouncerValidator.java @@ -15,12 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Discussions; -import org.jreleaser.model.Github; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.DiscussionsAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; @@ -32,17 +31,17 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class DiscussionsValidator extends Validator { +public abstract class DiscussionsAnnouncerValidator extends Validator { private static final String DEFAULT_DISCUSSIONS_TPL = "src/jreleaser/templates/discussions.tpl"; - public static void validateDiscussions(JReleaserContext context, Discussions discussions, Errors errors) { + public static void validateDiscussions(JReleaserContext context, DiscussionsAnnouncer discussions, Errors errors) { context.getLogger().debug("announce.discussions"); if (!discussions.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); return; } - if (!Github.NAME.equals(context.getModel().getRelease().getGitService().getServiceName())) { + if (!org.jreleaser.model.api.release.GithubReleaser.TYPE.equals(context.getModel().getRelease().getReleaser().getServiceName())) { errors.configuration(RB.$("validation_discussions_enabled")); context.getLogger().debug(RB.$("validation.disabled")); discussions.disable(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DistributionsValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DistributionsValidator.java similarity index 79% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DistributionsValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DistributionsValidator.java index 3a5f3c510..85efd373f 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DistributionsValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DistributionsValidator.java @@ -15,15 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Packager; -import org.jreleaser.model.Project; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.Packager; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.Errors; import org.jreleaser.util.FileType; import org.jreleaser.util.PlatformUtils; @@ -35,24 +36,24 @@ import java.util.stream.Collectors; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.GitService.KEY_SKIP_RELEASE_SIGNATURES; -import static org.jreleaser.model.validation.AppImageValidator.validateAppImage; -import static org.jreleaser.model.validation.AsdfValidator.validateAsdf; -import static org.jreleaser.model.validation.BrewValidator.postValidateBrew; -import static org.jreleaser.model.validation.BrewValidator.validateBrew; -import static org.jreleaser.model.validation.ChocolateyValidator.postValidateChocolatey; -import static org.jreleaser.model.validation.ChocolateyValidator.validateChocolatey; -import static org.jreleaser.model.validation.DockerValidator.validateDocker; -import static org.jreleaser.model.validation.FlatpakValidator.validateFlatpak; -import static org.jreleaser.model.validation.GofishValidator.validateGofish; -import static org.jreleaser.model.validation.JbangValidator.postValidateJBang; -import static org.jreleaser.model.validation.JbangValidator.validateJbang; -import static org.jreleaser.model.validation.MacportsValidator.validateMacports; -import static org.jreleaser.model.validation.ScoopValidator.validateScoop; -import static org.jreleaser.model.validation.SdkmanValidator.postValidateSdkman; -import static org.jreleaser.model.validation.SdkmanValidator.validateSdkman; -import static org.jreleaser.model.validation.SnapValidator.validateSnap; -import static org.jreleaser.model.validation.SpecValidator.validateSpec; +import static org.jreleaser.model.api.release.Releaser.KEY_SKIP_RELEASE_SIGNATURES; +import static org.jreleaser.model.internal.validation.AppImagePackagerValidator.validateAppImage; +import static org.jreleaser.model.internal.validation.AsdfPackagerValidator.validateAsdf; +import static org.jreleaser.model.internal.validation.BrewPackagerValidator.postValidateBrew; +import static org.jreleaser.model.internal.validation.BrewPackagerValidator.validateBrew; +import static org.jreleaser.model.internal.validation.ChocolateyPackagerValidator.postValidateChocolatey; +import static org.jreleaser.model.internal.validation.ChocolateyPackagerValidator.validateChocolatey; +import static org.jreleaser.model.internal.validation.DockerPackagerValidator.validateDocker; +import static org.jreleaser.model.internal.validation.FlatpakPackagerValidator.validateFlatpak; +import static org.jreleaser.model.internal.validation.GofishPackagerValidator.validateGofish; +import static org.jreleaser.model.internal.validation.JbangPackagerValidator.postValidateJBang; +import static org.jreleaser.model.internal.validation.JbangPackagerValidator.validateJbang; +import static org.jreleaser.model.internal.validation.MacportsPackagerValidator.validateMacports; +import static org.jreleaser.model.internal.validation.ScoopPackagerValidator.validateScoop; +import static org.jreleaser.model.internal.validation.SdkmanPackagerValidator.postValidateSdkman; +import static org.jreleaser.model.internal.validation.SdkmanPackagerValidator.validateSdkman; +import static org.jreleaser.model.internal.validation.SnapPackagerValidator.validateSnap; +import static org.jreleaser.model.internal.validation.SpecPackagerValidator.validateSpec; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -61,7 +62,7 @@ * @since 0.1.0 */ public abstract class DistributionsValidator extends Validator { - public static void validateDistributions(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateDistributions(JReleaserContext context, Mode mode, Errors errors) { Map distributions = context.getModel().getDistributions(); if (!distributions.isEmpty()) context.getLogger().debug("distributions"); @@ -87,7 +88,7 @@ public static void validateDistributions(JReleaserContext context, JReleaserCont } } - private static void validateDistribution(JReleaserContext context, JReleaserContext.Mode mode, Distribution distribution, Errors errors) { + private static void validateDistribution(JReleaserContext context, Mode mode, Distribution distribution, Errors errors) { context.getLogger().debug("distribution.{}", distribution.getName()); if (!distribution.isActiveSet()) { @@ -133,7 +134,7 @@ private static void validateDistribution(JReleaserContext context, JReleaserCont } } - if (Distribution.JAVA_DISTRIBUTION_TYPES.contains(distribution.getType())) { + if (org.jreleaser.model.api.distributions.Distribution.JAVA_DISTRIBUTION_TYPES.contains(distribution.getType())) { context.getLogger().debug("distribution.{}.java", distribution.getName()); if (!validateJava(context, distribution, errors)) { return; @@ -141,7 +142,7 @@ private static void validateDistribution(JReleaserContext context, JReleaserCont } // validate distribution type - if (!distribution.getJava().isEnabled() && Distribution.JAVA_DISTRIBUTION_TYPES.contains(distribution.getType())) { + if (!distribution.getJava().isEnabled() && org.jreleaser.model.api.distributions.Distribution.JAVA_DISTRIBUTION_TYPES.contains(distribution.getType())) { errors.configuration(RB.$("validation_distributions_java", "distribution." + distribution.getName() + ".type", distribution.getType(), @@ -227,7 +228,7 @@ private static boolean validateJava(JReleaserContext context, Distribution distr distribution.getJava().setEnabled(distribution.getJava().isSet()); } - if (distribution.getType() == Distribution.DistributionType.NATIVE_PACKAGE) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE) { distribution.getJava().setEnabled(false); } @@ -249,7 +250,7 @@ private static boolean validateJava(JReleaserContext context, Distribution distr distribution.getJava().setMainClass(project.getJava().getMainClass()); } - if (distribution.getType() == Distribution.DistributionType.NATIVE_IMAGE) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE) { return true; } @@ -261,11 +262,11 @@ private static boolean validateJava(JReleaserContext context, Distribution distr } // validate distribution type - if (!Distribution.JAVA_DISTRIBUTION_TYPES.contains(distribution.getType())) { + if (!org.jreleaser.model.api.distributions.Distribution.JAVA_DISTRIBUTION_TYPES.contains(distribution.getType())) { errors.configuration(RB.$("validation_distributions_java_types", "distribution." + distribution.getName() + ".type", - Distribution.JAVA_DISTRIBUTION_TYPES.stream() - .map(Distribution.DistributionType::name) + org.jreleaser.model.api.distributions.Distribution.JAVA_DISTRIBUTION_TYPES.stream() + .map(org.jreleaser.model.Distribution.DistributionType::name) .collect(Collectors.joining(", ")))); return false; } @@ -291,10 +292,10 @@ private static void validateArtifact(JReleaserContext context, Distribution dist public static void validateArtifactPlatforms(JReleaserContext context, Distribution distribution, Packager packager, List candidateArtifacts, Errors errors) { // validate distribution type - if (distribution.getType() == Distribution.DistributionType.BINARY || - distribution.getType() == Distribution.DistributionType.JLINK || - distribution.getType() == Distribution.DistributionType.NATIVE_IMAGE || - distribution.getType() == Distribution.DistributionType.NATIVE_PACKAGE) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.BINARY || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JLINK || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE) { // ensure all artifacts define a platform AtomicBoolean universal = new AtomicBoolean(); @@ -302,7 +303,7 @@ public static void validateArtifactPlatforms(JReleaserContext context, Distribut String noPlatform = ""; Map> byPlatform = candidateArtifacts.stream() .peek(artifact -> { - if (distribution.getType() == Distribution.DistributionType.BINARY && + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.BINARY && artifact.extraPropertyIsTrue("universal")) { universal.compareAndSet(false, true); } @@ -323,7 +324,7 @@ public static void validateArtifactPlatforms(JReleaserContext context, Distribut } } - public static void postValidateDistributions(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void postValidateDistributions(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("distributions"); Map distributions = context.getModel().getDistributions(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DockerValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DockerPackagerValidator.java similarity index 81% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DockerValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DockerPackagerValidator.java index 9a748ba98..9e0a4cbfa 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DockerValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DockerPackagerValidator.java @@ -15,20 +15,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Docker; -import org.jreleaser.model.DockerConfiguration; -import org.jreleaser.model.DockerSpec; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Project; -import org.jreleaser.model.Registry; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.AbstractDockerConfiguration; +import org.jreleaser.model.internal.packagers.DockerConfiguration; +import org.jreleaser.model.internal.packagers.DockerPackager; +import org.jreleaser.model.internal.packagers.DockerSpec; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; import org.jreleaser.util.PlatformUtils; @@ -42,28 +42,28 @@ import java.util.stream.Collectors; import static java.util.Collections.singleton; -import static org.jreleaser.model.Docker.LABEL_OCI_IMAGE_DESCRIPTION; -import static org.jreleaser.model.Docker.LABEL_OCI_IMAGE_LICENSES; -import static org.jreleaser.model.Docker.LABEL_OCI_IMAGE_REVISION; -import static org.jreleaser.model.Docker.LABEL_OCI_IMAGE_TITLE; -import static org.jreleaser.model.Docker.LABEL_OCI_IMAGE_URL; -import static org.jreleaser.model.Docker.LABEL_OCI_IMAGE_VERSION; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.internal.packagers.DockerPackager.LABEL_OCI_IMAGE_DESCRIPTION; +import static org.jreleaser.model.internal.packagers.DockerPackager.LABEL_OCI_IMAGE_LICENSES; +import static org.jreleaser.model.internal.packagers.DockerPackager.LABEL_OCI_IMAGE_REVISION; +import static org.jreleaser.model.internal.packagers.DockerPackager.LABEL_OCI_IMAGE_TITLE; +import static org.jreleaser.model.internal.packagers.DockerPackager.LABEL_OCI_IMAGE_URL; +import static org.jreleaser.model.internal.packagers.DockerPackager.LABEL_OCI_IMAGE_VERSION; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class DockerValidator extends Validator { - public static void validateDocker(JReleaserContext context, Distribution distribution, Docker packager, Errors errors) { +public abstract class DockerPackagerValidator extends Validator { + public static void validateDocker(JReleaserContext context, Distribution distribution, DockerPackager packager, Errors errors) { String element = "distribution." + distribution.getName() + ".docker"; context.getLogger().debug(element); JReleaserModel model = context.getModel(); Project project = model.getProject(); - Docker parentPackager = model.getPackagers().getDocker(); + DockerPackager parentPackager = model.getPackagers().getDocker(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -93,15 +93,15 @@ public static void validateDocker(JReleaserContext context, Distribution distrib validateTemplate(context, distribution, packager, parentPackager, errors); validateCommitAuthor(packager, parentPackager); - Docker.DockerRepository repository = packager.getRepository(); + DockerPackager.DockerRepository repository = packager.getPackagerRepository(); repository.resolveEnabled(model.getProject()); if (!repository.isVersionedSubfoldersSet()) { - repository.setVersionedSubfolders(parentPackager.getRepository().isVersionedSubfolders()); + repository.setVersionedSubfolders(parentPackager.getPackagerRepository().isVersionedSubfolders()); } if (isBlank(repository.getName())) { repository.setName(project.getName() + "-docker"); } - validateTap(context, distribution, repository, parentPackager.getRepository(), "docker.repository"); + validateTap(context, distribution, repository, parentPackager.getRepositoryTap(), "docker.repository"); mergeExtraProperties(packager, parentPackager); validateContinueOnError(packager, parentPackager); @@ -149,7 +149,7 @@ public static void validateDocker(JReleaserContext context, Distribution distrib if (!packager.isUseLocalArtifactSet() && parentPackager.isUseLocalArtifactSet()) { packager.setUseLocalArtifact(parentPackager.isUseLocalArtifact()); } - if (distribution.getType() == Distribution.DistributionType.SINGLE_JAR) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR) { packager.setUseLocalArtifact(true); } @@ -162,7 +162,7 @@ public static void validateDocker(JReleaserContext context, Distribution distrib } } - public static void validateDockerSpec(JReleaserContext context, Distribution distribution, DockerSpec spec, Docker docker, Errors errors) { + public static void validateDockerSpec(JReleaserContext context, Distribution distribution, DockerSpec spec, DockerPackager docker, Errors errors) { if (!spec.isEnabled()) return; String element = "distribution." + distribution.getName() + ".docker.spec." + spec.getName(); @@ -209,19 +209,19 @@ public static void validateDockerSpec(JReleaserContext context, Distribution dis if (!spec.isUseLocalArtifactSet() && docker.isUseLocalArtifactSet()) { spec.setUseLocalArtifact(docker.isUseLocalArtifact()); } - if (distribution.getType() == Distribution.DistributionType.SINGLE_JAR) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR) { spec.setUseLocalArtifact(true); } } private static void validateBaseImage(Distribution distribution, DockerConfiguration docker) { if (isBlank(docker.getBaseImage())) { - if (distribution.getType() == Distribution.DistributionType.JAVA_BINARY || - distribution.getType() == Distribution.DistributionType.SINGLE_JAR) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR) { int version = Integer.parseInt(distribution.getJava().getVersion()); boolean ltsmts = version == 8 || version % 2 == 1; docker.setBaseImage("azul/zulu-openjdk-alpine:{{distributionJavaVersion}}" + (ltsmts ? "-jre" : "")); - } else if (distribution.getType() == Distribution.DistributionType.JLINK) { + } else if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JLINK) { if (isAlpineCompatible(distribution, docker)) { docker.setBaseImage("alpine:latest"); } else { @@ -297,7 +297,7 @@ private static void validateLabels(DockerConfiguration self) { private static void validateRegistries(JReleaserContext context, DockerConfiguration self, DockerConfiguration other, Errors errors, String element) { JReleaserModel model = context.getModel(); - Set registries = new LinkedHashSet<>(); + Set registries = new LinkedHashSet<>(); registries.addAll(self.getRegistries()); registries.addAll(other.getRegistries()); self.setRegistries(registries); @@ -307,8 +307,8 @@ private static void validateRegistries(JReleaserContext context, DockerConfigura return; } - for (Registry registry : registries) { - GitService service = model.getRelease().getGitService(); + for (AbstractDockerConfiguration.Registry registry : registries) { + BaseReleaser service = model.getRelease().getReleaser(); String serverName = registry.getServerName(); registry.setUsername( diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DownloadersValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DownloadersValidator.java similarity index 74% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DownloadersValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DownloadersValidator.java index 919baeddf..49ecdbfca 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/DownloadersValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/DownloadersValidator.java @@ -15,24 +15,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Download; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Download; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.FtpDownloaderValidator.validateFtpDownloader; -import static org.jreleaser.model.validation.HttpDownloaderValidator.validateHttpDownloader; -import static org.jreleaser.model.validation.ScpDownloaderValidator.validateScpDownloader; -import static org.jreleaser.model.validation.SftpDownloaderValidator.validateSftpDownloader; +import static org.jreleaser.model.internal.validation.FtpDownloaderValidator.validateFtpDownloader; +import static org.jreleaser.model.internal.validation.HttpDownloaderValidator.validateHttpDownloader; +import static org.jreleaser.model.internal.validation.ScpDownloaderValidator.validateScpDownloader; +import static org.jreleaser.model.internal.validation.SftpDownloaderValidator.validateSftpDownloader; /** * @author Andres Almiray * @since 1.1.0 */ public abstract class DownloadersValidator extends Validator { - public static void validateDownloaders(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateDownloaders(JReleaserContext context, Mode mode, Errors errors) { Download download = context.getModel().getDownload(); context.getLogger().debug("download"); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ExtensionsValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ExtensionsValidator.java similarity index 87% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ExtensionsValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ExtensionsValidator.java index b7f22fd4c..caed3ca38 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ExtensionsValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ExtensionsValidator.java @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Extension; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.extensions.Extension; import org.jreleaser.util.Errors; import java.nio.file.Files; @@ -33,7 +34,7 @@ * @since 1.3.0 */ public abstract class ExtensionsValidator extends Validator { - public static void validateExtensions(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateExtensions(JReleaserContext context, Mode mode, Errors errors) { Map extensions = context.getModel().getExtensions(); if (!extensions.isEmpty()) context.getLogger().debug("extensions"); @@ -46,7 +47,7 @@ public static void validateExtensions(JReleaserContext context, JReleaserContext } } - private static void validateExtension(JReleaserContext context, JReleaserContext.Mode mode, Extension extension, Errors errors) { + private static void validateExtension(JReleaserContext context, Mode mode, Extension extension, Errors errors) { context.getLogger().debug("extension.{}", extension.getName()); if (!extension.isEnabledSet()) { @@ -68,7 +69,7 @@ private static void validateExtension(JReleaserContext context, JReleaserContext } } - private static void validateExtensionProvider(JReleaserContext context, JReleaserContext.Mode mode, Extension extension, Extension.Provider provider, int index, Errors errors) { + private static void validateExtensionProvider(JReleaserContext context, Mode mode, Extension extension, Extension.Provider provider, int index, Errors errors) { if (isBlank(provider.getType())) { errors.configuration(RB.$("validation_must_not_be_blank", "extensions.{}.providers[{}]", extension.getName(), index)); context.getLogger().debug(RB.$("validation.disabled.error")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ExtraPropertiesValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ExtraPropertiesValidator.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ExtraPropertiesValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ExtraPropertiesValidator.java index 7ffb4c078..fa6d42267 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ExtraPropertiesValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ExtraPropertiesValidator.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; -import org.jreleaser.model.ExtraProperties; +import org.jreleaser.model.internal.common.ExtraProperties; import java.util.LinkedHashMap; import java.util.Map; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FilesValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FilesValidator.java similarity index 83% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FilesValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FilesValidator.java index 389ed0757..3ee4f9b9e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FilesValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FilesValidator.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Files; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.files.Files; import org.jreleaser.util.Errors; /** @@ -28,7 +29,7 @@ * @since 0.1.0 */ public abstract class FilesValidator extends Validator { - public static void validateFiles(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateFiles(JReleaserContext context, Mode mode, Errors errors) { if (!mode.validateConfig()) { return; } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FlatpakValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FlatpakPackagerValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FlatpakValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FlatpakPackagerValidator.java index df6e3f3c1..a0312c799 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FlatpakValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FlatpakPackagerValidator.java @@ -15,28 +15,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Flatpak; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Icon; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; import org.jreleaser.model.Stereotype; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.FlatpakPackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; import java.util.List; -import static org.jreleaser.model.Flatpak.SKIP_FLATPAK; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.Constants.SKIP_OPENJDK; +import static org.jreleaser.model.api.packagers.FlatpakPackager.SKIP_FLATPAK; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.CollectionUtils.listOf; -import static org.jreleaser.util.Constants.SKIP_OPENJDK; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isFalse; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -46,11 +47,11 @@ * @author Andres Almiray * @since 1.2.0 */ -public abstract class FlatpakValidator extends Validator { - public static void validateFlatpak(JReleaserContext context, JReleaserContext.Mode mode, Distribution distribution, Flatpak packager, Errors errors) { +public abstract class FlatpakPackagerValidator extends Validator { + public static void validateFlatpak(JReleaserContext context, Mode mode, Distribution distribution, FlatpakPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.flatpak", distribution.getName()); JReleaserModel model = context.getModel(); - Flatpak parentPackager = model.getPackagers().getFlatpak(); + FlatpakPackager parentPackager = model.getPackagers().getFlatpak(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -60,7 +61,7 @@ public static void validateFlatpak(JReleaserContext context, JReleaserContext.Mo packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -154,7 +155,7 @@ public static void validateFlatpak(JReleaserContext context, JReleaserContext.Mo packager.setFinishArgs(parentPackager.getFinishArgs()); } - if (distribution.getType() == Distribution.DistributionType.JAVA_BINARY && + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY && isFalse(packager.getExtraProperties().get(SKIP_OPENJDK))) { packager.getSdkExtensions().add("org.freedesktop.Sdk.Extension.openjdk"); packager.getFinishArgs().add("--env=PATH=/app/jre/bin:/usr/bin:/app/bin"); @@ -174,7 +175,7 @@ public static void validateFlatpak(JReleaserContext context, JReleaserContext.Mo } validateCommitAuthor(packager, parentPackager); - Flatpak.FlatpakRepository repository = packager.getRepository(); + FlatpakPackager.FlatpakRepository repository = packager.getRepository(); repository.resolveEnabled(model.getProject()); validateTap(context, distribution, repository, parentPackager.getRepository(), "flatpak.repository"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FtpDownloaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FtpDownloaderValidator.java similarity index 88% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FtpDownloaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FtpDownloaderValidator.java index 33f3d5bb4..3a039231e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FtpDownloaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FtpDownloaderValidator.java @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.FtpDownloader; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.FtpDownloader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -34,7 +35,7 @@ * @since 1.1.0 */ public abstract class FtpDownloaderValidator extends Validator { - public static void validateFtpDownloader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateFtpDownloader(JReleaserContext context, Mode mode, Errors errors) { Map ftp = context.getModel().getDownload().getFtp(); if (!ftp.isEmpty()) context.getLogger().debug("download.ftp"); @@ -46,7 +47,7 @@ public static void validateFtpDownloader(JReleaserContext context, JReleaserCont } } - private static void validateFtp(JReleaserContext context, JReleaserContext.Mode mode, FtpDownloader ftp, Errors errors) { + private static void validateFtp(JReleaserContext context, Mode mode, FtpDownloader ftp, Errors errors) { context.getLogger().debug("download.ftp.{}", ftp.getName()); if (!ftp.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FtpUploaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FtpUploaderValidator.java similarity index 89% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FtpUploaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FtpUploaderValidator.java index 4807b580c..e8af3cb80 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/FtpUploaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/FtpUploaderValidator.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.FtpUploader; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.FtpUploader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -33,7 +34,7 @@ * @since 1.1.0 */ public abstract class FtpUploaderValidator extends Validator { - public static void validateFtpUploader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateFtpUploader(JReleaserContext context, Mode mode, Errors errors) { Map ftp = context.getModel().getUpload().getFtp(); if (!ftp.isEmpty()) context.getLogger().debug("upload.ftp"); @@ -45,7 +46,7 @@ public static void validateFtpUploader(JReleaserContext context, JReleaserContex } } - private static void validateFtp(JReleaserContext context, JReleaserContext.Mode mode, FtpUploader ftp, Errors errors) { + private static void validateFtp(JReleaserContext context, Mode mode, FtpUploader ftp, Errors errors) { context.getLogger().debug("upload.ftp.{}", ftp.getName()); if (!ftp.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GenericGitValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GenericGitValidator.java similarity index 74% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GenericGitValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GenericGitValidator.java index 3ae800111..624438c0d 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GenericGitValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GenericGitValidator.java @@ -15,18 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; -import org.jreleaser.model.GenericGit; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.GenericGitReleaser; import org.jreleaser.util.Errors; /** * @author Andres Almiray * @since 0.4.0 */ -public abstract class GenericGitValidator extends GitServiceValidator { - public static boolean validateGeneric(JReleaserContext context, JReleaserContext.Mode mode, GenericGit generic, Errors errors) { +public abstract class GenericGitValidator extends BaseReleaserValidator { + public static boolean validateGeneric(JReleaserContext context, Mode mode, GenericGitReleaser generic, Errors errors) { if (null == generic) return false; context.getLogger().debug("release.generic"); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GiteaValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GiteaReleaserValidator.java similarity index 79% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GiteaValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GiteaReleaserValidator.java index 97abf71e2..6f9c460b3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GiteaValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GiteaReleaserValidator.java @@ -15,30 +15,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Gitea; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.GiteaReleaser; import org.jreleaser.util.Errors; -import static org.jreleaser.model.GitService.DRAFT; -import static org.jreleaser.model.GitService.PRERELEASE_PATTERN; +import static org.jreleaser.model.api.release.Releaser.DRAFT; +import static org.jreleaser.model.api.release.Releaser.PRERELEASE_PATTERN; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class GiteaValidator extends GitServiceValidator { - public static boolean validateGitea(JReleaserContext context, JReleaserContext.Mode mode, Gitea gitea, Errors errors) { +public abstract class GiteaReleaserValidator extends BaseReleaserValidator { + public static boolean validateGitea(JReleaserContext context, Mode mode, GiteaReleaser gitea, Errors errors) { if (null == gitea) return false; context.getLogger().debug("release.gitea"); validateGitService(context, mode, gitea, errors); if (isBlank(gitea.getApiEndpoint())) { - errors.configuration(RB.$("validation_must_not_be_blank", "gitea.apiEndpoint")); + errors.configuration(RB.$("validation_must_not_be_blank", "gitea.internal.mutableEndpoint")); } if (context.getModel().getProject().isSnapshot()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GiteaUploaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GiteaUploaderValidator.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GiteaUploaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GiteaUploaderValidator.java index 4931fa51f..9c8d61d14 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GiteaUploaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GiteaUploaderValidator.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.GiteaUploader; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.GiteaUploader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -34,7 +35,7 @@ * @since 1.2.0 */ public abstract class GiteaUploaderValidator extends Validator { - public static void validateGiteaUploader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateGiteaUploader(JReleaserContext context, Mode mode, Errors errors) { Map gitea = context.getModel().getUpload().getGitea(); if (!gitea.isEmpty()) context.getLogger().debug("upload.gitea"); @@ -46,7 +47,7 @@ public static void validateGiteaUploader(JReleaserContext context, JReleaserCont } } - private static void validateGiteaUploader(JReleaserContext context, JReleaserContext.Mode mode, GiteaUploader gitea, Errors errors) { + private static void validateGiteaUploader(JReleaserContext context, Mode mode, GiteaUploader gitea, Errors errors) { context.getLogger().debug("upload.gitea.{}", gitea.getName()); if (!gitea.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GithubValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GithubReleaserValidator.java similarity index 78% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GithubValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GithubReleaserValidator.java index 456e8f0a5..2d4c508ca 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GithubValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GithubReleaserValidator.java @@ -15,21 +15,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; -import org.jreleaser.model.Github; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.GithubReleaser; import org.jreleaser.util.Errors; -import static org.jreleaser.model.GitService.DRAFT; -import static org.jreleaser.model.GitService.PRERELEASE_PATTERN; +import static org.jreleaser.model.api.release.Releaser.DRAFT; +import static org.jreleaser.model.api.release.Releaser.PRERELEASE_PATTERN; + /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class GithubValidator extends GitServiceValidator { - public static boolean validateGithub(JReleaserContext context, JReleaserContext.Mode mode, Github github, Errors errors) { +public abstract class GithubReleaserValidator extends BaseReleaserValidator { + public static boolean validateGithub(JReleaserContext context, Mode mode, GithubReleaser github, Errors errors) { if (null == github) return false; context.getLogger().debug("release.github"); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitlabValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitlabReleaserValidator.java similarity index 78% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitlabValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitlabReleaserValidator.java index 6bf3a5955..31af40059 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitlabValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitlabReleaserValidator.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Gitlab; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Uploader; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.GitlabReleaser; +import org.jreleaser.model.internal.upload.Uploader; import org.jreleaser.util.Errors; import java.util.Map; @@ -30,8 +31,8 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class GitlabValidator extends GitServiceValidator { - public static boolean validateGitlab(JReleaserContext context, JReleaserContext.Mode mode, Gitlab gitlab, Errors errors) { +public abstract class GitlabReleaserValidator extends BaseReleaserValidator { + public static boolean validateGitlab(JReleaserContext context, Mode mode, GitlabReleaser gitlab, Errors errors) { if (null == gitlab) return false; context.getLogger().debug("release.gitlab"); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitlabUploaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitlabUploaderValidator.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitlabUploaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitlabUploaderValidator.java index bd81566ff..f3ef443b4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitlabUploaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitlabUploaderValidator.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.GitlabUploader; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.GitlabUploader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -34,7 +35,7 @@ * @since 1.2.0 */ public abstract class GitlabUploaderValidator extends Validator { - public static void validateGitlabUploader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateGitlabUploader(JReleaserContext context, Mode mode, Errors errors) { Map gitlab = context.getModel().getUpload().getGitlab(); if (!gitlab.isEmpty()) context.getLogger().debug("upload.gitlab"); @@ -46,7 +47,7 @@ public static void validateGitlabUploader(JReleaserContext context, JReleaserCon } } - private static void validateGitlabUploader(JReleaserContext context, JReleaserContext.Mode mode, GitlabUploader gitlab, Errors errors) { + private static void validateGitlabUploader(JReleaserContext context, Mode mode, GitlabUploader gitlab, Errors errors) { context.getLogger().debug("upload.gitlab.{}", gitlab.getName()); if (!gitlab.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitterValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitterAnnouncerValidator.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitterValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitterAnnouncerValidator.java index d8916f566..f8d32a9e0 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GitterValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GitterAnnouncerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Gitter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.GitterAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Gitter.GITTER_WEBHOOK; +import static org.jreleaser.model.api.announce.GitterAnnouncer.GITTER_WEBHOOK; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -32,10 +32,10 @@ * @author Andres Almiray * @since 0.2.0 */ -public abstract class GitterValidator extends Validator { +public abstract class GitterAnnouncerValidator extends Validator { private static final String DEFAULT_GITTER_TPL = "src/jreleaser/templates/gitter.tpl"; - public static void validateGitter(JReleaserContext context, Gitter gitter, Errors errors) { + public static void validateGitter(JReleaserContext context, GitterAnnouncer gitter, Errors errors) { context.getLogger().debug("announce.gitter"); if (!gitter.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GofishValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GofishPackagerValidator.java similarity index 74% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GofishValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GofishPackagerValidator.java index 043235509..f2be1acc8 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GofishValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GofishPackagerValidator.java @@ -15,35 +15,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Gofish; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.GofishPackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; import java.util.List; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; -import static org.jreleaser.util.JReleaserOutput.nag; +import static org.jreleaser.model.JReleaserOutput.nag; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.10.0 */ -public abstract class GofishValidator extends Validator { - public static void validateGofish(JReleaserContext context, Distribution distribution, Gofish packager, Errors errors) { +public abstract class GofishPackagerValidator extends Validator { + public static void validateGofish(JReleaserContext context, Distribution distribution, GofishPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.gofish", distribution.getName()); JReleaserModel model = context.getModel(); - Gofish parentPackager = model.getPackagers().getGofish(); + GofishPackager parentPackager = model.getPackagers().getGofish(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -53,7 +53,7 @@ public static void validateGofish(JReleaserContext context, Distribution distrib packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -78,7 +78,7 @@ public static void validateGofish(JReleaserContext context, Distribution distrib } validateCommitAuthor(packager, parentPackager); - Gofish.GofishRepository repository = packager.getRepository(); + GofishPackager.GofishRepository repository = packager.getRepository(); repository.resolveEnabled(model.getProject()); validateTap(context, distribution, repository, parentPackager.getRepository(), "gofish.repository"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GoogleChatValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GoogleChatAnnouncerValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GoogleChatValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GoogleChatAnnouncerValidator.java index d4ece8374..046910879 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/GoogleChatValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/GoogleChatAnnouncerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.GoogleChat; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.GoogleChatAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.GoogleChat.GOOGLE_CHAT_WEBHOOK; +import static org.jreleaser.model.api.announce.GoogleChatAnnouncer.GOOGLE_CHAT_WEBHOOK; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -32,10 +32,10 @@ * @author Anyul Rivas * @since 0.5.0 */ -public abstract class GoogleChatValidator extends Validator { +public abstract class GoogleChatAnnouncerValidator extends Validator { private static final String DEFAULT_GOOGLE_CHAT_TPL = "src/jreleaser/templates/googleChat.tpl"; - public static void validateGoogleChat(JReleaserContext context, GoogleChat googleChat, Errors errors) { + public static void validateGoogleChat(JReleaserContext context, GoogleChatAnnouncer googleChat, Errors errors) { context.getLogger().debug("announce.googleChat"); if (!googleChat.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HooksValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HooksValidator.java similarity index 77% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HooksValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HooksValidator.java index 757097dd1..eca474949 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HooksValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HooksValidator.java @@ -15,21 +15,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Hooks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.hooks.Hooks; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.CommandHooksValidator.validateCommandHooks; +import static org.jreleaser.model.internal.validation.CommandHooksValidator.validateCommandHooks; /** * @author Andres Almiray * @since 1.2.0 */ public abstract class HooksValidator extends Validator { - public static void validateHooks(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateHooks(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("hooks"); Hooks hooks = context.getModel().getHooks(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpAnnouncerValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpAnnouncerValidator.java similarity index 93% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpAnnouncerValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpAnnouncerValidator.java index ad986937a..041f820a7 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpAnnouncerValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpAnnouncerValidator.java @@ -15,14 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; import org.jreleaser.model.Http; -import org.jreleaser.model.HttpAnnouncer; -import org.jreleaser.model.HttpAnnouncers; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.HttpAnnouncer; +import org.jreleaser.model.internal.announce.HttpAnnouncers; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -39,7 +40,7 @@ public abstract class HttpAnnouncerValidator extends Validator { private static final String DEFAULT_TPL = "src/jreleaser/templates/"; - public static void validateHttpAnnouncers(JReleaserContext context, JReleaserContext.Mode mode, HttpAnnouncers http, Errors errors) { + public static void validateHttpAnnouncers(JReleaserContext context, Mode mode, HttpAnnouncers http, Errors errors) { context.getLogger().debug("announce.http"); Map ha = http.getHttpAnnouncers(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpDownloaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpDownloaderValidator.java similarity index 89% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpDownloaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpDownloaderValidator.java index 93d4ed368..eeb03b98f 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpDownloaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpDownloaderValidator.java @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.HttpDownloader; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.HttpDownloader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -34,7 +35,7 @@ * @since 1.1.0 */ public abstract class HttpDownloaderValidator extends Validator { - public static void validateHttpDownloader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateHttpDownloader(JReleaserContext context, Mode mode, Errors errors) { Map http = context.getModel().getDownload().getHttp(); if (!http.isEmpty()) context.getLogger().debug("download.http"); @@ -46,7 +47,7 @@ public static void validateHttpDownloader(JReleaserContext context, JReleaserCon } } - private static void validateHttp(JReleaserContext context, JReleaserContext.Mode mode, HttpDownloader http, Errors errors) { + private static void validateHttp(JReleaserContext context, Mode mode, HttpDownloader http, Errors errors) { context.getLogger().debug("download.http.{}", http.getName()); if (!http.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpUploaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpUploaderValidator.java similarity index 90% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpUploaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpUploaderValidator.java index 0507733ff..dd4a85485 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/HttpUploaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/HttpUploaderValidator.java @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; import org.jreleaser.model.Http; -import org.jreleaser.model.HttpUploader; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.HttpUploader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -34,7 +35,7 @@ * @since 0.4.0 */ public abstract class HttpUploaderValidator extends Validator { - public static void validateHttpUploader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateHttpUploader(JReleaserContext context, Mode mode, Errors errors) { Map http = context.getModel().getUpload().getHttp(); if (!http.isEmpty()) context.getLogger().debug("upload.http"); @@ -46,7 +47,7 @@ public static void validateHttpUploader(JReleaserContext context, JReleaserConte } } - private static void validateHttp(JReleaserContext context, JReleaserContext.Mode mode, HttpUploader http, Errors errors) { + private static void validateHttp(JReleaserContext context, Mode mode, HttpUploader http, Errors errors) { context.getLogger().debug("upload.http.{}", http.getName()); if (!http.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JbangValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JbangPackagerValidator.java similarity index 82% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JbangValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JbangPackagerValidator.java index 16fed261a..ac2a7e7b5 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JbangValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JbangPackagerValidator.java @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Jbang; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.JbangPackager; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Errors; import java.util.List; @@ -30,20 +30,20 @@ import java.util.stream.Collectors; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; -import static org.jreleaser.util.Constants.KEY_REVERSE_REPO_HOST; +import static org.jreleaser.model.Constants.KEY_REVERSE_REPO_HOST; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class JbangValidator extends Validator { - public static void validateJbang(JReleaserContext context, Distribution distribution, Jbang packager, Errors errors) { +public abstract class JbangPackagerValidator extends Validator { + public static void validateJbang(JReleaserContext context, Distribution distribution, JbangPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.jbang", distribution.getName()); JReleaserModel model = context.getModel(); - Jbang parentPackager = model.getPackagers().getJbang(); + JbangPackager parentPackager = model.getPackagers().getJbang(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -53,7 +53,7 @@ public static void validateJbang(JReleaserContext context, Distribution distribu packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + BaseReleaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -61,7 +61,7 @@ public static void validateJbang(JReleaserContext context, Distribution distribu } validateCommitAuthor(packager, parentPackager); - Jbang.JbangCatalog catalog = packager.getCatalog(); + JbangPackager.JbangRepository catalog = packager.getCatalog(); catalog.resolveEnabled(model.getProject()); validateTap(context, distribution, catalog, parentPackager.getCatalog(), "jbang.catalog"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JlinkResolver.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JlinkAssemblerResolver.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JlinkResolver.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JlinkAssemblerResolver.java index 4dfd57d16..7143fc007 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JlinkResolver.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JlinkAssemblerResolver.java @@ -15,13 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Archive; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jlink; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JlinkAssembler; +import org.jreleaser.model.internal.common.Artifact; import org.jreleaser.util.Errors; import java.nio.file.Files; @@ -34,17 +34,17 @@ * @author Andres Almiray * @since 0.2.0 */ -public abstract class JlinkResolver extends Validator { +public abstract class JlinkAssemblerResolver extends Validator { public static void resolveJlinkOutputs(JReleaserContext context, Errors errors) { - List activeJlinks = context.getModel().getAssemble().getActiveJlinks(); + List activeJlinks = context.getModel().getAssemble().getActiveJlinks(); if (!activeJlinks.isEmpty()) context.getLogger().debug("assemble.jlink"); - for (Jlink jlink : activeJlinks) { + for (JlinkAssembler jlink : activeJlinks) { if (jlink.isExported()) resolveJlinkOutputs(context, jlink, errors); } } - private static void resolveJlinkOutputs(JReleaserContext context, Jlink jlink, Errors errors) { + private static void resolveJlinkOutputs(JReleaserContext context, JlinkAssembler jlink, Errors errors) { Path baseOutputDirectory = context.getAssembleDirectory() .resolve(jlink.getName()) .resolve(jlink.getType()); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JlinkValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JlinkAssemblerValidator.java similarity index 88% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JlinkValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JlinkAssemblerValidator.java index 426f128a5..5871988a8 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JlinkValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JlinkAssemblerValidator.java @@ -15,15 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.FileSet; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jlink; -import org.jreleaser.model.Project; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JlinkAssembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.Errors; import org.jreleaser.util.PlatformUtils; @@ -32,7 +33,7 @@ import java.util.Optional; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -40,12 +41,12 @@ * @author Andres Almiray * @since 0.2.0 */ -public abstract class JlinkValidator extends Validator { - public static void validateJlink(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { - Map jlink = context.getModel().getAssemble().getJlink(); +public abstract class JlinkAssemblerValidator extends Validator { + public static void validateJlink(JReleaserContext context, Mode mode, Errors errors) { + Map jlink = context.getModel().getAssemble().getJlink(); if (!jlink.isEmpty()) context.getLogger().debug("assemble.jlink"); - for (Map.Entry e : jlink.entrySet()) { + for (Map.Entry e : jlink.entrySet()) { e.getValue().setName(e.getKey()); if (mode.validateConfig() || mode.validateAssembly()) { validateJlink(context, mode, e.getValue(), errors); @@ -53,7 +54,7 @@ public static void validateJlink(JReleaserContext context, JReleaserContext.Mode } } - private static void validateJlink(JReleaserContext context, JReleaserContext.Mode mode, Jlink jlink, Errors errors) { + private static void validateJlink(JReleaserContext context, Mode mode, JlinkAssembler jlink, Errors errors) { context.getLogger().debug("assemble.jlink.{}", jlink.getName()); if (!jlink.isActiveSet()) { @@ -165,7 +166,7 @@ private static void validateJlink(JReleaserContext context, JReleaserContext.Mod "jlink." + jlink.getName() + ".jars", errors); - if (mode == JReleaserContext.Mode.ASSEMBLE) { + if (mode == Mode.ASSEMBLE) { validateTemplate(context, jlink, errors); } @@ -189,7 +190,7 @@ private static void validateJlink(JReleaserContext context, JReleaserContext.Mod } } - private static boolean validateJava(JReleaserContext context, Jlink jlink, Errors errors) { + private static boolean validateJava(JReleaserContext context, JlinkAssembler jlink, Errors errors) { Project project = context.getModel().getProject(); if (!jlink.getJava().isEnabledSet() && project.getJava().isEnabledSet()) { @@ -224,8 +225,8 @@ private static boolean validateJava(JReleaserContext context, Jlink jlink, Error return true; } - private static void validateJdk(JReleaserContext context, JReleaserContext.Mode mode, Jlink jlink, Artifact jdk, int index, Errors errors) { - if (mode == JReleaserContext.Mode.FULL) return; + private static void validateJdk(JReleaserContext context, Mode mode, JlinkAssembler jlink, Artifact jdk, int index, Errors errors) { + if (mode == Mode.FULL) return; if (null == jdk) { errors.configuration(RB.$("validation_is_null", "jlink." + jlink.getName() + ".targetJdk[" + index + "]")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JpackageResolver.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JpackageAssemblerResolver.java similarity index 79% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JpackageResolver.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JpackageAssemblerResolver.java index 27a38cb1f..8ecd466ad 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JpackageResolver.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JpackageAssemblerResolver.java @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jpackage; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JpackageAssembler; +import org.jreleaser.model.internal.common.Artifact; import org.jreleaser.util.Errors; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.nio.file.Path; @@ -35,17 +35,17 @@ * @author Andres Almiray * @since 0.10.0 */ -public abstract class JpackageResolver extends Validator { +public abstract class JpackageAssemblerResolver extends Validator { public static void resolveJpackageOutputs(JReleaserContext context, Errors errors) { - List activeJpackages = context.getModel().getAssemble().getActiveJpackages(); + List activeJpackages = context.getModel().getAssemble().getActiveJpackages(); if (!activeJpackages.isEmpty()) context.getLogger().debug("assemble.jpackage"); - for (Jpackage jpackage : activeJpackages) { + for (JpackageAssembler jpackage : activeJpackages) { if (jpackage.isExported()) resolveJpackageOutputs(context, jpackage, errors); } } - private static void resolveJpackageOutputs(JReleaserContext context, Jpackage jpackage, Errors errors) { + private static void resolveJpackageOutputs(JReleaserContext context, JpackageAssembler jpackage, Errors errors) { Path baseOutputDirectory = context.getAssembleDirectory() .resolve(jpackage.getName()) .resolve(jpackage.getType()); @@ -53,7 +53,7 @@ private static void resolveJpackageOutputs(JReleaserContext context, Jpackage jp Artifact jdk = jpackage.getResolvedPlatformPackager().getJdk(); if (!context.isPlatformSelected(jdk)) return; - Jpackage.PlatformPackager packager = jpackage.getResolvedPlatformPackager(); + JpackageAssembler.PlatformPackager packager = jpackage.getResolvedPlatformPackager(); String platform = jdk.getPlatform(); for (String type : packager.getTypes()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JpackageValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JpackageAssemblerValidator.java similarity index 83% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JpackageValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JpackageAssemblerValidator.java index ba02d8aa3..b220702d4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/JpackageValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/JpackageAssemblerValidator.java @@ -15,18 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Jlink; -import org.jreleaser.model.Jpackage; -import org.jreleaser.model.Project; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JlinkAssembler; +import org.jreleaser.model.internal.assemble.JpackageAssembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.project.Project; import org.jreleaser.util.Errors; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.SemVer; +import org.jreleaser.version.SemanticVersion; import java.nio.file.Path; import java.util.ArrayList; @@ -36,7 +37,7 @@ import static java.util.Collections.singletonList; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -44,15 +45,15 @@ * @author Andres Almiray * @since 0.10.0 */ -public abstract class JpackageValidator extends Validator { +public abstract class JpackageAssemblerValidator extends Validator { private static final String MAC_IDENTIFIER = "[a-zA-Z0-9][a-zA-Z0-9\\.\\-]*"; private static final Pattern MAC_IDENTIFIER_PATTERN = Pattern.compile(MAC_IDENTIFIER); - public static void validateJpackage(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { - Map jpackage = context.getModel().getAssemble().getJpackage(); + public static void validateJpackage(JReleaserContext context, Mode mode, Errors errors) { + Map jpackage = context.getModel().getAssemble().getJpackage(); if (!jpackage.isEmpty()) context.getLogger().debug("assemble.jpackage"); - for (Map.Entry e : jpackage.entrySet()) { + for (Map.Entry e : jpackage.entrySet()) { e.getValue().setName(e.getKey()); if (mode.validateConfig() || mode.validateAssembly()) { validateJpackage(context, mode, e.getValue(), errors); @@ -60,16 +61,16 @@ public static void validateJpackage(JReleaserContext context, JReleaserContext.M } } - public static void postValidateJpackage(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void postValidateJpackage(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("assemble.jpackage"); - Map jpackage = context.getModel().getAssemble().getJpackage(); + Map jpackage = context.getModel().getAssemble().getJpackage(); - for (Map.Entry e : jpackage.entrySet()) { + for (Map.Entry e : jpackage.entrySet()) { postValidateJpackage(context, mode, e.getValue(), errors); } } - private static void validateJpackage(JReleaserContext context, JReleaserContext.Mode mode, Jpackage jpackage, Errors errors) { + private static void validateJpackage(JReleaserContext context, Mode mode, JpackageAssembler jpackage, Errors errors) { context.getLogger().debug("assemble.jpackage.{}", jpackage.getName()); if (!jpackage.isActiveSet()) { @@ -86,12 +87,12 @@ private static void validateJpackage(JReleaserContext context, JReleaserContext. jpackage.setStereotype(context.getModel().getProject().getStereotype()); } - Jpackage.PlatformPackager packager = jpackage.getResolvedPlatformPackager(); - Jpackage.ApplicationPackage applicationPackage = jpackage.getApplicationPackage(); + JpackageAssembler.PlatformPackager packager = jpackage.getResolvedPlatformPackager(); + JpackageAssembler.ApplicationPackage applicationPackage = jpackage.getApplicationPackage(); packager.enable(); if (isNotBlank(jpackage.getJlink())) { - Jlink jlink = context.getModel().getAssemble().findJlink(jpackage.getJlink()); + JlinkAssembler jlink = context.getModel().getAssemble().findJlink(jpackage.getJlink()); Path baseOutputDirectory = context.getAssembleDirectory() .resolve(jlink.getName()) @@ -205,7 +206,7 @@ private static void validateJpackage(JReleaserContext context, JReleaserContext. // validate appVersion String appVersion = applicationPackage.getResolvedAppVersion(context, jpackage); try { - SemVer v = SemVer.of(appVersion); + SemanticVersion v = SemanticVersion.of(appVersion); if (isNotBlank(v.getBuild()) || isNotBlank(v.getTag())) { errors.configuration(RB.$("validation_jpackage_invalid_appversion_t", appVersion)); } @@ -227,7 +228,7 @@ private static void validateJpackage(JReleaserContext context, JReleaserContext. applicationPackage.setCopyright(project.getCopyright()); } - if (mode == JReleaserContext.Mode.ASSEMBLE) { + if (mode == Mode.ASSEMBLE) { validateTemplate(context, jpackage, errors); } @@ -235,18 +236,18 @@ private static void validateJpackage(JReleaserContext context, JReleaserContext. packager.setAppName(jpackage.getApplicationPackage().getAppName()); } - if (packager instanceof Jpackage.Linux) { - validateLinux(context, jpackage, (Jpackage.Linux) packager, errors); + if (packager instanceof JpackageAssembler.Linux) { + validateLinux(context, jpackage, (JpackageAssembler.Linux) packager, errors); } - if (packager instanceof Jpackage.Osx) { - validateOsx(context, jpackage, (Jpackage.Osx) packager, errors); + if (packager instanceof JpackageAssembler.Osx) { + validateOsx(context, jpackage, (JpackageAssembler.Osx) packager, errors); } - if (packager instanceof Jpackage.Windows) { - validateWindows(context, jpackage, (Jpackage.Windows) packager, errors); + if (packager instanceof JpackageAssembler.Windows) { + validateWindows(context, jpackage, (JpackageAssembler.Windows) packager, errors); } } - private static void validateOsx(JReleaserContext context, Jpackage jpackage, Jpackage.Osx packager, Errors errors) { + private static void validateOsx(JReleaserContext context, JpackageAssembler jpackage, JpackageAssembler.Osx packager, Errors errors) { if (isNotBlank(packager.getPackageIdentifier())) { if (!MAC_IDENTIFIER_PATTERN.matcher(packager.getPackageIdentifier()).matches()) { errors.configuration(RB.$("validation_jpackage_invalid_mac_package_identifier", @@ -263,17 +264,17 @@ private static void validateOsx(JReleaserContext context, Jpackage jpackage, Jpa } } - private static void validateLinux(JReleaserContext context, Jpackage jpackage, Jpackage.Linux packager, Errors errors) { + private static void validateLinux(JReleaserContext context, JpackageAssembler jpackage, JpackageAssembler.Linux packager, Errors errors) { if (isBlank(packager.getLicense())) { packager.setLicense(context.getModel().getProject().getLicense()); } } - private static void validateWindows(JReleaserContext context, Jpackage jpackage, Jpackage.Windows packager, Errors errors) { + private static void validateWindows(JReleaserContext context, JpackageAssembler jpackage, JpackageAssembler.Windows packager, Errors errors) { } - private static boolean validateJava(JReleaserContext context, Jpackage jpackage, Errors errors) { + private static boolean validateJava(JReleaserContext context, JpackageAssembler jpackage, Errors errors) { Project project = context.getModel().getProject(); if (!jpackage.getJava().isEnabledSet() && project.getJava().isEnabledSet()) { @@ -312,8 +313,8 @@ private static boolean validateJava(JReleaserContext context, Jpackage jpackage, return true; } - private static void validateRuntimeImage(JReleaserContext context, JReleaserContext.Mode mode, Jpackage jpackage, Artifact runtimeImage, int index, Errors errors) { - if (mode == JReleaserContext.Mode.FULL) return; + private static void validateRuntimeImage(JReleaserContext context, Mode mode, JpackageAssembler jpackage, Artifact runtimeImage, int index, Errors errors) { + if (mode == Mode.FULL) return; if (null == runtimeImage) { errors.configuration(RB.$("validation_is_null", "jpackage." + jpackage.getName() + ".runtimeImage[" + index + "]")); @@ -329,11 +330,11 @@ private static void validateRuntimeImage(JReleaserContext context, JReleaserCont } } - private static void postValidateJpackage(JReleaserContext context, JReleaserContext.Mode mode, Jpackage jpackage, Errors errors) { + private static void postValidateJpackage(JReleaserContext context, Mode mode, JpackageAssembler jpackage, Errors errors) { Project project = context.getModel().getProject(); if (!jpackage.resolveEnabled(project)) return; - Jpackage.ApplicationPackage applicationPackage = jpackage.getApplicationPackage(); + JpackageAssembler.ApplicationPackage applicationPackage = jpackage.getApplicationPackage(); if (isBlank(applicationPackage.getCopyright())) { applicationPackage.setCopyright(project.getCopyright()); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MacportsValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MacportsPackagerValidator.java similarity index 78% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MacportsValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MacportsPackagerValidator.java index b83e91ff4..bfa5d1451 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MacportsValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MacportsPackagerValidator.java @@ -15,37 +15,37 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Macports; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.MacportsPackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Algorithm; import org.jreleaser.util.Errors; import java.util.Collections; import java.util.List; -import static org.jreleaser.model.Macports.APP_NAME; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.api.packagers.MacportsPackager.APP_NAME; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.9.0 */ -public abstract class MacportsValidator extends Validator { - public static void validateMacports(JReleaserContext context, Distribution distribution, Macports packager, Errors errors) { +public abstract class MacportsPackagerValidator extends Validator { + public static void validateMacports(JReleaserContext context, Distribution distribution, MacportsPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.macports", distribution.getName()); JReleaserModel model = context.getModel(); - Macports parentPackager = model.getPackagers().getMacports(); + MacportsPackager parentPackager = model.getPackagers().getMacports(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -55,7 +55,7 @@ public static void validateMacports(JReleaserContext context, Distribution distr packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -94,7 +94,7 @@ public static void validateMacports(JReleaserContext context, Distribution distr if (packager.getCategories().isEmpty()) { packager.setCategories(Collections.singletonList("devel")); } - if (distribution.getType() == Distribution.DistributionType.NATIVE_PACKAGE) { + if (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE) { if (!packager.getExtraProperties().containsKey(APP_NAME) && parentPackager.getExtraProperties().containsKey(APP_NAME)) { packager.getExtraProperties().put(APP_NAME, parentPackager.getExtraProperties().get(APP_NAME)); @@ -105,7 +105,7 @@ public static void validateMacports(JReleaserContext context, Distribution distr } validateCommitAuthor(packager, parentPackager); - Macports.MacportsRepository repository = packager.getRepository(); + MacportsPackager.MacportsRepository repository = packager.getRepository(); repository.resolveEnabled(model.getProject()); validateTap(context, distribution, repository, parentPackager.getRepository(), "macports.repository"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MastodonValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MastodonAnnouncerValidator.java similarity index 81% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MastodonValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MastodonAnnouncerValidator.java index f279b46b6..220e3555b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MastodonValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MastodonAnnouncerValidator.java @@ -15,22 +15,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Mastodon; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.MastodonAnnouncer; import org.jreleaser.util.Errors; -import static org.jreleaser.model.Mastodon.MASTODON_ACCESS_TOKEN; +import static org.jreleaser.model.api.announce.MastodonAnnouncer.MASTODON_ACCESS_TOKEN; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.4.0 */ -public abstract class MastodonValidator extends Validator { - public static void validateMastodon(JReleaserContext context, Mastodon mastodon, Errors errors) { +public abstract class MastodonAnnouncerValidator extends Validator { + public static void validateMastodon(JReleaserContext context, MastodonAnnouncer mastodon, Errors errors) { context.getLogger().debug("announce.mastodon"); if (!mastodon.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MattermostValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MattermostAnnouncerValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MattermostValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MattermostAnnouncerValidator.java index 16811427d..0cf3d8958 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MattermostValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/MattermostAnnouncerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Mattermost; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.MattermostAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Mattermost.MATTERMOST_WEBHOOK; +import static org.jreleaser.model.api.announce.MattermostAnnouncer.MATTERMOST_WEBHOOK; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -32,10 +32,10 @@ * @author Andres Almiray * @since 0.4.0 */ -public abstract class MattermostValidator extends Validator { +public abstract class MattermostAnnouncerValidator extends Validator { private static final String DEFAULT_MATTERMOST_TPL = "src/jreleaser/templates/mattermost.tpl"; - public static void validateMattermost(JReleaserContext context, Mattermost mattermost, Errors errors) { + public static void validateMattermost(JReleaserContext context, MattermostAnnouncer mattermost, Errors errors) { context.getLogger().debug("announce.mattermost"); if (!mattermost.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/NativeImageResolver.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/NativeImageAssemblerResolver.java similarity index 81% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/NativeImageResolver.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/NativeImageAssemblerResolver.java index 73f5a0431..ece868f92 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/NativeImageResolver.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/NativeImageAssemblerResolver.java @@ -15,12 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.NativeImage; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.NativeImageAssembler; +import org.jreleaser.model.internal.common.Artifact; import org.jreleaser.util.Errors; import java.nio.file.Files; @@ -33,17 +33,17 @@ * @author Andres Almiray * @since 0.2.0 */ -public abstract class NativeImageResolver extends Validator { +public abstract class NativeImageAssemblerResolver extends Validator { public static void resolveNativeImageOutputs(JReleaserContext context, Errors errors) { - List activeNativeImages = context.getModel().getAssemble().getActiveNativeImages(); + List activeNativeImages = context.getModel().getAssemble().getActiveNativeImages(); if (!activeNativeImages.isEmpty()) context.getLogger().debug("assemble.nativeImage"); - for (NativeImage nativeImage : activeNativeImages) { + for (NativeImageAssembler nativeImage : activeNativeImages) { if (nativeImage.isExported()) resolveNativeImageOutputs(context, nativeImage, errors); } } - private static void resolveNativeImageOutputs(JReleaserContext context, NativeImage nativeImage, Errors errors) { + private static void resolveNativeImageOutputs(JReleaserContext context, NativeImageAssembler nativeImage, Errors errors) { if (!context.isPlatformSelected(nativeImage.getGraal())) return; String imageName = nativeImage.getResolvedImageName(context); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/NativeImageValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/NativeImageAssemblerValidator.java similarity index 87% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/NativeImageValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/NativeImageAssemblerValidator.java index 01b5a2e1b..38c36a715 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/NativeImageValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/NativeImageAssemblerValidator.java @@ -15,15 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; import org.jreleaser.model.Archive; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.FileSet; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.NativeImage; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.NativeImageAssembler; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.FileSet; import org.jreleaser.util.Errors; import org.jreleaser.util.PlatformUtils; @@ -32,7 +33,7 @@ import java.util.Optional; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -40,12 +41,12 @@ * @author Andres Almiray * @since 0.2.0 */ -public abstract class NativeImageValidator extends Validator { - public static void validateNativeImage(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { - Map nativeImage = context.getModel().getAssemble().getNativeImage(); +public abstract class NativeImageAssemblerValidator extends Validator { + public static void validateNativeImage(JReleaserContext context, Mode mode, Errors errors) { + Map nativeImage = context.getModel().getAssemble().getNativeImage(); if (!nativeImage.isEmpty()) context.getLogger().debug("assemble.nativeImage"); - for (Map.Entry e : nativeImage.entrySet()) { + for (Map.Entry e : nativeImage.entrySet()) { e.getValue().setName(e.getKey()); if (mode.validateConfig() || mode.validateAssembly()) { validateNativeImage(context, mode, e.getValue(), errors); @@ -53,7 +54,7 @@ public static void validateNativeImage(JReleaserContext context, JReleaserContex } } - private static void validateNativeImage(JReleaserContext context, JReleaserContext.Mode mode, NativeImage nativeImage, Errors errors) { + private static void validateNativeImage(JReleaserContext context, Mode mode, NativeImageAssembler nativeImage, Errors errors) { context.getLogger().debug("assemble.nativeImage.{}", nativeImage.getName()); if (!nativeImage.isActiveSet()) { @@ -156,7 +157,7 @@ private static void validateNativeImage(JReleaserContext context, JReleaserConte "nativeImage." + nativeImage.getName() + ".jars", errors); - if (mode == JReleaserContext.Mode.ASSEMBLE) { + if (mode == Mode.ASSEMBLE) { validateTemplate(context, nativeImage, errors); } @@ -167,7 +168,7 @@ private static void validateNativeImage(JReleaserContext context, JReleaserConte } } - NativeImage.Upx upx = nativeImage.getUpx(); + NativeImageAssembler.Upx upx = nativeImage.getUpx(); if (!upx.isActiveSet()) { upx.setActive(Active.NEVER); } @@ -178,8 +179,8 @@ private static void validateNativeImage(JReleaserContext context, JReleaserConte } } - private static void validateJdk(JReleaserContext context, JReleaserContext.Mode mode, NativeImage nativeImage, Artifact jdk, int index, Errors errors) { - if (mode == JReleaserContext.Mode.FULL) return; + private static void validateJdk(JReleaserContext context, Mode mode, NativeImageAssembler nativeImage, Artifact jdk, int index, Errors errors) { + if (mode == Mode.FULL) return; if (null == jdk) { errors.configuration(RB.$("validation_is_null", "nativeImage." + nativeImage.getName() + ".graalJdk[" + index + "]")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/PackagersValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/PackagersValidator.java similarity index 88% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/PackagersValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/PackagersValidator.java index 075d4d695..aaa659a29 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/PackagersValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/PackagersValidator.java @@ -15,17 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Packagers; -import org.jreleaser.model.Project; -import org.jreleaser.model.RepositoryPackager; -import org.jreleaser.model.RepositoryTap; -import org.jreleaser.model.Sdkman; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.packagers.Packagers; +import org.jreleaser.model.internal.packagers.RepositoryPackager; +import org.jreleaser.model.internal.packagers.RepositoryTap; +import org.jreleaser.model.internal.packagers.SdkmanPackager; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -36,7 +38,7 @@ * @since 0.1.0 */ public abstract class PackagersValidator extends Validator { - public static void validatePackagers(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validatePackagers(JReleaserContext context, Mode mode, Errors errors) { if (!mode.validateConfig()) { return; } @@ -45,7 +47,7 @@ public static void validatePackagers(JReleaserContext context, JReleaserContext. JReleaserModel model = context.getModel(); Packagers packagers = model.getPackagers(); Project project = model.getProject(); - GitService gitService = model.getRelease().getGitService(); + Releaser gitService = model.getRelease().getReleaser(); packagers.getAppImage().resolveEnabled(project); packagers.getAppImage().getRepository().resolveEnabled(project); @@ -85,10 +87,10 @@ public static void validatePackagers(JReleaserContext context, JReleaserContext. errors); packagers.getDocker().resolveEnabled(project); - packagers.getDocker().getRepository().resolveEnabled(project); + packagers.getDocker().getPackagerRepository().resolveEnabled(project); validatePackager(context, packagers.getDocker(), - packagers.getDocker().getRepository(), + packagers.getDocker().getPackagerRepository(), errors); if (!packagers.getDocker().getSpecs().isEmpty()) { @@ -174,7 +176,7 @@ public static void validatePackagers(JReleaserContext context, JReleaserContext. validateSdkman(context, packagers.getSdkman(), errors); } - private static void validateSdkman(JReleaserContext context, Sdkman packager, Errors errors) { + private static void validateSdkman(JReleaserContext context, SdkmanPackager packager, Errors errors) { packager.resolveEnabled(context.getModel().getProject()); validateTimeout(packager); } @@ -183,7 +185,7 @@ private static void validatePackager(JReleaserContext context, RepositoryPackager packager, RepositoryTap tap, Errors errors) { - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); validateCommitAuthor(packager, service); validateOwner(tap, service); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ProjectValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ProjectValidator.java similarity index 83% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ProjectValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ProjectValidator.java index ca82fb6b3..4f95df95b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ProjectValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ProjectValidator.java @@ -15,25 +15,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; import org.jreleaser.model.LicenseId; -import org.jreleaser.model.Project; import org.jreleaser.model.VersionPattern; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Errors; -import static org.jreleaser.model.Project.DEFAULT_SNAPSHOT_LABEL; -import static org.jreleaser.model.Project.DEFAULT_SNAPSHOT_PATTERN; -import static org.jreleaser.model.Project.PROJECT_NAME; -import static org.jreleaser.model.Project.PROJECT_SNAPSHOT_FULL_CHANGELOG; -import static org.jreleaser.model.Project.PROJECT_SNAPSHOT_LABEL; -import static org.jreleaser.model.Project.PROJECT_SNAPSHOT_PATTERN; -import static org.jreleaser.model.Project.PROJECT_VERSION; -import static org.jreleaser.model.Project.PROJECT_VERSION_PATTERN; +import static org.jreleaser.model.api.project.Project.DEFAULT_SNAPSHOT_LABEL; +import static org.jreleaser.model.api.project.Project.DEFAULT_SNAPSHOT_PATTERN; +import static org.jreleaser.model.api.project.Project.PROJECT_NAME; +import static org.jreleaser.model.api.project.Project.PROJECT_SNAPSHOT_FULL_CHANGELOG; +import static org.jreleaser.model.api.project.Project.PROJECT_SNAPSHOT_LABEL; +import static org.jreleaser.model.api.project.Project.PROJECT_SNAPSHOT_PATTERN; +import static org.jreleaser.model.api.project.Project.PROJECT_VERSION; +import static org.jreleaser.model.api.project.Project.PROJECT_VERSION_PATTERN; import static org.jreleaser.util.FileUtils.findLicenseFile; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -43,7 +44,7 @@ * @since 0.1.0 */ public abstract class ProjectValidator extends Validator { - public static void validateProject(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateProject(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("project"); Project project = context.getModel().getProject(); @@ -66,7 +67,7 @@ public static void validateProject(JReleaserContext context, JReleaserContext.Mo PROJECT_VERSION_PATTERN, "project.versionPattern", project.getVersionPattern(), - VersionPattern.Type.SEMVER.toString())); + org.jreleaser.model.VersionPattern.Type.SEMVER.toString())); project.getSnapshot().setPattern( checkProperty(context, @@ -91,7 +92,7 @@ public static void validateProject(JReleaserContext context, JReleaserContext.Mo project.getSnapshot().getFullChangelog(), false)); - if (project.versionPattern().getType() == VersionPattern.Type.CALVER) { + if (project.versionPattern().getType() == org.jreleaser.model.VersionPattern.Type.CALVER) { if (isBlank(project.versionPattern().getFormat())) { errors.configuration(RB.$("validation_version_format_missing", "project.versionPattern", VersionPattern.Type.CALVER.toString())); @@ -100,10 +101,10 @@ public static void validateProject(JReleaserContext context, JReleaserContext.Mo boolean javaDistributions = context.getModel().getDistributions().values().stream() .map(Distribution::getType) - .anyMatch(type -> type == Distribution.DistributionType.JAVA_BINARY || - type == Distribution.DistributionType.SINGLE_JAR || - type == Distribution.DistributionType.NATIVE_IMAGE || - type == Distribution.DistributionType.NATIVE_PACKAGE); + .anyMatch(type -> type == org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY || + type == org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR || + type == org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE || + type == org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE); boolean javaAssemblers = !context.getModel().getAssemble().getJlink().isEmpty() || !context.getModel().getAssemble().getJpackage().isEmpty() || !context.getModel().getAssemble().getNativeImage().isEmpty(); @@ -116,7 +117,7 @@ public static void validateProject(JReleaserContext context, JReleaserContext.Mo validateIcons(context, mode, project.getIcons(), errors, "project"); } - public static void postValidateProject(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void postValidateProject(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("project"); Project project = context.getModel().getProject(); @@ -138,7 +139,7 @@ public static void postValidateProject(JReleaserContext context, JReleaserContex if (isBlank(project.getLinks().getLicense()) && context.getModel().getCommit() != null) { findLicenseFile(context.getBasedir()) .ifPresent(path -> { - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); String srcUrl = service.getResolvedSrcUrl(context.getModel()); if (!srcUrl.endsWith("/")) srcUrl += "/"; srcUrl += path.getFileName().toString(); @@ -146,10 +147,10 @@ public static void postValidateProject(JReleaserContext context, JReleaserContex }); } if (isBlank(project.getLinks().getVcsBrowser())) { - project.getLinks().setVcsBrowser(context.getModel().getRelease().getGitService().getRepoUrl()); + project.getLinks().setVcsBrowser(context.getModel().getRelease().getReleaser().getRepoUrl()); } if (isBlank(project.getLinks().getBugTracker())) { - project.getLinks().setBugTracker(context.getModel().getRelease().getGitService().getIssueTrackerUrl()); + project.getLinks().setBugTracker(context.getModel().getRelease().getReleaser().getIssueTrackerUrl()); } if (isBlank(project.getLinks().getDocumentation())) { project.getLinks().setDocumentation(project.getLinks().getHomepage()); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ReleaseValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ReleaseValidator.java similarity index 71% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ReleaseValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ReleaseValidator.java index 33d18cf77..df4524d08 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ReleaseValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ReleaseValidator.java @@ -15,25 +15,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Release; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.Release; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.CodebergValidator.validateCodeberg; -import static org.jreleaser.model.validation.GenericGitValidator.validateGeneric; -import static org.jreleaser.model.validation.GiteaValidator.validateGitea; -import static org.jreleaser.model.validation.GithubValidator.validateGithub; -import static org.jreleaser.model.validation.GitlabValidator.validateGitlab; +import static org.jreleaser.model.internal.validation.CodebergReleaserValidator.validateCodeberg; +import static org.jreleaser.model.internal.validation.GenericGitValidator.validateGeneric; +import static org.jreleaser.model.internal.validation.GiteaReleaserValidator.validateGitea; +import static org.jreleaser.model.internal.validation.GithubReleaserValidator.validateGithub; +import static org.jreleaser.model.internal.validation.GitlabReleaserValidator.validateGitlab; /** * @author Andres Almiray * @since 0.1.0 */ public abstract class ReleaseValidator extends Validator { - public static void validateRelease(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateRelease(JReleaserContext context, Mode mode, Errors errors) { context.getLogger().debug("release"); Release release = context.getModel().getRelease(); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/S3Validator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/S3UploaderValidator.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/S3Validator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/S3UploaderValidator.java index d5629dd75..a76788110 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/S3Validator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/S3UploaderValidator.java @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.S3; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.S3Uploader; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -33,12 +34,12 @@ * @author Andres Almiray * @since 0.3.0 */ -public abstract class S3Validator extends Validator { - public static void validateS3(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { - Map s3 = context.getModel().getUpload().getS3(); +public abstract class S3UploaderValidator extends Validator { + public static void validateS3(JReleaserContext context, Mode mode, Errors errors) { + Map s3 = context.getModel().getUpload().getS3(); if (!s3.isEmpty()) context.getLogger().debug("upload.s3"); - for (Map.Entry e : s3.entrySet()) { + for (Map.Entry e : s3.entrySet()) { e.getValue().setName(e.getKey()); if (mode.validateConfig()) { validateS3(context, mode, e.getValue(), errors); @@ -46,7 +47,7 @@ public static void validateS3(JReleaserContext context, JReleaserContext.Mode mo } } - private static void validateS3(JReleaserContext context, JReleaserContext.Mode mode, S3 s3, Errors errors) { + private static void validateS3(JReleaserContext context, Mode mode, S3Uploader s3, Errors errors) { context.getLogger().debug("upload.s3.{}", s3.getName()); if (!s3.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScoopValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScoopPackagerValidator.java similarity index 77% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScoopValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScoopPackagerValidator.java index 0b94bb5c0..5a1db2cfe 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScoopValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScoopPackagerValidator.java @@ -15,35 +15,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Scoop; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.ScoopPackager; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Errors; import java.util.List; -import static org.jreleaser.model.Checksum.INDIVIDUAL_CHECKSUM; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.api.checksum.Checksum.INDIVIDUAL_CHECKSUM; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class ScoopValidator extends Validator { - public static void validateScoop(JReleaserContext context, Distribution distribution, Scoop packager, Errors errors) { +public abstract class ScoopPackagerValidator extends Validator { + public static void validateScoop(JReleaserContext context, Distribution distribution, ScoopPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.scoop", distribution.getName()); JReleaserModel model = context.getModel(); - Scoop parentPackager = model.getPackagers().getScoop(); + ScoopPackager parentPackager = model.getPackagers().getScoop(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -53,7 +53,7 @@ public static void validateScoop(JReleaserContext context, Distribution distribu packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + BaseReleaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -77,7 +77,7 @@ public static void validateScoop(JReleaserContext context, Distribution distribu candidateArtifacts.forEach(artifact -> artifact.getExtraProperties().put(INDIVIDUAL_CHECKSUM, true)); validateCommitAuthor(packager, parentPackager); - Scoop.ScoopBucket bucket = packager.getBucket(); + ScoopPackager.ScoopRepository bucket = packager.getBucket(); bucket.resolveEnabled(model.getProject()); validateTap(context, distribution, bucket, parentPackager.getBucket(), "scoop.bucket"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScpDownloaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScpDownloaderValidator.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScpDownloaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScpDownloaderValidator.java index 4855b39e6..50babff2b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScpDownloaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScpDownloaderValidator.java @@ -15,18 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpDownloader; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.ScpDownloader; import org.jreleaser.util.Errors; import java.util.Map; -import static org.jreleaser.model.validation.SshValidator.validateSsh; +import static org.jreleaser.model.internal.validation.SshValidator.validateSsh; import static org.jreleaser.util.StringUtils.isBlank; /** @@ -34,7 +35,7 @@ * @since 1.1.0 */ public abstract class ScpDownloaderValidator extends Validator { - public static void validateScpDownloader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateScpDownloader(JReleaserContext context, Mode mode, Errors errors) { Map scp = context.getModel().getDownload().getScp(); if (!scp.isEmpty()) context.getLogger().debug("download.scp"); @@ -46,7 +47,7 @@ public static void validateScpDownloader(JReleaserContext context, JReleaserCont } } - private static void validateScpDownloader(JReleaserContext context, JReleaserContext.Mode mode, ScpDownloader scp, Errors errors) { + private static void validateScpDownloader(JReleaserContext context, Mode mode, ScpDownloader scp, Errors errors) { context.getLogger().debug("download.scp.{}", scp.getName()); if (!scp.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScpUploaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScpUploaderValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScpUploaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScpUploaderValidator.java index 76fd34653..3f15d5757 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ScpUploaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ScpUploaderValidator.java @@ -15,17 +15,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpUploader; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.ScpUploader; import org.jreleaser.util.Errors; import java.util.Map; -import static org.jreleaser.model.validation.SshValidator.validateSsh; +import static org.jreleaser.model.internal.validation.SshValidator.validateSsh; import static org.jreleaser.util.StringUtils.isBlank; /** @@ -33,7 +34,7 @@ * @since 1.1.0 */ public abstract class ScpUploaderValidator extends Validator { - public static void validateScpUploader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateScpUploader(JReleaserContext context, Mode mode, Errors errors) { Map scp = context.getModel().getUpload().getScp(); if (!scp.isEmpty()) context.getLogger().debug("upload.scp"); @@ -45,7 +46,7 @@ public static void validateScpUploader(JReleaserContext context, JReleaserContex } } - private static void validateScpUploader(JReleaserContext context, JReleaserContext.Mode mode, ScpUploader scp, Errors errors) { + private static void validateScpUploader(JReleaserContext context, Mode mode, ScpUploader scp, Errors errors) { context.getLogger().debug("upload.scp.{}", scp.getName()); if (!scp.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SdkmanAnnouncerValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SdkmanAnnouncerValidator.java similarity index 81% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SdkmanAnnouncerValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SdkmanAnnouncerValidator.java index 97c5f2258..15b4fc516 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SdkmanAnnouncerValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SdkmanAnnouncerValidator.java @@ -15,17 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Sdkman; -import org.jreleaser.model.SdkmanAnnouncer; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.SdkmanAnnouncer; +import org.jreleaser.model.internal.packagers.SdkmanPackager; import org.jreleaser.util.Errors; -import static org.jreleaser.model.Sdkman.SDKMAN_CONSUMER_KEY; -import static org.jreleaser.model.Sdkman.SDKMAN_CONSUMER_TOKEN; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SDKMAN_CONSUMER_KEY; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SDKMAN_CONSUMER_TOKEN; import static org.jreleaser.util.StringUtils.isBlank; /** @@ -45,7 +45,7 @@ public static void validateSdkmanAnnouncer(JReleaserContext context, SdkmanAnnou context.getLogger().debug(RB.$("validation.disabled")); return; } - if (!context.getModel().getRelease().getGitService().isReleaseSupported()) { + if (!context.getModel().getRelease().getReleaser().isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); sdkman.disable(); return; @@ -68,7 +68,7 @@ public static void validateSdkmanAnnouncer(JReleaserContext context, SdkmanAnnou errors, context.isDryrun())); - Sdkman sdkmanPackager = context.getModel().getPackagers().getSdkman(); + SdkmanPackager sdkmanPackager = context.getModel().getPackagers().getSdkman(); if (isBlank(sdkman.getConsumerKey()) && sdkmanPackager.isEnabled()) { sdkman.setConsumerKey(sdkmanPackager.getConsumerKey()); } @@ -77,7 +77,7 @@ public static void validateSdkmanAnnouncer(JReleaserContext context, SdkmanAnnou } if (isBlank(sdkman.getReleaseNotesUrl())) { - sdkman.setReleaseNotesUrl(context.getModel().getRelease().getGitService().getReleaseNotesUrl()); + sdkman.setReleaseNotesUrl(context.getModel().getRelease().getReleaser().getReleaseNotesUrl()); } if (context.getModel().getActiveDistributions().isEmpty()) { @@ -86,7 +86,7 @@ public static void validateSdkmanAnnouncer(JReleaserContext context, SdkmanAnnou } if (null == sdkman.getCommand()) { - sdkman.setCommand(Sdkman.Command.MAJOR); + sdkman.setCommand(org.jreleaser.model.Sdkman.Command.MAJOR); } validateTimeout(sdkman); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SdkmanValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SdkmanPackagerValidator.java similarity index 81% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SdkmanValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SdkmanPackagerValidator.java index 911f83f84..4af29f3a4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SdkmanValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SdkmanPackagerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Sdkman; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.SdkmanPackager; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Errors; import java.util.List; @@ -32,22 +32,22 @@ import java.util.stream.Collectors; import static java.util.stream.Collectors.groupingBy; -import static org.jreleaser.model.Sdkman.SDKMAN_CONSUMER_KEY; -import static org.jreleaser.model.Sdkman.SDKMAN_CONSUMER_TOKEN; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.util.Constants.MAGIC_SET; +import static org.jreleaser.model.Constants.MAGIC_SET; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SDKMAN_CONSUMER_KEY; +import static org.jreleaser.model.api.packagers.SdkmanPackager.SDKMAN_CONSUMER_TOKEN; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.6.0 */ -public abstract class SdkmanValidator extends Validator { - public static void validateSdkman(JReleaserContext context, Distribution distribution, Sdkman packager, Errors errors) { +public abstract class SdkmanPackagerValidator extends Validator { + public static void validateSdkman(JReleaserContext context, Distribution distribution, SdkmanPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.sdkman", distribution.getName()); JReleaserModel model = context.getModel(); - Sdkman parentPackager = model.getPackagers().getSdkman(); + SdkmanPackager parentPackager = model.getPackagers().getSdkman(); boolean packagerSet = packager.isActiveSet(); boolean parentPackagerSet = parentPackager.isActiveSet(); @@ -61,7 +61,7 @@ public static void validateSdkman(JReleaserContext context, Distribution distrib packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + BaseReleaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -85,7 +85,7 @@ public static void validateSdkman(JReleaserContext context, Distribution distrib if (null == packager.getCommand()) { packager.setCommand(parentPackager.getCommand()); if (null == packager.getCommand()) { - packager.setCommand(Sdkman.Command.MAJOR); + packager.setCommand(org.jreleaser.model.Sdkman.Command.MAJOR); } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SftpDownloaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SftpDownloaderValidator.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SftpDownloaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SftpDownloaderValidator.java index 586cf1dd9..6723714b8 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SftpDownloaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SftpDownloaderValidator.java @@ -15,18 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.SftpDownloader; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.SftpDownloader; import org.jreleaser.util.Errors; import java.util.Map; -import static org.jreleaser.model.validation.SshValidator.validateSsh; +import static org.jreleaser.model.internal.validation.SshValidator.validateSsh; import static org.jreleaser.util.StringUtils.isBlank; /** @@ -34,7 +35,7 @@ * @since 1.1.0 */ public abstract class SftpDownloaderValidator extends Validator { - public static void validateSftpDownloader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateSftpDownloader(JReleaserContext context, Mode mode, Errors errors) { Map sftp = context.getModel().getDownload().getSftp(); if (!sftp.isEmpty()) context.getLogger().debug("download.sftp"); @@ -46,7 +47,7 @@ public static void validateSftpDownloader(JReleaserContext context, JReleaserCon } } - private static void validateSftpDownloader(JReleaserContext context, JReleaserContext.Mode mode, SftpDownloader sftp, Errors errors) { + private static void validateSftpDownloader(JReleaserContext context, Mode mode, SftpDownloader sftp, Errors errors) { context.getLogger().debug("download.sftp.{}", sftp.getName()); if (!sftp.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SftpUploaderValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SftpUploaderValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SftpUploaderValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SftpUploaderValidator.java index 2454ee44e..1253c79bf 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SftpUploaderValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SftpUploaderValidator.java @@ -15,17 +15,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.SftpUploader; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.SftpUploader; import org.jreleaser.util.Errors; import java.util.Map; -import static org.jreleaser.model.validation.SshValidator.validateSsh; +import static org.jreleaser.model.internal.validation.SshValidator.validateSsh; import static org.jreleaser.util.StringUtils.isBlank; /** @@ -33,7 +34,7 @@ * @since 1.1.0 */ public abstract class SftpUploaderValidator extends Validator { - public static void validateSftpUploader(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateSftpUploader(JReleaserContext context, Mode mode, Errors errors) { Map sftp = context.getModel().getUpload().getSftp(); if (!sftp.isEmpty()) context.getLogger().debug("upload.sftp"); @@ -45,7 +46,7 @@ public static void validateSftpUploader(JReleaserContext context, JReleaserConte } } - private static void validateSftpUploader(JReleaserContext context, JReleaserContext.Mode mode, SftpUploader sftp, Errors errors) { + private static void validateSftpUploader(JReleaserContext context, Mode mode, SftpUploader sftp, Errors errors) { context.getLogger().debug("upload.sftp.{}", sftp.getName()); if (!sftp.isActiveSet()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SigningValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SigningValidator.java similarity index 77% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SigningValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SigningValidator.java index f6445d74e..5733841f4 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SigningValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SigningValidator.java @@ -15,24 +15,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Signing; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.signing.Signing; import org.jreleaser.util.Errors; import org.jreleaser.util.PlatformUtils; -import static org.jreleaser.model.Signing.COSIGN_PASSWORD; -import static org.jreleaser.model.Signing.COSIGN_PRIVATE_KEY; -import static org.jreleaser.model.Signing.COSIGN_PUBLIC_KEY; -import static org.jreleaser.model.Signing.GPG_EXECUTABLE; -import static org.jreleaser.model.Signing.GPG_HOMEDIR; -import static org.jreleaser.model.Signing.GPG_KEYNAME; -import static org.jreleaser.model.Signing.GPG_PASSPHRASE; -import static org.jreleaser.model.Signing.GPG_PUBLIC_KEY; -import static org.jreleaser.model.Signing.GPG_PUBLIC_KEYRING; -import static org.jreleaser.model.Signing.GPG_SECRET_KEY; +import static org.jreleaser.model.api.signing.Signing.COSIGN_PASSWORD; +import static org.jreleaser.model.api.signing.Signing.COSIGN_PRIVATE_KEY; +import static org.jreleaser.model.api.signing.Signing.COSIGN_PUBLIC_KEY; +import static org.jreleaser.model.api.signing.Signing.GPG_EXECUTABLE; +import static org.jreleaser.model.api.signing.Signing.GPG_HOMEDIR; +import static org.jreleaser.model.api.signing.Signing.GPG_KEYNAME; +import static org.jreleaser.model.api.signing.Signing.GPG_PASSPHRASE; +import static org.jreleaser.model.api.signing.Signing.GPG_PUBLIC_KEY; +import static org.jreleaser.model.api.signing.Signing.GPG_PUBLIC_KEYRING; +import static org.jreleaser.model.api.signing.Signing.GPG_SECRET_KEY; import static org.jreleaser.util.StringUtils.isBlank; /** @@ -40,7 +41,7 @@ * @since 0.1.0 */ public abstract class SigningValidator extends Validator { - public static void validateSigning(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateSigning(JReleaserContext context, Mode mode, Errors errors) { if (!mode.validateConfig()) { errors = new Errors(); } @@ -57,7 +58,7 @@ public static void validateSigning(JReleaserContext context, JReleaserContext.Mo signing.setArmored(true); } - boolean cosign = signing.resolveMode() == Signing.Mode.COSIGN; + boolean cosign = signing.resolveMode() == org.jreleaser.model.Signing.Mode.COSIGN; signing.setPassphrase( checkProperty(context, @@ -67,7 +68,7 @@ public static void validateSigning(JReleaserContext context, JReleaserContext.Mo errors, context.isDryrun())); - if (signing.resolveMode() == Signing.Mode.COMMAND) { + if (signing.resolveMode() == org.jreleaser.model.Signing.Mode.COMMAND) { signing.getCommand().setExecutable( checkProperty(context, GPG_EXECUTABLE, @@ -95,7 +96,7 @@ public static void validateSigning(JReleaserContext context, JReleaserContext.Mo "signing.command.publicKeyRing", signing.getCommand().getPublicKeyring(), "")); - } else if (signing.resolveMode() == Signing.Mode.COSIGN) { + } else if (signing.resolveMode() == org.jreleaser.model.Signing.Mode.COSIGN) { if (isBlank(signing.getCosign().getVersion())) { errors.configuration(RB.$("validation_is_missing", "signing.cosign.version")); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SlackValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SlackAnnouncerValidator.java similarity index 86% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SlackValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SlackAnnouncerValidator.java index 86a0d2427..5fc01f492 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SlackValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SlackAnnouncerValidator.java @@ -15,17 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Slack; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.SlackAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Slack.SLACK_TOKEN; -import static org.jreleaser.model.Slack.SLACK_WEBHOOK; +import static org.jreleaser.model.api.announce.SlackAnnouncer.SLACK_TOKEN; +import static org.jreleaser.model.api.announce.SlackAnnouncer.SLACK_WEBHOOK; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -33,10 +33,10 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class SlackValidator extends Validator { +public abstract class SlackAnnouncerValidator extends Validator { private static final String DEFAULT_SLACK_TPL = "src/jreleaser/templates/slack.tpl"; - public static void validateSlack(JReleaserContext context, Slack slack, Errors errors) { + public static void validateSlack(JReleaserContext context, SlackAnnouncer slack, Errors errors) { context.getLogger().debug("announce.slack"); if (!slack.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MailValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SmtpAnnouncerValidator.java similarity index 54% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MailValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SmtpAnnouncerValidator.java index f181f918e..124d344e7 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/MailValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SmtpAnnouncerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Mail; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.SmtpAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Mail.MAIL_PASSWORD; +import static org.jreleaser.model.api.announce.SmtpAnnouncer.MAIL_PASSWORD; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -32,69 +32,69 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class MailValidator extends Validator { - public static void validateMail(JReleaserContext context, Mail mail, Errors errors) { +public abstract class SmtpAnnouncerValidator extends Validator { + public static void validateSmtp(JReleaserContext context, SmtpAnnouncer smtp, Errors errors) { context.getLogger().debug("announce.mail"); - if (!mail.resolveEnabled(context.getModel().getProject())) { + if (!smtp.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); return; } - if (null == mail.getTransport()) { - mail.setTransport(Mail.Transport.SMTP); + if (null == smtp.getTransport()) { + smtp.setTransport(org.jreleaser.model.Mail.Transport.SMTP); } - if (isBlank(mail.getHost())) { + if (isBlank(smtp.getHost())) { errors.configuration(RB.$("validation_must_not_be_blank", "mail.host")); } - if (null == mail.getPort()) { - mail.setPort(25); + if (null == smtp.getPort()) { + smtp.setPort(25); } - if (!mail.isAuthSet()) { - mail.setAuth(true); + if (!smtp.isAuthSet()) { + smtp.setAuth(true); } - if (isBlank(mail.getUsername())) { + if (isBlank(smtp.getUsername())) { errors.configuration(RB.$("validation_must_not_be_blank", "mail.username")); } - mail.setPassword( + smtp.setPassword( checkProperty(context, MAIL_PASSWORD, "mail.password", - mail.getPassword(), + smtp.getPassword(), errors, context.isDryrun())); - if (isBlank(mail.getFrom())) { + if (isBlank(smtp.getFrom())) { errors.configuration(RB.$("validation_must_not_be_blank", "mail.from")); } - boolean to = isBlank(mail.getTo()); - boolean cc = isBlank(mail.getCc()); - boolean bcc = isBlank(mail.getBcc()); + boolean to = isBlank(smtp.getTo()); + boolean cc = isBlank(smtp.getCc()); + boolean bcc = isBlank(smtp.getBcc()); if (!to && !cc && !bcc) { errors.configuration(RB.$("validation_mail_not_blank", "mail.to, mail.cc,", "mail.bcc")); } - if (isBlank(mail.getSubject())) { - mail.setSubject(RB.$("default.discussion.title")); + if (isBlank(smtp.getSubject())) { + smtp.setSubject(RB.$("default.discussion.title")); } - if (null == mail.getMimeType()) { - mail.setMimeType(Mail.MimeType.TEXT); + if (null == smtp.getMimeType()) { + smtp.setMimeType(org.jreleaser.model.Mail.MimeType.TEXT); } - if (isBlank(mail.getMessage()) && isBlank(mail.getMessageTemplate())) { - mail.setMessageTemplate("src/jreleaser/templates/mail.tpl"); + if (isBlank(smtp.getMessage()) && isBlank(smtp.getMessageTemplate())) { + smtp.setMessageTemplate("src/jreleaser/templates/mail.tpl"); } - if (isNotBlank(mail.getMessageTemplate()) && - !Files.exists(context.getBasedir().resolve(mail.getMessageTemplate().trim()))) { - errors.configuration(RB.$("validation_directory_not_exist", "mail.messageTemplate", mail.getMessageTemplate())); + if (isNotBlank(smtp.getMessageTemplate()) && + !Files.exists(context.getBasedir().resolve(smtp.getMessageTemplate().trim()))) { + errors.configuration(RB.$("validation_directory_not_exist", "mail.messageTemplate", smtp.getMessageTemplate())); } } } \ No newline at end of file diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SnapValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SnapPackagerValidator.java similarity index 77% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SnapValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SnapPackagerValidator.java index da63c13a0..18929280a 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SnapValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SnapPackagerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Snap; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.SnapPackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; import java.nio.file.Files; @@ -35,20 +35,20 @@ import java.util.Set; import java.util.stream.Collectors; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.1.0 */ -public abstract class SnapValidator extends Validator { - public static void validateSnap(JReleaserContext context, Distribution distribution, Snap packager, Errors errors) { +public abstract class SnapPackagerValidator extends Validator { + public static void validateSnap(JReleaserContext context, Distribution distribution, SnapPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.snap", distribution.getName()); JReleaserModel model = context.getModel(); - Snap parentPackager = model.getPackagers().getSnap(); + SnapPackager parentPackager = model.getPackagers().getSnap(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -58,7 +58,7 @@ public static void validateSnap(JReleaserContext context, Distribution distribut packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -79,7 +79,7 @@ public static void validateSnap(JReleaserContext context, Distribution distribut } validateCommitAuthor(packager, parentPackager); - Snap.SnapTap snap = packager.getSnap(); + SnapPackager.SnapRepository snap = packager.getSnap(); snap.resolveEnabled(model.getProject()); if (isBlank(snap.getName())) { snap.setName(distribution.getName() + "-snap"); @@ -135,25 +135,25 @@ public static void validateSnap(JReleaserContext context, Distribution distribut packager.addArchitecture(parentPackager.getArchitectures()); for (int i = 0; i < packager.getArchitectures().size(); i++) { - Snap.Architecture arch = packager.getArchitectures().get(i); + SnapPackager.Architecture arch = packager.getArchitectures().get(i); if (!arch.hasBuildOn()) { errors.configuration(RB.$("validation_snap_missing_buildon", "distribution." + distribution.getName() + ".snap.architectures", i)); } } } - private static void mergeSnapPlugs(Snap packager, Snap common) { + private static void mergeSnapPlugs(SnapPackager packager, SnapPackager common) { Set localPlugs = new LinkedHashSet<>(); localPlugs.addAll(packager.getLocalPlugs()); localPlugs.addAll(common.getLocalPlugs()); packager.setLocalPlugs(localPlugs); - Map commonPlugs = common.getPlugs().stream() - .collect(Collectors.toMap(Snap.Plug::getName, Snap.Plug::copyOf)); - Map packagerPlugs = packager.getPlugs().stream() - .collect(Collectors.toMap(Snap.Plug::getName, Snap.Plug::copyOf)); + Map commonPlugs = common.getPlugs().stream() + .collect(Collectors.toMap(SnapPackager.Plug::getName, SnapPackager.Plug::copyOf)); + Map packagerPlugs = packager.getPlugs().stream() + .collect(Collectors.toMap(SnapPackager.Plug::getName, SnapPackager.Plug::copyOf)); commonPlugs.forEach((name, cp) -> { - Snap.Plug tp = packagerPlugs.remove(name); + SnapPackager.Plug tp = packagerPlugs.remove(name); if (null != tp) { cp.getAttributes().putAll(tp.getAttributes()); Set tmp = new LinkedHashSet<>(cp.getReads()); @@ -168,18 +168,18 @@ private static void mergeSnapPlugs(Snap packager, Snap common) { packager.setPlugs(new ArrayList<>(commonPlugs.values())); } - private static void mergeSnapSlots(Snap packager, Snap common) { + private static void mergeSnapSlots(SnapPackager packager, SnapPackager common) { Set localSlots = new LinkedHashSet<>(); localSlots.addAll(packager.getLocalSlots()); localSlots.addAll(common.getLocalSlots()); packager.setLocalSlots(localSlots); - Map commonSlots = common.getSlots().stream() - .collect(Collectors.toMap(Snap.Slot::getName, Snap.Slot::copyOf)); - Map packagerSlots = packager.getSlots().stream() - .collect(Collectors.toMap(Snap.Slot::getName, Snap.Slot::copyOf)); + Map commonSlots = common.getSlots().stream() + .collect(Collectors.toMap(SnapPackager.Slot::getName, SnapPackager.Slot::copyOf)); + Map packagerSlots = packager.getSlots().stream() + .collect(Collectors.toMap(SnapPackager.Slot::getName, SnapPackager.Slot::copyOf)); commonSlots.forEach((name, cp) -> { - Snap.Slot tp = packagerSlots.remove(name); + SnapPackager.Slot tp = packagerSlots.remove(name); if (null != tp) { cp.getAttributes().putAll(tp.getAttributes()); Set tmp = new LinkedHashSet<>(cp.getReads()); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SpecValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SpecPackagerValidator.java similarity index 79% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SpecValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SpecPackagerValidator.java index b34f441a2..916a4a45e 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SpecValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SpecPackagerValidator.java @@ -15,35 +15,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Spec; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.SpecPackager; +import org.jreleaser.model.internal.release.Releaser; import org.jreleaser.util.Errors; import java.util.Collections; import java.util.List; -import static org.jreleaser.model.validation.DistributionsValidator.validateArtifactPlatforms; -import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtraProperties; -import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; +import static org.jreleaser.model.internal.validation.DistributionsValidator.validateArtifactPlatforms; +import static org.jreleaser.model.internal.validation.ExtraPropertiesValidator.mergeExtraProperties; +import static org.jreleaser.model.internal.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; /** * @author Andres Almiray * @since 0.9.1 */ -public abstract class SpecValidator extends Validator { - public static void validateSpec(JReleaserContext context, Distribution distribution, Spec packager, Errors errors) { +public abstract class SpecPackagerValidator extends Validator { + public static void validateSpec(JReleaserContext context, Distribution distribution, SpecPackager packager, Errors errors) { context.getLogger().debug("distribution.{}.spec", distribution.getName()); JReleaserModel model = context.getModel(); - Spec parentPackager = model.getPackagers().getSpec(); + SpecPackager parentPackager = model.getPackagers().getSpec(); if (!packager.isActiveSet() && parentPackager.isActiveSet()) { packager.setActive(parentPackager.getActive()); @@ -53,7 +53,7 @@ public static void validateSpec(JReleaserContext context, Distribution distribut packager.disable(); return; } - GitService service = model.getRelease().getGitService(); + Releaser service = model.getRelease().getReleaser(); if (!service.isReleaseSupported()) { context.getLogger().debug(RB.$("validation.disabled.release")); packager.disable(); @@ -95,7 +95,7 @@ public static void validateSpec(JReleaserContext context, Distribution distribut } validateCommitAuthor(packager, parentPackager); - Spec.SpecRepository repository = packager.getRepository(); + SpecPackager.SpecRepository repository = packager.getRepository(); repository.resolveEnabled(model.getProject()); validateTap(context, distribution, repository, parentPackager.getRepository(), "spec.repository"); validateTemplate(context, distribution, packager, parentPackager, errors); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SshValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SshValidator.java similarity index 96% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SshValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SshValidator.java index 40db3c9e4..7c2c8adc8 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/SshValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/SshValidator.java @@ -15,10 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Ssh; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Ssh; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TeamsValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TeamsAnnouncerValidator.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TeamsValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TeamsAnnouncerValidator.java index d2afadb39..bf8c987cb 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TeamsValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TeamsAnnouncerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Teams; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.TeamsAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Teams.TEAMS_WEBHOOK; +import static org.jreleaser.model.api.announce.TeamsAnnouncer.TEAMS_WEBHOOK; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -32,10 +32,10 @@ * @author Andres Almiray * @since 0.2.0 */ -public abstract class TeamsValidator extends Validator { +public abstract class TeamsAnnouncerValidator extends Validator { private static final String DEFAULT_TEAMS_TPL = "src/jreleaser/templates/teams.tpl"; - public static void validateTeams(JReleaserContext context, Teams teams, Errors errors) { + public static void validateTeams(JReleaserContext context, TeamsAnnouncer teams, Errors errors) { context.getLogger().debug("announce.teams"); if (!teams.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TelegramValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TelegramAnnouncerValidator.java similarity index 84% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TelegramValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TelegramAnnouncerValidator.java index 45e4d1a1c..613caddce 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TelegramValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TelegramAnnouncerValidator.java @@ -15,17 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Telegram; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.TelegramAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Telegram.TELEGRAM_CHAT_ID; -import static org.jreleaser.model.Telegram.TELEGRAM_TOKEN; +import static org.jreleaser.model.api.announce.TelegramAnnouncer.TELEGRAM_CHAT_ID; +import static org.jreleaser.model.api.announce.TelegramAnnouncer.TELEGRAM_TOKEN; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -33,10 +33,10 @@ * @author Andres Almiray * @since 0.8.0 */ -public abstract class TelegramValidator extends Validator { +public abstract class TelegramAnnouncerValidator extends Validator { private static final String DEFAULT_TELEGRAM_TPL = "src/jreleaser/templates/telegram.tpl"; - public static void validateTelegram(JReleaserContext context, Telegram telegram, Errors errors) { + public static void validateTelegram(JReleaserContext context, TelegramAnnouncer telegram, Errors errors) { context.getLogger().debug("announce.telegram"); if (!telegram.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TemplateValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TemplateValidator.java similarity index 89% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TemplateValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TemplateValidator.java index 4f03579c7..1d34a1261 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TemplateValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TemplateValidator.java @@ -15,15 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Docker; -import org.jreleaser.model.DockerSpec; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JavaAssembler; -import org.jreleaser.model.TemplatePackager; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.JavaAssembler; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.DockerPackager; +import org.jreleaser.model.internal.packagers.DockerSpec; +import org.jreleaser.model.internal.packagers.TemplatePackager; import org.jreleaser.util.Errors; import java.nio.file.Files; @@ -79,7 +79,7 @@ public static void validateTemplate(JReleaserContext context, JavaAssembler asse } public static void validateTemplate(JReleaserContext context, Distribution distribution, - DockerSpec spec, Docker docker, Errors errors) { + DockerSpec spec, DockerPackager docker, Errors errors) { String defaultTemplateDirectory = "src/jreleaser/distributions/" + distribution.getName() + "/" + docker.getType() + "/" + spec.getName(); if (isNotBlank(spec.getTemplateDirectory()) && !defaultTemplateDirectory.equals(spec.getTemplateDirectory().trim()) && diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TwitterValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TwitterAnnouncerValidator.java similarity index 81% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TwitterValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TwitterAnnouncerValidator.java index 5e26fc11c..9cd440601 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/TwitterValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/TwitterAnnouncerValidator.java @@ -15,19 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Twitter; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.TwitterAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Twitter.TWITTER_ACCESS_TOKEN; -import static org.jreleaser.model.Twitter.TWITTER_ACCESS_TOKEN_SECRET; -import static org.jreleaser.model.Twitter.TWITTER_CONSUMER_KEY; -import static org.jreleaser.model.Twitter.TWITTER_CONSUMER_SECRET; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_ACCESS_TOKEN; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_ACCESS_TOKEN_SECRET; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_CONSUMER_KEY; +import static org.jreleaser.model.api.announce.TwitterAnnouncer.TWITTER_CONSUMER_SECRET; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -35,8 +35,8 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class TwitterValidator extends Validator { - public static void validateTwitter(JReleaserContext context, Twitter twitter, Errors errors) { +public abstract class TwitterAnnouncerValidator extends Validator { + public static void validateTwitter(JReleaserContext context, TwitterAnnouncer twitter, Errors errors) { context.getLogger().debug("announce.twitter"); if (!twitter.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/UploadersValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/UploadersValidator.java similarity index 69% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/UploadersValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/UploadersValidator.java index bec738616..0cc13cc51 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/UploadersValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/UploadersValidator.java @@ -15,28 +15,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Upload; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.Upload; import org.jreleaser.util.Errors; -import static org.jreleaser.model.validation.ArtifactoryValidator.validateArtifactory; -import static org.jreleaser.model.validation.FtpUploaderValidator.validateFtpUploader; -import static org.jreleaser.model.validation.GiteaUploaderValidator.validateGiteaUploader; -import static org.jreleaser.model.validation.GitlabUploaderValidator.validateGitlabUploader; -import static org.jreleaser.model.validation.HttpUploaderValidator.validateHttpUploader; -import static org.jreleaser.model.validation.S3Validator.validateS3; -import static org.jreleaser.model.validation.ScpUploaderValidator.validateScpUploader; -import static org.jreleaser.model.validation.SftpUploaderValidator.validateSftpUploader; +import static org.jreleaser.model.internal.validation.ArtifactoryUploaderValidator.validateArtifactory; +import static org.jreleaser.model.internal.validation.FtpUploaderValidator.validateFtpUploader; +import static org.jreleaser.model.internal.validation.GiteaUploaderValidator.validateGiteaUploader; +import static org.jreleaser.model.internal.validation.GitlabUploaderValidator.validateGitlabUploader; +import static org.jreleaser.model.internal.validation.HttpUploaderValidator.validateHttpUploader; +import static org.jreleaser.model.internal.validation.S3UploaderValidator.validateS3; +import static org.jreleaser.model.internal.validation.ScpUploaderValidator.validateScpUploader; +import static org.jreleaser.model.internal.validation.SftpUploaderValidator.validateSftpUploader; /** * @author Andres Almiray * @since 0.3.0 */ public abstract class UploadersValidator extends Validator { - public static void validateUploaders(JReleaserContext context, JReleaserContext.Mode mode, Errors errors) { + public static void validateUploaders(JReleaserContext context, Mode mode, Errors errors) { Upload upload = context.getModel().getUpload(); context.getLogger().debug("upload"); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/Validator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/Validator.java similarity index 89% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/Validator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/Validator.java index 365426aee..4bd27116c 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/Validator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/Validator.java @@ -15,24 +15,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Assembler; -import org.jreleaser.model.CommitAuthor; -import org.jreleaser.model.CommitAuthorAware; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Environment; -import org.jreleaser.model.FileSet; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Glob; -import org.jreleaser.model.Icon; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.OwnerAware; -import org.jreleaser.model.Packager; -import org.jreleaser.model.RepositoryTap; -import org.jreleaser.model.Screenshot; -import org.jreleaser.model.TimeoutAware; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.Assembler; +import org.jreleaser.model.internal.common.CommitAuthor; +import org.jreleaser.model.internal.common.CommitAuthorAware; +import org.jreleaser.model.internal.common.FileSet; +import org.jreleaser.model.internal.common.Glob; +import org.jreleaser.model.internal.common.Icon; +import org.jreleaser.model.internal.common.OwnerAware; +import org.jreleaser.model.internal.common.Screenshot; +import org.jreleaser.model.internal.common.TimeoutAware; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.environment.Environment; +import org.jreleaser.model.internal.packagers.Packager; +import org.jreleaser.model.internal.packagers.RepositoryTap; +import org.jreleaser.model.internal.release.BaseReleaser; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -211,7 +212,7 @@ static void validateTap(JReleaserContext context, Distribution distribution, tap.setToken(parentTap.getToken()); } - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); tap.setUsername( checkProperty(context, @@ -244,13 +245,13 @@ static void validateGlobs(JReleaserContext context, Collection globs, Stri } } - static void validateFileSet(JReleaserContext context, JReleaserContext.Mode mode, Assembler assembler, FileSet fileSet, int index, Errors errors) { + static void validateFileSet(JReleaserContext context, Mode mode, Assembler assembler, FileSet fileSet, int index, Errors errors) { if (mode.validateStandalone() && isBlank(fileSet.getInput())) { errors.configuration(RB.$("validation_must_not_be_null", assembler.getType() + "." + assembler.getName() + ".fileSet[" + index + "].input")); } } - static void validateScreenshots(JReleaserContext context, JReleaserContext.Mode mode, List screenshots, Errors errors, String base) { + static void validateScreenshots(JReleaserContext context, Mode mode, List screenshots, Errors errors, String base) { if (screenshots.size() == 1) { screenshots.get(0).setPrimary(true); } @@ -267,7 +268,7 @@ static void validateScreenshots(JReleaserContext context, JReleaserContext.Mode errors.configuration(RB.$("validation_must_not_be_blank", base + ".screenshots[" + i + "].url")); } - if (screenshot.getType() == Screenshot.Type.THUMBNAIL) { + if (screenshot.getType() == org.jreleaser.model.Screenshot.Type.THUMBNAIL) { if (null == screenshot.getWidth()) { errors.configuration(RB.$("validation_must_not_be_null", base + ".screenshots[" + i + "].width")); } @@ -284,11 +285,11 @@ static void validateScreenshots(JReleaserContext context, JReleaserContext.Mode } } - static void validateIcons(JReleaserContext context, JReleaserContext.Mode mode, List icons, Errors errors, String base) { + static void validateIcons(JReleaserContext context, Mode mode, List icons, Errors errors, String base) { validateIcons(context, mode, icons, errors, base, true); } - static void validateIcons(JReleaserContext context, JReleaserContext.Mode mode, List icons, Errors errors, String base, boolean validatePrimary) { + static void validateIcons(JReleaserContext context, Mode mode, List icons, Errors errors, String base, boolean validatePrimary) { if (validatePrimary) { if (icons.size() == 1) { icons.get(0).setPrimary(true); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/WebhooksValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/WebhooksAnnouncerValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/WebhooksValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/WebhooksAnnouncerValidator.java index 22e92ca53..ee608faff 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/WebhooksValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/WebhooksAnnouncerValidator.java @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; import org.jreleaser.model.Active; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Webhook; -import org.jreleaser.model.Webhooks; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.WebhookAnnouncer; +import org.jreleaser.model.internal.announce.WebhooksAnnouncer; import org.jreleaser.util.Env; import org.jreleaser.util.Errors; @@ -35,16 +36,16 @@ * @author Andres Almiray * @since 0.5.0 */ -public abstract class WebhooksValidator extends Validator { +public abstract class WebhooksAnnouncerValidator extends Validator { private static final String DEFAULT_TPL = "src/jreleaser/templates/"; - public static void validateWebhooks(JReleaserContext context, JReleaserContext.Mode mode, Webhooks webhooks, Errors errors) { + public static void validateWebhooks(JReleaserContext context, Mode mode, WebhooksAnnouncer webhooks, Errors errors) { context.getLogger().debug("announce.webhooks"); - Map webhook = webhooks.getWebhooks(); + Map webhook = webhooks.getWebhooks(); boolean enabled = false; - for (Map.Entry e : webhook.entrySet()) { + for (Map.Entry e : webhook.entrySet()) { e.getValue().setName(e.getKey()); if (mode.validateConfig() || mode.validateAnnounce()) { if (validateWebhook(context, webhooks, e.getValue(), errors)) { @@ -64,7 +65,7 @@ public static void validateWebhooks(JReleaserContext context, JReleaserContext.M } } - public static boolean validateWebhook(JReleaserContext context, Webhooks webhooks, Webhook webhook, Errors errors) { + public static boolean validateWebhook(JReleaserContext context, WebhooksAnnouncer webhooks, WebhookAnnouncer webhook, Errors errors) { context.getLogger().debug("announce.webhook." + webhook.getName()); if (!webhook.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ZulipValidator.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ZulipAnnouncerValidator.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ZulipValidator.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ZulipAnnouncerValidator.java index 43a74d91f..6bf814e90 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/ZulipValidator.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/validation/ZulipAnnouncerValidator.java @@ -15,16 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.validation; +package org.jreleaser.model.internal.validation; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Zulip; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.ZulipAnnouncer; import org.jreleaser.util.Errors; import java.nio.file.Files; -import static org.jreleaser.model.Zulip.ZULIP_API_KEY; +import static org.jreleaser.model.api.announce.ZulipAnnouncer.ZULIP_API_KEY; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; @@ -32,10 +32,10 @@ * @author Andres Almiray * @since 0.1.0 */ -public abstract class ZulipValidator extends Validator { +public abstract class ZulipAnnouncerValidator extends Validator { private static final String DEFAULT_ZULIP_TPL = "src/jreleaser/templates/zulip.tpl"; - public static void validateZulip(JReleaserContext context, Zulip zulip, Errors errors) { + public static void validateZulip(JReleaserContext context, ZulipAnnouncer zulip, Errors errors) { context.getLogger().debug("announce.zulip"); if (!zulip.resolveEnabled(context.getModel().getProject())) { context.getLogger().debug(RB.$("validation.disabled")); @@ -49,13 +49,13 @@ public static void validateZulip(JReleaserContext context, Zulip zulip, Errors e zulip.setApiKey( checkProperty(context, ZULIP_API_KEY, - "zulip.apiKey", + "zulip.internal.mutableKey", zulip.getApiKey(), errors, context.isDryrun())); if (isBlank(zulip.getApiHost())) { - errors.configuration(RB.$("validation_must_not_be_blank", "zulip.apiHost")); + errors.configuration(RB.$("validation_must_not_be_blank", "zulip.internal.mutableHost")); } if (isBlank(zulip.getSubject())) { zulip.setSubject(RB.$("default.discussion.title")); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AbstractAnnouncerBuilder.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AbstractAnnouncerBuilder.java similarity index 92% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AbstractAnnouncerBuilder.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AbstractAnnouncerBuilder.java index f7efe9960..54587eaac 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AbstractAnnouncerBuilder.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AbstractAnnouncerBuilder.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.announcer.spi; +package org.jreleaser.model.spi.announce; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import static java.util.Objects.requireNonNull; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnounceException.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnounceException.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnounceException.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnounceException.java index 596e9e893..4e9e273a2 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnounceException.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnounceException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.announcer.spi; +package org.jreleaser.model.spi.announce; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/Announcer.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/Announcer.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/Announcer.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/Announcer.java index 6b6d3858b..ad78a6929 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/Announcer.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/Announcer.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.announcer.spi; +package org.jreleaser.model.spi.announce; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnouncerBuilder.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnouncerBuilder.java similarity index 89% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnouncerBuilder.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnouncerBuilder.java index 0da2b68ee..1f53578d3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnouncerBuilder.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnouncerBuilder.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.announcer.spi; +package org.jreleaser.model.spi.announce; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnouncerBuilderFactory.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnouncerBuilderFactory.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnouncerBuilderFactory.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnouncerBuilderFactory.java index 8d737dd03..64b0ef46a 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/announcer/spi/AnnouncerBuilderFactory.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/announce/AnnouncerBuilderFactory.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.announcer.spi; +package org.jreleaser.model.spi.announce; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessingException.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessingException.java similarity index 96% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessingException.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessingException.java index 967c96ee8..49ba4082b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessingException.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessingException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.assembler.spi; +package org.jreleaser.model.spi.assemble; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessor.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessor.java similarity index 90% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessor.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessor.java index f5a46e6fe..1d7b681e2 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessor.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessor.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.assembler.spi; +package org.jreleaser.model.spi.assemble; -import org.jreleaser.model.Assembler; +import org.jreleaser.model.internal.assemble.Assembler; import java.util.Map; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessorFactory.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessorFactory.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessorFactory.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessorFactory.java index 1e18b9b45..204f13853 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/assembler/spi/AssemblerProcessorFactory.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/assemble/AssemblerProcessorFactory.java @@ -15,10 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.assembler.spi; +package org.jreleaser.model.spi.assemble; -import org.jreleaser.model.Assembler; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.assemble.Assembler; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/ArtifactDownloader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/ArtifactDownloader.java similarity index 90% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/ArtifactDownloader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/ArtifactDownloader.java index 463e53867..2331ebcee 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/ArtifactDownloader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/ArtifactDownloader.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.downloader.spi; +package org.jreleaser.model.spi.download; -import org.jreleaser.model.Downloader; +import org.jreleaser.model.internal.download.Downloader; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/ArtifactDownloaderFactory.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/ArtifactDownloaderFactory.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/ArtifactDownloaderFactory.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/ArtifactDownloaderFactory.java index 157a856cf..2959087d5 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/ArtifactDownloaderFactory.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/ArtifactDownloaderFactory.java @@ -15,10 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.downloader.spi; +package org.jreleaser.model.spi.download; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/DownloadException.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/DownloadException.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/DownloadException.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/DownloadException.java index 54dd3ffdc..218442f30 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/downloader/spi/DownloadException.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/download/DownloadException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.downloader.spi; +package org.jreleaser.model.spi.download; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessingException.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessingException.java similarity index 96% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessingException.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessingException.java index d2fee4ec6..5ce7b36e9 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessingException.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessingException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.packager.spi; +package org.jreleaser.model.spi.packagers; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessor.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessor.java similarity index 88% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessor.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessor.java index a98edfed9..5ffbec1a3 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessor.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessor.java @@ -15,10 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.packager.spi; +package org.jreleaser.model.spi.packagers; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.Packager; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.Packager; import java.util.Map; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessorFactory.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessorFactory.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessorFactory.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessorFactory.java index dedd12ba2..ae27b7cea 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/packager/spi/PackagerProcessorFactory.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/packagers/PackagerProcessorFactory.java @@ -15,10 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.packager.spi; +package org.jreleaser.model.spi.packagers; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Packager; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.packagers.Packager; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaser.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/AbstractReleaser.java similarity index 87% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaser.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/AbstractReleaser.java index 8fb1b8d77..5642aa372 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaser.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/AbstractReleaser.java @@ -15,11 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; import org.jreleaser.bundle.RB; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.BaseReleaser; import java.util.ArrayList; import java.util.List; @@ -39,7 +39,7 @@ protected AbstractReleaser(JReleaserContext context, List assets) { @Override public final void release() throws ReleaseException { - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (service.isSkipRelease()) { if (service.isSkipTag()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaserBuilder.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/AbstractReleaserBuilder.java similarity index 87% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaserBuilder.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/AbstractReleaserBuilder.java index e0325af35..1b1ab41c8 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaserBuilder.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/AbstractReleaserBuilder.java @@ -15,15 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; - -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Checksum; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Signing; -import org.jreleaser.model.util.Artifacts; +package org.jreleaser.model.spi.release; + +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.checksum.Checksum; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.signing.Signing; +import org.jreleaser.model.internal.util.Artifacts; import org.jreleaser.util.Algorithm; import java.io.File; @@ -33,11 +33,11 @@ import java.util.List; import static java.util.Objects.requireNonNull; -import static org.jreleaser.model.Checksum.INDIVIDUAL_CHECKSUM; -import static org.jreleaser.model.Checksum.KEY_SKIP_CHECKSUM; -import static org.jreleaser.model.GitService.KEY_SKIP_RELEASE; -import static org.jreleaser.model.GitService.KEY_SKIP_RELEASE_SIGNATURES; -import static org.jreleaser.model.Signing.KEY_SKIP_SIGNING; +import static org.jreleaser.model.api.checksum.Checksum.INDIVIDUAL_CHECKSUM; +import static org.jreleaser.model.api.checksum.Checksum.KEY_SKIP_CHECKSUM; +import static org.jreleaser.model.api.release.Releaser.KEY_SKIP_RELEASE; +import static org.jreleaser.model.api.release.Releaser.KEY_SKIP_RELEASE_SIGNATURES; +import static org.jreleaser.model.api.signing.Signing.KEY_SKIP_SIGNING; import static org.jreleaser.util.StringUtils.isTrue; /** @@ -82,7 +82,7 @@ protected void validate() { @Override public ReleaserBuilder configureWith(JReleaserContext context) { this.context = context; - GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); if (!service.resolveUploadAssetsEnabled(context.getModel().getProject())) { return this; } @@ -149,7 +149,7 @@ public ReleaserBuilder configureWith(JReleaserContext context) { signaturesAdded = true; } } - if (signaturesAdded && signing.getMode() == Signing.Mode.COSIGN) { + if (signaturesAdded && signing.getMode() == org.jreleaser.model.Signing.Mode.COSIGN) { Path publicKeyFile = signing.getCosign().getResolvedPublicKeyFilePath(context); assets.add(Asset.signature(Artifact.of(publicKeyFile))); } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Asset.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Asset.java similarity index 94% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Asset.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Asset.java index 472f89fde..21bd6a807 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Asset.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Asset.java @@ -15,10 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.distributions.Distribution; import java.nio.file.Path; import java.util.Objects; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Commit.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Commit.java similarity index 97% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Commit.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Commit.java index 96dce01fe..ef79034bc 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Commit.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Commit.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; import java.util.Objects; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Release.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Release.java similarity index 96% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Release.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Release.java index aa0d55a1c..55a75be84 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Release.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Release.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; -import org.jreleaser.util.Version; +import org.jreleaser.version.Version; import java.util.Date; import java.util.Objects; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaseException.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaseException.java similarity index 96% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaseException.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaseException.java index e7de58113..21ff85330 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaseException.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaseException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Releaser.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Releaser.java similarity index 96% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Releaser.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Releaser.java index 5617f8ab8..3232981d6 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Releaser.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Releaser.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; import java.io.IOException; import java.util.List; @@ -31,7 +31,7 @@ public interface Releaser { Repository maybeCreateRepository(String owner, String repo, String password) throws IOException; Optional findUser(String email, String name); - + String generateReleaseNotes() throws IOException; List listReleases(String owner, String repo) throws IOException; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaserBuilder.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaserBuilder.java similarity index 91% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaserBuilder.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaserBuilder.java index 9bd909d7a..e2100ecc8 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaserBuilder.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaserBuilder.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import java.nio.file.Path; import java.util.List; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaserBuilderFactory.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaserBuilderFactory.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaserBuilderFactory.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaserBuilderFactory.java index 48bc24165..dc5a9e504 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/ReleaserBuilderFactory.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/ReleaserBuilderFactory.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Repository.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Repository.java similarity index 98% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Repository.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Repository.java index 2b2c7120b..5c083ad49 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/Repository.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/Repository.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; import java.util.Objects; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/User.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/User.java similarity index 97% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/User.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/User.java index 21076319d..99d258771 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/User.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/release/User.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.releaser.spi; +package org.jreleaser.model.spi.release; import java.util.Objects; diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/ArtifactUploader.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/ArtifactUploader.java similarity index 90% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/ArtifactUploader.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/ArtifactUploader.java index e3b751e51..14f4da75a 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/ArtifactUploader.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/ArtifactUploader.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.uploader.spi; +package org.jreleaser.model.spi.upload; -import org.jreleaser.model.Uploader; +import org.jreleaser.model.internal.upload.Uploader; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/ArtifactUploaderFactory.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/ArtifactUploaderFactory.java similarity index 85% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/ArtifactUploaderFactory.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/ArtifactUploaderFactory.java index 3cd98cea6..23a6ea671 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/ArtifactUploaderFactory.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/ArtifactUploaderFactory.java @@ -15,10 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.uploader.spi; +package org.jreleaser.model.spi.upload; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Uploader; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.Uploader; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/UploadException.java b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/UploadException.java similarity index 95% rename from core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/UploadException.java rename to core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/UploadException.java index 409cd97e2..cc078a6b5 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/uploader/spi/UploadException.java +++ b/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/spi/upload/UploadException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.model.uploader.spi; +package org.jreleaser.model.spi.upload; /** * @author Andres Almiray diff --git a/core/jreleaser-model/src/main/resources/META-INF/jreleaser/changelog/preset-conventional-commits.yml b/core/jreleaser-model-impl/src/main/resources/META-INF/jreleaser/changelog/preset-conventional-commits.yml similarity index 100% rename from core/jreleaser-model/src/main/resources/META-INF/jreleaser/changelog/preset-conventional-commits.yml rename to core/jreleaser-model-impl/src/main/resources/META-INF/jreleaser/changelog/preset-conventional-commits.yml diff --git a/core/jreleaser-model/src/main/resources/META-INF/jreleaser/changelog/preset-gitmoji.yml b/core/jreleaser-model-impl/src/main/resources/META-INF/jreleaser/changelog/preset-gitmoji.yml similarity index 100% rename from core/jreleaser-model/src/main/resources/META-INF/jreleaser/changelog/preset-gitmoji.yml rename to core/jreleaser-model-impl/src/main/resources/META-INF/jreleaser/changelog/preset-gitmoji.yml diff --git a/core/jreleaser-model/src/main/resources/META-INF/native-image/org.jreleaser/defaults/reflect-config.json b/core/jreleaser-model-impl/src/main/resources/META-INF/native-image/org.jreleaser/defaults/reflect-config.json similarity index 100% rename from core/jreleaser-model/src/main/resources/META-INF/native-image/org.jreleaser/defaults/reflect-config.json rename to core/jreleaser-model-impl/src/main/resources/META-INF/native-image/org.jreleaser/defaults/reflect-config.json diff --git a/core/jreleaser-model/src/test/java/org/jreleaser/model/JReleaserModelTest.java b/core/jreleaser-model-impl/src/test/java/org/jreleaser/model/JReleaserModelTest.java similarity index 78% rename from core/jreleaser-model/src/test/java/org/jreleaser/model/JReleaserModelTest.java rename to core/jreleaser-model-impl/src/test/java/org/jreleaser/model/JReleaserModelTest.java index bdd308644..cbc06a1d8 100644 --- a/core/jreleaser-model/src/test/java/org/jreleaser/model/JReleaserModelTest.java +++ b/core/jreleaser-model-impl/src/test/java/org/jreleaser/model/JReleaserModelTest.java @@ -17,20 +17,26 @@ */ package org.jreleaser.model; -import org.jreleaser.util.Constants; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; -class JReleaserModelTest { - +/** + * @author Geroge Gastaldi + * @since 1.2.0 + */ +@Disabled +public class JReleaserModelTest { @Test void shouldRenderProjectNameCapitalizedWithSpaces() { JReleaserModel model = new JReleaserModel(); model.getProject().setName("quarkiverse-parent"); - model.getRelease().setGithub(new Github()); + model.getRelease().setGithub(new GithubReleaser()); Map props = model.props(); assertEquals("Quarkiverse Parent", props.get(Constants.KEY_PROJECT_NAME_CAPITALIZED)); } diff --git a/core/jreleaser-model/src/test/java/org/jreleaser/model/PlatformTest.java b/core/jreleaser-model-impl/src/test/java/org/jreleaser/model/PlatformTest.java similarity index 97% rename from core/jreleaser-model/src/test/java/org/jreleaser/model/PlatformTest.java rename to core/jreleaser-model-impl/src/test/java/org/jreleaser/model/PlatformTest.java index 2e1a2a0d2..d3e9e41ca 100644 --- a/core/jreleaser-model/src/test/java/org/jreleaser/model/PlatformTest.java +++ b/core/jreleaser-model-impl/src/test/java/org/jreleaser/model/PlatformTest.java @@ -17,6 +17,7 @@ */ package org.jreleaser.model; +import org.jreleaser.model.internal.platform.Platform; import org.jreleaser.util.CollectionUtils; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; diff --git a/core/jreleaser-model/jreleaser-model.gradle b/core/jreleaser-model/jreleaser-model.gradle deleted file mode 100644 index 11faf90d5..000000000 --- a/core/jreleaser-model/jreleaser-model.gradle +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - api project(':jreleaser-utils') -} - -project.rootProject.gradle.addBuildListener(new BuildAdapter() { - @Override - void projectsEvaluated(Gradle gradle) { - gradle.rootProject.subprojects - .find { p -> p.name == 'jreleaser-model' } - .processResources { - inputs.property('build_date', gradle.rootProject.config.buildInfo.buildDate + ':' + gradle.rootProject.config.buildInfo.buildTime) - filesMatching(['**/JReleaserVersion.properties']) { - expand( - 'jreleaser_version': gradle.rootProject.version, - 'built_by': gradle.rootProject.config.buildInfo.buildBy, - 'created_by': gradle.rootProject.config.buildInfo.buildCreatedBy, - 'build_date': gradle.rootProject.config.buildInfo.buildDate, - 'build_time': gradle.rootProject.config.buildInfo.buildTime, - 'build_revision': gradle.rootProject.config.buildInfo.buildRevision - ) - } - } - } -}) \ No newline at end of file diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Announce.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Announce.java deleted file mode 100644 index 764ea8d65..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Announce.java +++ /dev/null @@ -1,404 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import org.jreleaser.bundle.RB; -import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.util.JReleaserOutput.nag; -import static org.jreleaser.util.StringUtils.isBlank; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Announce extends AbstractModelObject implements Domain, Activatable { - private final Article article = new Article(); - private final Discord discord = new Discord(); - private final Discussions discussions = new Discussions(); - private final Gitter gitter = new Gitter(); - private final GoogleChat googleChat = new GoogleChat(); - private final HttpAnnouncers http = new HttpAnnouncers(); - private final Mail mail = new Mail(); - private final Mastodon mastodon = new Mastodon(); - private final Mattermost mattermost = new Mattermost(); - private final SdkmanAnnouncer sdkman = new SdkmanAnnouncer(); - private final Slack slack = new Slack(); - private final Teams teams = new Teams(); - private final Telegram telegram = new Telegram(); - private final Twitter twitter = new Twitter(); - private final Webhooks webhooks = new Webhooks(); - private final Zulip zulip = new Zulip(); - - private Active active; - @JsonIgnore - private boolean enabled = true; - - @Override - public void freeze() { - super.freeze(); - article.freeze(); - discord.freeze(); - discussions.freeze(); - gitter.freeze(); - googleChat.freeze(); - http.freeze(); - mail.freeze(); - mastodon.freeze(); - mattermost.freeze(); - sdkman.freeze(); - slack.freeze(); - teams.freeze(); - telegram.freeze(); - twitter.freeze(); - webhooks.freeze(); - zulip.freeze(); - } - - @Override - public void merge(Announce announce) { - freezeCheck(); - this.active = merge(this.active, announce.active); - this.enabled = merge(this.enabled, announce.enabled); - setArticle(announce.article); - setDiscord(announce.discord); - setDiscussions(announce.discussions); - setGitter(announce.gitter); - setGoogleChat(announce.googleChat); - setConfiguredHttp(announce.http); - setMail(announce.mail); - setMastodon(announce.mastodon); - setMattermost(announce.mattermost); - setSdkman(announce.sdkman); - setSlack(announce.slack); - setTeams(announce.teams); - setTelegram(announce.telegram); - setTwitter(announce.twitter); - setZulip(announce.zulip); - setConfiguredWebhooks(announce.webhooks); - } - - @Override - public boolean isEnabled() { - return enabled && active != null; - } - - @Deprecated - public void setEnabled(Boolean enabled) { - nag("announce.enabled is deprecated since 1.1.0 and will be removed in 2.0.0"); - freezeCheck(); - if (null != enabled) { - this.active = enabled ? Active.ALWAYS : Active.NEVER; - } - } - - public void disable() { - active = Active.NEVER; - enabled = false; - } - - public boolean resolveEnabled(Project project) { - if (null == active) { - setActive(Env.resolveOrDefault("announce.active", "", "ALWAYS")); - } - enabled = active.check(project); - return enabled; - } - - @Override - public Active getActive() { - return active; - } - - @Override - public void setActive(Active active) { - freezeCheck(); - this.active = active; - } - - @Override - public void setActive(String str) { - setActive(Active.of(str)); - } - - @Override - public boolean isActiveSet() { - return active != null; - } - - public Article getArticle() { - return article; - } - - public void setArticle(Article article) { - this.article.merge(article); - } - - public Discord getDiscord() { - return discord; - } - - public void setDiscord(Discord discord) { - this.discord.merge(discord); - } - - public Discussions getDiscussions() { - return discussions; - } - - public void setDiscussions(Discussions discussions) { - this.discussions.merge(discussions); - } - - public Gitter getGitter() { - return gitter; - } - - public void setGitter(Gitter gitter) { - this.gitter.merge(gitter); - } - - public GoogleChat getGoogleChat() { - return googleChat; - } - - public void setGoogleChat(GoogleChat googleChat) { - this.googleChat.merge(googleChat); - } - - public Mail getMail() { - return mail; - } - - public void setMail(Mail mail) { - this.mail.merge(mail); - } - - public Mastodon getMastodon() { - return mastodon; - } - - public void setMastodon(Mastodon mastodon) { - this.mastodon.merge(mastodon); - } - - public Mattermost getMattermost() { - return mattermost; - } - - public void setMattermost(Mattermost mattermost) { - this.mattermost.merge(mattermost); - } - - public SdkmanAnnouncer getSdkman() { - return sdkman; - } - - public void setSdkman(SdkmanAnnouncer sdkman) { - this.sdkman.merge(sdkman); - } - - public Slack getSlack() { - return slack; - } - - public void setSlack(Slack slack) { - this.slack.merge(slack); - } - - public Teams getTeams() { - return teams; - } - - public void setTeams(Teams teams) { - this.teams.merge(teams); - } - - public Telegram getTelegram() { - return telegram; - } - - public void setTelegram(Telegram telegram) { - this.telegram.merge(telegram); - } - - public Twitter getTwitter() { - return twitter; - } - - public void setTwitter(Twitter twitter) { - this.twitter.merge(twitter); - } - - public HttpAnnouncers getConfiguredHttp() { - return this.http; - } - - void setConfiguredHttp(HttpAnnouncers https) { - this.http.merge(https); - } - - public Map getHttp() { - return this.http.getHttpAnnouncers(); - } - - public void setHttp(Map https) { - this.http.setHttpAnnouncers(https); - } - - public void addHttpAnnouncer(HttpAnnouncer http) { - this.http.addHttpAnnouncer(http); - } - - public Webhooks getConfiguredWebhooks() { - return this.webhooks; - } - - void setConfiguredWebhooks(Webhooks webhooks) { - this.webhooks.merge(webhooks); - } - - public Map getWebhooks() { - return this.webhooks.getWebhooks(); - } - - public void setWebhooks(Map webhooks) { - this.webhooks.setWebhooks(webhooks); - } - - public void addWebhook(Webhook webhook) { - this.webhooks.addWebhook(webhook); - } - - public Zulip getZulip() { - return zulip; - } - - public void setZulip(Zulip zulip) { - this.zulip.merge(zulip); - } - - @Override - public Map asMap(boolean full) { - Map map = new LinkedHashMap<>(); - map.put("enabled", isEnabled()); - map.put("active", active); - map.putAll(article.asMap(full)); - map.putAll(discord.asMap(full)); - map.putAll(discussions.asMap(full)); - map.putAll(gitter.asMap(full)); - map.putAll(googleChat.asMap(full)); - map.putAll(http.asMap(full)); - map.putAll(mail.asMap(full)); - map.putAll(mastodon.asMap(full)); - map.putAll(mattermost.asMap(full)); - map.putAll(sdkman.asMap(full)); - map.putAll(slack.asMap(full)); - map.putAll(teams.asMap(full)); - map.putAll(telegram.asMap(full)); - map.putAll(twitter.asMap(full)); - map.putAll(webhooks.asMap(full)); - map.putAll(zulip.asMap(full)); - return map; - } - - public A findAnnouncer(String name) { - if (isBlank(name)) { - throw new JReleaserException("Announcer name must not be blank"); - } - - return resolveAnnouncer(name); - } - - public A getAnnouncer(String name) { - A announcer = findAnnouncer(name); - if (null != announcer) { - return announcer; - } - throw new JReleaserException(RB.$("ERROR_announcer_not_configured", name)); - } - - private A resolveAnnouncer(String name) { - switch (name.toLowerCase(Locale.ENGLISH).trim()) { - case Article.NAME: - return (A) getArticle(); - case Discord.NAME: - return (A) getDiscord(); - case Discussions.NAME: - return (A) getDiscussions(); - case Gitter.NAME: - return (A) getGitter(); - case GoogleChat.NAME: - return (A) getGoogleChat(); - case HttpAnnouncers.NAME: - return (A) getConfiguredHttp(); - case Mail.NAME: - return (A) getMail(); - case Mastodon.NAME: - return (A) getMastodon(); - case Mattermost.NAME: - return (A) getMattermost(); - case SdkmanAnnouncer.NAME: - return (A) getSdkman(); - case Slack.NAME: - return (A) getSlack(); - case Teams.NAME: - return (A) getTeams(); - case Telegram.NAME: - return (A) getTelegram(); - case Twitter.NAME: - return (A) getTwitter(); - case Webhooks.NAME: - return (A) getConfiguredWebhooks(); - case Zulip.NAME: - return (A) getZulip(); - default: - throw new JReleaserException(RB.$("ERROR_unsupported_announcer", name)); - } - } - - public static Set supportedAnnouncers() { - Set set = new LinkedHashSet<>(); - set.add(Article.NAME); - set.add(Discord.NAME); - set.add(Discussions.NAME); - set.add(Gitter.NAME); - set.add(GoogleChat.NAME); - set.add(HttpAnnouncers.NAME); - set.add(Mail.NAME); - set.add(Mastodon.NAME); - set.add(Mattermost.NAME); - set.add(SdkmanAnnouncer.NAME); - set.add(Slack.NAME); - set.add(Teams.NAME); - set.add(Telegram.NAME); - set.add(Twitter.NAME); - set.add(Webhooks.NAME); - set.add(Zulip.NAME); - return Collections.unmodifiableSet(set); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Archive.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Archive.java deleted file mode 100644 index 0375b31b7..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Archive.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.PlatformUtils; - -import java.util.LinkedHashSet; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; - -/** - * @author Andres Almiray - * @since 0.8.0 - */ -public class Archive extends AbstractAssembler { - public static final String TYPE = "archive"; - - private final Set formats = new LinkedHashSet<>(); - - private String archiveName; - private Boolean attachPlatform; - private Distribution.DistributionType distributionType; - - public Archive() { - super(TYPE); - } - - @Override - public Distribution.DistributionType getDistributionType() { - return distributionType; - } - - public void setDistributionType(Distribution.DistributionType distributionType) { - freezeCheck(); - this.distributionType = distributionType; - } - - public void setDistributionType(String distributionType) { - freezeCheck(); - this.distributionType = Distribution.DistributionType.of(distributionType); - } - - @Override - public void merge(Archive archive) { - freezeCheck(); - super.merge(archive); - this.archiveName = merge(archive.archiveName, archive.archiveName); - this.distributionType = merge(archive.distributionType, archive.distributionType); - this.attachPlatform = merge(archive.attachPlatform, archive.attachPlatform); - setFormats(merge(this.formats, archive.formats)); - } - - public String getResolvedArchiveName(JReleaserContext context) { - Map props = context.fullProps(); - props.putAll(props()); - String result = resolveTemplate(archiveName, props); - if (isAttachPlatform()) { - result += "-" + getPlatform().applyReplacements(PlatformUtils.getCurrentFull()); - } - return result; - } - - public String getArchiveName() { - return archiveName; - } - - public void setArchiveName(String archiveName) { - freezeCheck(); - this.archiveName = archiveName; - } - - public boolean isAttachPlatformSet() { - return attachPlatform != null; - } - - public boolean isAttachPlatform() { - return attachPlatform != null && attachPlatform; - } - - public void setAttachPlatform(Boolean attachPlatform) { - freezeCheck(); - this.attachPlatform = attachPlatform; - } - - public Set getFormats() { - return freezeWrap(formats); - } - - public void setFormats(Set formats) { - freezeCheck(); - this.formats.clear(); - this.formats.addAll(formats); - } - - public void addFormat(Format format) { - freezeCheck(); - this.formats.add(format); - } - - public void addFormat(String str) { - freezeCheck(); - this.formats.add(Format.of(str)); - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("archiveName", archiveName); - props.put("distributionType", distributionType); - props.put("attachPlatform", isAttachPlatform()); - props.put("formats", formats); - } - - public enum Format { - ZIP("zip"), - TAR("tar"), - TAR_BZ2("tar.bz2"), - TAR_GZ("tar.gz"), - TAR_XZ("tar.xz"), - TBZ2("tbz2"), - TGZ("tgz"), - TXZ("txz"); - - private final String extension; - - Format(String extension) { - this.extension = extension; - } - - public String extension() { - return this.extension; - } - - @Override - public String toString() { - return extension(); - } - - public static org.jreleaser.model.Archive.Format of(String str) { - if (isBlank(str)) return null; - return org.jreleaser.model.Archive.Format - .valueOf(str.toUpperCase(Locale.ENGLISH).trim() - .replace(".", "_")); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Article.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Article.java deleted file mode 100644 index f4187ab00..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Article.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; - -/** - * @author Andres Almiray - * @since 0.6.0 - */ -public class Article extends AbstractAnnouncer
implements CommitAuthorAware { - public static final String NAME = "article"; - private final Set files = new LinkedHashSet<>(); - private final CommitAuthor commitAuthor = new CommitAuthor(); - private final Repository repository = new Repository(); - - private String templateDirectory; - - public Article() { - super(NAME); - } - - @Override - public void freeze() { - super.freeze(); - files.forEach(Artifact::freeze); - commitAuthor.freeze(); - repository.freeze(); - } - - @Override - public void merge(Article article) { - freezeCheck(); - super.merge(article); - this.templateDirectory = merge(this.templateDirectory, article.templateDirectory); - setFiles(merge(this.files, article.files)); - setCommitAuthor(article.commitAuthor); - setRepository(article.repository); - } - - public Set getFiles() { - return freezeWrap(Artifact.sortArtifacts(files)); - } - - public void setFiles(Set files) { - freezeCheck(); - this.files.clear(); - this.files.addAll(files); - } - - public void addFiles(Set files) { - freezeCheck(); - this.files.addAll(files); - } - - public void addFile(Artifact artifact) { - freezeCheck(); - if (null != artifact) { - this.files.add(artifact); - } - } - - @Override - public CommitAuthor getCommitAuthor() { - return commitAuthor; - } - - @Override - public void setCommitAuthor(CommitAuthor commitAuthor) { - this.commitAuthor.merge(commitAuthor); - } - - public Repository getRepository() { - return repository; - } - - public void setRepository(Repository repository) { - this.repository.merge(repository); - } - - public String getTemplateDirectory() { - return templateDirectory; - } - - public void setTemplateDirectory(String templateDirectory) { - freezeCheck(); - this.templateDirectory = templateDirectory; - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("commitAuthor", commitAuthor.asMap(full)); - props.put("repository", repository.asMap(full)); - - Map> mappedArtifacts = new LinkedHashMap<>(); - int i = 0; - for (Artifact artifact : getFiles()) { - mappedArtifacts.put("files " + (i++), artifact.asMap(full)); - } - props.put("files", mappedArtifacts); - props.put("templateDirectory", templateDirectory); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Asdf.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Asdf.java deleted file mode 100644 index 44527f319..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Asdf.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.PlatformUtils; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.model.Distribution.DistributionType.BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.FileType.TAR; -import static org.jreleaser.util.FileType.TAR_GZ; -import static org.jreleaser.util.FileType.TAR_XZ; -import static org.jreleaser.util.FileType.TGZ; -import static org.jreleaser.util.FileType.TXZ; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; - -/** - * @author Andres Almiray - * @since 1.2.0 - */ -public class Asdf extends AbstractRepositoryPackager { - public static final String TYPE = "asdf"; - public static final String SKIP_ASDF = "skipAsdf"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf( - TAR_GZ.extension(), - TAR_XZ.extension(), - TGZ.extension(), - TXZ.extension(), - TAR.extension(), - ZIP.extension()); - - SUPPORTED.put(BINARY, extensions); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - } - - private final AsdfRepository repository = new AsdfRepository(); - - private String toolCheck; - - public Asdf() { - super(TYPE); - } - - @Override - public void merge(Asdf source) { - freezeCheck(); - super.merge(source); - this.toolCheck = merge(this.toolCheck, source.toolCheck); - setRepository(source.repository); - } - - public String getToolCheck() { - return toolCheck; - } - - public void setToolCheck(String toolCheck) { - freezeCheck(); - this.toolCheck = toolCheck; - } - - public AsdfRepository getRepository() { - return repository; - } - - public void setRepository(AsdfRepository repository) { - this.repository.merge(repository); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("toolcheck", toolCheck); - props.put("repository", repository.asMap(full)); - } - - @Override - public RepositoryTap getRepositoryTap() { - return repository; - } - - @Override - public boolean supportsPlatform(String platform) { - return isBlank(platform) || - PlatformUtils.isMac(platform) || - PlatformUtils.isLinux(platform); - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_ASDF)); - } - - public static class AsdfRepository extends AbstractRepositoryTap { - public AsdfRepository() { - super("asdf", "asdf"); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Assemble.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Assemble.java deleted file mode 100644 index c7e2c05c5..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Assemble.java +++ /dev/null @@ -1,284 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static java.util.stream.Collectors.toList; -import static org.jreleaser.util.JReleaserOutput.nag; -import static org.jreleaser.util.StringUtils.isBlank; - -/** - * @author Andres Almiray - * @since 0.2.0 - */ -public class Assemble extends AbstractModelObject implements Domain, Activatable { - private final Map archive = new LinkedHashMap<>(); - private final Map jlink = new LinkedHashMap<>(); - private final Map jpackage = new LinkedHashMap<>(); - private final Map nativeImage = new LinkedHashMap<>(); - - private Active active; - @JsonIgnore - private boolean enabled = true; - - @Override - public void freeze() { - super.freeze(); - archive.values().forEach(Archive::freeze); - jlink.values().forEach(Jlink::freeze); - jpackage.values().forEach(Jpackage::freeze); - nativeImage.values().forEach(NativeImage::freeze); - } - - @Override - public void merge(Assemble assemble) { - freezeCheck(); - this.active = merge(this.active, assemble.active); - this.enabled = merge(this.enabled, assemble.enabled); - setArchive(mergeModel(this.archive, assemble.archive)); - setJlink(mergeModel(this.jlink, assemble.jlink)); - setJpackage(mergeModel(this.jpackage, assemble.jpackage)); - setNativeImage(mergeModel(this.nativeImage, assemble.nativeImage)); - } - - @Override - public boolean isEnabled() { - return enabled; - } - - @Deprecated - public void setEnabled(Boolean enabled) { - nag("assemble.enabled is deprecated since 1.1.0 and will be removed in 2.0.0"); - freezeCheck(); - if (null != enabled) { - this.active = enabled ? Active.ALWAYS : Active.NEVER; - } - } - - public void disable() { - active = Active.NEVER; - enabled = false; - } - - public boolean resolveEnabled(Project project) { - if (null == active) { - setActive(Env.resolveOrDefault("assemble.active", "", "ALWAYS")); - } - enabled = active.check(project); - return enabled; - } - - @Override - public Active getActive() { - return active; - } - - @Override - public void setActive(Active active) { - freezeCheck(); - this.active = active; - } - - @Override - public void setActive(String str) { - setActive(Active.of(str)); - } - - @Override - public boolean isActiveSet() { - return active != null; - } - - public List getActiveArchives() { - return archive.values().stream() - .filter(Archive::isEnabled) - .collect(toList()); - } - - public Map getArchive() { - return freezeWrap(archive); - } - - public void setArchive(Map archive) { - freezeCheck(); - this.archive.clear(); - this.archive.putAll(archive); - } - - public void addArchive(Archive archive) { - freezeCheck(); - this.archive.put(archive.getName(), archive); - } - - public List getActiveJlinks() { - return jlink.values().stream() - .filter(Jlink::isEnabled) - .collect(toList()); - } - - public Map getJlink() { - return freezeWrap(jlink); - } - - public void setJlink(Map jlink) { - freezeCheck(); - this.jlink.clear(); - this.jlink.putAll(jlink); - } - - public void addJlink(Jlink jlink) { - freezeCheck(); - this.jlink.put(jlink.getName(), jlink); - } - - public Jlink findJlink(String name) { - if (isBlank(name)) { - throw new JReleaserException("Jlink name must not be blank"); - } - - if (jlink.containsKey(name)) { - return jlink.get(name); - } - - throw new JReleaserException("Jlink '" + name + "' not found"); - } - - public List getActiveJpackages() { - return jpackage.values().stream() - .filter(Jpackage::isEnabled) - .collect(toList()); - } - - public Map getJpackage() { - return freezeWrap(jpackage); - } - - public void setJpackage(Map jpackage) { - freezeCheck(); - this.jpackage.clear(); - this.jpackage.putAll(jpackage); - } - - public void addJpackage(Jpackage jpackage) { - freezeCheck(); - this.jpackage.put(jpackage.getName(), jpackage); - } - - public List getActiveNativeImages() { - return nativeImage.values().stream() - .filter(NativeImage::isEnabled) - .collect(toList()); - } - - public Map getNativeImage() { - return freezeWrap(nativeImage); - } - - public void setNativeImage(Map nativeImage) { - freezeCheck(); - this.nativeImage.clear(); - this.nativeImage.putAll(nativeImage); - } - - public void addNativeImage(NativeImage nativeImage) { - freezeCheck(); - this.nativeImage.put(nativeImage.getName(), nativeImage); - } - - @Override - public Map asMap(boolean full) { - Map map = new LinkedHashMap<>(); - map.put("enabled", isEnabled()); - map.put("active", active); - - List> archive = this.archive.values() - .stream() - .filter(d -> full || d.isEnabled()) - .map(d -> d.asMap(full)) - .collect(toList()); - if (!archive.isEmpty()) map.put("archive", archive); - - List> jlink = this.jlink.values() - .stream() - .filter(d -> full || d.isEnabled()) - .map(d -> d.asMap(full)) - .collect(toList()); - if (!jlink.isEmpty()) map.put("jlink", jlink); - - List> jpackage = this.jpackage.values() - .stream() - .filter(d -> full || d.isEnabled()) - .map(d -> d.asMap(full)) - .collect(toList()); - if (!jpackage.isEmpty()) map.put("jpackage", jpackage); - - List> nativeImage = this.nativeImage.values() - .stream() - .filter(d -> full || d.isEnabled()) - .map(d -> d.asMap(full)) - .collect(toList()); - if (!nativeImage.isEmpty()) map.put("nativeImage", nativeImage); - - return map; - } - - public Map findAssemblersByType(String assemblerName) { - switch (assemblerName) { - case Archive.TYPE: - return (Map) archive; - case Jlink.TYPE: - return (Map) jlink; - case Jpackage.TYPE: - return (Map) jpackage; - case NativeImage.TYPE: - return (Map) nativeImage; - } - - return Collections.emptyMap(); - } - - public Collection findAllAssemblers() { - List assemblers = new ArrayList<>(); - assemblers.addAll((List) getActiveArchives()); - assemblers.addAll((List) getActiveJlinks()); - assemblers.addAll((List) getActiveJpackages()); - assemblers.addAll((List) getActiveNativeImages()); - return assemblers; - } - - public static Set supportedAssemblers() { - Set set = new LinkedHashSet<>(); - set.add(Archive.TYPE); - set.add(Jlink.TYPE); - set.add(Jpackage.TYPE); - set.add(NativeImage.TYPE); - return Collections.unmodifiableSet(set); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Chocolatey.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Chocolatey.java deleted file mode 100644 index 7f7182c3a..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Chocolatey.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.Env; -import org.jreleaser.util.PlatformUtils; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.model.Distribution.DistributionType.BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.FileType.EXE; -import static org.jreleaser.util.FileType.MSI; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Chocolatey extends AbstractRepositoryPackager { - public static final String CHOCOLATEY_API_KEY = "CHOCOLATEY_API_KEY"; - public static final String TYPE = "chocolatey"; - public static final String SKIP_CHOCOLATEY = "skipChocolatey"; - public static final String DEFAULT_CHOCOLATEY_PUSH_URL = "https://push.chocolatey.org/"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf(ZIP.extension()); - SUPPORTED.put(BINARY, extensions); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - SUPPORTED.put(NATIVE_PACKAGE, setOf(EXE.extension(), MSI.extension())); - } - - private final ChocolateyBucket bucket = new ChocolateyBucket(); - private String packageName; - private String packageVersion; - private String username; - private String apiKey; - private String title; - private String iconUrl; - private String source; - private Boolean remoteBuild; - - public Chocolatey() { - super(TYPE); - } - - @Override - public void freeze() { - super.freeze(); - bucket.freeze(); - } - - @Override - public void merge(Chocolatey choco) { - freezeCheck(); - super.merge(choco); - this.packageName = merge(this.packageName, choco.packageName); - this.packageVersion = merge(this.packageVersion, choco.packageVersion); - this.username = merge(this.username, choco.username); - this.apiKey = merge(this.apiKey, choco.apiKey); - this.title = merge(this.title, choco.title); - this.iconUrl = merge(this.iconUrl, choco.iconUrl); - this.source = merge(this.source, choco.source); - this.remoteBuild = merge(this.remoteBuild, choco.remoteBuild); - setBucket(choco.bucket); - } - - public String getResolvedApiKey() { - return Env.env(CHOCOLATEY_API_KEY, apiKey); - } - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - freezeCheck(); - this.packageName = packageName; - } - - public String getPackageVersion() { - return packageVersion; - } - - public void setPackageVersion(String packageVersion) { - freezeCheck(); - this.packageVersion = packageVersion; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - freezeCheck(); - this.username = username; - } - - public String getApiKey() { - return apiKey; - } - - public void setApiKey(String apiKey) { - freezeCheck(); - this.apiKey = apiKey; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - freezeCheck(); - this.title = title; - } - - public String getIconUrl() { - return iconUrl; - } - - public void setIconUrl(String iconUrl) { - freezeCheck(); - this.iconUrl = iconUrl; - } - - public String getSource() { - return source; - } - - public void setSource(String source) { - freezeCheck(); - this.source = source; - } - - public boolean isRemoteBuild() { - return remoteBuild != null && remoteBuild; - } - - public void setRemoteBuild(Boolean remoteBuild) { - freezeCheck(); - this.remoteBuild = remoteBuild; - } - - public boolean isRemoteBuildSet() { - return remoteBuild != null; - } - - public ChocolateyBucket getBucket() { - return bucket; - } - - public void setBucket(ChocolateyBucket bucket) { - freezeCheck(); - this.bucket.merge(bucket); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("packageName", packageName); - props.put("packageVersion", packageVersion); - props.put("username", username); - props.put("apiKey", isNotBlank(getResolvedApiKey()) ? HIDE : UNSET); - props.put("remoteBuild", isRemoteBuild()); - props.put("title", title); - props.put("iconUrl", iconUrl); - props.put("source", source); - props.put("bucket", bucket.asMap(full)); - } - - @Override - public RepositoryTap getRepositoryTap() { - return bucket; - } - - @Override - public boolean supportsPlatform(String platform) { - return isBlank(platform) || - PlatformUtils.isWindows(platform) && PlatformUtils.isIntel(platform); - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_CHOCOLATEY)); - } - - public static class ChocolateyBucket extends AbstractRepositoryTap { - public ChocolateyBucket() { - super("chocolatey", "chocolatey-bucket"); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Docker.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Docker.java deleted file mode 100644 index 1c61ba20d..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Docker.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import org.jreleaser.util.FileType; -import org.jreleaser.util.PlatformUtils; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.EnumSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import static java.util.Comparator.naturalOrder; -import static java.util.stream.Collectors.toList; -import static org.jreleaser.model.Distribution.DistributionType.BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.FileType.JAR; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Docker extends AbstractDockerConfiguration implements RepositoryPackager { - public static final String SKIP_DOCKER = "skipDocker"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf(ZIP.extension()); - SUPPORTED.put(BINARY, extensions); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - SUPPORTED.put(SINGLE_JAR, setOf(JAR.extension())); - } - - private final Map specs = new LinkedHashMap<>(); - private final CommitAuthor commitAuthor = new CommitAuthor(); - private final DockerRepository repository = new DockerRepository(); - - private Boolean continueOnError; - private String downloadUrl; - @JsonIgnore - private boolean failed; - - @Override - public void freeze() { - super.freeze(); - specs.values().forEach(DockerSpec::freeze); - commitAuthor.freeze(); - repository.freeze(); - } - - @Override - public void merge(Docker docker) { - freezeCheck(); - super.merge(docker); - this.continueOnError = merge(this.continueOnError, docker.continueOnError); - this.downloadUrl = merge(this.downloadUrl, docker.downloadUrl); - this.failed = docker.failed; - setSpecs(mergeModel(this.specs, docker.specs)); - setCommitAuthor(docker.commitAuthor); - setRepository(docker.repository); - } - - @Override - public void fail() { - this.failed = true; - } - - @Override - public boolean isFailed() { - return failed; - } - - @Override - public boolean isContinueOnError() { - return continueOnError != null && continueOnError; - } - - @Override - public void setContinueOnError(Boolean continueOnError) { - freezeCheck(); - this.continueOnError = continueOnError; - } - - @Override - public boolean isContinueOnErrorSet() { - return continueOnError != null; - } - - @Override - public String getDownloadUrl() { - return downloadUrl; - } - - @Override - public void setDownloadUrl(String downloadUrl) { - freezeCheck(); - this.downloadUrl = downloadUrl; - } - - @Override - public boolean supportsPlatform(String platform) { - return isBlank(platform) || PlatformUtils.isUnix(platform); - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - public Set getSupportedStereotypes() { - return EnumSet.allOf(Stereotype.class); - } - - @Override - public List resolveCandidateArtifacts(JReleaserContext context, Distribution distribution) { - List fileExtensions = new ArrayList<>(getSupportedExtensions(distribution)); - fileExtensions.sort(naturalOrder()); - - return distribution.getArtifacts().stream() - .filter(Artifact::isActive) - .filter(artifact -> fileExtensions.stream().anyMatch(ext -> artifact.getResolvedPath(context, distribution).toString().endsWith(ext))) - .filter(artifact -> supportsPlatform(artifact.getPlatform())) - .filter(this::isNotSkipped) - .sorted(Artifact.comparatorByPlatform().thenComparingInt(artifact -> { - String ext = FileType.getExtension(artifact.getResolvedPath(context, distribution)); - return fileExtensions.indexOf(ext); - })) - .collect(toList()); - } - - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_DOCKER)); - } - - @Override - public boolean isSnapshotSupported() { - return true; - } - - @Override - public String getType() { - return TYPE; - } - - @Override - public CommitAuthor getCommitAuthor() { - return commitAuthor; - } - - @Override - public void setCommitAuthor(CommitAuthor commitAuthor) { - this.commitAuthor.merge(commitAuthor); - } - - public List getActiveSpecs() { - return specs.values().stream() - .filter(DockerSpec::isEnabled) - .collect(Collectors.toList()); - } - - public Map getSpecs() { - return freezeWrap(specs); - } - - public void setSpecs(Map specs) { - freezeCheck(); - this.specs.clear(); - this.specs.putAll(specs); - } - - public void addSpecs(Map specs) { - freezeCheck(); - this.specs.putAll(specs); - } - - public void addSpec(DockerSpec spec) { - freezeCheck(); - this.specs.put(spec.getName(), spec); - } - - @Override - public Map asMap(boolean full) { - if (!full && !isEnabled()) return Collections.emptyMap(); - - Map map = new LinkedHashMap<>(); - map.put(getType(), super.asMap(full)); - return map; - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("commitAuthor", commitAuthor.asMap(full)); - props.put("repository", repository.asMap(full)); - props.put("downloadUrl", downloadUrl); - props.put("continueOnError", isContinueOnError()); - List> specs = this.specs.values() - .stream() - .filter(d -> full || d.isEnabled()) - .map(d -> d.asMap(full)) - .collect(Collectors.toList()); - if (!specs.isEmpty()) props.put("specs", specs); - } - - public DockerRepository getRepository() { - return repository; - } - - public void setRepository(DockerRepository repository) { - this.repository.merge(repository); - } - - @Override - public RepositoryTap getRepositoryTap() { - return repository; - } - - public static class DockerRepository extends AbstractRepositoryTap { - private Boolean versionedSubfolders; - - public DockerRepository() { - super("docker", "docker"); - } - - @Override - public void merge(DockerRepository tap) { - freezeCheck(); - super.merge(tap); - this.versionedSubfolders = this.merge(this.versionedSubfolders, tap.versionedSubfolders); - } - - public boolean isVersionedSubfolders() { - return versionedSubfolders != null && versionedSubfolders; - } - - public void setVersionedSubfolders(Boolean versionedSubfolders) { - freezeCheck(); - this.versionedSubfolders = versionedSubfolders; - } - - public boolean isVersionedSubfoldersSet() { - return versionedSubfolders != null; - } - - @Override - public Map asMap(boolean full) { - Map map = super.asMap(full); - map.put("versionedSubfolders", isVersionedSubfolders()); - return map; - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/DockerSpec.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/DockerSpec.java deleted file mode 100644 index d2c04309b..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/DockerSpec.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.PlatformUtils; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author Andres Almiray - * @since 0.4.0 - */ -public class DockerSpec extends AbstractDockerConfiguration { - private final Map matchers = new LinkedHashMap<>(); - private Artifact artifact; - - private String name; - - @Override - public void freeze() { - super.freeze(); - if (null != artifact) artifact.freeze(); - } - - @Override - public void merge(DockerSpec docker) { - freezeCheck(); - super.merge(docker); - this.name = merge(this.name, docker.name); - this.artifact = docker.artifact; - setMatchers(merge(this.matchers, docker.matchers)); - } - - public Artifact getArtifact() { - return artifact; - } - - public void setArtifact(Artifact artifact) { - freezeCheck(); - this.artifact = artifact; - this.artifact.activate(); - } - - public String getName() { - return name; - } - - public void setName(String name) { - freezeCheck(); - this.name = name; - } - - public Map getMatchers() { - return freezeWrap(matchers); - } - - public void setMatchers(Map matchers) { - freezeCheck(); - this.matchers.putAll(matchers); - } - - @Override - public Map asMap(boolean full) { - Map props = super.asMap(full); - - if (!props.isEmpty()) { - Map map = new LinkedHashMap<>(); - map.put(name, props); - return map; - } - - return props; - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("matchers", matchers); - if (artifact != null) { - props.put("artifact", artifact.asMap(full)); - } - } - - public boolean matches(Artifact artifact) { - boolean matched = true; - - for (Map.Entry e : matchers.entrySet()) { - String key = e.getKey(); - if ("platform".equals(key)) { - matched &= PlatformUtils.isCompatible(String.valueOf(e.getValue()), artifact.getPlatform()); - } else if (artifact.getExtraProperties().containsKey(key)) { - matched &= e.getValue().equals(artifact.getExtraProperties().get(key)); - } - } - - return matched; - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitea.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitea.java deleted file mode 100644 index 80d3b3cb8..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitea.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.Map; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Gitea extends GitService { - public static final String NAME = "gitea"; - - private Boolean draft; - - public Gitea() { - this(NAME); - } - - Gitea(String name) { - super(name, true); - setRepoUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}"); - setRepoCloneUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git"); - setCommitUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits"); - setSrcUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/src/{{repoBranch}}"); - setDownloadUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFile}}"); - setReleaseNotesUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}"); - setLatestReleaseUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest"); - setIssueTrackerUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues"); - } - - @Override - public void merge(Gitea service) { - freezeCheck(); - super.merge(service); - this.draft = merge(this.draft, service.draft); - } - - public boolean isDraft() { - return draft != null && draft; - } - - public void setDraft(Boolean draft) { - freezeCheck(); - this.draft = draft; - } - - public boolean isDraftSet() { - return draft != null; - } - - @Override - public String getReverseRepoHost() { - return null; - } - - @Override - public Map asMap(boolean full) { - Map map = super.asMap(full); - map.put("draft", isDraft()); - return map; - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Github.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Github.java deleted file mode 100644 index d72d98b79..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Github.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Github extends GitService { - public static final String NAME = "github"; - - private final ReleaseNotes releaseNotes = new ReleaseNotes(); - - private Boolean draft; - private String discussionCategoryName; - - public Github() { - super(NAME, true); - setHost("github.com"); - setApiEndpoint("https://api.github.com"); - setRepoUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}"); - setRepoCloneUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git"); - setCommitUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/commits"); - setSrcUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/blob/{{repoBranch}}"); - setDownloadUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/download/{{tagName}}/{{artifactFile}}"); - setReleaseNotesUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/tag/{{tagName}}"); - setLatestReleaseUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/releases/latest"); - setIssueTrackerUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/issues"); - } - - @Override - public void freeze() { - super.freeze(); - releaseNotes.freeze(); - } - - @Override - public void merge(Github service) { - freezeCheck(); - super.merge(service); - this.draft = merge(this.draft, service.draft); - this.discussionCategoryName = merge(this.discussionCategoryName, service.discussionCategoryName); - setReleaseNotes(service.releaseNotes); - } - - public boolean isDraft() { - return draft != null && draft; - } - - public void setDraft(Boolean draft) { - freezeCheck(); - this.draft = draft; - } - - public boolean isDraftSet() { - return draft != null; - } - - public String getDiscussionCategoryName() { - return discussionCategoryName; - } - - public void setDiscussionCategoryName(String discussionCategoryName) { - freezeCheck(); - this.discussionCategoryName = discussionCategoryName; - } - - public ReleaseNotes getReleaseNotes() { - return releaseNotes; - } - - public void setReleaseNotes(ReleaseNotes releaseNotes) { - this.releaseNotes.merge(releaseNotes); - } - - @Override - public String getReverseRepoHost() { - return "com.github"; - } - - @Override - public Map asMap(boolean full) { - Map map = super.asMap(full); - map.put("draft", isDraft()); - map.put("discussionCategoryName", discussionCategoryName); - map.put("releaseNotes", releaseNotes.asMap(full)); - return map; - } - - public static class ReleaseNotes extends AbstractModelObject implements Domain, EnabledAware { - private Boolean enabled; - private String configurationFile; - - @Override - public void merge(ReleaseNotes source) { - freezeCheck(); - this.enabled = merge(this.enabled, source.enabled); - this.configurationFile = merge(this.configurationFile, source.configurationFile); - } - - @Override - public boolean isEnabled() { - return enabled != null && enabled; - } - - @Override - public void setEnabled(Boolean enabled) { - freezeCheck(); - this.enabled = enabled; - } - - @Override - public boolean isEnabledSet() { - return enabled != null; - } - - public String getConfigurationFile() { - return configurationFile; - } - - public void setConfigurationFile(String configurationFile) { - freezeCheck(); - this.configurationFile = configurationFile; - } - - @Override - public Map asMap(boolean full) { - Map map = new LinkedHashMap<>(); - map.put("enabled", isEnabled()); - map.put("configurationFile", configurationFile); - return map; - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitlab.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitlab.java deleted file mode 100644 index c208504e3..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gitlab.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.LinkedHashMap; -import java.util.Map; - -import static org.jreleaser.util.Constants.KEY_IDENTIFIER; -import static org.jreleaser.util.Constants.KEY_PROJECT_IDENTIFIER; -import static org.jreleaser.util.JReleaserOutput.nag; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Gitlab extends GitService { - public static final String NAME = "gitlab"; - public static final String SKIP_GITLAB_LINKS = "skipGitlabLinks"; - - private final Map uploadLinks = new LinkedHashMap<>(); - private String projectIdentifier; - - public Gitlab() { - super(NAME, true); - setHost("gitlab.com"); - setRepoUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}"); - setRepoCloneUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}.git"); - setCommitUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/-/commits"); - setSrcUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/-/blob/{{repoBranch}}"); - setDownloadUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/-/releases/{{tagName}}/downloads/{{artifactFile}}"); - setReleaseNotesUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/-/releases/{{tagName}}"); - setLatestReleaseUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/-/releases/permalink/latest"); - setIssueTrackerUrl("https://{{repoHost}}/{{repoOwner}}/{{repoName}}/-/issues"); - } - - @Override - public void merge(Gitlab service) { - freezeCheck(); - super.merge(service); - this.projectIdentifier = merge(this.projectIdentifier, service.projectIdentifier); - setUploadLinks(merge(this.uploadLinks, service.uploadLinks)); - } - - @Override - public String getReverseRepoHost() { - return "com.gitlab"; - } - - @Deprecated - public String getIdentifier() { - return getProjectIdentifier(); - } - - @Deprecated - public void setIdentifier(String identifier) { - nag("gitlab.identifier is deprecated since 1.2.0 and will be removed in 2.0.0. Use gitlab.projectIdentifier instead"); - setProjectIdentifier(identifier); - } - - public String getProjectIdentifier() { - return projectIdentifier; - } - - public void setProjectIdentifier(String projectIdentifier) { - freezeCheck(); - this.projectIdentifier = projectIdentifier; - } - - public Map getUploadLinks() { - return freezeWrap(uploadLinks); - } - - public void setUploadLinks(Map uploadLinks) { - freezeCheck(); - this.uploadLinks.clear(); - this.uploadLinks.putAll(uploadLinks); - } - - @Override - public Map asMap(boolean full) { - Map map = super.asMap(full); - map.put("projectIdentifier", projectIdentifier); - map.put("uploadLinks", uploadLinks); - return map; - } - - @Override - public Map props(JReleaserModel model) { - Map props = super.props(model); - props.put(KEY_IDENTIFIER, projectIdentifier); - props.put(KEY_PROJECT_IDENTIFIER, projectIdentifier); - - return props; - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gofish.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Gofish.java deleted file mode 100644 index 97f9195d5..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Gofish.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.PlatformUtils; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.model.Distribution.DistributionType.BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.FileType.TAR; -import static org.jreleaser.util.FileType.TAR_GZ; -import static org.jreleaser.util.FileType.TAR_XZ; -import static org.jreleaser.util.FileType.TGZ; -import static org.jreleaser.util.FileType.TXZ; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; - -/** - * @author Andres Almiray - * @since 0.10.0 - */ -public class Gofish extends AbstractRepositoryPackager { - public static final String TYPE = "gofish"; - public static final String SKIP_GOFISH = "skipGofish"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf( - TAR_GZ.extension(), - TAR_XZ.extension(), - TGZ.extension(), - TXZ.extension(), - TAR.extension(), - ZIP.extension()); - - SUPPORTED.put(BINARY, extensions); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - } - - private final GofishRepository repository = new GofishRepository(); - - public Gofish() { - super(TYPE); - } - - @Override - public void merge(Gofish spec) { - freezeCheck(); - super.merge(spec); - setRepository(spec.repository); - } - - public GofishRepository getRepository() { - return repository; - } - - public void setRepository(GofishRepository repository) { - this.repository.merge(repository); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("repository", repository.asMap(full)); - } - - @Override - public RepositoryTap getRepositoryTap() { - return repository; - } - - @Override - public boolean supportsPlatform(String platform) { - return isBlank(platform) || - PlatformUtils.isMac(platform) || - PlatformUtils.isWindows(platform) || - PlatformUtils.isLinux(platform) && !PlatformUtils.isAlpineLinux(platform); - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_GOFISH)); - } - - public static class GofishRepository extends AbstractRepositoryTap { - public GofishRepository() { - super("gofish", "fish-food"); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpAnnouncers.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpAnnouncers.java deleted file mode 100644 index b278decee..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpAnnouncers.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author Andres Almiray - * @since 1.3.0 - */ -public class HttpAnnouncers extends AbstractAnnouncer { - public static final String NAME = "http"; - private final Map https = new LinkedHashMap<>(); - - public HttpAnnouncers() { - super(NAME); - } - - @Override - public void freeze() { - super.freeze(); - https.values().forEach(HttpAnnouncer::freeze); - } - - @Override - public void merge(HttpAnnouncers http) { - freezeCheck(); - super.merge(http); - setHttpAnnouncers(mergeModel(this.https, http.https)); - } - - public List getActiveHttpAnnouncers() { - return https.values().stream() - .filter(HttpAnnouncer::isEnabled) - .collect(Collectors.toList()); - } - - public Map getHttpAnnouncers() { - return freezeWrap(https); - } - - public void setHttpAnnouncers(Map https) { - freezeCheck(); - this.https.clear(); - this.https.putAll(https); - } - - public void addHttpAnnouncer(HttpAnnouncer http) { - freezeCheck(); - this.https.put(http.getName(), http); - } - - @Override - public Map asMap(boolean full) { - if (!full && !isEnabled()) return Collections.emptyMap(); - - Map props = new LinkedHashMap<>(); - asMap(full, props); - - Map map = new LinkedHashMap<>(); - map.put(getName(), props); - return map; - } - - @Override - protected void asMap(boolean full, Map props) { - this.https.values() - .stream() - .filter(HttpAnnouncer::isEnabled) - .map(d -> d.asMap(full)) - .forEach(props::putAll); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpUploader.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpUploader.java deleted file mode 100644 index 90623cb26..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/HttpUploader.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.Env; - -import java.util.LinkedHashMap; -import java.util.Map; - -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.4.0 - */ -public class HttpUploader extends AbstractWebUploader { - public static final String TYPE = "http"; - - private final Map headers = new LinkedHashMap<>(); - private String username; - private String password; - private Authorization authorization; - private Method method; - - public HttpUploader() { - super(TYPE); - } - - @Override - public void merge(HttpUploader http) { - freezeCheck(); - super.merge(http); - this.username = merge(this.username, http.username); - this.password = merge(this.password, http.password); - this.authorization = merge(this.authorization, http.authorization); - this.method = merge(this.method, http.method); - setHeaders(merge(this.headers, http.headers)); - } - - public Authorization resolveAuthorization() { - if (null == authorization) { - authorization = Authorization.NONE; - } - - return authorization; - } - - public String getResolvedUsername() { - return Env.env("HTTP_" + Env.toVar(name) + "_USERNAME", username); - } - - public String getResolvedPassword() { - return Env.env("HTTP_" + Env.toVar(name) + "_PASSWORD", password); - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - freezeCheck(); - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - freezeCheck(); - this.password = password; - } - - public Authorization getAuthorization() { - return authorization; - } - - public void setAuthorization(Authorization authorization) { - freezeCheck(); - this.authorization = authorization; - } - - public void setAuthorization(String authorization) { - freezeCheck(); - this.authorization = Authorization.of(authorization); - } - - public Method getMethod() { - return method; - } - - public void setMethod(Method method) { - freezeCheck(); - this.method = method; - } - - public void setMethod(String method) { - freezeCheck(); - this.method = HttpUploader.Method.of(method); - } - - public Map getHeaders() { - return freezeWrap(headers); - } - - public void setHeaders(Map headers) { - freezeCheck(); - this.headers.putAll(headers); - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("authorization", authorization); - props.put("method", method); - props.put("username", isNotBlank(getResolvedUsername()) ? HIDE : UNSET); - props.put("password", isNotBlank(getResolvedPassword()) ? HIDE : UNSET); - props.put("headers", headers); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Jbang.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Jbang.java deleted file mode 100644 index a5678efb2..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Jbang.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -import static java.util.Collections.emptySet; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Jbang extends AbstractRepositoryPackager { - public static final String TYPE = "jbang"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - SUPPORTED.put(JAVA_BINARY, emptySet()); - SUPPORTED.put(JLINK, emptySet()); - SUPPORTED.put(SINGLE_JAR, emptySet()); - } - - private final JbangCatalog catalog = new JbangCatalog(); - private String alias; - - public Jbang() { - super(TYPE); - } - - @Override - public void freeze() { - super.freeze(); - catalog.freeze(); - } - - @Override - public void merge(Jbang jbang) { - freezeCheck(); - super.merge(jbang); - this.alias = merge(this.alias, jbang.alias); - setCatalog(jbang.catalog); - } - - public String getAlias() { - return alias; - } - - public void setAlias(String alias) { - freezeCheck(); - this.alias = alias; - } - - public JbangCatalog getCatalog() { - return catalog; - } - - public void setCatalog(JbangCatalog tap) { - this.catalog.merge(tap); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("alias", alias); - props.put("catalog", catalog.asMap(full)); - } - - @Override - public RepositoryTap getRepositoryTap() { - return catalog; - } - - @Override - public boolean supportsPlatform(String platform) { - return true; - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return true; - } - - @Override - public boolean isSnapshotSupported() { - return true; - } - - public static class JbangCatalog extends AbstractRepositoryTap { - public JbangCatalog() { - super("jbang", "jbang-catalog"); - } - - @Override - public String getResolvedName() { - return tapName; - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Jlink.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Jlink.java deleted file mode 100644 index 34cd757e0..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Jlink.java +++ /dev/null @@ -1,296 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; - -/** - * @author Andres Almiray - * @since 0.2.0 - */ -public class Jlink extends AbstractJavaAssembler { - public static final String TYPE = "jlink"; - - private final Set targetJdks = new LinkedHashSet<>(); - private final Set moduleNames = new LinkedHashSet<>(); - private final Set additionalModuleNames = new LinkedHashSet<>(); - private final List args = new ArrayList<>(); - private final Artifact jdk = new Artifact(); - private final Jdeps jdeps = new Jdeps(); - - private String imageName; - private String imageNameTransform; - private Boolean copyJars; - - public Jlink() { - super(TYPE); - } - - @Override - public Distribution.DistributionType getDistributionType() { - return Distribution.DistributionType.JLINK; - } - - @Override - public void freeze() { - super.freeze(); - targetJdks.forEach(Artifact::freeze); - jdk.freeze(); - jdeps.freeze(); - } - - @Override - public void merge(Jlink jlink) { - freezeCheck(); - super.merge(jlink); - this.imageName = merge(this.imageName, jlink.imageName); - this.imageNameTransform = merge(this.imageNameTransform, jlink.imageNameTransform); - this.copyJars = merge(this.copyJars, jlink.copyJars); - setJdeps(jlink.jdeps); - setJdk(jlink.jdk); - setTargetJdks(merge(this.targetJdks, jlink.targetJdks)); - setModuleNames(merge(this.moduleNames, jlink.moduleNames)); - setAdditionalModuleNames(merge(this.additionalModuleNames, jlink.additionalModuleNames)); - setArgs(merge(this.args, jlink.args)); - } - - public String getResolvedImageName(JReleaserContext context) { - Map props = context.getModel().props(); - props.putAll(props()); - return resolveTemplate(imageName, props); - } - - public String getResolvedImageNameTransform(JReleaserContext context) { - if (isBlank(imageNameTransform)) return null; - Map props = context.getModel().props(); - props.putAll(props()); - return resolveTemplate(imageNameTransform, props); - } - - public Jdeps getJdeps() { - return jdeps; - } - - public void setJdeps(Jdeps jdeps) { - this.jdeps.merge(jdeps); - } - - public Artifact getJdk() { - return jdk; - } - - public void setJdk(Artifact jdk) { - this.jdk.merge(jdk); - } - - public String getImageName() { - return imageName; - } - - public void setImageName(String imageName) { - freezeCheck(); - this.imageName = imageName; - } - - public String getImageNameTransform() { - return imageNameTransform; - } - - public void setImageNameTransform(String imageNameTransform) { - freezeCheck(); - this.imageNameTransform = imageNameTransform; - } - - - public Set getTargetJdks() { - return freezeWrap(Artifact.sortArtifacts(targetJdks)); - } - - public void setTargetJdks(Set targetJdks) { - freezeCheck(); - this.targetJdks.clear(); - this.targetJdks.addAll(targetJdks); - } - - public void addTargetJdk(Artifact jdk) { - freezeCheck(); - if (null != jdk) { - this.targetJdks.add(jdk); - } - } - - public Set getModuleNames() { - return freezeWrap(moduleNames); - } - - public void setModuleNames(Set moduleNames) { - freezeCheck(); - this.moduleNames.clear(); - this.moduleNames.addAll(moduleNames); - } - - public Set getAdditionalModuleNames() { - return freezeWrap(additionalModuleNames); - } - - public void setAdditionalModuleNames(Set additionalModuleNames) { - freezeCheck(); - this.additionalModuleNames.clear(); - this.additionalModuleNames.addAll(additionalModuleNames); - } - - public List getArgs() { - return freezeWrap(args); - } - - public void setArgs(List args) { - freezeCheck(); - this.args.clear(); - this.args.addAll(args); - } - - public Boolean isCopyJars() { - return copyJars == null || copyJars; - } - - public void setCopyJars(Boolean copyJars) { - freezeCheck(); - this.copyJars = copyJars; - } - - public boolean isCopyJarsSet() { - return copyJars != null; - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("imageName", imageName); - props.put("imageNameTransform", imageNameTransform); - props.put("moduleNames", moduleNames); - props.put("additionalModuleNames", additionalModuleNames); - props.put("args", args); - props.put("jdeps", jdeps.asMap(full)); - Map> mappedJdks = new LinkedHashMap<>(); - int i = 0; - for (Artifact targetJdk : getTargetJdks()) { - mappedJdks.put("jdk " + (i++), targetJdk.asMap(full)); - } - props.put("jdk", jdk.asMap(full)); - props.put("targetJdks", mappedJdks); - props.put("copyJars", isCopyJars()); - } - - public static class Jdeps extends AbstractModelObject implements Domain, EnabledAware { - private final Set targets = new LinkedHashSet<>(); - private String multiRelease; - private Boolean ignoreMissingDeps; - private Boolean useWildcardInPath; - private Boolean enabled; - - @Override - public void merge(Jdeps jdeps) { - freezeCheck(); - this.multiRelease = this.merge(this.multiRelease, jdeps.multiRelease); - this.ignoreMissingDeps = this.merge(this.ignoreMissingDeps, jdeps.ignoreMissingDeps); - this.useWildcardInPath = this.merge(this.useWildcardInPath, jdeps.useWildcardInPath); - this.enabled = merge(this.enabled, jdeps.enabled); - setTargets(merge(this.targets, jdeps.targets)); - } - - public String getMultiRelease() { - return multiRelease; - } - - public void setMultiRelease(String multiRelease) { - freezeCheck(); - this.multiRelease = multiRelease; - } - - public Boolean isIgnoreMissingDeps() { - return ignoreMissingDeps != null && ignoreMissingDeps; - } - - public void setIgnoreMissingDeps(Boolean ignoreMissingDeps) { - freezeCheck(); - this.ignoreMissingDeps = ignoreMissingDeps; - } - - public boolean isIgnoreMissingDepsSet() { - return ignoreMissingDeps != null; - } - - public Boolean isUseWildcardInPath() { - return useWildcardInPath == null || useWildcardInPath; - } - - public void setUseWildcardInPath(Boolean useWildcardInPath) { - freezeCheck(); - this.useWildcardInPath = useWildcardInPath; - } - - public boolean isUseWildcardInPathSet() { - return useWildcardInPath != null; - } - - public Set getTargets() { - return freezeWrap(targets); - } - - public void setTargets(Set targets) { - freezeCheck(); - this.targets.clear(); - this.targets.addAll(targets); - } - - @Override - public boolean isEnabled() { - return enabled != null && enabled; - } - - @Override - public void setEnabled(Boolean enabled) { - freezeCheck(); - this.enabled = enabled; - } - - @Override - public boolean isEnabledSet() { - return enabled != null; - } - - @Override - public Map asMap(boolean full) { - Map props = new LinkedHashMap<>(); - props.put("enabled", isEnabled()); - props.put("multiRelease", multiRelease); - props.put("ignoreMissingDeps", isIgnoreMissingDeps()); - props.put("useWildcardInPath", isUseWildcardInPath()); - props.put("targets", targets); - return props; - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Macports.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Macports.java deleted file mode 100644 index 2fcd17cb2..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Macports.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.PlatformUtils; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.model.Distribution.DistributionType.BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.FileType.DMG; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.9.0 - */ -public class Macports extends AbstractRepositoryPackager { - public static final String TYPE = "macports"; - public static final String SKIP_MACPORTS = "skipMacports"; - public static final String APP_NAME = "appName"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf(ZIP.extension()); - SUPPORTED.put(BINARY, extensions); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - SUPPORTED.put(NATIVE_PACKAGE, setOf(DMG.extension())); - } - - private final List categories = new ArrayList<>(); - private final List maintainers = new ArrayList<>(); - private final MacportsRepository repository = new MacportsRepository(); - - private String packageName; - private Integer revision; - - public Macports() { - super(TYPE); - } - - @Override - public void freeze() { - super.freeze(); - repository.freeze(); - } - - @Override - public void merge(Macports macports) { - freezeCheck(); - super.merge(macports); - this.packageName = merge(this.packageName, macports.packageName); - this.revision = merge(this.revision, macports.revision); - setRepository(macports.repository); - setCategories(merge(this.categories, macports.categories)); - setMaintainers(merge(this.maintainers, macports.maintainers)); - } - - public List getResolvedMaintainers(JReleaserContext context) { - if (maintainers.isEmpty()) { - Github github = context.getModel().getRelease().getGithub(); - if (github != null) { - String maintainer = github.getResolvedUsername(); - if (isNotBlank(maintainer)) { - maintainers.add("@" + maintainer); - } - } - } - return maintainers; - } - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - freezeCheck(); - this.packageName = packageName; - } - - public Integer getRevision() { - return revision; - } - - public void setRevision(Integer revision) { - freezeCheck(); - this.revision = revision; - } - - public MacportsRepository getRepository() { - return repository; - } - - public void setRepository(MacportsRepository repository) { - this.repository.merge(repository); - } - - public List getCategories() { - return freezeWrap(categories); - } - - public void setCategories(List categories) { - freezeCheck(); - this.categories.clear(); - this.categories.addAll(categories); - } - - public List getMaintainers() { - return freezeWrap(maintainers); - } - - public void setMaintainers(List maintainers) { - freezeCheck(); - this.maintainers.clear(); - this.maintainers.addAll(maintainers); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("packageName", packageName); - props.put("revision", revision); - props.put("categories", categories); - props.put("maintainers", maintainers); - props.put("repository", repository.asMap(full)); - } - - @Override - public RepositoryTap getRepositoryTap() { - return repository; - } - - @Override - public boolean supportsPlatform(String platform) { - return isBlank(platform) || - PlatformUtils.isMac(platform) && PlatformUtils.isIntel(platform); - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_MACPORTS)); - } - - public static class MacportsRepository extends AbstractRepositoryTap { - public MacportsRepository() { - super("macports", "macports"); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Mastodon.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Mastodon.java deleted file mode 100644 index 11387a790..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Mastodon.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.Env; - -import java.util.Map; - -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplates; -import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; - -/** - * @author Andres Almiray - * @since 0.4.0 - */ -public class Mastodon extends AbstractAnnouncer { - public static final String NAME = "mastodon"; - public static final String MASTODON_ACCESS_TOKEN = "MASTODON_ACCESS_TOKEN"; - - private String host; - private String accessToken; - private String status; - - public Mastodon() { - super(NAME); - } - - @Override - public void merge(Mastodon mastodon) { - freezeCheck(); - super.merge(mastodon); - this.host = merge(this.host, mastodon.host); - this.accessToken = merge(this.accessToken, mastodon.accessToken); - this.status = merge(this.status, mastodon.status); - } - - public String getResolvedStatus(JReleaserContext context) { - Map props = context.fullProps(); - applyTemplates(props, getResolvedExtraProperties()); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); - return resolveTemplate(status, props); - } - - public String getResolvedAccessToken() { - return Env.env(MASTODON_ACCESS_TOKEN, accessToken); - } - - public String getHost() { - return host; - } - - public void setHost(String host) { - freezeCheck(); - this.host = host; - } - - public String getAccessToken() { - return accessToken; - } - - public void setAccessToken(String accessToken) { - freezeCheck(); - this.accessToken = accessToken; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - freezeCheck(); - this.status = status; - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("host", host); - props.put("accessToken", isNotBlank(getResolvedAccessToken()) ? HIDE : UNSET); - props.put("status", status); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/NativeImage.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/NativeImage.java deleted file mode 100644 index ceaaf9a38..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/NativeImage.java +++ /dev/null @@ -1,389 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import org.jreleaser.util.PlatformUtils; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; - -/** - * @author Andres Almiray - * @since 0.2.0 - */ -public class NativeImage extends AbstractJavaAssembler { - public static final String TYPE = "native-image"; - - private final List args = new ArrayList<>(); - private final Artifact graal = new Artifact(); - private final Set graalJdks = new LinkedHashSet<>(); - private final Upx upx = new Upx(); - private final Linux linux = new Linux(); - private final Windows windows = new Windows(); - private final Osx osx = new Osx(); - - private String imageName; - private String imageNameTransform; - private Archive.Format archiveFormat; - - public NativeImage() { - super(TYPE); - } - - @Override - public Distribution.DistributionType getDistributionType() { - return Distribution.DistributionType.NATIVE_IMAGE; - } - - @Override - public void freeze() { - super.freeze(); - graal.freeze(); - graalJdks.forEach(Artifact::freeze); - upx.freeze(); - linux.freeze(); - windows.freeze(); - osx.freeze(); - } - - @Override - public void merge(NativeImage nativeImage) { - freezeCheck(); - super.merge(nativeImage); - this.imageName = merge(this.imageName, nativeImage.imageName); - this.imageNameTransform = merge(this.imageNameTransform, nativeImage.imageNameTransform); - this.archiveFormat = merge(this.archiveFormat, nativeImage.archiveFormat); - setGraal(nativeImage.graal); - setGraalJdks(merge(this.graalJdks, nativeImage.graalJdks)); - setArgs(merge(this.args, nativeImage.args)); - setUpx(nativeImage.upx); - setLinux(nativeImage.linux); - setWindows(nativeImage.windows); - setOsx(nativeImage.osx); - } - - public String getResolvedImageName(JReleaserContext context) { - Map props = context.getModel().props(); - props.putAll(props()); - return resolveTemplate(imageName, props); - } - - public String getResolvedImageNameTransform(JReleaserContext context) { - if (isBlank(imageNameTransform)) return null; - Map props = context.getModel().props(); - props.putAll(props()); - return resolveTemplate(imageNameTransform, props); - } - - public PlatformCustomizer getResolvedPlatformCustomizer() { - String currentPlatform = PlatformUtils.getCurrentFull(); - if (PlatformUtils.isMac(currentPlatform)) { - return getOsx(); - } else if (PlatformUtils.isWindows(currentPlatform)) { - return getWindows(); - } - return getLinux(); - } - - public String getImageName() { - return imageName; - } - - public void setImageName(String imageName) { - freezeCheck(); - this.imageName = imageName; - } - - public String getImageNameTransform() { - return imageNameTransform; - } - - public void setImageNameTransform(String imageNameTransform) { - freezeCheck(); - this.imageNameTransform = imageNameTransform; - } - - public Archive.Format getArchiveFormat() { - return archiveFormat; - } - - public void setArchiveFormat(Archive.Format archiveFormat) { - freezeCheck(); - this.archiveFormat = archiveFormat; - } - - public void setArchiveFormat(String archiveFormat) { - freezeCheck(); - this.archiveFormat = Archive.Format.of(archiveFormat); - } - - public Artifact getGraal() { - return graal; - } - - public void setGraal(Artifact graal) { - this.graal.merge(graal); - } - - public Set getGraalJdks() { - return freezeWrap(Artifact.sortArtifacts(graalJdks)); - } - - public void setGraalJdks(Set graalJdks) { - freezeCheck(); - this.graalJdks.clear(); - this.graalJdks.addAll(graalJdks); - } - - public void addGraalJdks(Set graalJdks) { - freezeCheck(); - this.graalJdks.addAll(graalJdks); - } - - public void addGraalJdk(Artifact jdk) { - freezeCheck(); - if (null != jdk) { - this.graalJdks.add(jdk); - } - } - - public List getArgs() { - return freezeWrap(args); - } - - public void setArgs(List args) { - freezeCheck(); - this.args.clear(); - this.args.addAll(args); - } - - public Upx getUpx() { - return upx; - } - - public void setUpx(Upx upx) { - this.upx.merge(upx); - } - - public Linux getLinux() { - return linux; - } - - public void setLinux(Linux linux) { - this.linux.merge(linux); - } - - public Windows getWindows() { - return windows; - } - - public void setWindows(Windows windows) { - this.windows.merge(windows); - } - - public Osx getOsx() { - return osx; - } - - public void setOsx(Osx osx) { - this.osx.merge(osx); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("imageName", imageName); - props.put("imageNameTransform", imageNameTransform); - props.put("archiveFormat", archiveFormat); - Map> mappedJdks = new LinkedHashMap<>(); - int i = 0; - for (Artifact graalJdk : getGraalJdks()) { - mappedJdks.put("jdk " + (i++), graalJdk.asMap(full)); - } - props.put("graal", graal.asMap(full)); - props.put("graalJdks", mappedJdks); - props.put("args", args); - props.put("upx", upx.asMap(full)); - props.putAll(linux.asMap(full)); - props.putAll(osx.asMap(full)); - props.putAll(windows.asMap(full)); - } - - public interface PlatformCustomizer extends Domain { - String getPlatform(); - - List getArgs(); - - void setArgs(List args); - } - - public static class Upx extends AbstractModelObject implements Domain, Activatable { - private final List args = new ArrayList<>(); - - @JsonIgnore - private boolean enabled; - private Active active; - private String version; - - @Override - public void merge(Upx upx) { - freezeCheck(); - this.active = this.merge(this.active, upx.active); - this.enabled = this.merge(this.enabled, upx.enabled); - this.version = this.merge(this.version, upx.version); - setArgs(merge(this.args, upx.args)); - } - - @Override - public boolean isEnabled() { - return enabled; - } - - public void disable() { - active = Active.NEVER; - enabled = false; - } - - public boolean resolveEnabled(Project project) { - if (null == active) { - active = Active.NEVER; - } - enabled = active.check(project); - return enabled; - } - - @Override - public Active getActive() { - return active; - } - - @Override - public void setActive(Active active) { - freezeCheck(); - this.active = active; - } - - @Override - public void setActive(String str) { - setActive(Active.of(str)); - } - - @Override - public boolean isActiveSet() { - return active != null; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - freezeCheck(); - this.version = version; - } - - public List getArgs() { - return freezeWrap(args); - } - - public void setArgs(List args) { - freezeCheck(); - this.args.clear(); - this.args.addAll(args); - } - - @Override - public Map asMap(boolean full) { - if (!full && !isEnabled()) return Collections.emptyMap(); - - Map props = new LinkedHashMap<>(); - props.put("enabled", isEnabled()); - props.put("active", active); - props.put("version", version); - - return props; - } - } - - private static abstract class AbstractPlatformCustomizer> extends AbstractModelObject implements PlatformCustomizer { - protected final List args = new ArrayList<>(); - protected final String platform; - - protected AbstractPlatformCustomizer(String platform) { - this.platform = platform; - } - - @Override - public void merge(S customizer) { - freezeCheck(); - setArgs(merge(this.args, customizer.args)); - } - - public List getArgs() { - return freezeWrap(args); - } - - public void setArgs(List args) { - freezeCheck(); - this.args.clear(); - this.args.addAll(args); - } - - @Override - public String getPlatform() { - return platform; - } - - @Override - public Map asMap(boolean full) { - Map props = new LinkedHashMap<>(); - props.put("args", args); - - Map map = new LinkedHashMap<>(); - map.put(platform, props); - return map; - } - } - - public static class Linux extends AbstractPlatformCustomizer { - public Linux() { - super("linux"); - } - } - - public static class Windows extends AbstractPlatformCustomizer { - public Windows() { - super("windows"); - } - } - - public static class Osx extends AbstractPlatformCustomizer { - public Osx() { - super("osx"); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Packagers.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Packagers.java deleted file mode 100644 index 19ad38875..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Packagers.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Packagers> extends AbstractModelObject implements Domain { - protected final AppImage appImage = new AppImage(); - protected final Asdf asdf = new Asdf(); - protected final Brew brew = new Brew(); - protected final Chocolatey chocolatey = new Chocolatey(); - protected final Docker docker = new Docker(); - protected final Flatpak flatpak = new Flatpak(); - protected final Gofish gofish = new Gofish(); - protected final Jbang jbang = new Jbang(); - protected final Macports macports = new Macports(); - protected final Scoop scoop = new Scoop(); - protected final Sdkman sdkman = new Sdkman(); - protected final Snap snap = new Snap(); - protected final Spec spec = new Spec(); - - public boolean hasEnabledPackagers() { - return appImage.isEnabled() || - asdf.isEnabled() || - brew.isEnabled() || - chocolatey.isEnabled() || - docker.isEnabled() || - flatpak.isEnabled() || - gofish.isEnabled() || - jbang.isEnabled() || - macports.isEnabled() || - scoop.isEnabled() || - sdkman.isEnabled() || - snap.isEnabled() || - spec.isEnabled(); - } - - @Override - public void freeze() { - super.freeze(); - appImage.freeze(); - asdf.freeze(); - brew.freeze(); - chocolatey.freeze(); - docker.freeze(); - flatpak.freeze(); - gofish.freeze(); - jbang.freeze(); - macports.freeze(); - scoop.freeze(); - sdkman.freeze(); - snap.freeze(); - spec.freeze(); - } - - @Override - public void merge(S packagers) { - freezeCheck(); - setAppImage(packagers.appImage); - setAsdf(packagers.asdf); - setBrew(packagers.brew); - setChocolatey(packagers.chocolatey); - setDocker(packagers.docker); - setFlatpak(packagers.flatpak); - setGofish(packagers.gofish); - setJbang(packagers.jbang); - setMacports(packagers.macports); - setScoop(packagers.scoop); - setSdkman(packagers.sdkman); - setSnap(packagers.snap); - setSpec(packagers.spec); - } - - public AppImage getAppImage() { - return appImage; - } - - public void setAppImage(AppImage appimage) { - this.appImage.merge(appimage); - } - - public Asdf getAsdf() { - return asdf; - } - - public void setAsdf(Asdf asdf) { - this.asdf.merge(asdf); - } - - public Brew getBrew() { - return brew; - } - - public void setBrew(Brew brew) { - this.brew.merge(brew); - } - - public Chocolatey getChocolatey() { - return chocolatey; - } - - public void setChocolatey(Chocolatey chocolatey) { - this.chocolatey.merge(chocolatey); - } - - public Docker getDocker() { - return docker; - } - - public void setDocker(Docker docker) { - this.docker.merge(docker); - } - - public Gofish getGofish() { - return gofish; - } - - public void setGofish(Gofish gofish) { - this.gofish.merge(gofish); - } - - public Flatpak getFlatpak() { - return flatpak; - } - - public void setFlatpak(Flatpak flatpak) { - this.flatpak.merge(flatpak); - } - - public Jbang getJbang() { - return jbang; - } - - public void setJbang(Jbang jbang) { - this.jbang.merge(jbang); - } - - public Macports getMacports() { - return macports; - } - - public void setMacports(Macports macports) { - this.macports.merge(macports); - } - - public Scoop getScoop() { - return scoop; - } - - public void setScoop(Scoop scoop) { - this.scoop.merge(scoop); - } - - public Sdkman getSdkman() { - return sdkman; - } - - public void setSdkman(Sdkman sdkman) { - this.sdkman.merge(sdkman); - } - - public Snap getSnap() { - return snap; - } - - public void setSnap(Snap snap) { - this.snap.merge(snap); - } - - public Spec getSpec() { - return spec; - } - - public void setSpec(Spec spec) { - this.spec.merge(spec); - } - - @Override - public Map asMap(boolean full) { - Map map = new LinkedHashMap<>(); - map.putAll(appImage.asMap(full)); - map.putAll(asdf.asMap(full)); - map.putAll(brew.asMap(full)); - map.putAll(chocolatey.asMap(full)); - map.putAll(docker.asMap(full)); - map.putAll(flatpak.asMap(full)); - map.putAll(gofish.asMap(full)); - map.putAll(jbang.asMap(full)); - map.putAll(macports.asMap(full)); - map.putAll(scoop.asMap(full)); - map.putAll(sdkman.asMap(full)); - map.putAll(snap.asMap(full)); - map.putAll(spec.asMap(full)); - return map; - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Registry.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Registry.java deleted file mode 100644 index 6744228e3..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Registry.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.Env; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Objects; - -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Registry extends AbstractModelObject implements Domain, Comparable { - public static final String DEFAULT_NAME = "DEFAULT"; - - protected String server; - protected String serverName = "DEFAULT"; - protected String repositoryName; - protected String username; - protected String password; - - @Override - public void merge(Registry registry) { - freezeCheck(); - this.server = merge(this.server, registry.server); - this.serverName = merge(this.serverName, registry.serverName); - this.repositoryName = merge(this.repositoryName, registry.repositoryName); - this.username = merge(this.username, registry.username); - this.password = merge(this.password, registry.password); - } - - public String getResolvedPassword() { - return Env.env("DOCKER_" + Env.toVar(serverName) + "_PASSWORD", password); - } - - public String getResolvedUsername() { - return Env.env("DOCKER_" + Env.toVar(serverName) + "_USERNAME", username); - } - - public String getServer() { - return server; - } - - public void setServer(String server) { - freezeCheck(); - this.server = server; - } - - public String getServerName() { - return serverName; - } - - public void setServerName(String serverName) { - freezeCheck(); - this.serverName = serverName; - } - - public String getRepositoryName() { - return repositoryName; - } - - public void setRepositoryName(String repositoryName) { - freezeCheck(); - this.repositoryName = repositoryName; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - freezeCheck(); - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - freezeCheck(); - this.password = password; - } - - @Override - public Map asMap(boolean full) { - Map map = new LinkedHashMap<>(); - map.put("server", server); - map.put("serverName", serverName); - map.put("repositoryName", repositoryName); - map.put("username", getResolvedUsername()); - map.put("password", isNotBlank(password) ? HIDE : UNSET); - return map; - } - - @Override - public int compareTo(Registry o) { - if (null == o) return -1; - return serverName.compareTo(o.serverName); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Registry that = (Registry) o; - return serverName.equals(that.serverName); - } - - @Override - public int hashCode() { - return Objects.hash(serverName); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Release.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Release.java deleted file mode 100644 index 0e81eb9b3..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Release.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Release extends AbstractModelObject implements Domain { - private Github github; - private Gitlab gitlab; - private Gitea gitea; - private Codeberg codeberg; - private GenericGit generic; - - @Override - public void freeze() { - super.freeze(); - if (null != github) github.freeze(); - if (null != gitlab) gitlab.freeze(); - if (null != gitea) gitea.freeze(); - if (null != codeberg) codeberg.freeze(); - if (null != generic) generic.freeze(); - } - - @Override - public void merge(Release release) { - freezeCheck(); - this.github = merge(this.github, release.github); - this.gitlab = merge(this.gitlab, release.gitlab); - this.gitea = merge(this.gitea, release.gitea); - this.codeberg = merge(this.codeberg, release.codeberg); - this.generic = merge(this.generic, release.generic); - } - - public Github getGithub() { - return github; - } - - public void setGithub(Github github) { - freezeCheck(); - this.github = github; - } - - public Gitlab getGitlab() { - return gitlab; - } - - public void setGitlab(Gitlab gitlab) { - freezeCheck(); - this.gitlab = gitlab; - } - - public Gitea getGitea() { - return gitea; - } - - public void setGitea(Gitea gitea) { - freezeCheck(); - this.gitea = gitea; - } - - public Codeberg getCodeberg() { - return codeberg; - } - - public void setCodeberg(Codeberg codeberg) { - freezeCheck(); - this.codeberg = codeberg; - } - - public GenericGit getGeneric() { - return generic; - } - - public void setGeneric(GenericGit generic) { - freezeCheck(); - this.generic = generic; - } - - public GitService getGitService() { - if (null != github) return github; - if (null != gitlab) return gitlab; - if (null != gitea) return gitea; - if (null != codeberg) return codeberg; - return generic; - } - - @Override - public Map asMap(boolean full) { - Map map = new LinkedHashMap<>(); - if (null != github) map.put(Github.NAME, github.asMap(full)); - if (null != gitlab) map.put(Gitlab.NAME, gitlab.asMap(full)); - if (null != gitea) map.put(Gitea.NAME, gitea.asMap(full)); - if (null != codeberg) map.put(Codeberg.NAME, codeberg.asMap(full)); - if (null != generic) map.put(GenericGit.NAME, generic.asMap(full)); - return map; - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Scoop.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Scoop.java deleted file mode 100644 index fbb16cda8..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Scoop.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.PlatformUtils; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.model.Distribution.DistributionType.BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_PACKAGE; -import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.FileType.JAR; -import static org.jreleaser.util.FileType.MSI; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class Scoop extends AbstractRepositoryPackager { - public static final String TYPE = "scoop"; - public static final String SKIP_SCOOP = "skipScoop"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf(ZIP.extension()); - SUPPORTED.put(BINARY, extensions); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - SUPPORTED.put(NATIVE_PACKAGE, setOf(MSI.extension())); - SUPPORTED.put(SINGLE_JAR, setOf(JAR.extension())); - } - - private final ScoopBucket bucket = new ScoopBucket(); - private String packageName; - private String checkverUrl; - private String autoupdateUrl; - - public Scoop() { - super(TYPE); - } - - @Override - public void freeze() { - super.freeze(); - bucket.freeze(); - } - - @Override - public void merge(Scoop scoop) { - freezeCheck(); - super.merge(scoop); - this.packageName = merge(this.packageName, scoop.packageName); - this.checkverUrl = merge(this.checkverUrl, scoop.checkverUrl); - this.autoupdateUrl = merge(this.autoupdateUrl, scoop.autoupdateUrl); - setBucket(scoop.bucket); - } - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - freezeCheck(); - this.packageName = packageName; - } - - public String getCheckverUrl() { - return checkverUrl; - } - - public void setCheckverUrl(String checkverUrl) { - freezeCheck(); - this.checkverUrl = checkverUrl; - } - - public String getAutoupdateUrl() { - return autoupdateUrl; - } - - public void setAutoupdateUrl(String autoupdateUrl) { - freezeCheck(); - this.autoupdateUrl = autoupdateUrl; - } - - public ScoopBucket getBucket() { - return bucket; - } - - public void setBucket(ScoopBucket bucket) { - this.bucket.merge(bucket); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("packageName", packageName); - props.put("checkverUrl", checkverUrl); - props.put("autoupdateUrl", autoupdateUrl); - props.put("bucket", bucket.asMap(full)); - } - - @Override - public RepositoryTap getRepositoryTap() { - return bucket; - } - - @Override - public boolean supportsPlatform(String platform) { - return isBlank(platform) || PlatformUtils.isWindows(platform); - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_SCOOP)); - } - - public static class ScoopBucket extends AbstractRepositoryTap { - public ScoopBucket() { - super("scoop", "scoop"); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Sdkman.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Sdkman.java deleted file mode 100644 index f8d96486d..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Sdkman.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import org.jreleaser.util.Env; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.6.0 - */ -public class Sdkman extends AbstractPackager implements TimeoutAware { - public static final String SDKMAN_CONSUMER_KEY = "SDKMAN_CONSUMER_KEY"; - public static final String SDKMAN_CONSUMER_TOKEN = "SDKMAN_CONSUMER_TOKEN"; - public static final String TYPE = "sdkman"; - public static final String SKIP_SDKMAN = "skipSdkman"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf(ZIP.extension()); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - } - - protected Command command; - private String candidate; - private String releaseNotesUrl; - private String consumerKey; - private String consumerToken; - private int connectTimeout; - private int readTimeout; - @JsonIgnore - private boolean published; - - public Sdkman() { - super(TYPE); - } - - @Override - public void merge(Sdkman sdkman) { - freezeCheck(); - super.merge(sdkman); - this.candidate = merge(this.candidate, sdkman.candidate); - this.releaseNotesUrl = merge(this.releaseNotesUrl, sdkman.releaseNotesUrl); - this.command = merge(this.command, sdkman.command); - this.consumerKey = merge(this.consumerKey, sdkman.consumerKey); - this.consumerToken = merge(this.consumerToken, sdkman.consumerToken); - this.connectTimeout = merge(this.connectTimeout, sdkman.connectTimeout); - this.readTimeout = merge(this.readTimeout, sdkman.readTimeout); - this.published = merge(this.published, sdkman.published); - } - - public String getResolvedConsumerKey() { - return Env.env(SDKMAN_CONSUMER_KEY, consumerKey); - } - - public String getResolvedConsumerToken() { - return Env.env(SDKMAN_CONSUMER_TOKEN, consumerToken); - } - - public String getCandidate() { - return candidate; - } - - public void setCandidate(String candidate) { - freezeCheck(); - this.candidate = candidate; - } - - public String getReleaseNotesUrl() { - return releaseNotesUrl; - } - - public void setReleaseNotesUrl(String releaseNotesUrl) { - freezeCheck(); - this.releaseNotesUrl = releaseNotesUrl; - } - - public Command getCommand() { - return command; - } - - public void setCommand(Command command) { - freezeCheck(); - this.command = command; - } - - public void setCommand(String str) { - setCommand(Command.of(str)); - } - - public boolean isCommandSet() { - return command != null; - } - - public String getConsumerKey() { - return consumerKey; - } - - public void setConsumerKey(String consumerKey) { - freezeCheck(); - this.consumerKey = consumerKey; - } - - public String getConsumerToken() { - return consumerToken; - } - - public void setConsumerToken(String consumerToken) { - freezeCheck(); - this.consumerToken = consumerToken; - } - - @Override - public Integer getConnectTimeout() { - return connectTimeout; - } - - @Override - public void setConnectTimeout(Integer connectTimeout) { - freezeCheck(); - this.connectTimeout = connectTimeout; - } - - @Override - public Integer getReadTimeout() { - return readTimeout; - } - - @Override - public void setReadTimeout(Integer readTimeout) { - freezeCheck(); - this.readTimeout = readTimeout; - } - - public boolean isPublished() { - return published; - } - - public void setPublished(boolean published) { - freezeCheck(); - this.published = published; - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("candidate", candidate); - props.put("command", command); - props.put("releaseNotesUrl", releaseNotesUrl); - props.put("connectTimeout", connectTimeout); - props.put("readTimeout", readTimeout); - props.put("consumerKey", isNotBlank(getResolvedConsumerKey()) ? HIDE : UNSET); - props.put("consumerToken", isNotBlank(getResolvedConsumerToken()) ? HIDE : UNSET); - } - - @Override - public boolean supportsPlatform(String platform) { - return true; - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_SDKMAN)); - } - - public enum Command { - MAJOR, - MINOR; - - public String toString() { - return name().toLowerCase(Locale.ENGLISH); - } - - public static Command of(String str) { - if (isBlank(str)) return null; - return Command.valueOf(str.toUpperCase(Locale.ENGLISH).trim()); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/SdkmanAnnouncer.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/SdkmanAnnouncer.java deleted file mode 100644 index 3c2a520fe..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/SdkmanAnnouncer.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.Env; - -import java.util.Map; - -import static org.jreleaser.model.Sdkman.SDKMAN_CONSUMER_KEY; -import static org.jreleaser.model.Sdkman.SDKMAN_CONSUMER_TOKEN; -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.1.0 - */ -public class SdkmanAnnouncer extends AbstractAnnouncer { - public static final String NAME = "sdkman"; - - private String consumerKey; - private String consumerToken; - private String candidate; - private String releaseNotesUrl; - private String downloadUrl; - private Sdkman.Command command; - - public SdkmanAnnouncer() { - super(NAME); - } - - @Override - public void merge(SdkmanAnnouncer sdkman) { - freezeCheck(); - super.merge(sdkman); - this.consumerKey = merge(this.consumerKey, sdkman.consumerKey); - this.consumerToken = merge(this.consumerToken, sdkman.consumerToken); - this.candidate = merge(this.candidate, sdkman.candidate); - this.releaseNotesUrl = merge(this.releaseNotesUrl, sdkman.releaseNotesUrl); - this.downloadUrl = merge(this.downloadUrl, sdkman.downloadUrl); - this.command = merge(this.command, sdkman.command); - } - - @Override - public boolean isSnapshotSupported() { - return false; - } - - public String getResolvedConsumerKey() { - return Env.env(SDKMAN_CONSUMER_KEY, consumerKey); - } - - public String getResolvedConsumerToken() { - return Env.env(SDKMAN_CONSUMER_TOKEN, consumerToken); - } - - public String getConsumerKey() { - return consumerKey; - } - - public void setConsumerKey(String consumerKey) { - freezeCheck(); - this.consumerKey = consumerKey; - } - - public String getConsumerToken() { - return consumerToken; - } - - public void setConsumerToken(String consumerToken) { - freezeCheck(); - this.consumerToken = consumerToken; - } - - public String getCandidate() { - return candidate; - } - - public void setCandidate(String candidate) { - freezeCheck(); - this.candidate = candidate; - } - - public String getReleaseNotesUrl() { - return releaseNotesUrl; - } - - public void setReleaseNotesUrl(String releaseNotesUrl) { - freezeCheck(); - this.releaseNotesUrl = releaseNotesUrl; - } - - public String getDownloadUrl() { - return downloadUrl; - } - - public void setDownloadUrl(String downloadUrl) { - freezeCheck(); - this.downloadUrl = downloadUrl; - } - - public Sdkman.Command getCommand() { - return command; - } - - public void setCommand(Sdkman.Command command) { - freezeCheck(); - this.command = command; - } - - public void setCommand(String str) { - setCommand(Sdkman.Command.of(str)); - } - - public boolean isCommandSet() { - return command != null; - } - - public boolean isMajor() { - return command == Sdkman.Command.MAJOR; - } - - - @Override - protected void asMap(boolean full, Map props) { - props.put("consumerKey", isNotBlank(getResolvedConsumerKey()) ? HIDE : UNSET); - props.put("consumerToken", isNotBlank(getResolvedConsumerToken()) ? HIDE : UNSET); - props.put("candidate", candidate); - props.put("releaseNotesUrl", releaseNotesUrl); - props.put("downloadUrl", downloadUrl); - props.put("command", command); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/SftpUploader.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/SftpUploader.java deleted file mode 100644 index 9f77de0c8..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/SftpUploader.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -/** - * @author Andres Almiray - * @since 1.1.0 - */ -public class SftpUploader extends AbstractSshUploader { - public static final String TYPE = "sftp"; - - public SftpUploader() { - super(TYPE); - } - - @Override - protected String getEnvPrefix() { - return "SFTP"; - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Spec.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Spec.java deleted file mode 100644 index 58f80e5d2..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Spec.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.util.PlatformUtils; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.jreleaser.model.Distribution.DistributionType.BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; -import static org.jreleaser.model.Distribution.DistributionType.JLINK; -import static org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE; -import static org.jreleaser.util.CollectionUtils.setOf; -import static org.jreleaser.util.FileType.TAR; -import static org.jreleaser.util.FileType.TAR_BZ2; -import static org.jreleaser.util.FileType.TAR_GZ; -import static org.jreleaser.util.FileType.TAR_XZ; -import static org.jreleaser.util.FileType.TBZ2; -import static org.jreleaser.util.FileType.TGZ; -import static org.jreleaser.util.FileType.TXZ; -import static org.jreleaser.util.FileType.ZIP; -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isFalse; - -/** - * @author Andres Almiray - * @since 0.9.1 - */ -public class Spec extends AbstractRepositoryPackager { - public static final String TYPE = "spec"; - public static final String SKIP_SPEC = "skipSpec"; - - private static final Map> SUPPORTED = new LinkedHashMap<>(); - - static { - Set extensions = setOf( - TAR_BZ2.extension(), - TAR_GZ.extension(), - TAR_XZ.extension(), - TBZ2.extension(), - TGZ.extension(), - TXZ.extension(), - TAR.extension(), - ZIP.extension()); - - SUPPORTED.put(BINARY, extensions); - SUPPORTED.put(JAVA_BINARY, extensions); - SUPPORTED.put(JLINK, extensions); - SUPPORTED.put(NATIVE_IMAGE, extensions); - } - - private final List requires = new ArrayList<>(); - private final SpecRepository repository = new SpecRepository(); - - private String packageName; - private String release; - - public Spec() { - super(TYPE); - } - - @Override - public void freeze() { - super.freeze(); - repository.freeze(); - } - - @Override - public void merge(Spec spec) { - freezeCheck(); - super.merge(spec); - this.packageName = merge(this.packageName, spec.packageName); - this.release = merge(this.release, spec.release); - setRepository(spec.repository); - setRequires(merge(this.requires, spec.requires)); - } - - public String getPackageName() { - return packageName; - } - - public void setPackageName(String packageName) { - freezeCheck(); - this.packageName = packageName; - } - - public String getRelease() { - return release; - } - - public void setRelease(String release) { - freezeCheck(); - this.release = release; - } - - public SpecRepository getRepository() { - return repository; - } - - public void setRepository(SpecRepository repository) { - this.repository.merge(repository); - } - - public List getRequires() { - return freezeWrap(requires); - } - - public void setRequires(List requires) { - freezeCheck(); - this.requires.clear(); - this.requires.addAll(requires); - } - - @Override - protected void asMap(boolean full, Map props) { - super.asMap(full, props); - props.put("packageName", packageName); - props.put("release", release); - props.put("requires", requires); - props.put("repository", repository.asMap(full)); - } - - @Override - public RepositoryTap getRepositoryTap() { - return repository; - } - - @Override - public boolean supportsPlatform(String platform) { - return isBlank(platform) || - PlatformUtils.isLinux(platform) && PlatformUtils.isIntel(platform) && !PlatformUtils.isAlpineLinux(platform); - } - - @Override - public boolean supportsDistribution(Distribution distribution) { - return SUPPORTED.containsKey(distribution.getType()); - } - - @Override - public Set getSupportedExtensions(Distribution distribution) { - return Collections.unmodifiableSet(SUPPORTED.getOrDefault(distribution.getType(), Collections.emptySet())); - } - - @Override - protected boolean isNotSkipped(Artifact artifact) { - return isFalse(artifact.getExtraProperties().get(SKIP_SPEC)); - } - - public static class SpecRepository extends AbstractRepositoryTap { - public SpecRepository() { - super("spec", "spec"); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Teams.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Teams.java deleted file mode 100644 index a5ae538a5..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Teams.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import org.jreleaser.bundle.RB; -import org.jreleaser.util.Env; -import org.jreleaser.util.JReleaserException; - -import java.io.IOException; -import java.io.Reader; -import java.nio.file.Path; -import java.util.Map; - -import static org.jreleaser.util.Constants.HIDE; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.Constants.UNSET; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.applyTemplates; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.2.0 - */ -public class Teams extends AbstractAnnouncer { - public static final String NAME = "teams"; - public static final String TEAMS_WEBHOOK = "TEAMS_WEBHOOK"; - - private String webhook; - private String messageTemplate; - - public Teams() { - super(NAME); - } - - @Override - public void merge(Teams teams) { - freezeCheck(); - super.merge(teams); - this.webhook = merge(this.webhook, teams.webhook); - this.messageTemplate = merge(this.messageTemplate, teams.messageTemplate); - } - - public String getResolvedMessageTemplate(JReleaserContext context, Map extraProps) { - Map props = context.fullProps(); - applyTemplates(props, getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService() - .getEffectiveTagName(context.getModel())); - props.putAll(extraProps); - - Path templatePath = context.getBasedir().resolve(messageTemplate); - try { - Reader reader = java.nio.file.Files.newBufferedReader(templatePath); - return applyTemplate(reader, props); - } catch (IOException e) { - throw new JReleaserException(RB.$("ERROR_unexpected_error_reading_template", - context.relativizeToBasedir(templatePath))); - } - } - - public String getResolvedWebhook() { - return Env.env(TEAMS_WEBHOOK, webhook); - } - - public String getWebhook() { - return webhook; - } - - public void setWebhook(String webhook) { - freezeCheck(); - this.webhook = webhook; - } - - public String getMessageTemplate() { - return messageTemplate; - } - - public void setMessageTemplate(String messageTemplate) { - freezeCheck(); - this.messageTemplate = messageTemplate; - } - - @Override - protected void asMap(boolean full, Map props) { - props.put("webhook", isNotBlank(getResolvedWebhook()) ? HIDE : UNSET); - props.put("messageTemplate", messageTemplate); - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/VersionPattern.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/VersionPattern.java deleted file mode 100644 index 5f00fd312..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/VersionPattern.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.Locale; - -import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.StringUtils.isNotBlank; - -/** - * @author Andres Almiray - * @since 0.5.0 - */ -public class VersionPattern extends AbstractModelObject { - private Type type; - private String format; - - public VersionPattern() { - this.type = Type.SEMVER; - } - - public Type getType() { - return type; - } - - public void setType(Type type) { - freezeCheck(); - this.type = type; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - freezeCheck(); - this.format = format; - } - - @Override - public String toString() { - String s = type.toString(); - switch (type) { - case CALVER: - case CUSTOM: - if (isNotBlank(format)) { - s += ":" + format; - } - } - return s; - } - - @Override - public void merge(VersionPattern source) { - if (source != null) { - this.type = merge(this.type, source.type); - this.format = merge(this.format, source.format); - } - } - - public static VersionPattern of(String str) { - if (isBlank(str)) return null; - - String[] parts = str.trim().split(":"); - - VersionPattern vp = new VersionPattern(); - switch (parts.length) { - case 1: - vp.setType(Type.of(parts[0])); - break; - case 2: - vp.setType(Type.of(parts[0])); - vp.setFormat(parts[1].trim()); - break; - default: - throw new IllegalArgumentException(); - } - - return vp; - } - - public enum Type { - SEMVER, - CALVER, - CHRONVER, - JAVA_RUNTIME, - JAVA_MODULE, - CUSTOM; - - @Override - public String toString() { - return name().toLowerCase(Locale.ENGLISH); - } - - public static Type of(String str) { - if (isBlank(str)) return null; - return Type.valueOf(str.replaceAll(" ", "_") - .replaceAll("-", "_") - .toUpperCase(Locale.ENGLISH).trim()); - } - } -} diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Webhooks.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Webhooks.java deleted file mode 100644 index 7a7f0275f..000000000 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Webhooks.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.model; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author Andres Almiray - * @since 0.5.0 - */ -public class Webhooks extends AbstractAnnouncer { - public static final String NAME = "webhooks"; - private final Map webhooks = new LinkedHashMap<>(); - - public Webhooks() { - super(NAME); - } - - @Override - public void freeze() { - super.freeze(); - webhooks.values().forEach(Webhook::freeze); - } - - @Override - public void merge(Webhooks webhook) { - freezeCheck(); - super.merge(webhook); - setWebhooks(mergeModel(this.webhooks, webhook.webhooks)); - } - - public List getActiveWebhooks() { - return webhooks.values().stream() - .filter(Webhook::isEnabled) - .collect(Collectors.toList()); - } - - public Map getWebhooks() { - return freezeWrap(webhooks); - } - - public void setWebhooks(Map webhooks) { - freezeCheck(); - this.webhooks.clear(); - this.webhooks.putAll(webhooks); - } - - public void addWebhook(Webhook webhook) { - freezeCheck(); - this.webhooks.put(webhook.getName(), webhook); - } - - @Override - public Map asMap(boolean full) { - if (!full && !isEnabled()) return Collections.emptyMap(); - - Map props = new LinkedHashMap<>(); - asMap(full, props); - - Map map = new LinkedHashMap<>(); - map.put(getName(), props); - return map; - } - - @Override - protected void asMap(boolean full, Map props) { - this.webhooks.values() - .stream() - .filter(Webhook::isEnabled) - .map(d -> d.asMap(full)) - .forEach(props::putAll); - } -} diff --git a/core/jreleaser-templates/jreleaser-templates.gradle b/core/jreleaser-templates/jreleaser-templates.gradle index 036796eb5..b6215124b 100644 --- a/core/jreleaser-templates/jreleaser-templates.gradle +++ b/core/jreleaser-templates/jreleaser-templates.gradle @@ -18,7 +18,7 @@ import org.apache.tools.ant.DirectoryScanner dependencies { - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "commons-io:commons-io:$commonsIoVersion" api "com.github.spullara.mustache.java:compiler:$mustacheVersion" } diff --git a/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateGenerator.java b/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateGenerator.java index 354d391da..49f3b10d6 100644 --- a/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateGenerator.java +++ b/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateGenerator.java @@ -20,8 +20,6 @@ import org.apache.commons.io.IOUtils; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.Announce; -import org.jreleaser.model.Distribution; import java.io.BufferedWriter; import java.io.FileOutputStream; @@ -38,6 +36,8 @@ import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; import static java.nio.file.StandardOpenOption.WRITE; import static java.util.Objects.requireNonNull; +import static org.jreleaser.model.internal.JReleaserSupport.supportedAnnouncers; +import static org.jreleaser.model.internal.JReleaserSupport.supportedPackagers; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; import static org.jreleaser.util.StringUtils.requireNonBlank; @@ -49,7 +49,7 @@ public class TemplateGenerator { private final JReleaserLogger logger; private final String distributionName; - private final Distribution.DistributionType distributionType; + private final org.jreleaser.model.Distribution.DistributionType distributionType; private final String packagerName; private final String announcerName; private final Path outputDirectory; @@ -58,7 +58,7 @@ public class TemplateGenerator { private TemplateGenerator(JReleaserLogger logger, String distributionName, - Distribution.DistributionType distributionType, + org.jreleaser.model.Distribution.DistributionType distributionType, String packagerName, String announcerName, Path outputDirectory, @@ -82,7 +82,7 @@ public Path generate() throws TemplateGenerationException { } private Path generateAnnouncer() throws TemplateGenerationException { - if (!Announce.supportedAnnouncers().contains(announcerName)) { + if (!supportedAnnouncers().contains(announcerName)) { logger.error(RB.$("templates.announcer.not.supported"), announcerName); return null; } @@ -113,7 +113,7 @@ private Path generateAnnouncer() throws TemplateGenerationException { } private Path generatePackager() throws TemplateGenerationException { - if (!Distribution.supportedPackagers().contains(packagerName)) { + if (!supportedPackagers().contains(packagerName)) { logger.error(RB.$("ERROR_packager_not_supported"), packagerName); return null; } @@ -178,7 +178,7 @@ public static TemplateGeneratorBuilder builder() { public static class TemplateGeneratorBuilder { private JReleaserLogger logger; private String distributionName; - private Distribution.DistributionType distributionType = Distribution.DistributionType.JAVA_BINARY; + private org.jreleaser.model.Distribution.DistributionType distributionType = org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; private String packagerName; private String announcerName; private Path outputDirectory; @@ -195,7 +195,7 @@ public TemplateGeneratorBuilder distributionName(String distributionName) { return this; } - public TemplateGeneratorBuilder distributionType(Distribution.DistributionType distributionType) { + public TemplateGeneratorBuilder distributionType(org.jreleaser.model.Distribution.DistributionType distributionType) { this.distributionType = distributionType; return this; } diff --git a/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateUtils.java b/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateUtils.java index 6e704ed8d..36ea67f66 100644 --- a/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateUtils.java +++ b/core/jreleaser-templates/src/main/java/org/jreleaser/templates/TemplateUtils.java @@ -19,7 +19,7 @@ import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; import java.io.FileInputStream; import java.io.IOException; diff --git a/core/jreleaser-tools/jreleaser-tools.gradle b/core/jreleaser-tools/jreleaser-tools.gradle deleted file mode 100644 index 57bfe4e10..000000000 --- a/core/jreleaser-tools/jreleaser-tools.gradle +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - api project(':jreleaser-engine') - - // tools - api project(':jreleaser-templates') - api project(':sdkman-java-sdk') - api "org.apache.commons:commons-lang3:${commonsLang3Version}" - api "commons-io:commons-io:$commonsIoVersion" - - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" -} \ No newline at end of file diff --git a/core/jreleaser-workflow/jreleaser-workflow.gradle b/core/jreleaser-workflow/jreleaser-workflow.gradle deleted file mode 100644 index b1e42e99d..000000000 --- a/core/jreleaser-workflow/jreleaser-workflow.gradle +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - // announce - api project(':discord-java-sdk') - api project(':gitter-java-sdk') - api project(':google-chat-java-sdk') - api project(':mail-java-sdk') - api project(':mastodon-java-sdk') - api project(':mattermost-java-sdk') - api project(':sdkman-java-sdk') - api project(':slack-java-sdk') - api project(':teams-java-sdk') - api project(':telegram-java-sdk') - api project(':twitter-java-sdk') - api project(':webhooks-java-sdk') - api project(':zulip-java-sdk') - // release - api project(':github-java-sdk') - api project(':gitlab-java-sdk') - api project(':gitea-java-sdk') - api project(':codeberg-java-sdk') - api project(':genericgit-java-sdk') - // tools - api project(':jreleaser-tools') - api project(':jreleaser-assemblers') - // download/upload - api project(':artifactory-java-sdk') - api project(':ftp-java-sdk') - api project(':http-java-sdk') - api project(':ssh-java-sdk') - api project(':s3-java-sdk') -} \ No newline at end of file diff --git a/jreleaser.yml b/jreleaser.yml index 6bf6ec9f3..4adb91793 100644 --- a/jreleaser.yml +++ b/jreleaser.yml @@ -1,6 +1,6 @@ environment: properties: - jdkPathPrefix: 'apps/jreleaser/build/jdks' + jdkPathPrefix: 'plugins/jreleaser/build/jdks' jdkFilePrefix: 'zulu17.32.13-ca-jdk17.0.2' graalFilePrefix: 'graalvm-ce-java17-22.2.0' nativeImageDir: out/jreleaser/assemble/jreleaser-native/native-image @@ -159,9 +159,9 @@ assemble: - path: '{{jdkPathPrefix}}/zulu17WindowsArm/{{jdkFilePrefix}}-win_aarch64' platform: 'windows-aarch_64' mainJar: - path: 'apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' + path: 'plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' jars: - - pattern: 'apps/jreleaser/build/dependencies/flat/*.jar' + - pattern: 'plugins/jreleaser/build/dependencies/flat/*.jar' jpackage: jreleaser-installer: @@ -199,9 +199,9 @@ assemble: imageName: '{{distributionName}}-{{projectEffectiveVersion}}' executable: jreleaser mainJar: - path: 'apps/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' + path: 'plugins/jreleaser/build/libs/jreleaser-{{projectVersion}}.jar' jars: - - pattern: 'apps/jreleaser/build/dependencies/flat/*.jar' + - pattern: 'plugins/jreleaser/build/dependencies/flat/*.jar' graalJdks: - path: '{{jdkPathPrefix}}/graal17Osx/{{graalFilePrefix}}/Contents/Home' platform: 'osx-x86_64' @@ -291,11 +291,11 @@ distributions: active: release name: jreleaser-copr artifacts: - - path: apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip + - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip' extraProperties: skipSpec: true - - path: apps/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar + - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar' extraProperties: skipFlatpak: true @@ -308,7 +308,7 @@ distributions: jreleaser-tool-provider: type: SINGLE_JAR artifacts: - - path: apps/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar + - path: plugins/{{distributionName}}/build/libs/{{distributionName}}-{{projectVersion}}.jar transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.jar' jreleaser-standalone: diff --git a/plugins/jdks-maven-plugin/jdks-maven-plugin.gradle b/plugins/jdks-maven-plugin/jdks-maven-plugin.gradle index 694eed5b0..974b329af 100644 --- a/plugins/jdks-maven-plugin/jdks-maven-plugin.gradle +++ b/plugins/jdks-maven-plugin/jdks-maven-plugin.gradle @@ -36,7 +36,7 @@ mavenPlugin { } dependencies { - api project(':disco-java-sdk') + api project(':jreleaser-disco-java-sdk') api "org.twdata.maven:mojo-executor:$mojoExecutorVersion" api "org.codehaus.plexus:plexus-archiver:$plexusArchiverVersion" diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractDistributionAwareJReleaserTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractDistributionAwareJReleaserTask.java index ac72088e6..83ca47a57 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractDistributionAwareJReleaserTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractDistributionAwareJReleaserTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import java.util.ArrayList; import java.util.List; diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractJReleaserTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractJReleaserTask.java index 179f7d57e..85cd5787d 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractJReleaserTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractJReleaserTask.java @@ -23,8 +23,9 @@ import org.jreleaser.config.JReleaserConfigParser; import org.jreleaser.engine.context.ContextCreator; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.JReleaserContext; import org.jreleaser.model.JReleaserVersion; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.PlatformUtils; import org.jreleaser.util.StringUtils; @@ -198,8 +199,8 @@ private Set getSupportedConfigFormats() { return extensions; } - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.FULL; + protected Mode getMode() { + return Mode.FULL; } protected List collectSelectedPlatforms() { diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractPackagerAwareJReleaserTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractPackagerAwareJReleaserTask.java index 390484931..559ec5de1 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractPackagerAwareJReleaserTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/AbstractPackagerAwareJReleaserTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import java.util.ArrayList; import java.util.List; diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAnnounceTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAnnounceTask.java index 80c8ca199..d39f229fe 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAnnounceTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAnnounceTask.java @@ -17,7 +17,8 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import java.util.ArrayList; @@ -59,7 +60,7 @@ protected void doExecute(JReleaserContext context) { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.ANNOUNCE; + protected Mode getMode() { + return Mode.ANNOUNCE; } } diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAssembleTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAssembleTask.java index 7a94c5bfb..ccbb302c4 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAssembleTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAssembleTask.java @@ -17,7 +17,8 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import java.util.ArrayList; @@ -59,7 +60,7 @@ protected void doExecute(JReleaserContext context) { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.ASSEMBLE; + protected Mode getMode() { + return Mode.ASSEMBLE; } } diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAutoConfigReleaseTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAutoConfigReleaseTask.java index e0ce97d10..a08ce1ea0 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAutoConfigReleaseTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserAutoConfigReleaseTask.java @@ -24,8 +24,8 @@ import org.jreleaser.ant.tasks.internal.JReleaserLoggerAdapter; import org.jreleaser.engine.context.ModelAutoConfigurer; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.JReleaserContext; import org.jreleaser.model.UpdateSection; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.PlatformUtils; import org.jreleaser.workflow.Workflows; diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChangelogTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChangelogTask.java index 77b2fe8c3..fbe3e93b3 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChangelogTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChangelogTask.java @@ -17,7 +17,8 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** @@ -31,7 +32,7 @@ protected void doExecute(JReleaserContext context) { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.CHANGELOG; + protected Mode getMode() { + return Mode.CHANGELOG; } } diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChecksumTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChecksumTask.java index 07bf39dea..1e420cd77 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChecksumTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserChecksumTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserConfigTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserConfigTask.java index 34f3fe1d0..ea5fe34a3 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserConfigTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserConfigTask.java @@ -19,7 +19,8 @@ import org.jreleaser.ant.tasks.internal.JReleaserModelPrinter; import org.jreleaser.engine.context.ModelValidator; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import java.io.PrintWriter; @@ -62,11 +63,11 @@ protected void doExecute(JReleaserContext context) { context.report(); } - protected JReleaserContext.Mode getMode() { - if (download) return JReleaserContext.Mode.DOWNLOAD; - if (assembly) return JReleaserContext.Mode.ASSEMBLE; - if (changelog) return JReleaserContext.Mode.CHANGELOG; - if (announce) return JReleaserContext.Mode.ANNOUNCE; - return JReleaserContext.Mode.CONFIG; + protected Mode getMode() { + if (download) return Mode.DOWNLOAD; + if (assembly) return Mode.ASSEMBLE; + if (changelog) return Mode.CHANGELOG; + if (announce) return Mode.ANNOUNCE; + return Mode.CONFIG; } } diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserDownloadTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserDownloadTask.java index b7ce5f40c..704ed866d 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserDownloadTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserDownloadTask.java @@ -17,7 +17,8 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import java.util.ArrayList; @@ -83,7 +84,7 @@ protected void doExecute(JReleaserContext context) { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.DOWNLOAD; + protected Mode getMode() { + return Mode.DOWNLOAD; } } diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserFullReleaseTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserFullReleaseTask.java index a0092c9c5..86871cd06 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserFullReleaseTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserFullReleaseTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import java.util.ArrayList; diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserInitTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserInitTask.java index 45ce64572..3ab341cfe 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserInitTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserInitTask.java @@ -23,9 +23,9 @@ import org.jreleaser.ant.tasks.internal.JReleaserLoggerAdapter; import org.jreleaser.config.JReleaserConfigParser; import org.jreleaser.logging.JReleaserLogger; +import org.jreleaser.model.JReleaserException; import org.jreleaser.templates.TemplateResource; import org.jreleaser.templates.TemplateUtils; -import org.jreleaser.util.JReleaserException; import java.io.FileOutputStream; import java.io.IOException; diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPackageTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPackageTask.java index f3a3f13ae..439a99928 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPackageTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPackageTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPrepareTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPrepareTask.java index 49b9a50ba..3f6ee8e46 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPrepareTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPrepareTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPublishTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPublishTask.java index 5bd2f8075..9c54b82a0 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPublishTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserPublishTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserReleaseTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserReleaseTask.java index 7aa094327..487506c81 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserReleaseTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserReleaseTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import java.util.ArrayList; diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserSignTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserSignTask.java index 55c1f71ea..d835ccfdb 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserSignTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserSignTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserTemplateTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserTemplateTask.java index 5e31f50c4..fd845ec5b 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserTemplateTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserTemplateTask.java @@ -21,10 +21,9 @@ import org.apache.tools.ant.Task; import org.jreleaser.ant.tasks.internal.JReleaserLoggerAdapter; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.Distribution; +import org.jreleaser.model.JReleaserException; import org.jreleaser.templates.TemplateGenerationException; import org.jreleaser.templates.TemplateGenerator; -import org.jreleaser.util.JReleaserException; import java.io.FileOutputStream; import java.io.IOException; @@ -40,7 +39,7 @@ public class JReleaserTemplateTask extends Task { private boolean skip; private Path outputDir; private String distributionName; - private Distribution.DistributionType distributionType = Distribution.DistributionType.JAVA_BINARY; + private org.jreleaser.model.Distribution.DistributionType distributionType = org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; private String packagerName; private String announcerName; private boolean overwrite; @@ -55,7 +54,7 @@ public void setDistributionName(String distributionName) { this.distributionName = distributionName; } - public void setDistributionType(Distribution.DistributionType distributionType) { + public void setDistributionType(org.jreleaser.model.Distribution.DistributionType distributionType) { this.distributionType = distributionType; } diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserUploadTask.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserUploadTask.java index 127176d33..886e08321 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserUploadTask.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/JReleaserUploadTask.java @@ -17,7 +17,7 @@ */ package org.jreleaser.ant.tasks; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import java.util.ArrayList; diff --git a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/internal/JReleaserModelPrinter.java b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/internal/JReleaserModelPrinter.java index dcb13b16c..ae96e66a2 100644 --- a/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/internal/JReleaserModelPrinter.java +++ b/plugins/jreleaser-ant-tasks/src/main/java/org/jreleaser/ant/tasks/internal/JReleaserModelPrinter.java @@ -23,7 +23,7 @@ * @author Andres Almiray * @since 0.1.0 */ -public class JReleaserModelPrinter extends org.jreleaser.model.JReleaserModelPrinter { +public class JReleaserModelPrinter extends org.jreleaser.model.internal.JReleaserModelPrinter { public JReleaserModelPrinter(PrintWriter out) { super(out); } diff --git a/plugins/jreleaser-gradle-plugin/jreleaser-gradle-plugin.gradle b/plugins/jreleaser-gradle-plugin/jreleaser-gradle-plugin.gradle index d387b7d44..fab83b8af 100644 --- a/plugins/jreleaser-gradle-plugin/jreleaser-gradle-plugin.gradle +++ b/plugins/jreleaser-gradle-plugin/jreleaser-gradle-plugin.gradle @@ -34,7 +34,7 @@ config { dependencies { compileOnly gradleApi() - api project(':jreleaser-workflow') + api project(':jreleaser-engine') //config api project(':jreleaser-config-yaml') api project(':jreleaser-config-toml') diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserExtension.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserExtension.groovy index d772ba571..507c2b838 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserExtension.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserExtension.groovy @@ -22,21 +22,21 @@ import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Announce -import org.jreleaser.gradle.plugin.dsl.Assemble -import org.jreleaser.gradle.plugin.dsl.Checksum -import org.jreleaser.gradle.plugin.dsl.Distribution -import org.jreleaser.gradle.plugin.dsl.Download -import org.jreleaser.gradle.plugin.dsl.Environment -import org.jreleaser.gradle.plugin.dsl.Extension -import org.jreleaser.gradle.plugin.dsl.Files -import org.jreleaser.gradle.plugin.dsl.Hooks -import org.jreleaser.gradle.plugin.dsl.Packagers -import org.jreleaser.gradle.plugin.dsl.Platform -import org.jreleaser.gradle.plugin.dsl.Project -import org.jreleaser.gradle.plugin.dsl.Release -import org.jreleaser.gradle.plugin.dsl.Signing -import org.jreleaser.gradle.plugin.dsl.Upload +import org.jreleaser.gradle.plugin.dsl.announce.Announce +import org.jreleaser.gradle.plugin.dsl.assemble.Assemble +import org.jreleaser.gradle.plugin.dsl.checksum.Checksum +import org.jreleaser.gradle.plugin.dsl.distributions.Distribution +import org.jreleaser.gradle.plugin.dsl.download.Download +import org.jreleaser.gradle.plugin.dsl.environment.Environment +import org.jreleaser.gradle.plugin.dsl.extensions.Extension +import org.jreleaser.gradle.plugin.dsl.files.Files +import org.jreleaser.gradle.plugin.dsl.hooks.Hooks +import org.jreleaser.gradle.plugin.dsl.packagers.Packagers +import org.jreleaser.gradle.plugin.dsl.platform.Platform +import org.jreleaser.gradle.plugin.dsl.project.Project +import org.jreleaser.gradle.plugin.dsl.release.Release +import org.jreleaser.gradle.plugin.dsl.signing.Signing +import org.jreleaser.gradle.plugin.dsl.upload.Upload /** * @@ -55,32 +55,45 @@ interface JReleaserExtension { Property getGitRootSearch() + @Deprecated Environment getEnvironment() + @Deprecated Hooks getHooks() + @Deprecated Project getProject() + @Deprecated Platform getPlatform() + @Deprecated Release getRelease() + @Deprecated Upload getUpload() + @Deprecated Download getDownload() + @Deprecated Packagers getPackagers() + @Deprecated Announce getAnnounce() + @Deprecated Assemble getAssemble() + @Deprecated Signing getSigning() + @Deprecated Checksum getChecksum() - NamedDomainObjectContainer getExtensions() + // NamedDomainObjectContainer getExtensions() + @Deprecated NamedDomainObjectContainer getDistributions() void environment(Action action) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserPlugin.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserPlugin.groovy index 2f22769ec..4312182f3 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserPlugin.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/JReleaserPlugin.groovy @@ -27,7 +27,7 @@ import org.gradle.api.provider.Provider import org.jreleaser.gradle.plugin.internal.JReleaserExtensionImpl import org.jreleaser.gradle.plugin.internal.JReleaserProjectConfigurer -import static org.jreleaser.util.JReleaserOutput.JRELEASER_QUIET +import static org.jreleaser.model.JReleaserOutput.JRELEASER_QUIET /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Packagers.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Packagers.groovy deleted file mode 100644 index 3a4ae6a29..000000000 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Packagers.groovy +++ /dev/null @@ -1,107 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -package org.jreleaser.gradle.plugin.dsl - -import groovy.transform.CompileStatic -import org.gradle.api.Action - -/** - * - * @author Andres Almiray - * @since 0.1.0 - */ -@CompileStatic -interface Packagers { - AppImage getAppImage() - - Asdf getAsdf() - - Brew getBrew() - - Chocolatey getChocolatey() - - Docker getDocker() - - Flatpak getFlatpak() - - Gofish getGofish() - - Jbang getJbang() - - Macports getMacports() - - Scoop getScoop() - - Sdkman getSdkman() - - Snap getSnap() - - Spec getSpec() - - void appImage(Action action) - - void asdf(Action action) - - void brew(Action action) - - void chocolatey(Action action) - - void docker(Action action) - - void flatpak(Action action) - - void gofish(Action action) - - void jbang(Action action) - - void macports(Action action) - - void scoop(Action action) - - void sdkman(Action action) - - void snap(Action action) - - void spec(Action action) - - void appImage(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AppImage) Closure action) - - void asdf(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Asdf) Closure action) - - void brew(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Brew) Closure action) - - void chocolatey(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Chocolatey) Closure action) - - void docker(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Docker) Closure action) - - void flatpak(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Flatpak) Closure action) - - void gofish(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gofish) Closure action) - - void jbang(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Jbang) Closure action) - - void macports(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Macports) Closure action) - - void scoop(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Scoop) Closure action) - - void sdkman(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Sdkman) Closure action) - - void snap(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Snap) Closure action) - - void spec(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Spec) Closure action) -} \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Announce.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/Announce.groovy similarity index 51% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Announce.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/Announce.groovy index b74869b8c..a1d61cdb7 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Announce.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/Announce.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * @@ -28,99 +29,105 @@ import org.gradle.api.NamedDomainObjectContainer */ @CompileStatic interface Announce extends Activatable { - Article getArticle() + ArticleAnnouncer getArticle() - Discord getDiscord() + DiscordAnnouncer getDiscord() - Discussions getDiscussions() + DiscussionsAnnouncer getDiscussions() - Gitter getGitter() + GitterAnnouncer getGitter() - GoogleChat getGoogleChat() + GoogleChatAnnouncer getGoogleChat() - Mail getMail() + SmtpAnnouncer getMail() - Mastodon getMastodon() + SmtpAnnouncer getSmtp() - Mattermost getMattermost() + MastodonAnnouncer getMastodon() + + MattermostAnnouncer getMattermost() SdkmanAnnouncer getSdkman() - Slack getSlack() + SlackAnnouncer getSlack() - Teams getTeams() + TeamsAnnouncer getTeams() - Telegram getTelegram() + TelegramAnnouncer getTelegram() - Twitter getTwitter() + TwitterAnnouncer getTwitter() - Zulip getZulip() + ZulipAnnouncer getZulip() NamedDomainObjectContainer getHttp() - NamedDomainObjectContainer getWebhooks() + NamedDomainObjectContainer getWebhooks() - void article(Action action) + void article(Action action) - void discord(Action action) + void discord(Action action) - void discussions(Action action) + void discussions(Action action) - void gitter(Action action) + void gitter(Action action) - void googleChat(Action action) + void googleChat(Action action) void http(Action> action) - void mail(Action action) + void mail(Action action) + + void smtp(Action action) - void mastodon(Action action) + void mastodon(Action action) - void mattermost(Action action) + void mattermost(Action action) void sdkman(Action action) - void slack(Action action) + void slack(Action action) - void teams(Action action) + void teams(Action action) - void telegram(Action action) + void telegram(Action action) - void twitter(Action action) + void twitter(Action action) - void zulip(Action action) + void zulip(Action action) - void webhooks(Action> action) + void webhooks(Action> action) - void article(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Article) Closure action) + void article(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ArticleAnnouncer) Closure action) - void discord(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Discord) Closure action) + void discord(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = DiscordAnnouncer) Closure action) - void discussions(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Discussions) Closure action) + void discussions(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = DiscussionsAnnouncer) Closure action) - void gitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gitter) Closure action) + void gitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GitterAnnouncer) Closure action) - void googleChat(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GoogleChat) Closure action) + void googleChat(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GoogleChatAnnouncer) Closure action) void http(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = NamedDomainObjectContainer) Closure action) - void mail(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Mail) Closure action) + void mail(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SmtpAnnouncer) Closure action) + + void smtp(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SmtpAnnouncer) Closure action) - void mastodon(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Mastodon) Closure action) + void mastodon(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MastodonAnnouncer) Closure action) - void mattermost(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Mattermost) Closure action) + void mattermost(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MattermostAnnouncer) Closure action) void sdkman(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SdkmanAnnouncer) Closure action) - void slack(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Slack) Closure action) + void slack(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SlackAnnouncer) Closure action) - void teams(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Teams) Closure action) + void teams(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = TeamsAnnouncer) Closure action) - void telegram(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Telegram) Closure action) + void telegram(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = TelegramAnnouncer) Closure action) - void twitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Twitter) Closure action) + void twitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = TwitterAnnouncer) Closure action) - void zulip(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Zulip) Closure action) + void zulip(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ZulipAnnouncer) Closure action) void webhooks(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = NamedDomainObjectContainer) Closure action) } \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Announcer.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/Announcer.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Announcer.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/Announcer.groovy index f7e274012..d13fb63ce 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Announcer.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/Announcer.groovy @@ -15,10 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Article.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/ArticleAnnouncer.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Article.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/ArticleAnnouncer.groovy index f0b7a223e..180d9b3c2 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Article.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/ArticleAnnouncer.groovy @@ -15,11 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.file.DirectoryProperty +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.Tap /** * @@ -27,7 +30,7 @@ import org.gradle.api.file.DirectoryProperty * @since 0.6.0 */ @CompileStatic -interface Article extends Announcer { +interface ArticleAnnouncer extends Announcer { DirectoryProperty getTemplateDirectory() void setTemplateDirectory(String templateDirectory) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitter.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/DiscordAnnouncer.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitter.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/DiscordAnnouncer.groovy index 93e3bbbe5..94e1c1635 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitter.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/DiscordAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.2.0 */ @CompileStatic -interface Gitter extends Announcer { +interface DiscordAnnouncer extends Announcer { Property getWebhook() Property getMessage() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Discussions.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/DiscussionsAnnouncer.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Discussions.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/DiscussionsAnnouncer.groovy index bb4e2e81b..18bc65cb8 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Discussions.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/DiscussionsAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Discussions extends Announcer { +interface DiscussionsAnnouncer extends Announcer { Property getOrganization() Property getTeam() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Discord.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/GitterAnnouncer.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Discord.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/GitterAnnouncer.groovy index 5c8089c30..d63df57fa 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Discord.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/GitterAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.2.0 */ @CompileStatic -interface Discord extends Announcer { +interface GitterAnnouncer extends Announcer { Property getWebhook() Property getMessage() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GoogleChat.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/GoogleChatAnnouncer.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GoogleChat.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/GoogleChatAnnouncer.groovy index 8521d2c85..d9d63aa8e 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GoogleChat.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/GoogleChatAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.5.0 */ @CompileStatic -interface GoogleChat extends Announcer { +interface GoogleChatAnnouncer extends Announcer { Property getWebhook() Property getMessage() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpAnnouncer.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/HttpAnnouncer.groovy similarity index 96% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpAnnouncer.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/HttpAnnouncer.groovy index 1039fee41..9d0b0a8c8 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpAnnouncer.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/HttpAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mastodon.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/MastodonAnnouncer.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mastodon.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/MastodonAnnouncer.groovy index 4684b45de..d79b21b8a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mastodon.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/MastodonAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.provider.Property @@ -26,7 +26,7 @@ import org.gradle.api.provider.Property * @since 0.2.0 */ @CompileStatic -interface Mastodon extends Announcer { +interface MastodonAnnouncer extends Announcer { Property getHost() Property getAccessToken() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mattermost.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/MattermostAnnouncer.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mattermost.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/MattermostAnnouncer.groovy index be093e693..468667bbf 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mattermost.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/MattermostAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.4.0 */ @CompileStatic -interface Mattermost extends Announcer { +interface MattermostAnnouncer extends Announcer { Property getWebhook() Property getMessage() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SdkmanAnnouncer.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SdkmanAnnouncer.groovy similarity index 89% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SdkmanAnnouncer.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SdkmanAnnouncer.groovy index 8cabee85e..278629a1e 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SdkmanAnnouncer.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SdkmanAnnouncer.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.model.Sdkman /** * @@ -37,7 +38,7 @@ interface SdkmanAnnouncer extends Announcer { Property getDownloadUrl() - Property getCommand() + Property getCommand() void setCommand(String str) } \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Slack.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SlackAnnouncer.groovy similarity index 87% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Slack.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SlackAnnouncer.groovy index c24105946..136da94c7 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Slack.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SlackAnnouncer.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.announce.Announcer /** * @@ -27,7 +28,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Slack extends Announcer { +interface SlackAnnouncer extends Announcer { Property getToken() Property getWebhook() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mail.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SmtpAnnouncer.groovy similarity index 87% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mail.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SmtpAnnouncer.groovy index 7fb3708ec..2b82e51db 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Mail.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/SmtpAnnouncer.groovy @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property +import org.jreleaser.model.Mail /** * @@ -28,10 +29,10 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Mail extends Announcer { - Property getTransport() +interface SmtpAnnouncer extends Announcer { + Property getTransport() - Property getMimeType() + Property getMimeType() void setTransport(String transport) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Teams.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TeamsAnnouncer.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Teams.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TeamsAnnouncer.groovy index 8bd2bdf20..055f04d50 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Teams.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TeamsAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.2.0 */ @CompileStatic -interface Teams extends Announcer { +interface TeamsAnnouncer extends Announcer { Property getWebhook() RegularFileProperty getMessageTemplate() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Telegram.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TelegramAnnouncer.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Telegram.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TelegramAnnouncer.groovy index cfdb2e81e..b4a8b10a3 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Telegram.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TelegramAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.8.0 */ @CompileStatic -interface Telegram extends Announcer { +interface TelegramAnnouncer extends Announcer { Property getToken() Property getChatId() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Twitter.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TwitterAnnouncer.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Twitter.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TwitterAnnouncer.groovy index ced319190..f3e8b6d07 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Twitter.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/TwitterAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.provider.ListProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Twitter extends Announcer { +interface TwitterAnnouncer extends Announcer { Property getConsumerKey() Property getConsumerSecret() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Webhook.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/WebhookAnnouncer.groovy similarity index 87% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Webhook.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/WebhookAnnouncer.groovy index c37c02cad..a0ade5d52 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Webhook.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/WebhookAnnouncer.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.announce.Announcer /** * @@ -27,7 +28,7 @@ import org.gradle.api.provider.Property * @since 0.5.0 */ @CompileStatic -interface Webhook extends Announcer { +interface WebhookAnnouncer extends Announcer { Property getWebhook() Property getMessage() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Zulip.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/ZulipAnnouncer.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Zulip.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/ZulipAnnouncer.groovy index 3f1f852ee..af500a1b5 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Zulip.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/announce/ZulipAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Zulip extends Announcer { +interface ZulipAnnouncer extends Announcer { Property getAccount() Property getApiKey() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Archive.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/ArchiveAssembler.groovy similarity index 78% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Archive.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/ArchiveAssembler.groovy index 62150c711..508a074a4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Archive.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/ArchiveAssembler.groovy @@ -15,11 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty +import org.jreleaser.model.Archive.Format +import org.jreleaser.model.Distribution.DistributionType /** * @@ -27,16 +29,16 @@ import org.gradle.api.provider.SetProperty * @since 0.2.0 */ @CompileStatic -interface Archive extends Assembler { +interface ArchiveAssembler extends Assembler { Property getArchiveName() - Property getDistributionType() + Property getDistributionType() void setDistributionType(String distributionType) Property getAttachPlatform() - SetProperty getFormats() + SetProperty getFormats() void format(String format) } \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Assemble.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/Assemble.groovy similarity index 75% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Assemble.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/Assemble.groovy index 0106ab7a3..04725c05f 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Assemble.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/Assemble.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * @@ -28,21 +29,21 @@ import org.gradle.api.NamedDomainObjectContainer */ @CompileStatic interface Assemble extends Activatable { - NamedDomainObjectContainer getArchive() + NamedDomainObjectContainer getArchive() - NamedDomainObjectContainer getJlink() + NamedDomainObjectContainer getJlink() - NamedDomainObjectContainer getJpackage() + NamedDomainObjectContainer getJpackage() - NamedDomainObjectContainer getNativeImage() + NamedDomainObjectContainer getNativeImage() - void archive(Action> action) + void archive(Action> action) - void jlink(Action> action) + void jlink(Action> action) - void jpackage(Action> action) + void jpackage(Action> action) - void nativeImage(Action> action) + void nativeImage(Action> action) void archive(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = NamedDomainObjectContainer) Closure action) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Assembler.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/Assembler.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Assembler.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/Assembler.groovy index c38b58136..9473ff71a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Assembler.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/Assembler.groovy @@ -15,12 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties +import org.jreleaser.gradle.plugin.dsl.common.FileSet +import org.jreleaser.gradle.plugin.dsl.platform.Platform import org.jreleaser.model.Stereotype /** diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/JavaAssembler.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JavaAssembler.groovy similarity index 88% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/JavaAssembler.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JavaAssembler.groovy index 596f6a8c9..fdd594060 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/JavaAssembler.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JavaAssembler.groovy @@ -15,12 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.file.DirectoryProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.Glob +import org.jreleaser.gradle.plugin.dsl.common.Java /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jlink.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JlinkAssembler.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jlink.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JlinkAssembler.groovy index 6922c0210..89482b909 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jlink.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JlinkAssembler.groovy @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty +import org.jreleaser.gradle.plugin.dsl.common.Artifact /** * @@ -29,7 +30,7 @@ import org.gradle.api.provider.SetProperty * @since 0.2.0 */ @CompileStatic -interface Jlink extends JavaAssembler { +interface JlinkAssembler extends JavaAssembler { Property getImageName() Property getImageNameTransform() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jpackage.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JpackageAssembler.groovy similarity index 96% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jpackage.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JpackageAssembler.groovy index 83218171d..8ef77d3d7 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jpackage.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/JpackageAssembler.groovy @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Artifact /** * @@ -29,7 +30,7 @@ import org.gradle.api.provider.Property * @since 0.10.0 */ @CompileStatic -interface Jpackage extends JavaAssembler { +interface JpackageAssembler extends JavaAssembler { Property getJlink() Property getAttachPlatform() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/NativeImage.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/NativeImageAssembler.groovy similarity index 88% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/NativeImage.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/NativeImageAssembler.groovy index 4113497cb..cc1d6d560 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/NativeImage.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/assemble/NativeImageAssembler.groovy @@ -15,12 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.model.Archive /** * @@ -28,14 +31,14 @@ import org.gradle.api.provider.Property * @since 0.2.0 */ @CompileStatic -interface NativeImage extends JavaAssembler { +interface NativeImageAssembler extends JavaAssembler { Property getImageName() Property getImageNameTransform() ListProperty getArgs() - Property getArchiveFormat() + Property getArchiveFormat() void setArchiveFormat(String str) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Checksum.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/checksum/Checksum.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Checksum.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/checksum/Checksum.groovy index f9f8afffc..ac6a4f711 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Checksum.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/checksum/Checksum.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.checksum import groovy.transform.CompileStatic import org.gradle.api.provider.ListProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Activatable.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Activatable.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Activatable.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Activatable.groovy index a002d66e0..6f8c6232d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Activatable.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Activatable.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Artifact.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Artifact.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Artifact.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Artifact.groovy index 39dffb28d..66bd28727 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Artifact.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Artifact.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -30,7 +30,7 @@ import org.gradle.api.provider.Property interface Artifact extends ExtraProperties { RegularFileProperty getPath() - Property getTransform() + Property getTransform() Property getPlatform() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommitAuthor.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/CommitAuthor.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommitAuthor.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/CommitAuthor.groovy index 7e3ad8c4e..602652730 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommitAuthor.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/CommitAuthor.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ExtraProperties.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/ExtraProperties.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ExtraProperties.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/ExtraProperties.groovy index 04495ead5..a0112fc40 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ExtraProperties.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/ExtraProperties.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import org.gradle.api.provider.MapProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FileSet.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/FileSet.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FileSet.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/FileSet.groovy index 838d31d43..6da6356fa 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FileSet.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/FileSet.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Glob.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Glob.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Glob.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Glob.groovy index 0f49a89e8..ce8e558e5 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Glob.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Glob.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.file.DirectoryProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Icon.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Icon.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Icon.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Icon.groovy index aa6c5427d..9bf05abdb 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Icon.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Icon.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Java.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Java.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Java.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Java.groovy index e2f17f622..a041653f4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Java.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Java.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Screenshot.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Screenshot.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Screenshot.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Screenshot.groovy index 485cf8d2c..647db9a25 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Screenshot.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/common/Screenshot.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.common import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Distribution.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/distributions/Distribution.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Distribution.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/distributions/Distribution.groovy index 8115e87da..eb07d9d10 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Distribution.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/distributions/Distribution.groovy @@ -15,12 +15,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.distributions import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties +import org.jreleaser.gradle.plugin.dsl.common.Java +import org.jreleaser.gradle.plugin.dsl.packagers.Packagers +import org.jreleaser.gradle.plugin.dsl.platform.Platform import org.jreleaser.model.Distribution.DistributionType import org.jreleaser.model.Stereotype diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Download.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/Download.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Download.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/Download.groovy index eab69482b..cc0a784c3 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Download.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/Download.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.download import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Downloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/Downloader.groovy similarity index 89% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Downloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/Downloader.groovy index 92c6a892d..91344c167 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Downloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/Downloader.groovy @@ -15,11 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.download import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FtpDownloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/FtpDownloader.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FtpDownloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/FtpDownloader.groovy index 074233d2f..c5c2beafe 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FtpDownloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/FtpDownloader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.download import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpDownloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/HttpDownloader.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpDownloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/HttpDownloader.groovy index 52efe0025..915d2c736 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpDownloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/HttpDownloader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.download import groovy.transform.CompileStatic import org.gradle.api.provider.MapProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ScpDownloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/ScpDownloader.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ScpDownloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/ScpDownloader.groovy index f7cc8171f..404965ba7 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ScpDownloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/ScpDownloader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.download import groovy.transform.CompileStatic diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SftpDownloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/SftpDownloader.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SftpDownloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/SftpDownloader.groovy index 88f839aef..78def2ce8 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SftpDownloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/SftpDownloader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.download import groovy.transform.CompileStatic diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SshDownloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/SshDownloader.groovy similarity index 96% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SshDownloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/SshDownloader.groovy index e8e5af1a1..e0104f207 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SshDownloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/download/SshDownloader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.download import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Environment.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/environment/Environment.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Environment.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/environment/Environment.groovy index 645182502..655f5f2fe 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Environment.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/environment/Environment.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.environment import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Extension.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/extensions/Extension.groovy similarity index 96% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Extension.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/extensions/Extension.groovy index d26182ac4..4a6f135a0 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Extension.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/extensions/Extension.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.extensions import groovy.transform.CompileStatic import org.gradle.api.Action diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Files.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/files/Files.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Files.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/files/Files.groovy index 7228a26f0..48cc27bb2 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Files.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/files/Files.groovy @@ -15,10 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.files import groovy.transform.CompileStatic import org.gradle.api.Action +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.Glob /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommandHook.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/CommandHook.groovy similarity index 89% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommandHook.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/CommandHook.groovy index 5162e46af..18fd1be1b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommandHook.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/CommandHook.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommandHooks.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/CommandHooks.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommandHooks.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/CommandHooks.groovy index 7d6dc936d..bebdf662f 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/CommandHooks.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/CommandHooks.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.Action +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Hook.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/Hook.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Hook.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/Hook.groovy index 01104e31a..165e9b340 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Hook.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/Hook.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.SetProperty +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Hooks.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/Hooks.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Hooks.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/Hooks.groovy index 7370b939e..0a883d708 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Hooks.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/hooks/Hooks.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.Action +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/AppImage.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/AppImagePackager.groovy similarity index 88% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/AppImage.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/AppImagePackager.groovy index 87f419cc0..3437e9f4f 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/AppImage.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/AppImagePackager.groovy @@ -15,13 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty +import org.jreleaser.gradle.plugin.dsl.common.Icon +import org.jreleaser.gradle.plugin.dsl.common.Screenshot /** * @@ -29,7 +31,7 @@ import org.gradle.api.provider.SetProperty * @since 1.2.0 */ @CompileStatic -interface AppImage extends RepositoryPackager { +interface AppImagePackager extends RepositoryPackager { Property getComponentId() ListProperty getCategories() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Asdf.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/AsdfPackager.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Asdf.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/AsdfPackager.groovy index 672912eb4..fb67b804c 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Asdf.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/AsdfPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 1.2.0 */ @CompileStatic -interface Asdf extends RepositoryPackager { +interface AsdfPackager extends RepositoryPackager { Property getToolCheck() Tap getRepository() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Brew.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/BrewPackager.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Brew.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/BrewPackager.groovy index 409e0a939..4f9e784f2 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Brew.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/BrewPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -29,7 +29,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Brew extends RepositoryPackager { +interface BrewPackager extends RepositoryPackager { Property getFormulaName() Property getMultiPlatform() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Chocolatey.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/ChocolateyPackager.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Chocolatey.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/ChocolateyPackager.groovy index 8619d6b0b..497ad7f43 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Chocolatey.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/ChocolateyPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Chocolatey extends RepositoryPackager { +interface ChocolateyPackager extends RepositoryPackager { Property getPackageName() Property getPackageVersion() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/DockerConfiguration.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerConfiguration.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/DockerConfiguration.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerConfiguration.groovy index b099c7e0d..ee9993f91 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/DockerConfiguration.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerConfiguration.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -25,6 +25,8 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Docker.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerPackager.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Docker.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerPackager.groovy index a50357b85..050fc53cc 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Docker.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -28,7 +28,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Docker extends DockerConfiguration, RepositoryPackager { +interface DockerPackager extends DockerConfiguration, RepositoryPackager { NamedDomainObjectContainer getSpecs() DockerRepository getRepository() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/DockerSpec.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerSpec.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/DockerSpec.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerSpec.groovy index 70c64e08d..bf68c3e6f 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/DockerSpec.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/DockerSpec.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.provider.MapProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Flatpak.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/FlatpakPackager.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Flatpak.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/FlatpakPackager.groovy index 157ced9cb..ffbc83484 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Flatpak.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/FlatpakPackager.groovy @@ -15,13 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty +import org.jreleaser.gradle.plugin.dsl.common.Icon +import org.jreleaser.gradle.plugin.dsl.common.Screenshot +import org.jreleaser.model.Flatpak /** * @@ -29,14 +32,14 @@ import org.gradle.api.provider.SetProperty * @since 1.2.0 */ @CompileStatic -interface Flatpak extends RepositoryPackager { +interface FlatpakPackager extends RepositoryPackager { Property getComponentId() ListProperty getCategories() Property getDeveloperName() - Property getRuntime() + Property getRuntime() Property getRuntimeVersion() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gofish.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/GofishPackager.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gofish.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/GofishPackager.groovy index 91b2afe9f..20204bc99 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gofish.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/GofishPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -26,7 +26,7 @@ import org.gradle.api.Action * @since 0.10.0 */ @CompileStatic -interface Gofish extends RepositoryPackager { +interface GofishPackager extends RepositoryPackager { Tap getRepository() void repository(Action action) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jbang.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/JbangPackager.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jbang.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/JbangPackager.groovy index f25e6424d..14cea907d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Jbang.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/JbangPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Jbang extends RepositoryPackager { +interface JbangPackager extends RepositoryPackager { Property getAlias() Tap getCatalog() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Macports.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/MacportsPackager.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Macports.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/MacportsPackager.groovy index 26aa21425..2a5852a2b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Macports.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/MacportsPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -28,7 +28,7 @@ import org.gradle.api.provider.Property * @since 0.9.0 */ @CompileStatic -interface Macports extends RepositoryPackager { +interface MacportsPackager extends RepositoryPackager { Property getPackageName() Property getRevision() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Packager.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Packager.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Packager.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Packager.groovy index 214bb5d57..d3ca71391 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Packager.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Packager.groovy @@ -15,10 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Packagers.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Packagers.groovy new file mode 100644 index 000000000..9218cd326 --- /dev/null +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Packagers.groovy @@ -0,0 +1,107 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.gradle.plugin.dsl.packagers + +import groovy.transform.CompileStatic +import org.gradle.api.Action + +/** + * + * @author Andres Almiray + * @since 0.1.0 + */ +@CompileStatic +interface Packagers { + AppImagePackager getAppImage() + + AsdfPackager getAsdf() + + BrewPackager getBrew() + + ChocolateyPackager getChocolatey() + + DockerPackager getDocker() + + FlatpakPackager getFlatpak() + + GofishPackager getGofish() + + JbangPackager getJbang() + + MacportsPackager getMacports() + + ScoopPackager getScoop() + + SdkmanPackager getSdkman() + + SnapPackager getSnap() + + SpecPackager getSpec() + + void appImage(Action action) + + void asdf(Action action) + + void brew(Action action) + + void chocolatey(Action action) + + void docker(Action action) + + void flatpak(Action action) + + void gofish(Action action) + + void jbang(Action action) + + void macports(Action action) + + void scoop(Action action) + + void sdkman(Action action) + + void snap(Action action) + + void spec(Action action) + + void appImage(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AppImagePackager) Closure action) + + void asdf(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AsdfPackager) Closure action) + + void brew(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = BrewPackager) Closure action) + + void chocolatey(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ChocolateyPackager) Closure action) + + void docker(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = DockerPackager) Closure action) + + void flatpak(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = FlatpakPackager) Closure action) + + void gofish(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GofishPackager) Closure action) + + void jbang(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = JbangPackager) Closure action) + + void macports(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MacportsPackager) Closure action) + + void scoop(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ScoopPackager) Closure action) + + void sdkman(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SdkmanPackager) Closure action) + + void snap(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SnapPackager) Closure action) + + void spec(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SpecPackager) Closure action) +} \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Registry.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Registry.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Registry.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Registry.groovy index ed9a8ff84..b47e4305d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Registry.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Registry.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/RepositoryPackager.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/RepositoryPackager.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/RepositoryPackager.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/RepositoryPackager.groovy index 6fb11022a..00fe9884d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/RepositoryPackager.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/RepositoryPackager.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Scoop.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/ScoopPackager.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Scoop.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/ScoopPackager.groovy index 6907381bc..93a0f3b24 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Scoop.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/ScoopPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Scoop extends RepositoryPackager { +interface ScoopPackager extends RepositoryPackager { Property getPackageName() Property getCheckverUrl() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Sdkman.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SdkmanPackager.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Sdkman.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SdkmanPackager.groovy index 30df9d53e..3651afc8a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Sdkman.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SdkmanPackager.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.model.Sdkman /** * @@ -26,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.6.0 */ @CompileStatic -interface Sdkman extends Packager { +interface SdkmanPackager extends Packager { Property getConsumerKey() Property getConsumerToken() @@ -39,7 +40,7 @@ interface Sdkman extends Packager { Property getReadTimeout() - Property getCommand() + Property getCommand() void setCommand(String str) } \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Snap.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SnapPackager.groovy similarity index 96% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Snap.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SnapPackager.groovy index f8473e5e1..a7f136f15 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Snap.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SnapPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -32,7 +32,7 @@ import org.gradle.api.provider.SetProperty * @since 0.1.0 */ @CompileStatic -interface Snap extends RepositoryPackager { +interface SnapPackager extends RepositoryPackager { Property getPackageName() Property getBase() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Spec.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SpecPackager.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Spec.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SpecPackager.groovy index eb1f59875..940eabe80 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Spec.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/SpecPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -28,7 +28,7 @@ import org.gradle.api.provider.Property * @since 0.9.1 */ @CompileStatic -interface Spec extends RepositoryPackager { +interface SpecPackager extends RepositoryPackager { Property getPackageName() Property getRelease() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Tap.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Tap.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Tap.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Tap.groovy index 2e73e112c..d2dd48e2c 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Tap.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/Tap.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/TemplatePackager.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/TemplatePackager.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/TemplatePackager.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/TemplatePackager.groovy index cacae54cf..e2940afe4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/TemplatePackager.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/packagers/TemplatePackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.file.DirectoryProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Platform.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/platform/Platform.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Platform.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/platform/Platform.groovy index 62d8087b7..9c75063f9 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Platform.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/platform/Platform.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.platform import groovy.transform.CompileStatic import org.gradle.api.provider.MapProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Project.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/project/Project.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Project.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/project/Project.groovy index 70e100956..efceecf9b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Project.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/project/Project.groovy @@ -15,12 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.project import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties +import org.jreleaser.gradle.plugin.dsl.common.Icon +import org.jreleaser.gradle.plugin.dsl.common.Java +import org.jreleaser.gradle.plugin.dsl.common.Screenshot import org.jreleaser.model.Stereotype /** diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GitService.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/BaseReleaser.groovy similarity index 96% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GitService.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/BaseReleaser.groovy index 297bf55d3..83019b6d8 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GitService.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/BaseReleaser.groovy @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor import org.jreleaser.model.Active import org.jreleaser.model.UpdateSection @@ -30,7 +31,7 @@ import org.jreleaser.model.UpdateSection * @since 0.1.0 */ @CompileStatic -interface GitService extends Releaser { +interface BaseReleaser extends Releaser { Property getHost() Property getRepoOwner() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Changelog.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Changelog.groovy similarity index 98% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Changelog.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Changelog.groovy index bbab937c6..a1f01a8f5 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Changelog.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Changelog.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Codeberg.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/CodebergReleaser.groovy similarity index 89% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Codeberg.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/CodebergReleaser.groovy index df3681147..9e7fc25ba 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Codeberg.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/CodebergReleaser.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.provider.Property @@ -26,6 +26,6 @@ import org.gradle.api.provider.Property * @since 0.4.0 */ @CompileStatic -interface Codeberg extends Gitea { +interface CodebergReleaser extends GiteaReleaser { Property getDraft() } \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GenericGit.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GenericGitReleaser.groovy similarity index 88% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GenericGit.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GenericGitReleaser.groovy index 8b5ba6c4a..fe0c60446 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GenericGit.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GenericGitReleaser.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic @@ -25,5 +25,5 @@ import groovy.transform.CompileStatic * @since 04.0 */ @CompileStatic -interface GenericGit extends GitService { +interface GenericGitReleaser extends BaseReleaser { } \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitea.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GiteaReleaser.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitea.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GiteaReleaser.groovy index d77d4d6f2..e99dca97e 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitea.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GiteaReleaser.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Gitea extends GitService { +interface GiteaReleaser extends BaseReleaser { Property getDraft() Prerelease getPrerelease() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Github.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GithubReleaser.groovy similarity index 93% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Github.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GithubReleaser.groovy index f8d059538..6ff381276 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Github.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GithubReleaser.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Github extends GitService { +interface GithubReleaser extends BaseReleaser { Property getDraft() Property getDiscussionCategoryName() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitlab.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GitlabReleaser.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitlab.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GitlabReleaser.groovy index e66224af9..dfbc20e40 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Gitlab.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/GitlabReleaser.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.provider.MapProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.1.0 */ @CompileStatic -interface Gitlab extends GitService { +interface GitlabReleaser extends BaseReleaser { @Deprecated Property getIdentifier() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Release.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Release.groovy similarity index 61% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Release.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Release.groovy index f378e2a12..778abb28a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Release.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Release.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,33 +27,33 @@ import org.gradle.api.Action */ @CompileStatic interface Release { - Github getGithub() + GithubReleaser getGithub() - Gitlab getGitlab() + GitlabReleaser getGitlab() - Gitea getGitea() + GiteaReleaser getGitea() - Codeberg getCodeberg() + CodebergReleaser getCodeberg() - GenericGit getGeneric() + GenericGitReleaser getGeneric() - void github(Action action) + void github(Action action) - void gitlab(Action action) + void gitlab(Action action) - void gitea(Action action) + void gitea(Action action) - void codeberg(Action action) + void codeberg(Action action) - void generic(Action action) + void generic(Action action) - void github(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Github) Closure action) + void github(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GithubReleaser) Closure action) - void gitlab(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gitlab) Closure action) + void gitlab(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GitlabReleaser) Closure action) - void gitea(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gitea) Closure action) + void gitea(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GiteaReleaser) Closure action) - void codeberg(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Codeberg) Closure action) + void codeberg(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = CodebergReleaser) Closure action) - void generic(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GenericGit) Closure action) + void generic(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GenericGitReleaser) Closure action) } \ No newline at end of file diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Releaser.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Releaser.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Releaser.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Releaser.groovy index 34e2266de..375df9ac3 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Releaser.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/release/Releaser.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.release import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Signing.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/signing/Signing.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Signing.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/signing/Signing.groovy index 7dc018ca8..f102736ad 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Signing.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/signing/Signing.groovy @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.signing import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Artifactory.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/ArtifactoryUploader.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Artifactory.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/ArtifactoryUploader.groovy index bd8d6ca71..e119275e4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Artifactory.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/ArtifactoryUploader.groovy @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty +import org.jreleaser.gradle.plugin.dsl.common.Activatable import org.jreleaser.model.Http import org.jreleaser.util.FileType @@ -30,7 +31,7 @@ import org.jreleaser.util.FileType * @since 0.3.0 */ @CompileStatic -interface Artifactory extends WebUploader { +interface ArtifactoryUploader extends WebUploader { Property getHost() Property getUsername() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FtpUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/FtpUploader.groovy similarity index 91% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FtpUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/FtpUploader.groovy index a7d4dee47..b24115f2b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/FtpUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/FtpUploader.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.upload.Uploader /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GiteaUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/GiteaUploader.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GiteaUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/GiteaUploader.groovy index c1b3988d6..e6fb7e146 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GiteaUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/GiteaUploader.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.upload.Uploader /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GitlabUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/GitlabUploader.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GitlabUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/GitlabUploader.groovy index 1806d89c5..ba53ff011 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/GitlabUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/GitlabUploader.groovy @@ -15,10 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.upload.Uploader /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/HttpUploader.groovy similarity index 92% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/HttpUploader.groovy index d98ef8ffb..dc2c0d515 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/HttpUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/HttpUploader.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.upload.WebUploader import org.jreleaser.model.Http /** diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/S3.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/S3Uploader.groovy similarity index 93% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/S3.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/S3Uploader.groovy index c1ecd9893..4727bd901 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/S3.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/S3Uploader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.provider.MapProperty @@ -27,7 +27,7 @@ import org.gradle.api.provider.Property * @since 0.8.0 */ @CompileStatic -interface S3 extends Uploader { +interface S3Uploader extends Uploader { Property getRegion() Property getBucket() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ScpUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/ScpUploader.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ScpUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/ScpUploader.groovy index 72f67545d..9c8ce92e8 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/ScpUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/ScpUploader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SftpUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/SftpUploader.groovy similarity index 94% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SftpUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/SftpUploader.groovy index 7b6cc2023..c2b7ddc37 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SftpUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/SftpUploader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SshUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/SshUploader.groovy similarity index 96% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SshUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/SshUploader.groovy index 001c87c0a..a02b90b51 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/SshUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/SshUploader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Upload.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/Upload.groovy similarity index 89% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Upload.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/Upload.groovy index 353b44e5d..37d895ba9 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Upload.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/Upload.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.NamedDomainObjectContainer +import org.jreleaser.gradle.plugin.dsl.common.Activatable /** * @@ -28,7 +29,7 @@ import org.gradle.api.NamedDomainObjectContainer */ @CompileStatic interface Upload extends Activatable { - NamedDomainObjectContainer getArtifactory() + NamedDomainObjectContainer getArtifactory() NamedDomainObjectContainer getFtp() @@ -38,13 +39,13 @@ interface Upload extends Activatable { NamedDomainObjectContainer getHttp() - NamedDomainObjectContainer getS3() + NamedDomainObjectContainer getS3() NamedDomainObjectContainer getScp() NamedDomainObjectContainer getSftp() - void artifactory(Action> action) + void artifactory(Action> action) void ftp(Action> action) @@ -54,7 +55,7 @@ interface Upload extends Activatable { void http(Action> action) - void s3(Action> action) + void s3(Action> action) void scp(Action> action) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Uploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/Uploader.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Uploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/Uploader.groovy index 2d7be4678..59e43bafd 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/Uploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/Uploader.groovy @@ -15,10 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.provider.Property +import org.jreleaser.gradle.plugin.dsl.common.Activatable +import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties /** * diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/WebUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/WebUploader.groovy similarity index 95% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/WebUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/WebUploader.groovy index fce365e33..afd02ea27 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/WebUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/dsl/upload/WebUploader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.dsl +package org.jreleaser.gradle.plugin.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.provider.Property diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserExtensionImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserExtensionImpl.groovy index d9199cfbe..4fbf8d381 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserExtensionImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserExtensionImpl.groovy @@ -29,38 +29,38 @@ import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.jreleaser.engine.context.ContextCreator import org.jreleaser.gradle.plugin.JReleaserExtension -import org.jreleaser.gradle.plugin.dsl.Announce -import org.jreleaser.gradle.plugin.dsl.Assemble -import org.jreleaser.gradle.plugin.dsl.Checksum -import org.jreleaser.gradle.plugin.dsl.Distribution -import org.jreleaser.gradle.plugin.dsl.Download -import org.jreleaser.gradle.plugin.dsl.Environment -import org.jreleaser.gradle.plugin.dsl.Extension -import org.jreleaser.gradle.plugin.dsl.Files -import org.jreleaser.gradle.plugin.dsl.Hooks -import org.jreleaser.gradle.plugin.dsl.Packagers -import org.jreleaser.gradle.plugin.dsl.Platform -import org.jreleaser.gradle.plugin.dsl.Project -import org.jreleaser.gradle.plugin.dsl.Release -import org.jreleaser.gradle.plugin.dsl.Signing -import org.jreleaser.gradle.plugin.dsl.Upload -import org.jreleaser.gradle.plugin.internal.dsl.AnnounceImpl -import org.jreleaser.gradle.plugin.internal.dsl.AssembleImpl -import org.jreleaser.gradle.plugin.internal.dsl.ChecksumImpl -import org.jreleaser.gradle.plugin.internal.dsl.DistributionImpl -import org.jreleaser.gradle.plugin.internal.dsl.DownloadImpl -import org.jreleaser.gradle.plugin.internal.dsl.EnvironmentImpl -import org.jreleaser.gradle.plugin.internal.dsl.ExtensionImpl -import org.jreleaser.gradle.plugin.internal.dsl.FilesImpl -import org.jreleaser.gradle.plugin.internal.dsl.HooksImpl -import org.jreleaser.gradle.plugin.internal.dsl.PackagersImpl -import org.jreleaser.gradle.plugin.internal.dsl.PlatformImpl -import org.jreleaser.gradle.plugin.internal.dsl.ProjectImpl -import org.jreleaser.gradle.plugin.internal.dsl.ReleaseImpl -import org.jreleaser.gradle.plugin.internal.dsl.SigningImpl -import org.jreleaser.gradle.plugin.internal.dsl.UploadImpl +import org.jreleaser.gradle.plugin.dsl.announce.Announce +import org.jreleaser.gradle.plugin.dsl.assemble.Assemble +import org.jreleaser.gradle.plugin.dsl.checksum.Checksum +import org.jreleaser.gradle.plugin.dsl.distributions.Distribution +import org.jreleaser.gradle.plugin.dsl.download.Download +import org.jreleaser.gradle.plugin.dsl.environment.Environment +import org.jreleaser.gradle.plugin.dsl.extensions.Extension +import org.jreleaser.gradle.plugin.dsl.files.Files +import org.jreleaser.gradle.plugin.dsl.hooks.Hooks +import org.jreleaser.gradle.plugin.dsl.packagers.Packagers +import org.jreleaser.gradle.plugin.dsl.platform.Platform +import org.jreleaser.gradle.plugin.dsl.project.Project +import org.jreleaser.gradle.plugin.dsl.release.Release +import org.jreleaser.gradle.plugin.dsl.signing.Signing +import org.jreleaser.gradle.plugin.dsl.upload.Upload +import org.jreleaser.gradle.plugin.internal.dsl.announce.AnnounceImpl +import org.jreleaser.gradle.plugin.internal.dsl.assemble.AssembleImpl +import org.jreleaser.gradle.plugin.internal.dsl.checksum.ChecksumImpl +import org.jreleaser.gradle.plugin.internal.dsl.distributions.DistributionImpl +import org.jreleaser.gradle.plugin.internal.dsl.download.DownloadImpl +import org.jreleaser.gradle.plugin.internal.dsl.environment.EnvironmentImpl +import org.jreleaser.gradle.plugin.internal.dsl.extensions.ExtensionImpl +import org.jreleaser.gradle.plugin.internal.dsl.files.FilesImpl +import org.jreleaser.gradle.plugin.internal.dsl.hooks.HooksImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.PackagersImpl +import org.jreleaser.gradle.plugin.internal.dsl.platform.PlatformImpl +import org.jreleaser.gradle.plugin.internal.dsl.project.ProjectImpl +import org.jreleaser.gradle.plugin.internal.dsl.release.ReleaseImpl +import org.jreleaser.gradle.plugin.internal.dsl.signing.SigningImpl +import org.jreleaser.gradle.plugin.internal.dsl.upload.UploadImpl import org.jreleaser.logging.JReleaserLogger -import org.jreleaser.model.JReleaserModel +import org.jreleaser.model.internal.JReleaserModel import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -93,7 +93,7 @@ class JReleaserExtensionImpl implements JReleaserExtension { final SigningImpl signing final FilesImpl files final NamedDomainObjectContainer distributions - final NamedDomainObjectContainer extensions + private final NamedDomainObjectContainer extensions private final ProjectLayout layout @@ -304,7 +304,7 @@ class JReleaserExtensionImpl implements JReleaserExtension { if (isBlank(jreleaser.project.name)) jreleaser.project.name = project.name.orNull if (isBlank(jreleaser.project.version)) jreleaser.project.version = project.version.orNull if (isBlank(jreleaser.project.description)) jreleaser.project.description = project.description.orNull - jreleaser.environment.propertiesSource = new org.jreleaser.model.Environment.MapPropertiesSource( + jreleaser.environment.propertiesSource = new org.jreleaser.model.internal.environment.Environment.MapPropertiesSource( filterProperties(project.properties)) return jreleaser } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserLoggerAdapter.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserLoggerAdapter.groovy index acfe80953..7395a55dd 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserLoggerAdapter.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserLoggerAdapter.groovy @@ -201,13 +201,13 @@ class JReleaserLoggerAdapter extends AbstractJReleaserLogger { private static Level resolveLogLevel(LogLevel logLevel) { switch (logLevel) { - case LogLevel.DEBUG: return Level.DEBUG; - case LogLevel.WARN: return Level.WARN; - case LogLevel.ERROR: return Level.ERROR; - case LogLevel.QUIET: return Level.QUIET; + case LogLevel.DEBUG: return Level.DEBUG + case LogLevel.WARN: return Level.WARN + case LogLevel.ERROR: return Level.ERROR + case LogLevel.QUIET: return Level.QUIET case LogLevel.INFO: default: - return Level.INFO; + return Level.INFO } } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserModelPrinter.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserModelPrinter.groovy index c57822d49..a4f81d315 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserModelPrinter.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserModelPrinter.groovy @@ -26,7 +26,7 @@ import org.kordamp.gradle.util.AnsiConsole * @since 0.1.0 */ @CompileStatic -class JReleaserModelPrinter extends org.jreleaser.model.JReleaserModelPrinter { +class JReleaserModelPrinter extends org.jreleaser.model.internal.JReleaserModelPrinter { private final AnsiConsole console JReleaserModelPrinter(Project project) { diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserProjectConfigurer.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserProjectConfigurer.groovy index 524470f77..7e56d6c4c 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserProjectConfigurer.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/JReleaserProjectConfigurer.groovy @@ -42,7 +42,7 @@ import org.jreleaser.gradle.plugin.tasks.JReleaserSignTask import org.jreleaser.gradle.plugin.tasks.JReleaserTemplateTask import org.jreleaser.gradle.plugin.tasks.JReleaserUploadTask import org.jreleaser.logging.JReleaserLogger -import org.jreleaser.model.JReleaserModel +import org.jreleaser.model.internal.JReleaserModel import java.nio.file.Files import java.nio.file.Path @@ -77,8 +77,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserConfigTask t) { t.group = JRELEASER_GROUP t.description = 'Outputs current JReleaser configuration' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -107,8 +107,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserDownloadTask t) { t.group = JRELEASER_GROUP t.description = 'Downloads all artifacts' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -121,8 +121,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserAssembleTask t) { t.group = JRELEASER_GROUP t.description = 'Assemble all distributions' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -135,8 +135,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserChangelogTask t) { t.group = JRELEASER_GROUP t.description = 'Calculate changelogs' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -149,8 +149,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserChecksumTask t) { t.group = JRELEASER_GROUP t.description = 'Calculate checksums' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -166,8 +166,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserSignTask t) { t.group = JRELEASER_GROUP t.description = 'Signs a release' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -183,8 +183,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserUploadTask t) { t.group = JRELEASER_GROUP t.description = 'Uploads all artifacts' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -200,8 +200,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserReleaseTask t) { t.group = JRELEASER_GROUP t.description = 'Creates or updates a release' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -217,8 +217,8 @@ class JReleaserProjectConfigurer { void execute(JReleaseAutoConfigReleaseTask t) { t.group = JRELEASER_GROUP t.description = 'Creates or updates a release with auto-config enabled' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.outputDirectory.set(outputDirectory) } }) @@ -229,8 +229,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserPrepareTask t) { t.group = JRELEASER_GROUP t.description = 'Prepares all distributions' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -246,8 +246,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserPackageTask t) { t.group = JRELEASER_GROUP t.description = 'Packages all distributions' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -263,8 +263,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserPublishTask t) { t.group = JRELEASER_GROUP t.description = 'Publishes all distributions' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -280,8 +280,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserAnnounceTask t) { t.group = JRELEASER_GROUP t.description = 'Announces a release' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) @@ -297,8 +297,8 @@ class JReleaserProjectConfigurer { void execute(JReleaserFullReleaseTask t) { t.group = JRELEASER_GROUP t.description = 'Invokes release, publish, and announce' - t.dryrun.set(extension.dryrun.get()) - t.gitRootSearch.set(extension.gitRootSearch.get()) + t.dryrun.set(extension.dryrun) + t.gitRootSearch.set(extension.gitRootSearch) t.model.set(model) t.jlogger.set(logger) t.outputDirectory.set(outputDirectory) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractAnnouncer.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/AbstractAnnouncer.groovy similarity index 85% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractAnnouncer.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/AbstractAnnouncer.groovy index b25344ebf..8a4527d00 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractAnnouncer.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/AbstractAnnouncer.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Announcer +import org.jreleaser.gradle.plugin.dsl.announce.Announcer import org.jreleaser.model.Active import javax.inject.Inject @@ -44,9 +44,9 @@ abstract class AbstractAnnouncer implements Announcer { @Inject AbstractAnnouncer(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - connectTimeout = objects.property(Integer).convention(Providers.notDefined()) - readTimeout = objects.property(Integer).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + connectTimeout = objects.property(Integer).convention(Providers. notDefined()) + readTimeout = objects.property(Integer).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } @@ -65,7 +65,7 @@ abstract class AbstractAnnouncer implements Announcer { } } - protected void fillProperties(A announcer) { + protected void fillProperties(A announcer) { if (active.present) announcer.active = active.get() if (connectTimeout.present) announcer.connectTimeout = connectTimeout.get() if (readTimeout.present) announcer.readTimeout = readTimeout.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AnnounceImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/AnnounceImpl.groovy similarity index 55% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AnnounceImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/AnnounceImpl.groovy index e56f44be2..e8479bdf3 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AnnounceImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/AnnounceImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.Action @@ -24,23 +24,23 @@ import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Announce -import org.jreleaser.gradle.plugin.dsl.Article -import org.jreleaser.gradle.plugin.dsl.Discord -import org.jreleaser.gradle.plugin.dsl.Discussions -import org.jreleaser.gradle.plugin.dsl.Gitter -import org.jreleaser.gradle.plugin.dsl.GoogleChat -import org.jreleaser.gradle.plugin.dsl.HttpAnnouncer -import org.jreleaser.gradle.plugin.dsl.Mail -import org.jreleaser.gradle.plugin.dsl.Mastodon -import org.jreleaser.gradle.plugin.dsl.Mattermost -import org.jreleaser.gradle.plugin.dsl.SdkmanAnnouncer -import org.jreleaser.gradle.plugin.dsl.Slack -import org.jreleaser.gradle.plugin.dsl.Teams -import org.jreleaser.gradle.plugin.dsl.Telegram -import org.jreleaser.gradle.plugin.dsl.Twitter -import org.jreleaser.gradle.plugin.dsl.Webhook -import org.jreleaser.gradle.plugin.dsl.Zulip +import org.jreleaser.gradle.plugin.dsl.announce.Announce +import org.jreleaser.gradle.plugin.dsl.announce.ArticleAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.DiscordAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.DiscussionsAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.GitterAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.GoogleChatAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.HttpAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.MastodonAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.MattermostAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.SdkmanAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.SlackAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.SmtpAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.TeamsAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.TelegramAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.TwitterAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.WebhookAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.ZulipAnnouncer import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -56,40 +56,40 @@ import static org.jreleaser.util.StringUtils.isNotBlank @CompileStatic class AnnounceImpl implements Announce { final Property active - final ArticleImpl article - final DiscordImpl discord - final DiscussionsImpl discussions - final GitterImpl gitter - final GoogleChatImpl googleChat - final MailImpl mail - final MastodonImpl mastodon - final MattermostImpl mattermost + final ArticleAnnouncerImpl article + final DiscordAnnouncerImpl discord + final DiscussionsAnnouncerImpl discussions + final GitterAnnouncerImpl gitter + final GoogleChatAnnouncerImpl googleChat + final SmtpAnnouncerImpl smtp + final MastodonAnnouncerImpl mastodon + final MattermostAnnouncerImpl mattermost final SdkmanAnnouncerImpl sdkman - final SlackImpl slack - final TeamsImpl teams - final TelegramImpl telegram - final TwitterImpl twitter - final ZulipImpl zulip + final SlackAnnouncerImpl slack + final TeamsAnnouncerImpl teams + final TelegramAnnouncerImpl telegram + final TwitterAnnouncerImpl twitter + final ZulipAnnouncerImpl zulip final NamedDomainObjectContainer http - final NamedDomainObjectContainer webhooks + final NamedDomainObjectContainer webhooks @Inject AnnounceImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - article = objects.newInstance(ArticleImpl, objects) - discord = objects.newInstance(DiscordImpl, objects) - discussions = objects.newInstance(DiscussionsImpl, objects) - gitter = objects.newInstance(GitterImpl, objects) - googleChat = objects.newInstance(GoogleChatImpl, objects) - mail = objects.newInstance(MailImpl, objects) - mastodon = objects.newInstance(MastodonImpl, objects) - mattermost = objects.newInstance(MattermostImpl, objects) + active = objects.property(Active).convention(Providers. notDefined()) + article = objects.newInstance(ArticleAnnouncerImpl, objects) + discord = objects.newInstance(DiscordAnnouncerImpl, objects) + discussions = objects.newInstance(DiscussionsAnnouncerImpl, objects) + gitter = objects.newInstance(GitterAnnouncerImpl, objects) + googleChat = objects.newInstance(GoogleChatAnnouncerImpl, objects) + smtp = objects.newInstance(SmtpAnnouncerImpl, objects) + mastodon = objects.newInstance(MastodonAnnouncerImpl, objects) + mattermost = objects.newInstance(MattermostAnnouncerImpl, objects) sdkman = objects.newInstance(SdkmanAnnouncerImpl, objects) - slack = objects.newInstance(SlackImpl, objects) - teams = objects.newInstance(TeamsImpl, objects) - telegram = objects.newInstance(TelegramImpl, objects) - twitter = objects.newInstance(TwitterImpl, objects) - zulip = objects.newInstance(ZulipImpl, objects) + slack = objects.newInstance(SlackAnnouncerImpl, objects) + teams = objects.newInstance(TeamsAnnouncerImpl, objects) + telegram = objects.newInstance(TelegramAnnouncerImpl, objects) + twitter = objects.newInstance(TwitterAnnouncerImpl, objects) + zulip = objects.newInstance(ZulipAnnouncerImpl, objects) http = objects.domainObjectContainer(HttpAnnouncer, new NamedDomainObjectFactory() { @Override @@ -100,16 +100,21 @@ class AnnounceImpl implements Announce { } }) - webhooks = objects.domainObjectContainer(Webhook, new NamedDomainObjectFactory() { + webhooks = objects.domainObjectContainer(WebhookAnnouncer, new NamedDomainObjectFactory() { @Override - Webhook create(String name) { - WebhookImpl webhook = objects.newInstance(WebhookImpl, objects) + WebhookAnnouncer create(String name) { + WebhookAnnouncerImpl webhook = objects.newInstance(WebhookAnnouncerImpl, objects) webhook.name = name return webhook } }) } + @Deprecated + SmtpAnnouncer getMail() { + smtp + } + @Override void setActive(String str) { if (isNotBlank(str)) { @@ -118,27 +123,27 @@ class AnnounceImpl implements Announce { } @Override - void article(Action action) { + void article(Action action) { action.execute(article) } @Override - void discord(Action action) { + void discord(Action action) { action.execute(discord) } @Override - void discussions(Action action) { + void discussions(Action action) { action.execute(discussions) } @Override - void gitter(Action action) { + void gitter(Action action) { action.execute(gitter) } @Override - void googleChat(Action action) { + void googleChat(Action action) { action.execute(googleChat) } @@ -148,17 +153,22 @@ class AnnounceImpl implements Announce { } @Override - void mail(Action action) { - action.execute(mail) + void mail(Action action) { + action.execute(smtp) + } + + @Override + void smtp(Action action) { + action.execute(smtp) } @Override - void mastodon(Action action) { + void mastodon(Action action) { action.execute(mastodon) } @Override - void mattermost(Action action) { + void mattermost(Action action) { action.execute(mattermost) } @@ -168,57 +178,57 @@ class AnnounceImpl implements Announce { } @Override - void slack(Action action) { + void slack(Action action) { action.execute(slack) } @Override - void teams(Action action) { + void teams(Action action) { action.execute(teams) } @Override - void telegram(Action action) { + void telegram(Action action) { action.execute(telegram) } @Override - void twitter(Action action) { + void twitter(Action action) { action.execute(twitter) } @Override - void zulip(Action action) { + void zulip(Action action) { action.execute(zulip) } @Override - void webhooks(Action> action) { + void webhooks(Action> action) { action.execute(webhooks) } @Override - void article(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Article) Closure action) { + void article(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ArticleAnnouncer) Closure action) { ConfigureUtil.configure(action, article) } @Override - void discord(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Discord) Closure action) { + void discord(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = DiscordAnnouncer) Closure action) { ConfigureUtil.configure(action, discord) } @Override - void discussions(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Discussions) Closure action) { + void discussions(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = DiscussionsAnnouncer) Closure action) { ConfigureUtil.configure(action, discussions) } @Override - void gitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gitter) Closure action) { + void gitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GitterAnnouncer) Closure action) { ConfigureUtil.configure(action, gitter) } @Override - void googleChat(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GoogleChat) Closure action) { + void googleChat(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GoogleChatAnnouncer) Closure action) { ConfigureUtil.configure(action, googleChat) } @@ -228,17 +238,22 @@ class AnnounceImpl implements Announce { } @Override - void mail(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Mail) Closure action) { - ConfigureUtil.configure(action, mail) + void mail(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SmtpAnnouncer) Closure action) { + ConfigureUtil.configure(action, smtp) + } + + @Override + void smtp(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SmtpAnnouncer) Closure action) { + ConfigureUtil.configure(action, smtp) } @Override - void mastodon(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Mastodon) Closure action) { + void mastodon(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MastodonAnnouncer) Closure action) { ConfigureUtil.configure(action, mastodon) } @Override - void mattermost(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Mattermost) Closure action) { + void mattermost(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MattermostAnnouncer) Closure action) { ConfigureUtil.configure(action, mattermost) } @@ -248,27 +263,27 @@ class AnnounceImpl implements Announce { } @Override - void slack(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Slack) Closure action) { + void slack(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SlackAnnouncer) Closure action) { ConfigureUtil.configure(action, slack) } @Override - void teams(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Teams) Closure action) { + void teams(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = TeamsAnnouncer) Closure action) { ConfigureUtil.configure(action, teams) } @Override - void telegram(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Telegram) Closure action) { + void telegram(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = TelegramAnnouncer) Closure action) { ConfigureUtil.configure(action, telegram) } @Override - void twitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Twitter) Closure action) { + void twitter(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = TwitterAnnouncer) Closure action) { ConfigureUtil.configure(action, twitter) } @Override - void zulip(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Zulip) Closure action) { + void zulip(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ZulipAnnouncer) Closure action) { ConfigureUtil.configure(action, zulip) } @@ -277,15 +292,15 @@ class AnnounceImpl implements Announce { ConfigureUtil.configure(action, webhooks) } - org.jreleaser.model.Announce toModel() { - org.jreleaser.model.Announce announce = new org.jreleaser.model.Announce() + org.jreleaser.model.internal.announce.Announce toModel() { + org.jreleaser.model.internal.announce.Announce announce = new org.jreleaser.model.internal.announce.Announce() if (active.present) announce.active = active.get() if (article.isSet()) announce.article = article.toModel() if (discord.isSet()) announce.discord = discord.toModel() if (discussions.isSet()) announce.discussions = discussions.toModel() if (gitter.isSet()) announce.gitter = gitter.toModel() if (googleChat.isSet()) announce.googleChat = googleChat.toModel() - if (mail.isSet()) announce.mail = mail.toModel() + if (smtp.isSet()) announce.mail = smtp.toModel() if (mastodon.isSet()) announce.mastodon = mastodon.toModel() if (mattermost.isSet()) announce.mattermost = mattermost.toModel() if (sdkman.isSet()) announce.sdkman = sdkman.toModel() @@ -300,7 +315,7 @@ class AnnounceImpl implements Announce { } webhooks.toList().each { webhook -> - announce.addWebhook(((WebhookImpl) webhook).toModel()) + announce.addWebhook(((WebhookAnnouncerImpl) webhook).toModel()) } announce diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArticleImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/ArticleAnnouncerImpl.groovy similarity index 81% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArticleImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/ArticleAnnouncerImpl.groovy index 594a6c1ae..bd44293a5 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArticleImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/ArticleAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.Action @@ -25,10 +25,13 @@ import org.gradle.api.file.DirectoryProperty import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Article -import org.jreleaser.gradle.plugin.dsl.Artifact -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.announce.ArticleAnnouncer +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.ArtifactImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.TapImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -39,14 +42,14 @@ import javax.inject.Inject * @since 0.6.0 */ @CompileStatic -class ArticleImpl extends AbstractAnnouncer implements Article { +class ArticleAnnouncerImpl extends AbstractAnnouncer implements ArticleAnnouncer { private final NamedDomainObjectContainer files final DirectoryProperty templateDirectory final TapImpl repository final CommitAuthorImpl commitAuthor @Inject - ArticleImpl(ObjectFactory objects) { + ArticleAnnouncerImpl(ObjectFactory objects) { super(objects) files = objects.domainObjectContainer(ArtifactImpl, new NamedDomainObjectFactory() { @@ -109,8 +112,8 @@ class ArticleImpl extends AbstractAnnouncer implements Article { commitAuthor.isSet() } - org.jreleaser.model.Article toModel() { - org.jreleaser.model.Article article = new org.jreleaser.model.Article() + org.jreleaser.model.internal.announce.ArticleAnnouncer toModel() { + org.jreleaser.model.internal.announce.ArticleAnnouncer article = new org.jreleaser.model.internal.announce.ArticleAnnouncer() fillProperties(article) for (ArtifactImpl file : files) { diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DiscordImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/DiscordAnnouncerImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DiscordImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/DiscordAnnouncerImpl.groovy index 45f1fbaab..eae9bbeb6 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DiscordImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/DiscordAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Discord +import org.jreleaser.gradle.plugin.dsl.announce.DiscordAnnouncer import javax.inject.Inject @@ -33,16 +33,16 @@ import javax.inject.Inject * @since 0.2.0 */ @CompileStatic -class DiscordImpl extends AbstractAnnouncer implements Discord { +class DiscordAnnouncerImpl extends AbstractAnnouncer implements DiscordAnnouncer { final Property webhook final Property message final RegularFileProperty messageTemplate @Inject - DiscordImpl(ObjectFactory objects) { + DiscordAnnouncerImpl(ObjectFactory objects) { super(objects) - webhook = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + webhook = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -60,8 +60,8 @@ class DiscordImpl extends AbstractAnnouncer implements Discord { messageTemplate.present } - org.jreleaser.model.Discord toModel() { - org.jreleaser.model.Discord discord = new org.jreleaser.model.Discord() + org.jreleaser.model.internal.announce.DiscordAnnouncer toModel() { + org.jreleaser.model.internal.announce.DiscordAnnouncer discord = new org.jreleaser.model.internal.announce.DiscordAnnouncer() fillProperties(discord) if (webhook.present) discord.webhook = webhook.get() if (message.present) discord.message = message.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DiscussionsImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/DiscussionsAnnouncerImpl.groovy similarity index 76% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DiscussionsImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/DiscussionsAnnouncerImpl.groovy index 66b241ebe..79877647c 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DiscussionsImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/DiscussionsAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Discussions +import org.jreleaser.gradle.plugin.dsl.announce.DiscussionsAnnouncer import javax.inject.Inject @@ -33,7 +33,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class DiscussionsImpl extends AbstractAnnouncer implements Discussions { +class DiscussionsAnnouncerImpl extends AbstractAnnouncer implements DiscussionsAnnouncer { final Property organization final Property team final Property title @@ -41,12 +41,12 @@ class DiscussionsImpl extends AbstractAnnouncer implements Discussions { final RegularFileProperty messageTemplate @Inject - DiscussionsImpl(ObjectFactory objects) { + DiscussionsAnnouncerImpl(ObjectFactory objects) { super(objects) - organization = objects.property(String).convention(Providers.notDefined()) - team = objects.property(String).convention(Providers.notDefined()) - title = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + organization = objects.property(String).convention(Providers. notDefined()) + team = objects.property(String).convention(Providers. notDefined()) + title = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -66,8 +66,8 @@ class DiscussionsImpl extends AbstractAnnouncer implements Discussions { messageTemplate.present } - org.jreleaser.model.Discussions toModel() { - org.jreleaser.model.Discussions discussions = new org.jreleaser.model.Discussions() + org.jreleaser.model.internal.announce.DiscussionsAnnouncer toModel() { + org.jreleaser.model.internal.announce.DiscussionsAnnouncer discussions = new org.jreleaser.model.internal.announce.DiscussionsAnnouncer() fillProperties(discussions) if (organization.present) discussions.organization = organization.get() if (team.present) discussions.team = team.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitterImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/GitterAnnouncerImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitterImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/GitterAnnouncerImpl.groovy index 447dd4671..0004ec863 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitterImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/GitterAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Gitter +import org.jreleaser.gradle.plugin.dsl.announce.GitterAnnouncer import javax.inject.Inject @@ -33,16 +33,16 @@ import javax.inject.Inject * @since 0.2.0 */ @CompileStatic -class GitterImpl extends AbstractAnnouncer implements Gitter { +class GitterAnnouncerImpl extends AbstractAnnouncer implements GitterAnnouncer { final Property webhook final Property message final RegularFileProperty messageTemplate @Inject - GitterImpl(ObjectFactory objects) { + GitterAnnouncerImpl(ObjectFactory objects) { super(objects) - webhook = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + webhook = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -60,8 +60,8 @@ class GitterImpl extends AbstractAnnouncer implements Gitter { messageTemplate.present } - org.jreleaser.model.Gitter toModel() { - org.jreleaser.model.Gitter gitter = new org.jreleaser.model.Gitter() + org.jreleaser.model.internal.announce.GitterAnnouncer toModel() { + org.jreleaser.model.internal.announce.GitterAnnouncer gitter = new org.jreleaser.model.internal.announce.GitterAnnouncer() fillProperties(gitter) if (webhook.present) gitter.webhook = webhook.get() if (message.present) gitter.message = message.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GoogleChatImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/GoogleChatAnnouncerImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GoogleChatImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/GoogleChatAnnouncerImpl.groovy index bad9cc89a..59275dfbc 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GoogleChatImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/GoogleChatAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.GoogleChat +import org.jreleaser.gradle.plugin.dsl.announce.GoogleChatAnnouncer import javax.inject.Inject @@ -33,16 +33,16 @@ import javax.inject.Inject * @since 0.5.0 */ @CompileStatic -class GoogleChatImpl extends AbstractAnnouncer implements GoogleChat { +class GoogleChatAnnouncerImpl extends AbstractAnnouncer implements GoogleChatAnnouncer { final Property webhook final Property message final RegularFileProperty messageTemplate @Inject - GoogleChatImpl(ObjectFactory objects) { + GoogleChatAnnouncerImpl(ObjectFactory objects) { super(objects) - webhook = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + webhook = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -60,8 +60,8 @@ class GoogleChatImpl extends AbstractAnnouncer implements GoogleChat { messageTemplate.present } - org.jreleaser.model.GoogleChat toModel() { - org.jreleaser.model.GoogleChat slack = new org.jreleaser.model.GoogleChat() + org.jreleaser.model.internal.announce.GoogleChatAnnouncer toModel() { + org.jreleaser.model.internal.announce.GoogleChatAnnouncer slack = new org.jreleaser.model.internal.announce.GoogleChatAnnouncer() fillProperties(slack) if (webhook.present) slack.webhook = webhook.get() if (message.present) slack.message = message.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpAnnouncerImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/HttpAnnouncerImpl.groovy similarity index 85% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpAnnouncerImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/HttpAnnouncerImpl.groovy index addb0d611..d8aed1a22 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpAnnouncerImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/HttpAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -24,7 +24,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.HttpAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.HttpAnnouncer import org.jreleaser.model.Http import javax.inject.Inject @@ -51,13 +51,13 @@ class HttpAnnouncerImpl extends AbstractAnnouncer implements HttpAnnouncer { @Inject HttpAnnouncerImpl(ObjectFactory objects) { super(objects) - url = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - method = objects.property(Http.Method).convention(Providers.notDefined()) - authorization = objects.property(Http.Authorization).convention(Providers.notDefined()) + url = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + method = objects.property(Http.Method).convention(Providers. notDefined()) + authorization = objects.property(Http.Authorization).convention(Providers. notDefined()) headers = objects.mapProperty(String, String).convention(Providers.notDefined()) - payload = objects.property(String).convention(Providers.notDefined()) + payload = objects.property(String).convention(Providers. notDefined()) payloadTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -70,8 +70,8 @@ class HttpAnnouncerImpl extends AbstractAnnouncer implements HttpAnnouncer { password.present || method.present || authorization.present || - headers.present|| - payload.present|| + headers.present || + payload.present || payloadTemplate.present } @@ -97,8 +97,8 @@ class HttpAnnouncerImpl extends AbstractAnnouncer implements HttpAnnouncer { this.payloadTemplate.set(new File(payloadTemplate)) } - org.jreleaser.model.HttpAnnouncer toModel() { - org.jreleaser.model.HttpAnnouncer http = new org.jreleaser.model.HttpAnnouncer() + org.jreleaser.model.internal.announce.HttpAnnouncer toModel() { + org.jreleaser.model.internal.announce.HttpAnnouncer http = new org.jreleaser.model.internal.announce.HttpAnnouncer() http.name = name fillProperties(http) if (url.present) http.url = url.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MastodonImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/MastodonAnnouncerImpl.groovy similarity index 70% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MastodonImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/MastodonAnnouncerImpl.groovy index fb3815da5..278705d77 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MastodonImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/MastodonAnnouncerImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Mastodon +import org.jreleaser.gradle.plugin.dsl.announce.MastodonAnnouncer import javax.inject.Inject @@ -32,17 +32,17 @@ import javax.inject.Inject * @since 0.4.0 */ @CompileStatic -class MastodonImpl extends AbstractAnnouncer implements Mastodon { +class MastodonAnnouncerImpl extends AbstractAnnouncer implements MastodonAnnouncer { final Property host final Property accessToken final Property status @Inject - MastodonImpl(ObjectFactory objects) { + MastodonAnnouncerImpl(ObjectFactory objects) { super(objects) - host = objects.property(String).convention(Providers.notDefined()) - accessToken = objects.property(String).convention(Providers.notDefined()) - status = objects.property(String).convention(Providers.notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + accessToken = objects.property(String).convention(Providers. notDefined()) + status = objects.property(String).convention(Providers. notDefined()) } @Override @@ -54,8 +54,8 @@ class MastodonImpl extends AbstractAnnouncer implements Mastodon { status.present } - org.jreleaser.model.Mastodon toModel() { - org.jreleaser.model.Mastodon mastodon = new org.jreleaser.model.Mastodon() + org.jreleaser.model.internal.announce.MastodonAnnouncer toModel() { + org.jreleaser.model.internal.announce.MastodonAnnouncer mastodon = new org.jreleaser.model.internal.announce.MastodonAnnouncer() fillProperties(mastodon) if (host.present) mastodon.host = host.get() if (accessToken.present) mastodon.accessToken = accessToken.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MattermostImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/MattermostAnnouncerImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MattermostImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/MattermostAnnouncerImpl.groovy index 3f8daca65..e6a0767a7 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MattermostImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/MattermostAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Mattermost +import org.jreleaser.gradle.plugin.dsl.announce.MattermostAnnouncer import javax.inject.Inject @@ -33,16 +33,16 @@ import javax.inject.Inject * @since 0.4.0 */ @CompileStatic -class MattermostImpl extends AbstractAnnouncer implements Mattermost { +class MattermostAnnouncerImpl extends AbstractAnnouncer implements MattermostAnnouncer { final Property webhook final Property message final RegularFileProperty messageTemplate @Inject - MattermostImpl(ObjectFactory objects) { + MattermostAnnouncerImpl(ObjectFactory objects) { super(objects) - webhook = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + webhook = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -60,8 +60,8 @@ class MattermostImpl extends AbstractAnnouncer implements Mattermost { messageTemplate.present } - org.jreleaser.model.Mattermost toModel() { - org.jreleaser.model.Mattermost mattermost = new org.jreleaser.model.Mattermost() + org.jreleaser.model.internal.announce.MattermostAnnouncer toModel() { + org.jreleaser.model.internal.announce.MattermostAnnouncer mattermost = new org.jreleaser.model.internal.announce.MattermostAnnouncer() fillProperties(mattermost) if (webhook.present) mattermost.webhook = webhook.get() if (message.present) mattermost.message = message.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SdkmanAnnouncerImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SdkmanAnnouncerImpl.groovy similarity index 76% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SdkmanAnnouncerImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SdkmanAnnouncerImpl.groovy index 96f078aa3..09fdf7322 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SdkmanAnnouncerImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SdkmanAnnouncerImpl.groovy @@ -15,14 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.model.SdkmanAnnouncer +import org.jreleaser.gradle.plugin.dsl.announce.SdkmanAnnouncer +import org.jreleaser.model.Sdkman import javax.inject.Inject @@ -34,29 +35,29 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -class SdkmanAnnouncerImpl extends AbstractAnnouncer implements org.jreleaser.gradle.plugin.dsl.SdkmanAnnouncer { +class SdkmanAnnouncerImpl extends AbstractAnnouncer implements SdkmanAnnouncer { final Property consumerKey final Property consumerToken final Property candidate final Property releaseNotesUrl final Property downloadUrl - final Property command + final Property command @Inject SdkmanAnnouncerImpl(ObjectFactory objects) { super(objects) - consumerKey = objects.property(String).convention(Providers.notDefined()) - consumerToken = objects.property(String).convention(Providers.notDefined()) - candidate = objects.property(String).convention(Providers.notDefined()) - releaseNotesUrl = objects.property(String).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) - command = objects.property(org.jreleaser.model.Sdkman.Command).convention(Providers.notDefined()) + consumerKey = objects.property(String).convention(Providers. notDefined()) + consumerToken = objects.property(String).convention(Providers. notDefined()) + candidate = objects.property(String).convention(Providers. notDefined()) + releaseNotesUrl = objects.property(String).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) + command = objects.property(Sdkman.Command).convention(Providers. notDefined()) } @Override void setCommand(String str) { if (isNotBlank(str)) { - command.set(org.jreleaser.model.Sdkman.Command.of(str.trim())) + command.set(Sdkman.Command.of(str.trim())) } } @@ -72,8 +73,8 @@ class SdkmanAnnouncerImpl extends AbstractAnnouncer implements org.jreleaser.gra command.present } - SdkmanAnnouncer toModel() { - SdkmanAnnouncer sdkman = new SdkmanAnnouncer() + org.jreleaser.model.internal.announce.SdkmanAnnouncer toModel() { + org.jreleaser.model.internal.announce.SdkmanAnnouncer sdkman = new org.jreleaser.model.internal.announce.SdkmanAnnouncer() fillProperties(sdkman) if (consumerKey.present) sdkman.consumerKey = consumerKey.get() if (consumerToken.present) sdkman.consumerToken = consumerToken.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SlackImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SlackAnnouncerImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SlackImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SlackAnnouncerImpl.groovy index 49646b8fc..75bf3dd5a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SlackImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SlackAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Slack +import org.jreleaser.gradle.plugin.dsl.announce.SlackAnnouncer import javax.inject.Inject @@ -33,7 +33,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class SlackImpl extends AbstractAnnouncer implements Slack { +class SlackAnnouncerImpl extends AbstractAnnouncer implements SlackAnnouncer { final Property token final Property webhook final Property channel @@ -41,12 +41,12 @@ class SlackImpl extends AbstractAnnouncer implements Slack { final RegularFileProperty messageTemplate @Inject - SlackImpl(ObjectFactory objects) { + SlackAnnouncerImpl(ObjectFactory objects) { super(objects) - token = objects.property(String).convention(Providers.notDefined()) - webhook = objects.property(String).convention(Providers.notDefined()) - channel = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + token = objects.property(String).convention(Providers. notDefined()) + webhook = objects.property(String).convention(Providers. notDefined()) + channel = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -66,8 +66,8 @@ class SlackImpl extends AbstractAnnouncer implements Slack { messageTemplate.present } - org.jreleaser.model.Slack toModel() { - org.jreleaser.model.Slack slack = new org.jreleaser.model.Slack() + org.jreleaser.model.internal.announce.SlackAnnouncer toModel() { + org.jreleaser.model.internal.announce.SlackAnnouncer slack = new org.jreleaser.model.internal.announce.SlackAnnouncer() fillProperties(slack) if (token.present) slack.token = token.get() if (webhook.present) slack.webhook = webhook.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MailImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SmtpAnnouncerImpl.groovy similarity index 70% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MailImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SmtpAnnouncerImpl.groovy index 36b34c966..bb7b66256 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MailImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/SmtpAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -24,7 +24,8 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Mail +import org.jreleaser.gradle.plugin.dsl.announce.SmtpAnnouncer +import org.jreleaser.model.Mail import javax.inject.Inject @@ -34,9 +35,9 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class MailImpl extends AbstractAnnouncer implements Mail { - final Property transport - final Property mimeType +class SmtpAnnouncerImpl extends AbstractAnnouncer implements SmtpAnnouncer { + final Property transport + final Property mimeType final Property port final Property auth final Property host @@ -52,21 +53,21 @@ class MailImpl extends AbstractAnnouncer implements Mail { final MapProperty properties @Inject - MailImpl(ObjectFactory objects) { + SmtpAnnouncerImpl(ObjectFactory objects) { super(objects) - transport = objects.property(org.jreleaser.model.Mail.Transport).convention(org.jreleaser.model.Mail.Transport.SMTP) - mimeType = objects.property(org.jreleaser.model.Mail.MimeType).convention(org.jreleaser.model.Mail.MimeType.TEXT) - port = objects.property(Integer).convention(Providers.notDefined()) - auth = objects.property(Boolean).convention(Providers.notDefined()) - host = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - from = objects.property(String).convention(Providers.notDefined()) - to = objects.property(String).convention(Providers.notDefined()) - cc = objects.property(String).convention(Providers.notDefined()) - bcc = objects.property(String).convention(Providers.notDefined()) - subject = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + transport = objects.property(Mail.Transport).convention(Mail.Transport.SMTP) + mimeType = objects.property(Mail.MimeType).convention(Mail.MimeType.TEXT) + port = objects.property(Integer).convention(Providers. notDefined()) + auth = objects.property(Boolean).convention(Providers. notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + from = objects.property(String).convention(Providers. notDefined()) + to = objects.property(String).convention(Providers. notDefined()) + cc = objects.property(String).convention(Providers. notDefined()) + bcc = objects.property(String).convention(Providers. notDefined()) + subject = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) properties = objects.mapProperty(String, String).convention(Providers.notDefined()) } @@ -78,12 +79,12 @@ class MailImpl extends AbstractAnnouncer implements Mail { @Override void setTransport(String transport) { - this.transport.set(org.jreleaser.model.Mail.Transport.valueOf(transport.toUpperCase(Locale.ENGLISH))) + this.transport.set(Mail.Transport.valueOf(transport.toUpperCase(Locale.ENGLISH))) } @Override void setMimeType(String mimeType) { - this.mimeType.set(org.jreleaser.model.Mail.MimeType.valueOf(mimeType.toUpperCase(Locale.ENGLISH))) + this.mimeType.set(Mail.MimeType.valueOf(mimeType.toUpperCase(Locale.ENGLISH))) } @Override @@ -105,8 +106,8 @@ class MailImpl extends AbstractAnnouncer implements Mail { properties.present } - org.jreleaser.model.Mail toModel() { - org.jreleaser.model.Mail mail = new org.jreleaser.model.Mail() + org.jreleaser.model.internal.announce.SmtpAnnouncer toModel() { + org.jreleaser.model.internal.announce.SmtpAnnouncer mail = new org.jreleaser.model.internal.announce.SmtpAnnouncer() fillProperties(mail) if (transport.present) mail.transport = transport.get() if (mimeType.present) mail.mimeType = mimeType.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TeamsImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TeamsAnnouncerImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TeamsImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TeamsAnnouncerImpl.groovy index 4081544f7..1b7b96a1a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TeamsImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TeamsAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Teams +import org.jreleaser.gradle.plugin.dsl.announce.TeamsAnnouncer import javax.inject.Inject @@ -33,14 +33,14 @@ import javax.inject.Inject * @since 0.2.0 */ @CompileStatic -class TeamsImpl extends AbstractAnnouncer implements Teams { +class TeamsAnnouncerImpl extends AbstractAnnouncer implements TeamsAnnouncer { final Property webhook final RegularFileProperty messageTemplate @Inject - TeamsImpl(ObjectFactory objects) { + TeamsAnnouncerImpl(ObjectFactory objects) { super(objects) - webhook = objects.property(String).convention(Providers.notDefined()) + webhook = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -57,8 +57,8 @@ class TeamsImpl extends AbstractAnnouncer implements Teams { messageTemplate.present } - org.jreleaser.model.Teams toModel() { - org.jreleaser.model.Teams teams = new org.jreleaser.model.Teams() + org.jreleaser.model.internal.announce.TeamsAnnouncer toModel() { + org.jreleaser.model.internal.announce.TeamsAnnouncer teams = new org.jreleaser.model.internal.announce.TeamsAnnouncer() fillProperties(teams) if (webhook.present) teams.webhook = webhook.get() if (messageTemplate.present) { diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TelegramImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TelegramAnnouncerImpl.groovy similarity index 75% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TelegramImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TelegramAnnouncerImpl.groovy index b971c6176..de0fb9d3b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TelegramImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TelegramAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Telegram +import org.jreleaser.gradle.plugin.dsl.announce.TelegramAnnouncer import javax.inject.Inject @@ -33,18 +33,18 @@ import javax.inject.Inject * @since 0.8.0 */ @CompileStatic -class TelegramImpl extends AbstractAnnouncer implements Telegram { +class TelegramAnnouncerImpl extends AbstractAnnouncer implements TelegramAnnouncer { final Property token final Property chatId final Property message final RegularFileProperty messageTemplate @Inject - TelegramImpl(ObjectFactory objects) { + TelegramAnnouncerImpl(ObjectFactory objects) { super(objects) - token = objects.property(String).convention(Providers.notDefined()) - chatId = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + token = objects.property(String).convention(Providers. notDefined()) + chatId = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -63,8 +63,8 @@ class TelegramImpl extends AbstractAnnouncer implements Telegram { messageTemplate.present } - org.jreleaser.model.Telegram toModel() { - org.jreleaser.model.Telegram telegram = new org.jreleaser.model.Telegram() + org.jreleaser.model.internal.announce.TelegramAnnouncer toModel() { + org.jreleaser.model.internal.announce.TelegramAnnouncer telegram = new org.jreleaser.model.internal.announce.TelegramAnnouncer() fillProperties(telegram) if (token.present) telegram.token = token.get() if (chatId.present) telegram.chatId = token.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TwitterImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TwitterAnnouncerImpl.groovy similarity index 78% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TwitterImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TwitterAnnouncerImpl.groovy index 49c861f58..8e226c581 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TwitterImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/TwitterAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Twitter +import org.jreleaser.gradle.plugin.dsl.announce.TwitterAnnouncer import javax.inject.Inject @@ -35,7 +35,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -class TwitterImpl extends AbstractAnnouncer implements Twitter { +class TwitterAnnouncerImpl extends AbstractAnnouncer implements TwitterAnnouncer { final Property consumerKey final Property consumerSecret final Property accessToken @@ -45,15 +45,15 @@ class TwitterImpl extends AbstractAnnouncer implements Twitter { final ListProperty statuses @Inject - TwitterImpl(ObjectFactory objects) { + TwitterAnnouncerImpl(ObjectFactory objects) { super(objects) - consumerKey = objects.property(String).convention(Providers.notDefined()) - consumerSecret = objects.property(String).convention(Providers.notDefined()) - accessToken = objects.property(String).convention(Providers.notDefined()) - accessTokenSecret = objects.property(String).convention(Providers.notDefined()) - status = objects.property(String).convention(Providers.notDefined()) - statusTemplate = objects.property(String).convention(Providers.notDefined()) - statuses = objects.listProperty(String).convention(Providers.notDefined()) + consumerKey = objects.property(String).convention(Providers. notDefined()) + consumerSecret = objects.property(String).convention(Providers. notDefined()) + accessToken = objects.property(String).convention(Providers. notDefined()) + accessTokenSecret = objects.property(String).convention(Providers. notDefined()) + status = objects.property(String).convention(Providers. notDefined()) + statusTemplate = objects.property(String).convention(Providers. notDefined()) + statuses = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -71,13 +71,13 @@ class TwitterImpl extends AbstractAnnouncer implements Twitter { @Override void status(String message) { - if(isNotBlank(message)){ + if (isNotBlank(message)) { statuses.add(message.trim()) } } - org.jreleaser.model.Twitter toModel() { - org.jreleaser.model.Twitter twitter = new org.jreleaser.model.Twitter() + org.jreleaser.model.internal.announce.TwitterAnnouncer toModel() { + org.jreleaser.model.internal.announce.TwitterAnnouncer twitter = new org.jreleaser.model.internal.announce.TwitterAnnouncer() fillProperties(twitter) if (consumerKey.present) twitter.consumerKey = consumerKey.get() if (consumerSecret.present) twitter.consumerSecret = consumerSecret.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/WebhookImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/WebhookAnnouncerImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/WebhookImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/WebhookAnnouncerImpl.groovy index 69b6a28d8..fd0be1e4a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/WebhookImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/WebhookAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Webhook +import org.jreleaser.gradle.plugin.dsl.announce.WebhookAnnouncer import javax.inject.Inject @@ -33,7 +33,7 @@ import javax.inject.Inject * @since 0.5.0 */ @CompileStatic -class WebhookImpl extends AbstractAnnouncer implements Webhook { +class WebhookAnnouncerImpl extends AbstractAnnouncer implements WebhookAnnouncer { String name final Property webhook final Property message @@ -41,11 +41,11 @@ class WebhookImpl extends AbstractAnnouncer implements Webhook { final RegularFileProperty messageTemplate @Inject - WebhookImpl(ObjectFactory objects) { + WebhookAnnouncerImpl(ObjectFactory objects) { super(objects) - webhook = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) - messageProperty = objects.property(String).convention(Providers.notDefined()) + webhook = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) + messageProperty = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -64,8 +64,8 @@ class WebhookImpl extends AbstractAnnouncer implements Webhook { messageTemplate.present } - org.jreleaser.model.Webhook toModel() { - org.jreleaser.model.Webhook w = new org.jreleaser.model.Webhook() + org.jreleaser.model.internal.announce.WebhookAnnouncer toModel() { + org.jreleaser.model.internal.announce.WebhookAnnouncer w = new org.jreleaser.model.internal.announce.WebhookAnnouncer() fillProperties(w) w.name = name if (webhook.present) w.webhook = webhook.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ZulipImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/ZulipAnnouncerImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ZulipImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/ZulipAnnouncerImpl.groovy index e35943eb9..82963b2af 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ZulipImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/announce/ZulipAnnouncerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.announce import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Zulip +import org.jreleaser.gradle.plugin.dsl.announce.ZulipAnnouncer import javax.inject.Inject @@ -33,7 +33,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class ZulipImpl extends AbstractAnnouncer implements Zulip { +class ZulipAnnouncerImpl extends AbstractAnnouncer implements ZulipAnnouncer { final Property account final Property apiKey final Property apiHost @@ -43,14 +43,14 @@ class ZulipImpl extends AbstractAnnouncer implements Zulip { final RegularFileProperty messageTemplate @Inject - ZulipImpl(ObjectFactory objects) { + ZulipAnnouncerImpl(ObjectFactory objects) { super(objects) - account = objects.property(String).convention(Providers.notDefined()) - apiKey = objects.property(String).convention(Providers.notDefined()) - apiHost = objects.property(String).convention(Providers.notDefined()) - channel = objects.property(String).convention(Providers.notDefined()) - subject = objects.property(String).convention(Providers.notDefined()) - message = objects.property(String).convention(Providers.notDefined()) + account = objects.property(String).convention(Providers. notDefined()) + apiKey = objects.property(String).convention(Providers. notDefined()) + apiHost = objects.property(String).convention(Providers. notDefined()) + channel = objects.property(String).convention(Providers. notDefined()) + subject = objects.property(String).convention(Providers. notDefined()) + message = objects.property(String).convention(Providers. notDefined()) messageTemplate = objects.fileProperty().convention(Providers.notDefined()) } @@ -72,8 +72,8 @@ class ZulipImpl extends AbstractAnnouncer implements Zulip { messageTemplate.present } - org.jreleaser.model.Zulip toModel() { - org.jreleaser.model.Zulip zulip = new org.jreleaser.model.Zulip() + org.jreleaser.model.internal.announce.ZulipAnnouncer toModel() { + org.jreleaser.model.internal.announce.ZulipAnnouncer zulip = new org.jreleaser.model.internal.announce.ZulipAnnouncer() fillProperties(zulip) if (account.present) zulip.account = account.get() if (apiKey.present) zulip.apiKey = apiKey.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractAssembler.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AbstractAssembler.groovy similarity index 87% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractAssembler.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AbstractAssembler.groovy index 5b86b0a59..0c00b589f 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractAssembler.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AbstractAssembler.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action @@ -26,9 +26,10 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Assembler -import org.jreleaser.gradle.plugin.dsl.FileSet -import org.jreleaser.gradle.plugin.dsl.Platform +import org.jreleaser.gradle.plugin.dsl.assemble.Assembler +import org.jreleaser.gradle.plugin.dsl.common.FileSet +import org.jreleaser.gradle.plugin.dsl.platform.Platform +import org.jreleaser.gradle.plugin.internal.dsl.common.FileSetImpl import org.jreleaser.model.Active import org.jreleaser.model.Stereotype import org.kordamp.gradle.util.ConfigureUtil @@ -52,9 +53,9 @@ abstract class AbstractAssembler implements Assembler { @Inject AbstractAssembler(ObjectFactory objects) { - exported = objects.property(Boolean).convention(Providers.notDefined()) - active = objects.property(Active).convention(Providers.notDefined()) - stereotype = objects.property(Stereotype).convention(Providers.notDefined()) + exported = objects.property(Boolean).convention(Providers. notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + stereotype = objects.property(Stereotype).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) fileSets = objects.domainObjectContainer(FileSetImpl, new NamedDomainObjectFactory() { @@ -109,7 +110,7 @@ abstract class AbstractAssembler implements Assembler { ConfigureUtil.configure(action, platform) } - protected void fillProperties(A assembler) { + protected void fillProperties(A assembler) { assembler.exported = exported.getOrElse(true) if (active.present) assembler.active = active.get() if (stereotype.present) assembler.stereotype = stereotype.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractJavaAssembler.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AbstractJavaAssembler.groovy similarity index 89% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractJavaAssembler.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AbstractJavaAssembler.groovy index 0b36d13a7..a7332890b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractJavaAssembler.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AbstractJavaAssembler.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action @@ -26,10 +26,12 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Artifact -import org.jreleaser.gradle.plugin.dsl.Glob -import org.jreleaser.gradle.plugin.dsl.Java -import org.jreleaser.gradle.plugin.dsl.JavaAssembler +import org.jreleaser.gradle.plugin.dsl.assemble.JavaAssembler +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.Glob +import org.jreleaser.gradle.plugin.dsl.common.Java +import org.jreleaser.gradle.plugin.internal.dsl.common.ArtifactImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.GlobImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -51,7 +53,7 @@ abstract class AbstractJavaAssembler extends AbstractAssembler implements JavaAs @Inject AbstractJavaAssembler(ObjectFactory objects) { super(objects) - executable = objects.property(String).convention(Providers.notDefined()) + executable = objects.property(String).convention(Providers. notDefined()) templateDirectory = objects.directoryProperty().convention(Providers.notDefined()) mainJar = objects.newInstance(ArtifactImpl, objects) mainJar.setName('mainJar') @@ -129,7 +131,7 @@ abstract class AbstractJavaAssembler extends AbstractAssembler implements JavaAs ConfigureUtil.configure(action, files.maybeCreate("files-${files.size()}".toString())) } - protected void fillProperties(A assembler) { + protected void fillProperties(A assembler) { super.fillProperties(assembler) if (mainJar.isSet()) assembler.mainJar = mainJar.toModel() for (GlobImpl glob : jars) { diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArchiveImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/ArchiveAssemblerImpl.groovy similarity index 72% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArchiveImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/ArchiveAssemblerImpl.groovy index 32aed45d5..69202408b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArchiveImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/ArchiveAssemblerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,9 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Archive +import org.jreleaser.gradle.plugin.dsl.assemble.ArchiveAssembler +import org.jreleaser.gradle.plugin.internal.dsl.platform.PlatformImpl +import org.jreleaser.model.Archive import org.jreleaser.model.Distribution.DistributionType import javax.inject.Inject @@ -36,21 +38,21 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -class ArchiveImpl extends AbstractAssembler implements Archive { +class ArchiveAssemblerImpl extends AbstractAssembler implements ArchiveAssembler { String name final Property archiveName final Property distributionType final Property attachPlatform - final SetProperty formats + final SetProperty formats final PlatformImpl platform @Inject - ArchiveImpl(ObjectFactory objects) { + ArchiveAssemblerImpl(ObjectFactory objects) { super(objects) - archiveName = objects.property(String).convention(Providers.notDefined()) + archiveName = objects.property(String).convention(Providers. notDefined()) distributionType = objects.property(DistributionType).convention(DistributionType.JAVA_BINARY) - attachPlatform = objects.property(Boolean).convention(Providers.notDefined()) - formats = objects.setProperty(org.jreleaser.model.Archive.Format).convention(Providers.notDefined()) + attachPlatform = objects.property(Boolean).convention(Providers. notDefined()) + formats = objects.setProperty(Archive.Format).convention(Providers.> notDefined()) platform = objects.newInstance(PlatformImpl, objects) } @@ -71,19 +73,19 @@ class ArchiveImpl extends AbstractAssembler implements Archive { @Override void format(String format) { if (isNotBlank(format)) { - formats.add(org.jreleaser.model.Archive.Format.of(format)) + formats.add(Archive.Format.of(format)) } } - org.jreleaser.model.Archive toModel() { - org.jreleaser.model.Archive archive = new org.jreleaser.model.Archive() + org.jreleaser.model.internal.assemble.ArchiveAssembler toModel() { + org.jreleaser.model.internal.assemble.ArchiveAssembler archive = new org.jreleaser.model.internal.assemble.ArchiveAssembler() archive.name = name fillProperties(archive) if (archiveName.present) archive.archiveName = archiveName.get() if (attachPlatform.present) archive.attachPlatform = attachPlatform.get() archive.platform = platform.toModel() archive.distributionType = distributionType.get() - archive.formats = (Set) formats.getOrElse([] as Set) + archive.formats = (Set) formats.getOrElse([] as Set) archive } } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AssembleImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AssembleImpl.groovy similarity index 58% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AssembleImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AssembleImpl.groovy index 0e3f02d61..2801398c9 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AssembleImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/AssembleImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.assemble import groovy.transform.CompileDynamic import groovy.transform.CompileStatic @@ -25,11 +25,11 @@ import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Archive -import org.jreleaser.gradle.plugin.dsl.Assemble -import org.jreleaser.gradle.plugin.dsl.Jlink -import org.jreleaser.gradle.plugin.dsl.Jpackage -import org.jreleaser.gradle.plugin.dsl.NativeImage +import org.jreleaser.gradle.plugin.dsl.assemble.ArchiveAssembler +import org.jreleaser.gradle.plugin.dsl.assemble.Assemble +import org.jreleaser.gradle.plugin.dsl.assemble.JlinkAssembler +import org.jreleaser.gradle.plugin.dsl.assemble.JpackageAssembler +import org.jreleaser.gradle.plugin.dsl.assemble.NativeImageAssembler import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -45,46 +45,46 @@ import static org.jreleaser.util.StringUtils.isNotBlank @CompileStatic class AssembleImpl implements Assemble { final Property active - final NamedDomainObjectContainer archive - final NamedDomainObjectContainer jlink - final NamedDomainObjectContainer jpackage - final NamedDomainObjectContainer nativeImage + final NamedDomainObjectContainer archive + final NamedDomainObjectContainer jlink + final NamedDomainObjectContainer jpackage + final NamedDomainObjectContainer nativeImage @Inject AssembleImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) - archive = objects.domainObjectContainer(Archive, new NamedDomainObjectFactory() { + archive = objects.domainObjectContainer(ArchiveAssembler, new NamedDomainObjectFactory() { @Override - Archive create(String name) { - ArchiveImpl archive = objects.newInstance(ArchiveImpl, objects) + ArchiveAssembler create(String name) { + ArchiveAssemblerImpl archive = objects.newInstance(ArchiveAssemblerImpl, objects) archive.name = name archive } }) - jlink = objects.domainObjectContainer(Jlink, new NamedDomainObjectFactory() { + jlink = objects.domainObjectContainer(JlinkAssembler, new NamedDomainObjectFactory() { @Override - Jlink create(String name) { - JlinkImpl jlink = objects.newInstance(JlinkImpl, objects) + JlinkAssembler create(String name) { + JlinkAssemblerImpl jlink = objects.newInstance(JlinkAssemblerImpl, objects) jlink.name = name jlink } }) - jpackage = objects.domainObjectContainer(Jpackage, new NamedDomainObjectFactory() { + jpackage = objects.domainObjectContainer(JpackageAssembler, new NamedDomainObjectFactory() { @Override - Jpackage create(String name) { - JpackageImpl jpackage = objects.newInstance(JpackageImpl, objects) + JpackageAssembler create(String name) { + JpackageAssemblerImpl jpackage = objects.newInstance(JpackageAssemblerImpl, objects) jpackage.name = name jpackage } }) - nativeImage = objects.domainObjectContainer(NativeImage, new NamedDomainObjectFactory() { + nativeImage = objects.domainObjectContainer(NativeImageAssembler, new NamedDomainObjectFactory() { @Override - NativeImage create(String name) { - NativeImageImpl nativeImage = objects.newInstance(NativeImageImpl, objects) + NativeImageAssembler create(String name) { + NativeImageAssemblerImpl nativeImage = objects.newInstance(NativeImageAssemblerImpl, objects) nativeImage.name = name nativeImage } @@ -99,22 +99,22 @@ class AssembleImpl implements Assemble { } @Override - void archive(Action> action) { + void archive(Action> action) { action.execute(archive) } @Override - void jlink(Action> action) { + void jlink(Action> action) { action.execute(jlink) } @Override - void jpackage(Action> action) { + void jpackage(Action> action) { action.execute(jpackage) } @Override - void nativeImage(Action> action) { + void nativeImage(Action> action) { action.execute(nativeImage) } @@ -139,14 +139,14 @@ class AssembleImpl implements Assemble { } @CompileDynamic - org.jreleaser.model.Assemble toModel() { - org.jreleaser.model.Assemble assemble = new org.jreleaser.model.Assemble() + org.jreleaser.model.internal.assemble.Assemble toModel() { + org.jreleaser.model.internal.assemble.Assemble assemble = new org.jreleaser.model.internal.assemble.Assemble() if (active.present) assemble.active = active.get() - archive.each { assemble.addArchive(((ArchiveImpl) it).toModel()) } - jlink.each { assemble.addJlink(((JlinkImpl) it).toModel()) } - jpackage.each { assemble.addJpackage(((JpackageImpl) it).toModel()) } - nativeImage.each { assemble.addNativeImage(((NativeImageImpl) it).toModel()) } + archive.each { assemble.addArchive(((ArchiveAssemblerImpl) it).toModel()) } + jlink.each { assemble.addJlink(((JlinkAssemblerImpl) it).toModel()) } + jpackage.each { assemble.addJpackage(((JpackageAssemblerImpl) it).toModel()) } + nativeImage.each { assemble.addNativeImage(((NativeImageAssemblerImpl) it).toModel()) } assemble } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JlinkImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/JlinkAssemblerImpl.groovy similarity index 83% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JlinkImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/JlinkAssemblerImpl.groovy index a90de8de9..a97cc2b69 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JlinkImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/JlinkAssemblerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,8 +27,11 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Artifact -import org.jreleaser.gradle.plugin.dsl.Jlink +import org.jreleaser.gradle.plugin.dsl.assemble.JlinkAssembler +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.internal.dsl.common.ArtifactImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.JavaImpl +import org.jreleaser.gradle.plugin.internal.dsl.platform.PlatformImpl import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -42,7 +45,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -class JlinkImpl extends AbstractJavaAssembler implements Jlink { +class JlinkAssemblerImpl extends AbstractJavaAssembler implements JlinkAssembler { String name final Property imageName final Property imageNameTransform @@ -58,15 +61,15 @@ class JlinkImpl extends AbstractJavaAssembler implements Jlink { final NamedDomainObjectContainer targetJdks @Inject - JlinkImpl(ObjectFactory objects) { + JlinkAssemblerImpl(ObjectFactory objects) { super(objects) - imageName = objects.property(String).convention(Providers.notDefined()) - imageNameTransform = objects.property(String).convention(Providers.notDefined()) - copyJars = objects.property(Boolean).convention(Providers.notDefined()) - args = objects.listProperty(String).convention(Providers.notDefined()) - moduleNames = objects.setProperty(String).convention(Providers.notDefined()) - additionalModuleNames = objects.setProperty(String).convention(Providers.notDefined()) + imageName = objects.property(String).convention(Providers. notDefined()) + imageNameTransform = objects.property(String).convention(Providers. notDefined()) + copyJars = objects.property(Boolean).convention(Providers. notDefined()) + args = objects.listProperty(String).convention(Providers.> notDefined()) + moduleNames = objects.setProperty(String).convention(Providers.> notDefined()) + additionalModuleNames = objects.setProperty(String).convention(Providers.> notDefined()) java = objects.newInstance(JavaImpl, objects) platform = objects.newInstance(PlatformImpl, objects) jdeps = objects.newInstance(JdepsImpl, objects) @@ -143,8 +146,8 @@ class JlinkImpl extends AbstractJavaAssembler implements Jlink { ConfigureUtil.configure(action, targetJdks.maybeCreate("targetJdk-${targetJdks.size()}".toString())) } - org.jreleaser.model.Jlink toModel() { - org.jreleaser.model.Jlink jlink = new org.jreleaser.model.Jlink() + org.jreleaser.model.internal.assemble.JlinkAssembler toModel() { + org.jreleaser.model.internal.assemble.JlinkAssembler jlink = new org.jreleaser.model.internal.assemble.JlinkAssembler() jlink.name = name fillProperties(jlink) jlink.args = (List) args.getOrElse([]) @@ -173,11 +176,11 @@ class JlinkImpl extends AbstractJavaAssembler implements Jlink { @Inject JdepsImpl(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) - multiRelease = objects.property(String).convention(Providers.notDefined()) - ignoreMissingDeps = objects.property(Boolean).convention(Providers.notDefined()) - useWildcardInPath = objects.property(Boolean).convention(Providers.notDefined()) - targets = objects.setProperty(String).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) + multiRelease = objects.property(String).convention(Providers. notDefined()) + ignoreMissingDeps = objects.property(Boolean).convention(Providers. notDefined()) + useWildcardInPath = objects.property(Boolean).convention(Providers. notDefined()) + targets = objects.setProperty(String).convention(Providers.> notDefined()) } @Internal @@ -188,8 +191,8 @@ class JlinkImpl extends AbstractJavaAssembler implements Jlink { targets.present } - org.jreleaser.model.Jlink.Jdeps toModel() { - org.jreleaser.model.Jlink.Jdeps jdeps = new org.jreleaser.model.Jlink.Jdeps() + org.jreleaser.model.internal.assemble.JlinkAssembler.Jdeps toModel() { + org.jreleaser.model.internal.assemble.JlinkAssembler.Jdeps jdeps = new org.jreleaser.model.internal.assemble.JlinkAssembler.Jdeps() if (enabled.present) { jdeps.enabled = enabled.get() } else { diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JpackageImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/JpackageAssemblerImpl.groovy similarity index 82% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JpackageImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/JpackageAssemblerImpl.groovy index a50256710..f01eafca2 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JpackageImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/JpackageAssemblerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,8 +27,11 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Artifact -import org.jreleaser.gradle.plugin.dsl.Jpackage +import org.jreleaser.gradle.plugin.dsl.assemble.JpackageAssembler +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.internal.dsl.common.ArtifactImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.JavaImpl +import org.jreleaser.gradle.plugin.internal.dsl.platform.PlatformImpl import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -42,7 +45,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.10.0 */ @CompileStatic -class JpackageImpl extends AbstractJavaAssembler implements Jpackage { +class JpackageAssemblerImpl extends AbstractJavaAssembler implements JpackageAssembler { String name final Property jlink final Property attachPlatform @@ -58,12 +61,12 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { final NamedDomainObjectContainer runtimeImages @Inject - JpackageImpl(ObjectFactory objects) { + JpackageAssemblerImpl(ObjectFactory objects) { super(objects) - jlink = objects.property(String).convention(Providers.notDefined()) - attachPlatform = objects.property(Boolean).convention(Providers.notDefined()) - verbose = objects.property(Boolean).convention(Providers.notDefined()) + jlink = objects.property(String).convention(Providers. notDefined()) + attachPlatform = objects.property(Boolean).convention(Providers. notDefined()) + verbose = objects.property(Boolean).convention(Providers. notDefined()) java = objects.newInstance(JavaImpl, objects) platform = objects.newInstance(PlatformImpl, objects) applicationPackage = objects.newInstance(ApplicationPackageImpl, objects) @@ -165,8 +168,8 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { ConfigureUtil.configure(action, osx) } - org.jreleaser.model.Jpackage toModel() { - org.jreleaser.model.Jpackage jpackage = new org.jreleaser.model.Jpackage() + org.jreleaser.model.internal.assemble.JpackageAssembler toModel() { + org.jreleaser.model.internal.assemble.JpackageAssembler jpackage = new org.jreleaser.model.internal.assemble.JpackageAssembler() jpackage.name = name fillProperties(jpackage) if (java.isSet()) jpackage.java = java.toModel() @@ -197,12 +200,12 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { @Inject ApplicationPackageImpl(ObjectFactory objects) { - appName = objects.property(String).convention(Providers.notDefined()) - appVersion = objects.property(String).convention(Providers.notDefined()) - vendor = objects.property(String).convention(Providers.notDefined()) - copyright = objects.property(String).convention(Providers.notDefined()) - licenseFile = objects.property(String).convention(Providers.notDefined()) - fileAssociations = objects.listProperty(String).convention(Providers.notDefined()) + appName = objects.property(String).convention(Providers. notDefined()) + appVersion = objects.property(String).convention(Providers. notDefined()) + vendor = objects.property(String).convention(Providers. notDefined()) + copyright = objects.property(String).convention(Providers. notDefined()) + licenseFile = objects.property(String).convention(Providers. notDefined()) + fileAssociations = objects.listProperty(String).convention(Providers.> notDefined()) } @Internal @@ -215,8 +218,8 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { fileAssociations.present } - org.jreleaser.model.Jpackage.ApplicationPackage toModel() { - org.jreleaser.model.Jpackage.ApplicationPackage a = new org.jreleaser.model.Jpackage.ApplicationPackage() + org.jreleaser.model.internal.assemble.JpackageAssembler.ApplicationPackage toModel() { + org.jreleaser.model.internal.assemble.JpackageAssembler.ApplicationPackage a = new org.jreleaser.model.internal.assemble.JpackageAssembler.ApplicationPackage() a.appName = appName.orNull a.appVersion = appVersion.orNull a.vendor = vendor.orNull @@ -236,9 +239,9 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { @Inject LauncherImpl(ObjectFactory objects) { - arguments = objects.listProperty(String).convention(Providers.notDefined()) - javaOptions = objects.listProperty(String).convention(Providers.notDefined()) - launchers = objects.listProperty(String).convention(Providers.notDefined()) + arguments = objects.listProperty(String).convention(Providers.> notDefined()) + javaOptions = objects.listProperty(String).convention(Providers.> notDefined()) + launchers = objects.listProperty(String).convention(Providers.> notDefined()) } @Internal @@ -248,8 +251,8 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { launchers.present } - org.jreleaser.model.Jpackage.Launcher toModel() { - org.jreleaser.model.Jpackage.Launcher a = new org.jreleaser.model.Jpackage.Launcher() + org.jreleaser.model.internal.assemble.JpackageAssembler.Launcher toModel() { + org.jreleaser.model.internal.assemble.JpackageAssembler.Launcher a = new org.jreleaser.model.internal.assemble.JpackageAssembler.Launcher() a.arguments = (List) arguments.getOrElse([] as List) a.javaOptions = (List) javaOptions.getOrElse([] as List) a.launchers = (List) launchers.getOrElse([] as List) @@ -267,11 +270,11 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { @Inject AbstractPlatformPackager(ObjectFactory objects) { - appName = objects.property(String).convention(Providers.notDefined()) + appName = objects.property(String).convention(Providers. notDefined()) icon = objects.fileProperty().convention(Providers.notDefined()) - types = objects.listProperty(String).convention(Providers.notDefined()) - installDir = objects.property(String).convention(Providers.notDefined()) - resourceDir = objects.property(String).convention(Providers.notDefined()) + types = objects.listProperty(String).convention(Providers.> notDefined()) + installDir = objects.property(String).convention(Providers. notDefined()) + resourceDir = objects.property(String).convention(Providers. notDefined()) } @Override @@ -301,7 +304,7 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { ConfigureUtil.configure(action, jdk) } - void fillProperties(org.jreleaser.model.Jpackage.PlatformPackager p) { + void fillProperties(org.jreleaser.model.internal.assemble.JpackageAssembler.PlatformPackager p) { p.appName = appName.orNull p.icon = icon.orNull p.types = (List) types.getOrElse([] as List) @@ -326,14 +329,14 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { @Inject LinuxImpl(ObjectFactory objects) { super(objects) - packageDeps = objects.listProperty(String).convention(Providers.notDefined()) - packageName = objects.property(String).convention(Providers.notDefined()) - maintainer = objects.property(String).convention(Providers.notDefined()) - menuGroup = objects.property(String).convention(Providers.notDefined()) - license = objects.property(String).convention(Providers.notDefined()) - appRelease = objects.property(String).convention(Providers.notDefined()) - appCategory = objects.property(String).convention(Providers.notDefined()) - shortcut = objects.property(Boolean).convention(Providers.notDefined()) + packageDeps = objects.listProperty(String).convention(Providers.> notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + maintainer = objects.property(String).convention(Providers. notDefined()) + menuGroup = objects.property(String).convention(Providers. notDefined()) + license = objects.property(String).convention(Providers. notDefined()) + appRelease = objects.property(String).convention(Providers. notDefined()) + appCategory = objects.property(String).convention(Providers. notDefined()) + shortcut = objects.property(Boolean).convention(Providers. notDefined()) jdk = objects.newInstance(ArtifactImpl, objects) jdk.setName('jdk') } @@ -356,8 +359,8 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { return jdk } - org.jreleaser.model.Jpackage.Linux toModel() { - org.jreleaser.model.Jpackage.Linux a = new org.jreleaser.model.Jpackage.Linux() + org.jreleaser.model.internal.assemble.JpackageAssembler.Linux toModel() { + org.jreleaser.model.internal.assemble.JpackageAssembler.Linux a = new org.jreleaser.model.internal.assemble.JpackageAssembler.Linux() fillProperties(a) a.packageName = packageName.orNull a.maintainer = maintainer.orNull @@ -385,13 +388,13 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { @Inject WindowsImpl(ObjectFactory objects) { super(objects) - console = objects.property(Boolean).convention(Providers.notDefined()) - dirChooser = objects.property(Boolean).convention(Providers.notDefined()) - menu = objects.property(Boolean).convention(Providers.notDefined()) - perUserInstall = objects.property(Boolean).convention(Providers.notDefined()) - shortcut = objects.property(Boolean).convention(Providers.notDefined()) - menuGroup = objects.property(String).convention(Providers.notDefined()) - upgradeUuid = objects.property(String).convention(Providers.notDefined()) + console = objects.property(Boolean).convention(Providers. notDefined()) + dirChooser = objects.property(Boolean).convention(Providers. notDefined()) + menu = objects.property(Boolean).convention(Providers. notDefined()) + perUserInstall = objects.property(Boolean).convention(Providers. notDefined()) + shortcut = objects.property(Boolean).convention(Providers. notDefined()) + menuGroup = objects.property(String).convention(Providers. notDefined()) + upgradeUuid = objects.property(String).convention(Providers. notDefined()) jdk = objects.newInstance(ArtifactImpl, objects) jdk.setName('jdk') } @@ -413,8 +416,8 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { return jdk } - org.jreleaser.model.Jpackage.Windows toModel() { - org.jreleaser.model.Jpackage.Windows a = new org.jreleaser.model.Jpackage.Windows() + org.jreleaser.model.internal.assemble.JpackageAssembler.Windows toModel() { + org.jreleaser.model.internal.assemble.JpackageAssembler.Windows a = new org.jreleaser.model.internal.assemble.JpackageAssembler.Windows() fillProperties(a) a.console = console.orNull a.dirChooser = dirChooser.orNull @@ -441,12 +444,12 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { @Inject OsxImpl(ObjectFactory objects) { super(objects) - packageIdentifier = objects.property(String).convention(Providers.notDefined()) - packageName = objects.property(String).convention(Providers.notDefined()) - packageSigningPrefix = objects.property(String).convention(Providers.notDefined()) - signingKeychain = objects.property(String).convention(Providers.notDefined()) - signingKeyUsername = objects.property(String).convention(Providers.notDefined()) - sign = objects.property(Boolean).convention(Providers.notDefined()) + packageIdentifier = objects.property(String).convention(Providers. notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + packageSigningPrefix = objects.property(String).convention(Providers. notDefined()) + signingKeychain = objects.property(String).convention(Providers. notDefined()) + signingKeyUsername = objects.property(String).convention(Providers. notDefined()) + sign = objects.property(Boolean).convention(Providers. notDefined()) jdk = objects.newInstance(ArtifactImpl, objects) jdk.setName('jdk') } @@ -467,8 +470,8 @@ class JpackageImpl extends AbstractJavaAssembler implements Jpackage { return jdk } - org.jreleaser.model.Jpackage.Osx toModel() { - org.jreleaser.model.Jpackage.Osx a = new org.jreleaser.model.Jpackage.Osx() + org.jreleaser.model.internal.assemble.JpackageAssembler.Osx toModel() { + org.jreleaser.model.internal.assemble.JpackageAssembler.Osx a = new org.jreleaser.model.internal.assemble.JpackageAssembler.Osx() fillProperties(a) a.packageIdentifier = packageIdentifier.orNull a.packageName = packageName.orNull diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/NativeImageImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/NativeImageAssemblerImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/NativeImageImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/NativeImageAssemblerImpl.groovy index 8071c342d..114633586 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/NativeImageImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/assemble/NativeImageAssemblerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.assemble import groovy.transform.CompileStatic import org.gradle.api.Action @@ -26,8 +26,11 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Artifact -import org.jreleaser.gradle.plugin.dsl.NativeImage +import org.jreleaser.gradle.plugin.dsl.assemble.NativeImageAssembler +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.internal.dsl.common.ArtifactImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.JavaImpl +import org.jreleaser.gradle.plugin.internal.dsl.platform.PlatformImpl import org.jreleaser.model.Active import org.jreleaser.model.Archive import org.kordamp.gradle.util.ConfigureUtil @@ -42,7 +45,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { +class NativeImageAssemblerImpl extends AbstractJavaAssembler implements NativeImageAssembler { String name final Property imageName final Property imageNameTransform @@ -59,13 +62,13 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { final NamedDomainObjectContainer graalJdks @Inject - NativeImageImpl(ObjectFactory objects) { + NativeImageAssemblerImpl(ObjectFactory objects) { super(objects) - imageName = objects.property(String).convention(Providers.notDefined()) - imageNameTransform = objects.property(String).convention(Providers.notDefined()) + imageName = objects.property(String).convention(Providers. notDefined()) + imageNameTransform = objects.property(String).convention(Providers. notDefined()) archiveFormat = objects.property(Archive.Format).convention(Archive.Format.ZIP) - args = objects.listProperty(String).convention(Providers.notDefined()) + args = objects.listProperty(String).convention(Providers.> notDefined()) java = objects.newInstance(JavaImpl, objects) platform = objects.newInstance(PlatformImpl, objects) graal = objects.newInstance(ArtifactImpl, objects) @@ -181,8 +184,8 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { } } - org.jreleaser.model.NativeImage toModel() { - org.jreleaser.model.NativeImage nativeImage = new org.jreleaser.model.NativeImage() + org.jreleaser.model.internal.assemble.NativeImageAssembler toModel() { + org.jreleaser.model.internal.assemble.NativeImageAssembler nativeImage = new org.jreleaser.model.internal.assemble.NativeImageAssembler() nativeImage.name = name fillProperties(nativeImage) nativeImage.java = java.toModel() @@ -203,16 +206,16 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { } @CompileStatic - static class UpxImpl implements NativeImage.Upx { + static class UpxImpl implements Upx { final Property active final Property version final ListProperty args @Inject UpxImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - version = objects.property(String).convention(Providers.notDefined()) - args = objects.listProperty(String).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + version = objects.property(String).convention(Providers. notDefined()) + args = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -236,8 +239,8 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { args.present } - org.jreleaser.model.NativeImage.Upx toModel() { - org.jreleaser.model.NativeImage.Upx upx = new org.jreleaser.model.NativeImage.Upx() + org.jreleaser.model.internal.assemble.NativeImageAssembler.Upx toModel() { + org.jreleaser.model.internal.assemble.NativeImageAssembler.Upx upx = new org.jreleaser.model.internal.assemble.NativeImageAssembler.Upx() if (active.present) upx.active = active.get() if (version.present) upx.version = version.get() upx.args = (List) args.getOrElse([]) @@ -246,12 +249,12 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { } @CompileStatic - static class LinuxImpl implements NativeImage.Linux { + static class LinuxImpl implements Linux { final ListProperty args @Inject LinuxImpl(ObjectFactory objects) { - args = objects.listProperty(String).convention(Providers.notDefined()) + args = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -266,20 +269,20 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { args.present } - org.jreleaser.model.NativeImage.Linux toModel() { - org.jreleaser.model.NativeImage.Linux linux = new org.jreleaser.model.NativeImage.Linux() + org.jreleaser.model.internal.assemble.NativeImageAssembler.Linux toModel() { + org.jreleaser.model.internal.assemble.NativeImageAssembler.Linux linux = new org.jreleaser.model.internal.assemble.NativeImageAssembler.Linux() linux.args = (List) args.getOrElse([]) linux } } @CompileStatic - static class WindowsImpl implements NativeImage.Windows { + static class WindowsImpl implements Windows { final ListProperty args @Inject WindowsImpl(ObjectFactory objects) { - args = objects.listProperty(String).convention(Providers.notDefined()) + args = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -294,20 +297,20 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { args.present } - org.jreleaser.model.NativeImage.Windows toModel() { - org.jreleaser.model.NativeImage.Windows windows = new org.jreleaser.model.NativeImage.Windows() + org.jreleaser.model.internal.assemble.NativeImageAssembler.Windows toModel() { + org.jreleaser.model.internal.assemble.NativeImageAssembler.Windows windows = new org.jreleaser.model.internal.assemble.NativeImageAssembler.Windows() windows.args = (List) args.getOrElse([]) windows } } @CompileStatic - static class OsxImpl implements NativeImage.Osx { + static class OsxImpl implements Osx { final ListProperty args @Inject OsxImpl(ObjectFactory objects) { - args = objects.listProperty(String).convention(Providers.notDefined()) + args = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -322,8 +325,8 @@ class NativeImageImpl extends AbstractJavaAssembler implements NativeImage { args.present } - org.jreleaser.model.NativeImage.Osx toModel() { - org.jreleaser.model.NativeImage.Osx osx = new org.jreleaser.model.NativeImage.Osx() + org.jreleaser.model.internal.assemble.NativeImageAssembler.Osx toModel() { + org.jreleaser.model.internal.assemble.NativeImageAssembler.Osx osx = new org.jreleaser.model.internal.assemble.NativeImageAssembler.Osx() osx.args = (List) args.getOrElse([]) osx } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChecksumImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/checksum/ChecksumImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChecksumImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/checksum/ChecksumImpl.groovy index 1406765f6..420d16c86 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChecksumImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/checksum/ChecksumImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.checksum import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Checksum +import org.jreleaser.gradle.plugin.dsl.checksum.Checksum import org.jreleaser.util.Algorithm import javax.inject.Inject @@ -44,10 +44,10 @@ class ChecksumImpl implements Checksum { @Inject ChecksumImpl(ObjectFactory objects) { - name = objects.property(String).convention(Providers.notDefined()) - individual = objects.property(Boolean).convention(Providers.notDefined()) - files = objects.property(Boolean).convention(Providers.notDefined()) - algorithms = objects.listProperty(Algorithm).convention(Providers.notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + individual = objects.property(Boolean).convention(Providers. notDefined()) + files = objects.property(Boolean).convention(Providers. notDefined()) + algorithms = objects.listProperty(Algorithm).convention(Providers.> notDefined()) } @Internal @@ -64,8 +64,8 @@ class ChecksumImpl implements Checksum { } } - org.jreleaser.model.Checksum toModel() { - org.jreleaser.model.Checksum checksum = new org.jreleaser.model.Checksum() + org.jreleaser.model.internal.checksum.Checksum toModel() { + org.jreleaser.model.internal.checksum.Checksum checksum = new org.jreleaser.model.internal.checksum.Checksum() if (name.present) checksum.name = name.get() if (individual.present) checksum.individual = individual.get() if (files.present) checksum.files = files.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArtifactImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/ArtifactImpl.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArtifactImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/ArtifactImpl.groovy index 50d143cd8..1c8a12fad 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArtifactImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/ArtifactImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.common import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Artifact +import org.jreleaser.gradle.plugin.dsl.common.Artifact import javax.inject.Inject @@ -43,8 +43,8 @@ class ArtifactImpl implements Artifact { @Inject ArtifactImpl(ObjectFactory objects) { path = objects.fileProperty().convention(Providers.notDefined()) - platform = objects.property(String).convention(Providers.notDefined()) - transform = objects.property(String).convention(Providers.notDefined()) + platform = objects.property(String).convention(Providers. notDefined()) + transform = objects.property(String).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } @@ -57,8 +57,8 @@ class ArtifactImpl implements Artifact { path.present } - org.jreleaser.model.Artifact toModel() { - org.jreleaser.model.Artifact artifact = new org.jreleaser.model.Artifact() + org.jreleaser.model.internal.common.Artifact toModel() { + org.jreleaser.model.internal.common.Artifact artifact = new org.jreleaser.model.internal.common.Artifact() if (path.present) { artifact.path = path.asFile.get().absolutePath } else { diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommitAuthorImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/CommitAuthorImpl.groovy similarity index 74% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommitAuthorImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/CommitAuthorImpl.groovy index 3006244e6..a7de9d643 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommitAuthorImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/CommitAuthorImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.common import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor import javax.inject.Inject @@ -38,8 +38,8 @@ class CommitAuthorImpl implements CommitAuthor { @Inject CommitAuthorImpl(ObjectFactory objects) { - name = objects.property(String).convention(Providers.notDefined()) - email = objects.property(String).convention(Providers.notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + email = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -48,8 +48,8 @@ class CommitAuthorImpl implements CommitAuthor { email.present } - org.jreleaser.model.CommitAuthor toModel() { - org.jreleaser.model.CommitAuthor ca = new org.jreleaser.model.CommitAuthor() + org.jreleaser.model.internal.common.CommitAuthor toModel() { + org.jreleaser.model.internal.common.CommitAuthor ca = new org.jreleaser.model.internal.common.CommitAuthor() if (name.present) ca.name = name.get() if (email.present) ca.email = email.get() ca diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FileSetImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/FileSetImpl.groovy similarity index 81% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FileSetImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/FileSetImpl.groovy index 021bc76cd..1b8b97c69 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FileSetImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/FileSetImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.common import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty -import org.jreleaser.gradle.plugin.dsl.FileSet +import org.jreleaser.gradle.plugin.dsl.common.FileSet import javax.inject.Inject @@ -46,11 +46,11 @@ class FileSetImpl implements FileSet { @Inject FileSetImpl(ObjectFactory objects) { - input = objects.property(String).convention(Providers.notDefined()) - output = objects.property(String).convention(Providers.notDefined()) - failOnMissingInput = objects.property(Boolean).convention(Providers.notDefined()) - includes = objects.setProperty(String).convention(Providers.notDefined()) - excludes = objects.setProperty(String).convention(Providers.notDefined()) + input = objects.property(String).convention(Providers. notDefined()) + output = objects.property(String).convention(Providers. notDefined()) + failOnMissingInput = objects.property(Boolean).convention(Providers. notDefined()) + includes = objects.setProperty(String).convention(Providers.> notDefined()) + excludes = objects.setProperty(String).convention(Providers.> notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } @@ -66,8 +66,8 @@ class FileSetImpl implements FileSet { } } - org.jreleaser.model.FileSet toModel() { - org.jreleaser.model.FileSet fileSet = new org.jreleaser.model.FileSet() + org.jreleaser.model.internal.common.FileSet toModel() { + org.jreleaser.model.internal.common.FileSet fileSet = new org.jreleaser.model.internal.common.FileSet() if (input.present) fileSet.input = input.get() if (output.present) fileSet.output = output.get() if (failOnMissingInput.present) fileSet.failOnMissingInput = failOnMissingInput.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GlobImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/GlobImpl.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GlobImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/GlobImpl.groovy index e9da1a2f1..cba30febb 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GlobImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/GlobImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.common import groovy.transform.CompileStatic import org.gradle.api.file.DirectoryProperty import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Glob +import org.jreleaser.gradle.plugin.dsl.common.Glob import javax.inject.Inject @@ -40,8 +40,8 @@ class GlobImpl implements Glob { @Inject GlobImpl(ObjectFactory objects) { - pattern = objects.property(String).convention(Providers.notDefined()) - platform = objects.property(String).convention(Providers.notDefined()) + pattern = objects.property(String).convention(Providers. notDefined()) + platform = objects.property(String).convention(Providers. notDefined()) directory = objects.directoryProperty().convention(Providers.notDefined()) } @@ -50,8 +50,8 @@ class GlobImpl implements Glob { this.directory.set(new File(path)) } - org.jreleaser.model.Glob toModel() { - org.jreleaser.model.Glob glob = new org.jreleaser.model.Glob() + org.jreleaser.model.internal.common.Glob toModel() { + org.jreleaser.model.internal.common.Glob glob = new org.jreleaser.model.internal.common.Glob() if (pattern.present) glob.pattern = pattern.get() if (platform.present) glob.platform = platform.get() if (directory.present) { diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/IconImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/IconImpl.groovy similarity index 78% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/IconImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/IconImpl.groovy index f342dd192..edbb5f98f 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/IconImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/IconImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.common import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Icon +import org.jreleaser.gradle.plugin.dsl.common.Icon import javax.inject.Inject @@ -42,15 +42,15 @@ class IconImpl implements Icon { @Inject IconImpl(ObjectFactory objects) { - url = objects.property(String).convention(Providers.notDefined()) - width = objects.property(Integer).convention(Providers.notDefined()) - height = objects.property(Integer).convention(Providers.notDefined()) - primary = objects.property(Boolean).convention(Providers.notDefined()) + url = objects.property(String).convention(Providers. notDefined()) + width = objects.property(Integer).convention(Providers. notDefined()) + height = objects.property(Integer).convention(Providers. notDefined()) + primary = objects.property(Boolean).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } - org.jreleaser.model.Icon toModel() { - org.jreleaser.model.Icon icon = new org.jreleaser.model.Icon() + org.jreleaser.model.internal.common.Icon toModel() { + org.jreleaser.model.internal.common.Icon icon = new org.jreleaser.model.internal.common.Icon() if (url.present) icon.url = url.get() if (width.present) icon.width = width.get() if (height.present) icon.height = height.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JavaImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/JavaImpl.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JavaImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/JavaImpl.groovy index 0e0339443..e5bd8666d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JavaImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/JavaImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.common import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Java +import org.jreleaser.gradle.plugin.dsl.common.Java import javax.inject.Inject @@ -44,12 +44,12 @@ class JavaImpl implements Java { @Inject JavaImpl(ObjectFactory objects) { - version = objects.property(String).convention(Providers.notDefined()) - groupId = objects.property(String).convention(Providers.notDefined()) - artifactId = objects.property(String).convention(Providers.notDefined()) - mainModule = objects.property(String).convention(Providers.notDefined()) - mainClass = objects.property(String).convention(Providers.notDefined()) - multiProject = objects.property(Boolean).convention(Providers.notDefined()) + version = objects.property(String).convention(Providers. notDefined()) + groupId = objects.property(String).convention(Providers. notDefined()) + artifactId = objects.property(String).convention(Providers. notDefined()) + mainModule = objects.property(String).convention(Providers. notDefined()) + mainClass = objects.property(String).convention(Providers. notDefined()) + multiProject = objects.property(Boolean).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } @@ -64,8 +64,8 @@ class JavaImpl implements Java { extraProperties.present } - org.jreleaser.model.Java toModel() { - org.jreleaser.model.Java java = new org.jreleaser.model.Java() + org.jreleaser.model.internal.common.Java toModel() { + org.jreleaser.model.internal.common.Java java = new org.jreleaser.model.internal.common.Java() java.enabled = true if (version.present) java.version = version.get() if (groupId.present) java.groupId = groupId.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScreenshotImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/ScreenshotImpl.groovy similarity index 82% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScreenshotImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/ScreenshotImpl.groovy index 896e89b46..8b4d4f2e6 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScreenshotImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/common/ScreenshotImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.common import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Screenshot +import org.jreleaser.gradle.plugin.dsl.common.Screenshot import javax.inject.Inject @@ -48,11 +48,11 @@ class ScreenshotImpl implements Screenshot { ScreenshotImpl(ObjectFactory objects) { screenshotType = objects.property(org.jreleaser.model.Screenshot.Type) .convention(org.jreleaser.model.Screenshot.Type.SOURCE) - primary = objects.property(Boolean).convention(Providers.notDefined()) - url = objects.property(String).convention(Providers.notDefined()) - caption = objects.property(String).convention(Providers.notDefined()) - width = objects.property(Integer).convention(Providers.notDefined()) - height = objects.property(Integer).convention(Providers.notDefined()) + primary = objects.property(Boolean).convention(Providers. notDefined()) + url = objects.property(String).convention(Providers. notDefined()) + caption = objects.property(String).convention(Providers. notDefined()) + width = objects.property(Integer).convention(Providers. notDefined()) + height = objects.property(Integer).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } @@ -63,8 +63,8 @@ class ScreenshotImpl implements Screenshot { } } - org.jreleaser.model.Screenshot toModel() { - org.jreleaser.model.Screenshot screenshot = new org.jreleaser.model.Screenshot() + org.jreleaser.model.internal.common.Screenshot toModel() { + org.jreleaser.model.internal.common.Screenshot screenshot = new org.jreleaser.model.internal.common.Screenshot() screenshot.type = screenshotType.get() if (primary.present) screenshot.primary = primary.get() if (url.present) screenshot.url = url.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DistributionImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/distributions/DistributionImpl.groovy similarity index 62% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DistributionImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/distributions/DistributionImpl.groovy index 535e0cfe8..497414e87 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DistributionImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/distributions/DistributionImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.distributions import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,23 +27,39 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.AppImage -import org.jreleaser.gradle.plugin.dsl.Artifact -import org.jreleaser.gradle.plugin.dsl.Asdf -import org.jreleaser.gradle.plugin.dsl.Brew -import org.jreleaser.gradle.plugin.dsl.Chocolatey -import org.jreleaser.gradle.plugin.dsl.Distribution -import org.jreleaser.gradle.plugin.dsl.Docker -import org.jreleaser.gradle.plugin.dsl.Flatpak -import org.jreleaser.gradle.plugin.dsl.Gofish -import org.jreleaser.gradle.plugin.dsl.Java -import org.jreleaser.gradle.plugin.dsl.Jbang -import org.jreleaser.gradle.plugin.dsl.Macports -import org.jreleaser.gradle.plugin.dsl.Platform -import org.jreleaser.gradle.plugin.dsl.Scoop -import org.jreleaser.gradle.plugin.dsl.Sdkman -import org.jreleaser.gradle.plugin.dsl.Snap -import org.jreleaser.gradle.plugin.dsl.Spec +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.Java +import org.jreleaser.gradle.plugin.dsl.distributions.Distribution +import org.jreleaser.gradle.plugin.dsl.packagers.AppImagePackager +import org.jreleaser.gradle.plugin.dsl.packagers.AsdfPackager +import org.jreleaser.gradle.plugin.dsl.packagers.BrewPackager +import org.jreleaser.gradle.plugin.dsl.packagers.ChocolateyPackager +import org.jreleaser.gradle.plugin.dsl.packagers.DockerPackager +import org.jreleaser.gradle.plugin.dsl.packagers.FlatpakPackager +import org.jreleaser.gradle.plugin.dsl.packagers.GofishPackager +import org.jreleaser.gradle.plugin.dsl.packagers.JbangPackager +import org.jreleaser.gradle.plugin.dsl.packagers.MacportsPackager +import org.jreleaser.gradle.plugin.dsl.packagers.ScoopPackager +import org.jreleaser.gradle.plugin.dsl.packagers.SdkmanPackager +import org.jreleaser.gradle.plugin.dsl.packagers.SnapPackager +import org.jreleaser.gradle.plugin.dsl.packagers.SpecPackager +import org.jreleaser.gradle.plugin.dsl.platform.Platform +import org.jreleaser.gradle.plugin.internal.dsl.common.ArtifactImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.JavaImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.AppImagePackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.AsdfPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.BrewPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.ChocolateyPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.DockerPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.FlatpakPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.GofishPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.JbangPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.MacportsPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.ScoopPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.SdkmanPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.SnapPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.packagers.SpecPackagerImpl +import org.jreleaser.gradle.plugin.internal.dsl.platform.PlatformImpl import org.jreleaser.model.Active import org.jreleaser.model.Distribution.DistributionType import org.jreleaser.model.Stereotype @@ -71,30 +87,30 @@ class DistributionImpl implements Distribution { final ExecutableImpl executable final JavaImpl java final PlatformImpl platform - final AppImageImpl appImage - final AsdfImpl asdf - final BrewImpl brew - final ChocolateyImpl chocolatey - final DockerImpl docker - final FlatpakImpl flatpak - final GofishImpl gofish - final JbangImpl jbang - final MacportsImpl macports - final ScoopImpl scoop - final SdkmanImpl sdkman - final SnapImpl snap - final SpecImpl spec + final AppImagePackagerImpl appImage + final AsdfPackagerImpl asdf + final BrewPackagerImpl brew + final ChocolateyPackagerImpl chocolatey + final DockerPackagerImpl docker + final FlatpakPackagerImpl flatpak + final GofishPackagerImpl gofish + final JbangPackagerImpl jbang + final MacportsPackagerImpl macports + final ScoopPackagerImpl scoop + final SdkmanPackagerImpl sdkman + final SnapPackagerImpl snap + final SpecPackagerImpl spec final NamedDomainObjectContainer artifacts @Inject DistributionImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - stereotype = objects.property(Stereotype).convention(Providers.notDefined()) - groupId = objects.property(String).convention(Providers.notDefined()) - artifactId = objects.property(String).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + stereotype = objects.property(Stereotype).convention(Providers. notDefined()) + groupId = objects.property(String).convention(Providers. notDefined()) + artifactId = objects.property(String).convention(Providers. notDefined()) distributionType = objects.property(DistributionType).convention(DistributionType.JAVA_BINARY) - tags = objects.listProperty(String).convention(Providers.notDefined()) + tags = objects.listProperty(String).convention(Providers.> notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) artifacts = objects.domainObjectContainer(ArtifactImpl, new NamedDomainObjectFactory() { @@ -109,19 +125,19 @@ class DistributionImpl implements Distribution { executable = objects.newInstance(ExecutableImpl, objects) java = objects.newInstance(JavaImpl, objects) platform = objects.newInstance(PlatformImpl, objects) - appImage = objects.newInstance(AppImageImpl, objects) - asdf = objects.newInstance(AsdfImpl, objects) - brew = objects.newInstance(BrewImpl, objects) - chocolatey = objects.newInstance(ChocolateyImpl, objects) - docker = objects.newInstance(DockerImpl, objects) - flatpak = objects.newInstance(FlatpakImpl, objects) - gofish = objects.newInstance(GofishImpl, objects) - jbang = objects.newInstance(JbangImpl, objects) - macports = objects.newInstance(MacportsImpl, objects) - scoop = objects.newInstance(ScoopImpl, objects) - sdkman = objects.newInstance(SdkmanImpl, objects) - snap = objects.newInstance(SnapImpl, objects) - spec = objects.newInstance(SpecImpl, objects) + appImage = objects.newInstance(AppImagePackagerImpl, objects) + asdf = objects.newInstance(AsdfPackagerImpl, objects) + brew = objects.newInstance(BrewPackagerImpl, objects) + chocolatey = objects.newInstance(ChocolateyPackagerImpl, objects) + docker = objects.newInstance(DockerPackagerImpl, objects) + flatpak = objects.newInstance(FlatpakPackagerImpl, objects) + gofish = objects.newInstance(GofishPackagerImpl, objects) + jbang = objects.newInstance(JbangPackagerImpl, objects) + macports = objects.newInstance(MacportsPackagerImpl, objects) + scoop = objects.newInstance(ScoopPackagerImpl, objects) + sdkman = objects.newInstance(SdkmanPackagerImpl, objects) + snap = objects.newInstance(SnapPackagerImpl, objects) + spec = objects.newInstance(SpecPackagerImpl, objects) } @Override @@ -166,68 +182,68 @@ class DistributionImpl implements Distribution { } @Override - void appImage(Action action) { + void appImage(Action action) { action.execute(appImage) } @Override - void asdf(Action action) { + void asdf(Action action) { action.execute(asdf) } @Override - void brew(Action action) { + void brew(Action action) { action.execute(brew) } @Override - void chocolatey(Action action) { + void chocolatey(Action action) { action.execute(chocolatey) } @Override - void docker(Action action) { + void docker(Action action) { action.execute(docker) } @Override - void flatpak(Action action) { + void flatpak(Action action) { action.execute(flatpak) } @Override - void gofish(Action action) { + void gofish(Action action) { action.execute(gofish) } @Override - void jbang(Action action) { + void jbang(Action action) { action.execute(jbang) } @Override - void macports(Action action) { + void macports(Action action) { action.execute(macports) } @Override - void scoop(Action action) { + void scoop(Action action) { action.execute(scoop) } @Override - void sdkman(Action action) { + void sdkman(Action action) { action.execute(sdkman) } @Override - void snap(Action action) { + void snap(Action action) { action.execute(snap) } @Override - void spec(Action action) { + void spec(Action action) { action.execute(spec) } @@ -259,72 +275,72 @@ class DistributionImpl implements Distribution { } @Override - void appImage(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AppImage) Closure action) { + void appImage(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AppImagePackager) Closure action) { ConfigureUtil.configure(action, appImage) } @Override - void asdf(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Asdf) Closure action) { + void asdf(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AsdfPackager) Closure action) { ConfigureUtil.configure(action, asdf) } @Override - void brew(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Brew) Closure action) { + void brew(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = BrewPackager) Closure action) { ConfigureUtil.configure(action, brew) } @Override - void chocolatey(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Chocolatey) Closure action) { + void chocolatey(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ChocolateyPackager) Closure action) { ConfigureUtil.configure(action, chocolatey) } @Override - void docker(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Docker) Closure action) { + void docker(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = DockerPackager) Closure action) { ConfigureUtil.configure(action, docker) } @Override - void flatpak(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Flatpak) Closure action) { + void flatpak(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = FlatpakPackager) Closure action) { ConfigureUtil.configure(action, flatpak) } @Override - void gofish(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gofish) Closure action) { + void gofish(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GofishPackager) Closure action) { ConfigureUtil.configure(action, gofish) } @Override - void jbang(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Jbang) Closure action) { + void jbang(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = JbangPackager) Closure action) { ConfigureUtil.configure(action, jbang) } @Override - void macports(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Macports) Closure action) { + void macports(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MacportsPackager) Closure action) { ConfigureUtil.configure(action, macports) } @Override - void scoop(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Scoop) Closure action) { + void scoop(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ScoopPackager) Closure action) { ConfigureUtil.configure(action, scoop) } @Override - void sdkman(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Sdkman) Closure action) { + void sdkman(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SdkmanPackager) Closure action) { ConfigureUtil.configure(action, sdkman) } @Override - void snap(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Snap) Closure action) { + void snap(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SnapPackager) Closure action) { ConfigureUtil.configure(action, snap) } @Override - void spec(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Spec) Closure action) { + void spec(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SpecPackager) Closure action) { ConfigureUtil.configure(action, spec) } - org.jreleaser.model.Distribution toModel() { - org.jreleaser.model.Distribution distribution = new org.jreleaser.model.Distribution() + org.jreleaser.model.internal.distributions.Distribution toModel() { + org.jreleaser.model.internal.distributions.Distribution distribution = new org.jreleaser.model.internal.distributions.Distribution() distribution.name = name if (active.present) distribution.active = active.get() if (stereotype.present) distribution.stereotype = stereotype.get() @@ -361,9 +377,9 @@ class DistributionImpl implements Distribution { @Inject ExecutableImpl(ObjectFactory objects) { - name = objects.property(String).convention(Providers.notDefined()) - unixExtension = objects.property(String).convention(Providers.notDefined()) - windowsExtension = objects.property(String).convention(Providers.notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + unixExtension = objects.property(String).convention(Providers. notDefined()) + windowsExtension = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -373,8 +389,8 @@ class DistributionImpl implements Distribution { windowsExtension.present } - org.jreleaser.model.Distribution.Executable toModel() { - org.jreleaser.model.Distribution.Executable executable = new org.jreleaser.model.Distribution.Executable() + org.jreleaser.model.internal.distributions.Distribution.Executable toModel() { + org.jreleaser.model.internal.distributions.Distribution.Executable executable = new org.jreleaser.model.internal.distributions.Distribution.Executable() if (name.present) executable.name = name.get() if (unixExtension.present) executable.unixExtension = unixExtension.get() if (windowsExtension.present) executable.windowsExtension = windowsExtension.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractDownloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/AbstractDownloader.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractDownloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/AbstractDownloader.groovy index 6d622a79e..251a3ea45 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractDownloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/AbstractDownloader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileStatic import org.gradle.api.Action @@ -26,7 +26,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Downloader +import org.jreleaser.gradle.plugin.dsl.download.Downloader import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -50,9 +50,9 @@ abstract class AbstractDownloader implements Downloader { @Inject AbstractDownloader(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - connectTimeout = objects.property(Integer).convention(Providers.notDefined()) - readTimeout = objects.property(Integer).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + connectTimeout = objects.property(Integer).convention(Providers. notDefined()) + readTimeout = objects.property(Integer).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) assets = objects.domainObjectContainer(AssetImpl, new NamedDomainObjectFactory() { @@ -90,7 +90,7 @@ abstract class AbstractDownloader implements Downloader { } } - protected void fillProperties(D downloader) { + protected void fillProperties(D downloader) { if (active.present) downloader.active = active.get() if (connectTimeout.present) downloader.connectTimeout = connectTimeout.get() if (readTimeout.present) downloader.readTimeout = readTimeout.get() @@ -107,8 +107,8 @@ abstract class AbstractDownloader implements Downloader { @Inject UnpackImpl(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) - skipRootEntry = objects.property(Boolean).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) + skipRootEntry = objects.property(Boolean).convention(Providers. notDefined()) } @Internal @@ -117,8 +117,8 @@ abstract class AbstractDownloader implements Downloader { skipRootEntry.present } - org.jreleaser.model.Downloader.Unpack toModel() { - org.jreleaser.model.Downloader.Unpack unpack = new org.jreleaser.model.Downloader.Unpack() + org.jreleaser.model.internal.download.Downloader.Unpack toModel() { + org.jreleaser.model.internal.download.Downloader.Unpack unpack = new org.jreleaser.model.internal.download.Downloader.Unpack() if (enabled.present) unpack.enabled = enabled.get() if (skipRootEntry.present) unpack.skipRootEntry = skipRootEntry.get() unpack @@ -134,8 +134,8 @@ abstract class AbstractDownloader implements Downloader { @Inject AssetImpl(ObjectFactory objects) { - input = objects.property(String).convention(Providers.notDefined()) - output = objects.property(String).convention(Providers.notDefined()) + input = objects.property(String).convention(Providers. notDefined()) + output = objects.property(String).convention(Providers. notDefined()) unpack = objects.newInstance(UnpackImpl, objects) } @@ -156,8 +156,8 @@ abstract class AbstractDownloader implements Downloader { ConfigureUtil.configure(action, unpack) } - org.jreleaser.model.Downloader.Asset toModel() { - org.jreleaser.model.Downloader.Asset asset = new org.jreleaser.model.Downloader.Asset() + org.jreleaser.model.internal.download.Downloader.Asset toModel() { + org.jreleaser.model.internal.download.Downloader.Asset asset = new org.jreleaser.model.internal.download.Downloader.Asset() if (input.present) asset.input = input.get() if (output.present) asset.output = output.get() if (unpack.isSet()) asset.unpack = unpack.toModel() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractSshDownloader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/AbstractSshDownloader.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractSshDownloader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/AbstractSshDownloader.groovy index 312f9d26f..72ae61b39 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractSshDownloader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/AbstractSshDownloader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.SshDownloader +import org.jreleaser.gradle.plugin.dsl.download.SshDownloader import javax.inject.Inject @@ -47,15 +47,15 @@ abstract class AbstractSshDownloader extends AbstractDownloader implements SshDo @Inject AbstractSshDownloader(ObjectFactory objects) { super(objects) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - host = objects.property(String).convention(Providers.notDefined()) - port = objects.property(Integer).convention(Providers.notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + port = objects.property(Integer).convention(Providers. notDefined()) knownHostsFile = objects.fileProperty().convention(Providers.notDefined()) - publicKey = objects.property(String).convention(Providers.notDefined()) - privateKey = objects.property(String).convention(Providers.notDefined()) - passphrase = objects.property(String).convention(Providers.notDefined()) - fingerprint = objects.property(String).convention(Providers.notDefined()) + publicKey = objects.property(String).convention(Providers. notDefined()) + privateKey = objects.property(String).convention(Providers. notDefined()) + passphrase = objects.property(String).convention(Providers. notDefined()) + fingerprint = objects.property(String).convention(Providers. notDefined()) } @Override @@ -73,7 +73,7 @@ abstract class AbstractSshDownloader extends AbstractDownloader implements SshDo fingerprint.present } - protected void fillProperties(D downloader) { + protected void fillProperties(D downloader) { super.fillProperties(downloader) downloader.username = username.orNull downloader.password = password.orNull diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DownloadImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/DownloadImpl.groovy similarity index 88% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DownloadImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/DownloadImpl.groovy index a40c19861..eb2f60693 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DownloadImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/DownloadImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileDynamic import groovy.transform.CompileStatic @@ -25,11 +25,11 @@ import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Download -import org.jreleaser.gradle.plugin.dsl.FtpDownloader -import org.jreleaser.gradle.plugin.dsl.HttpDownloader -import org.jreleaser.gradle.plugin.dsl.ScpDownloader -import org.jreleaser.gradle.plugin.dsl.SftpDownloader +import org.jreleaser.gradle.plugin.dsl.download.Download +import org.jreleaser.gradle.plugin.dsl.download.FtpDownloader +import org.jreleaser.gradle.plugin.dsl.download.HttpDownloader +import org.jreleaser.gradle.plugin.dsl.download.ScpDownloader +import org.jreleaser.gradle.plugin.dsl.download.SftpDownloader import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -52,7 +52,7 @@ class DownloadImpl implements Download { @Inject DownloadImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) ftp = objects.domainObjectContainer(FtpDownloader, new NamedDomainObjectFactory() { @Override @@ -139,8 +139,8 @@ class DownloadImpl implements Download { } @CompileDynamic - org.jreleaser.model.Download toModel() { - org.jreleaser.model.Download download = new org.jreleaser.model.Download() + org.jreleaser.model.internal.download.Download toModel() { + org.jreleaser.model.internal.download.Download download = new org.jreleaser.model.internal.download.Download() if (active.present) download.active = active.get() ftp.each { download.addFtp(((FtpDownloaderImpl) it).toModel()) } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FtpDownloaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/FtpDownloaderImpl.groovy similarity index 77% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FtpDownloaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/FtpDownloaderImpl.groovy index 150c0cc17..6d4f11088 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FtpDownloaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/FtpDownloaderImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.FtpDownloader +import org.jreleaser.gradle.plugin.dsl.download.FtpDownloader import javax.inject.Inject @@ -42,10 +42,10 @@ class FtpDownloaderImpl extends AbstractDownloader implements FtpDownloader { @Inject FtpDownloaderImpl(ObjectFactory objects) { super(objects) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - host = objects.property(String).convention(Providers.notDefined()) - port = objects.property(Integer).convention(Providers.notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + port = objects.property(Integer).convention(Providers. notDefined()) } @Override @@ -58,8 +58,8 @@ class FtpDownloaderImpl extends AbstractDownloader implements FtpDownloader { port.present } - org.jreleaser.model.FtpDownloader toModel() { - org.jreleaser.model.FtpDownloader ftp = new org.jreleaser.model.FtpDownloader() + org.jreleaser.model.internal.download.FtpDownloader toModel() { + org.jreleaser.model.internal.download.FtpDownloader ftp = new org.jreleaser.model.internal.download.FtpDownloader() ftp.name = name fillProperties(ftp) ftp.username = username.orNull diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpDownloaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/HttpDownloaderImpl.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpDownloaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/HttpDownloaderImpl.groovy index 9c0b41b3f..36d2674f0 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpDownloaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/HttpDownloaderImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.HttpDownloader +import org.jreleaser.gradle.plugin.dsl.download.HttpDownloader import org.jreleaser.model.Http import javax.inject.Inject @@ -46,9 +46,9 @@ class HttpDownloaderImpl extends AbstractDownloader implements HttpDownloader { @Inject HttpDownloaderImpl(ObjectFactory objects) { super(objects) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - authorization = objects.property(Http.Authorization).convention(Providers.notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + authorization = objects.property(Http.Authorization).convention(Providers. notDefined()) headers = objects.mapProperty(String, String).convention(Providers.notDefined()) } @@ -74,8 +74,8 @@ class HttpDownloaderImpl extends AbstractDownloader implements HttpDownloader { this.authorization.set(Http.Authorization.of(authorization)) } - org.jreleaser.model.HttpDownloader toModel() { - org.jreleaser.model.HttpDownloader http = new org.jreleaser.model.HttpDownloader() + org.jreleaser.model.internal.download.HttpDownloader toModel() { + org.jreleaser.model.internal.download.HttpDownloader http = new org.jreleaser.model.internal.download.HttpDownloader() http.name = name fillProperties(http) if (username.present) http.username = username.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScpDownloaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/ScpDownloaderImpl.groovy similarity index 77% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScpDownloaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/ScpDownloaderImpl.groovy index 086e694c1..d233631d5 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScpDownloaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/ScpDownloaderImpl.groovy @@ -15,11 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileStatic import org.gradle.api.model.ObjectFactory -import org.jreleaser.gradle.plugin.dsl.ScpDownloader +import org.jreleaser.gradle.plugin.dsl.download.ScpDownloader import javax.inject.Inject @@ -37,8 +37,8 @@ class ScpDownloaderImpl extends AbstractSshDownloader implements ScpDownloader { super(objects) } - org.jreleaser.model.ScpDownloader toModel() { - org.jreleaser.model.ScpDownloader scp = new org.jreleaser.model.ScpDownloader() + org.jreleaser.model.internal.download.ScpDownloader toModel() { + org.jreleaser.model.internal.download.ScpDownloader scp = new org.jreleaser.model.internal.download.ScpDownloader() scp.name = name fillProperties(scp) scp diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScpUploaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/ScpUploaderImpl.groovy similarity index 74% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScpUploaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/ScpUploaderImpl.groovy index 46a9ba2f2..3d0b71ca0 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScpUploaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/ScpUploaderImpl.groovy @@ -15,11 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileStatic import org.gradle.api.model.ObjectFactory -import org.jreleaser.gradle.plugin.dsl.ScpUploader +import org.jreleaser.gradle.plugin.dsl.upload.ScpUploader +import org.jreleaser.gradle.plugin.internal.dsl.upload.AbstractSshUploader import javax.inject.Inject @@ -37,8 +38,8 @@ class ScpUploaderImpl extends AbstractSshUploader implements ScpUploader { super(objects) } - org.jreleaser.model.ScpUploader toModel() { - org.jreleaser.model.ScpUploader scp = new org.jreleaser.model.ScpUploader() + org.jreleaser.model.internal.upload.ScpUploader toModel() { + org.jreleaser.model.internal.upload.ScpUploader scp = new org.jreleaser.model.internal.upload.ScpUploader() scp.name = name fillProperties(scp) scp diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SftpDownloaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/SftpDownloaderImpl.groovy similarity index 77% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SftpDownloaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/SftpDownloaderImpl.groovy index 204071018..501a387bc 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SftpDownloaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/download/SftpDownloaderImpl.groovy @@ -15,11 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.download import groovy.transform.CompileStatic import org.gradle.api.model.ObjectFactory -import org.jreleaser.gradle.plugin.dsl.SftpDownloader +import org.jreleaser.gradle.plugin.dsl.download.SftpDownloader import javax.inject.Inject @@ -37,8 +37,8 @@ class SftpDownloaderImpl extends AbstractSshDownloader implements SftpDownloader super(objects) } - org.jreleaser.model.SftpDownloader toModel() { - org.jreleaser.model.SftpDownloader sftp = new org.jreleaser.model.SftpDownloader() + org.jreleaser.model.internal.download.SftpDownloader toModel() { + org.jreleaser.model.internal.download.SftpDownloader sftp = new org.jreleaser.model.internal.download.SftpDownloader() sftp.name = name fillProperties(sftp) sftp diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/EnvironmentImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/environment/EnvironmentImpl.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/EnvironmentImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/environment/EnvironmentImpl.groovy index 279fd0100..a877b102e 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/EnvironmentImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/environment/EnvironmentImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.environment import groovy.transform.CompileStatic import org.gradle.api.Project @@ -24,7 +24,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Provider -import org.jreleaser.gradle.plugin.dsl.Environment +import org.jreleaser.gradle.plugin.dsl.environment.Environment import javax.inject.Inject @@ -49,9 +49,9 @@ class EnvironmentImpl implements Environment { this.variables.set(new File(variables)) } - org.jreleaser.model.Environment toModel(Project project) { - org.jreleaser.model.Environment environment = new org.jreleaser.model.Environment() - environment.propertiesSource = new org.jreleaser.model.Environment.MapPropertiesSource( + org.jreleaser.model.internal.environment.Environment toModel(Project project) { + org.jreleaser.model.internal.environment.Environment environment = new org.jreleaser.model.internal.environment.Environment() + environment.propertiesSource = new org.jreleaser.model.internal.environment.Environment.MapPropertiesSource( filterProperties(project.properties)) if (variables.present) environment.variables = variables.asFile.get().absolutePath if (properties.present) environment.properties.putAll(properties.get()) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ExtensionImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/extensions/ExtensionImpl.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ExtensionImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/extensions/ExtensionImpl.groovy index fc0f8dc90..9390c4bd1 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ExtensionImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/extensions/ExtensionImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.extensions import groovy.transform.CompileStatic import org.gradle.api.Action @@ -26,7 +26,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Extension +import org.jreleaser.gradle.plugin.dsl.extensions.Extension import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -45,7 +45,7 @@ class ExtensionImpl implements Extension { @Inject ExtensionImpl(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) directory = objects.directoryProperty().convention(Providers.notDefined()) providers = objects.domainObjectContainer(ProviderImpl, new NamedDomainObjectFactory() { @@ -68,8 +68,8 @@ class ExtensionImpl implements Extension { ConfigureUtil.configure(action, providers.maybeCreate("provider-${providers.size()}".toString())) } - org.jreleaser.model.Extension toModel() { - org.jreleaser.model.Extension extension = new org.jreleaser.model.Extension() + org.jreleaser.model.internal.extensions.Extension toModel() { + org.jreleaser.model.internal.extensions.Extension extension = new org.jreleaser.model.internal.extensions.Extension() extension.name = name if (enabled.present) extension.enabled = enabled.get() if (directory.present) { @@ -88,12 +88,12 @@ class ExtensionImpl implements Extension { @Inject ProviderImpl(ObjectFactory objects) { - type = objects.property(String).convention(Providers.notDefined()) + type = objects.property(String).convention(Providers. notDefined()) properties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } - org.jreleaser.model.Extension.Provider toModel() { - org.jreleaser.model.Extension.Provider provider = new org.jreleaser.model.Extension.Provider() + org.jreleaser.model.internal.extensions.Extension.Provider toModel() { + org.jreleaser.model.internal.extensions.Extension.Provider provider = new org.jreleaser.model.internal.extensions.Extension.Provider() if (type.present) provider.type = type.get() if (properties.present) provider.properties.putAll(properties.get()) provider diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FilesImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/files/FilesImpl.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FilesImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/files/FilesImpl.groovy index e5df3f1ec..aa5f48f22 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FilesImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/files/FilesImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.files import groovy.transform.CompileStatic import org.gradle.api.Action @@ -24,9 +24,11 @@ import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Artifact -import org.jreleaser.gradle.plugin.dsl.Files -import org.jreleaser.gradle.plugin.dsl.Glob +import org.jreleaser.gradle.plugin.dsl.common.Artifact +import org.jreleaser.gradle.plugin.dsl.common.Glob +import org.jreleaser.gradle.plugin.dsl.files.Files +import org.jreleaser.gradle.plugin.internal.dsl.common.ArtifactImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.GlobImpl import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -47,7 +49,7 @@ class FilesImpl implements Files { @Inject FilesImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) artifacts = objects.domainObjectContainer(ArtifactImpl, new NamedDomainObjectFactory() { @Override ArtifactImpl create(String name) { @@ -94,8 +96,8 @@ class FilesImpl implements Files { ConfigureUtil.configure(action, globs.maybeCreate("glob-${globs.size()}".toString())) } - org.jreleaser.model.Files toModel() { - org.jreleaser.model.Files files = new org.jreleaser.model.Files() + org.jreleaser.model.internal.files.Files toModel() { + org.jreleaser.model.internal.files.Files files = new org.jreleaser.model.internal.files.Files() if (active.present) files.active = active.get() for (ArtifactImpl artifact : artifacts) { files.addArtifact(artifact.toModel()) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractHook.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/AbstractHook.groovy similarity index 83% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractHook.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/AbstractHook.groovy index 39712d97f..042cbdf38 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractHook.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/AbstractHook.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.Action @@ -24,7 +24,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Hook +import org.jreleaser.gradle.plugin.dsl.hooks.Hook import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -43,7 +43,7 @@ abstract class AbstractHook implements Hook { @Inject AbstractHook(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) } @Internal @@ -68,7 +68,7 @@ abstract class AbstractHook implements Hook { } } - protected void fillHookProperties(T hook) { + protected void fillHookProperties(T hook) { if (active.present) hook.active = active.get() } @@ -78,8 +78,8 @@ abstract class AbstractHook implements Hook { @Inject FilterImpl(ObjectFactory objects) { - includes = objects.setProperty(String).convention(Providers.notDefined()) - excludes = objects.setProperty(String).convention(Providers.notDefined()) + includes = objects.setProperty(String).convention(Providers.> notDefined()) + excludes = objects.setProperty(String).convention(Providers.> notDefined()) } @Internal @@ -100,8 +100,8 @@ abstract class AbstractHook implements Hook { } } - org.jreleaser.model.Hook.Filter toModel() { - org.jreleaser.model.Hook.Filter filter = new org.jreleaser.model.Hook.Filter() + org.jreleaser.model.internal.hooks.Hook.Filter toModel() { + org.jreleaser.model.internal.hooks.Hook.Filter filter = new org.jreleaser.model.internal.hooks.Hook.Filter() filter.includes = (Set) includes.getOrElse([] as Set) filter.includes = (Set) includes.getOrElse([] as Set) filter diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommandHookImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/CommandHookImpl.groovy similarity index 82% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommandHookImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/CommandHookImpl.groovy index d61a52c23..cd81d890a 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommandHookImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/CommandHookImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommandHook +import org.jreleaser.gradle.plugin.dsl.hooks.CommandHook import org.jreleaser.model.Active import javax.inject.Inject @@ -44,8 +44,8 @@ class CommandHookImpl extends AbstractHook implements CommandHook { @Inject CommandHookImpl(ObjectFactory objects) { super(objects) - continueOnError = objects.property(Boolean).convention(Providers.notDefined()) - cmd = objects.property(String).convention(Providers.notDefined()) + continueOnError = objects.property(Boolean).convention(Providers. notDefined()) + cmd = objects.property(String).convention(Providers. notDefined()) filter = objects.newInstance(FilterImpl, objects) } @@ -64,8 +64,8 @@ class CommandHookImpl extends AbstractHook implements CommandHook { } } - org.jreleaser.model.CommandHook toModel() { - org.jreleaser.model.CommandHook hook = new org.jreleaser.model.CommandHook() + org.jreleaser.model.internal.hooks.CommandHook toModel() { + org.jreleaser.model.internal.hooks.CommandHook hook = new org.jreleaser.model.internal.hooks.CommandHook() fillHookProperties(hook) if (continueOnError.present) hook.continueOnError = continueOnError.get() if (cmd.present) hook.cmd = cmd.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommandHooksImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/CommandHooksImpl.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommandHooksImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/CommandHooksImpl.groovy index 691e7a5a1..09d81ca72 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CommandHooksImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/CommandHooksImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.Action @@ -24,8 +24,8 @@ import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.CommandHook -import org.jreleaser.gradle.plugin.dsl.CommandHooks +import org.jreleaser.gradle.plugin.dsl.hooks.CommandHook +import org.jreleaser.gradle.plugin.dsl.hooks.CommandHooks import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -48,7 +48,7 @@ class CommandHooksImpl implements CommandHooks { @Inject CommandHooksImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) before = objects.domainObjectContainer(CommandHookImpl, new NamedDomainObjectFactory() { @Override @@ -121,8 +121,8 @@ class CommandHooksImpl implements CommandHooks { ConfigureUtil.configure(action, failure.maybeCreate("failure-${failure.size()}".toString())) } - org.jreleaser.model.CommandHooks toModel() { - org.jreleaser.model.CommandHooks commandHooks = new org.jreleaser.model.CommandHooks() + org.jreleaser.model.internal.hooks.CommandHooks toModel() { + org.jreleaser.model.internal.hooks.CommandHooks commandHooks = new org.jreleaser.model.internal.hooks.CommandHooks() if (active.present) commandHooks.active = active.get() before.forEach { hook -> commandHooks.addBefore(hook.toModel()) } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HooksImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/HooksImpl.groovy similarity index 81% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HooksImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/HooksImpl.groovy index 4878d62f0..988b7d121 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HooksImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/hooks/HooksImpl.groovy @@ -15,15 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.hooks import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.CommandHooks -import org.jreleaser.gradle.plugin.dsl.Hooks +import org.jreleaser.gradle.plugin.dsl.hooks.CommandHooks +import org.jreleaser.gradle.plugin.dsl.hooks.Hooks import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -43,7 +43,7 @@ class HooksImpl implements Hooks { @Inject HooksImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) command = objects.newInstance(CommandHooksImpl, objects) } @@ -64,8 +64,8 @@ class HooksImpl implements Hooks { ConfigureUtil.configure(action, command) } - org.jreleaser.model.Hooks toModel() { - org.jreleaser.model.Hooks hooks = new org.jreleaser.model.Hooks() + org.jreleaser.model.internal.hooks.Hooks toModel() { + org.jreleaser.model.internal.hooks.Hooks hooks = new org.jreleaser.model.internal.hooks.Hooks() if (active.present) hooks.active = active.get() hooks.command = command.toModel() hooks diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractDockerConfiguration.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractDockerConfiguration.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractDockerConfiguration.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractDockerConfiguration.groovy index f29082b1f..30235698e 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractDockerConfiguration.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractDockerConfiguration.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -28,8 +28,8 @@ import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.DockerConfiguration -import org.jreleaser.gradle.plugin.dsl.Registry +import org.jreleaser.gradle.plugin.dsl.packagers.DockerConfiguration +import org.jreleaser.gradle.plugin.dsl.packagers.Registry import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -60,16 +60,16 @@ abstract class AbstractDockerConfiguration implements DockerConfiguration { @Inject AbstractDockerConfiguration(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) templateDirectory = objects.directoryProperty().convention(Providers.notDefined()) - skipTemplates = objects.listProperty(String).convention(Providers.notDefined()) + skipTemplates = objects.listProperty(String).convention(Providers.> notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) - baseImage = objects.property(String).convention(Providers.notDefined()) - useLocalArtifact = objects.property(Boolean).convention(Providers.notDefined()) - imageNames = objects.setProperty(String).convention(Providers.notDefined()) - buildArgs = objects.listProperty(String).convention(Providers.notDefined()) - preCommands = objects.listProperty(String).convention(Providers.notDefined()) - postCommands = objects.listProperty(String).convention(Providers.notDefined()) + baseImage = objects.property(String).convention(Providers. notDefined()) + useLocalArtifact = objects.property(Boolean).convention(Providers. notDefined()) + imageNames = objects.setProperty(String).convention(Providers.> notDefined()) + buildArgs = objects.listProperty(String).convention(Providers.> notDefined()) + preCommands = objects.listProperty(String).convention(Providers.> notDefined()) + postCommands = objects.listProperty(String).convention(Providers.> notDefined()) labels = objects.mapProperty(String, String).convention(Providers.notDefined()) registries = objects.domainObjectContainer(RegistryImpl) @@ -155,7 +155,7 @@ abstract class AbstractDockerConfiguration implements DockerConfiguration { } } - void toModel(org.jreleaser.model.DockerConfiguration docker) { + void toModel(org.jreleaser.model.internal.packagers.DockerConfiguration docker) { if (active.present) docker.active = active.get() if (templateDirectory.present) { docker.templateDirectory = templateDirectory.get().asFile.toPath().toAbsolutePath().toString() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractPackager.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractPackager.groovy similarity index 83% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractPackager.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractPackager.groovy index 108e4214a..eabd693db 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractPackager.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractPackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,8 +23,8 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal +import org.jreleaser.gradle.plugin.dsl.packagers.Packager import org.jreleaser.model.Active -import org.jreleaser.model.Packager import javax.inject.Inject @@ -36,7 +36,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -abstract class AbstractPackager implements org.jreleaser.gradle.plugin.dsl.Packager { +abstract class AbstractPackager implements Packager { final Property active final Property continueOnError final Property downloadUrl @@ -44,9 +44,9 @@ abstract class AbstractPackager implements org.jreleaser.gradle.plugin.dsl.Packa @Inject AbstractPackager(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - continueOnError = objects.property(Boolean).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + continueOnError = objects.property(Boolean).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) } @@ -65,7 +65,7 @@ abstract class AbstractPackager implements org.jreleaser.gradle.plugin.dsl.Packa } } - protected void fillPackagerProperties(T packager) { + protected void fillPackagerProperties(T packager) { if (active.present) packager.active = active.get() if (continueOnError.present) packager.continueOnError = continueOnError.get() if (downloadUrl.present) packager.downloadUrl = downloadUrl.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractRepositoryPackager.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractRepositoryPackager.groovy similarity index 90% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractRepositoryPackager.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractRepositoryPackager.groovy index 2925c2473..234dfc122 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractRepositoryPackager.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractRepositoryPackager.groovy @@ -15,11 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.model.ObjectFactory -import org.jreleaser.gradle.plugin.dsl.RepositoryPackager +import org.jreleaser.gradle.plugin.dsl.packagers.RepositoryPackager import javax.inject.Inject diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractTemplatePackager.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractTemplatePackager.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractTemplatePackager.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractTemplatePackager.groovy index 5fc89dcbc..f535dd784 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractTemplatePackager.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AbstractTemplatePackager.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.file.DirectoryProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.tasks.Internal -import org.jreleaser.model.TemplatePackager +import org.jreleaser.gradle.plugin.dsl.packagers.TemplatePackager import javax.inject.Inject @@ -35,7 +35,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.6.0 */ @CompileStatic -abstract class AbstractTemplatePackager extends AbstractPackager implements org.jreleaser.gradle.plugin.dsl.TemplatePackager { +abstract class AbstractTemplatePackager extends AbstractPackager implements TemplatePackager { final DirectoryProperty templateDirectory final ListProperty skipTemplates @@ -43,7 +43,7 @@ abstract class AbstractTemplatePackager extends AbstractPackager implements org. AbstractTemplatePackager(ObjectFactory objects) { super(objects) templateDirectory = objects.directoryProperty().convention(Providers.notDefined()) - skipTemplates = objects.listProperty(String).convention(Providers.notDefined()) + skipTemplates = objects.listProperty(String).convention(Providers.> notDefined()) } @Internal @@ -60,7 +60,7 @@ abstract class AbstractTemplatePackager extends AbstractPackager implements org. } } - protected void fillTemplatePackagerProperties(T packager) { + protected void fillTemplatePackagerProperties(T packager) { if (templateDirectory.present) { packager.templateDirectory = templateDirectory.get().asFile.toPath().toAbsolutePath().toString() } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AppImageImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AppImagePackagerImpl.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AppImageImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AppImagePackagerImpl.groovy index bf7a0ec49..7723367fd 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AppImageImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AppImagePackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,11 +27,14 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.AppImage -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Icon -import org.jreleaser.gradle.plugin.dsl.Screenshot -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.common.Icon +import org.jreleaser.gradle.plugin.dsl.common.Screenshot +import org.jreleaser.gradle.plugin.dsl.packagers.AppImagePackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.IconImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.ScreenshotImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -44,7 +47,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 1.2.0 */ @CompileStatic -class AppImageImpl extends AbstractRepositoryPackager implements AppImage { +class AppImagePackagerImpl extends AbstractRepositoryPackager implements AppImagePackager { final CommitAuthorImpl commitAuthor final TapImpl repository final Property componentId @@ -57,15 +60,15 @@ class AppImageImpl extends AbstractRepositoryPackager implements AppImage { private final NamedDomainObjectContainer icons @Inject - AppImageImpl(ObjectFactory objects) { + AppImagePackagerImpl(ObjectFactory objects) { super(objects) repository = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) - componentId = objects.property(String).convention(Providers.notDefined()) - categories = objects.listProperty(String).convention(Providers.notDefined()) - developerName = objects.property(String).convention(Providers.notDefined()) - requiresTerminal = objects.property(Boolean).convention(Providers.notDefined()) - skipReleases = objects.setProperty(String).convention(Providers.notDefined()) + componentId = objects.property(String).convention(Providers. notDefined()) + categories = objects.listProperty(String).convention(Providers.> notDefined()) + developerName = objects.property(String).convention(Providers. notDefined()) + requiresTerminal = objects.property(Boolean).convention(Providers. notDefined()) + skipReleases = objects.setProperty(String).convention(Providers.> notDefined()) screenshots = objects.domainObjectContainer(ScreenshotImpl, new NamedDomainObjectFactory() { @Override @@ -97,7 +100,7 @@ class AppImageImpl extends AbstractRepositoryPackager implements AppImage { developerName.present || requiresTerminal.present || skipReleases.present || - !screenshots.empty|| + !screenshots.empty || !icons.empty } @@ -155,8 +158,8 @@ class AppImageImpl extends AbstractRepositoryPackager implements AppImage { ConfigureUtil.configure(action, icons.maybeCreate("icons-${icons.size()}".toString())) } - org.jreleaser.model.AppImage toModel() { - org.jreleaser.model.AppImage packager = new org.jreleaser.model.AppImage() + org.jreleaser.model.internal.packagers.AppImagePackager toModel() { + org.jreleaser.model.internal.packagers.AppImagePackager packager = new org.jreleaser.model.internal.packagers.AppImagePackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (repository.isSet()) packager.repository = repository.toAppImageRepository() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AsdfImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AsdfPackagerImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AsdfImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AsdfPackagerImpl.groovy index 5dd1f2953..46cc4ddea 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AsdfImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/AsdfPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -23,9 +23,10 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Asdf -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.AsdfPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -36,17 +37,17 @@ import javax.inject.Inject * @since 1.2.0 */ @CompileStatic -class AsdfImpl extends AbstractRepositoryPackager implements Asdf { +class AsdfPackagerImpl extends AbstractRepositoryPackager implements AsdfPackager { final CommitAuthorImpl commitAuthor final TapImpl repository final Property toolCheck @Inject - AsdfImpl(ObjectFactory objects) { + AsdfPackagerImpl(ObjectFactory objects) { super(objects) repository = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) - toolCheck = objects.property(String).convention(Providers.notDefined()) + toolCheck = objects.property(String).convention(Providers. notDefined()) } @Override @@ -78,8 +79,8 @@ class AsdfImpl extends AbstractRepositoryPackager implements Asdf { ConfigureUtil.configure(action, commitAuthor) } - org.jreleaser.model.Asdf toModel() { - org.jreleaser.model.Asdf packager = new org.jreleaser.model.Asdf() + org.jreleaser.model.internal.packagers.AsdfPackager toModel() { + org.jreleaser.model.internal.packagers.AsdfPackager packager = new org.jreleaser.model.internal.packagers.AsdfPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (repository.isSet()) packager.repository = repository.toAsdfRepository() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/BrewImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/BrewPackagerImpl.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/BrewImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/BrewPackagerImpl.groovy index 5e0794ae0..fb5c55145 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/BrewImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/BrewPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -25,9 +25,10 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Brew -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.BrewPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -40,7 +41,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -class BrewImpl extends AbstractRepositoryPackager implements Brew { +class BrewPackagerImpl extends AbstractRepositoryPackager implements BrewPackager { final Property formulaName final Property multiPlatform final CommitAuthorImpl commitAuthor @@ -50,15 +51,15 @@ class BrewImpl extends AbstractRepositoryPackager implements Brew { final ListProperty livecheck @Inject - BrewImpl(ObjectFactory objects) { + BrewPackagerImpl(ObjectFactory objects) { super(objects) - formulaName = objects.property(String).convention(Providers.notDefined()) - multiPlatform = objects.property(Boolean).convention(Providers.notDefined()) + formulaName = objects.property(String).convention(Providers. notDefined()) + multiPlatform = objects.property(Boolean).convention(Providers. notDefined()) repoTap = objects.newInstance(TapImpl, objects) cask = objects.newInstance(CaskImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) dependencies = objects.mapProperty(String, String).convention(Providers.notDefined()) - livecheck = objects.listProperty(String).convention(Providers.notDefined()) + livecheck = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -118,8 +119,8 @@ class BrewImpl extends AbstractRepositoryPackager implements Brew { ConfigureUtil.configure(action, cask) } - org.jreleaser.model.Brew toModel() { - org.jreleaser.model.Brew packager = new org.jreleaser.model.Brew() + org.jreleaser.model.internal.packagers.BrewPackager toModel() { + org.jreleaser.model.internal.packagers.BrewPackager packager = new org.jreleaser.model.internal.packagers.BrewPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (formulaName.present) packager.formulaName = formulaName.get() @@ -145,12 +146,12 @@ class BrewImpl extends AbstractRepositoryPackager implements Brew { @Inject CaskImpl(ObjectFactory objects) { - displayName = objects.property(String).convention(Providers.notDefined()) - name = objects.property(String).convention(Providers.notDefined()) - pkgName = objects.property(String).convention(Providers.notDefined()) - appName = objects.property(String).convention(Providers.notDefined()) - appcast = objects.property(String).convention(Providers.notDefined()) - enabled = objects.property(Boolean).convention(Providers.notDefined()) + displayName = objects.property(String).convention(Providers. notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + pkgName = objects.property(String).convention(Providers. notDefined()) + appName = objects.property(String).convention(Providers. notDefined()) + appcast = objects.property(String).convention(Providers. notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) uninstall = (objects.mapProperty(String, List).convention(Providers.notDefined()) as MapProperty>) zap = (objects.mapProperty(String, List).convention(Providers.notDefined()) as MapProperty>) } @@ -167,8 +168,8 @@ class BrewImpl extends AbstractRepositoryPackager implements Brew { zap.present } - org.jreleaser.model.Brew.Cask toModel() { - org.jreleaser.model.Brew.Cask cask = new org.jreleaser.model.Brew.Cask() + org.jreleaser.model.internal.packagers.BrewPackager.Cask toModel() { + org.jreleaser.model.internal.packagers.BrewPackager.Cask cask = new org.jreleaser.model.internal.packagers.BrewPackager.Cask() if (displayName.present) cask.displayName = displayName.get() if (name.present) cask.name = name.get() if (pkgName.present) cask.pkgName = pkgName.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChocolateyImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/ChocolateyPackagerImpl.groovy similarity index 77% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChocolateyImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/ChocolateyPackagerImpl.groovy index e0edab1d2..7fabe381f 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChocolateyImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/ChocolateyPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -23,9 +23,10 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Chocolatey -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.ChocolateyPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -36,7 +37,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class ChocolateyImpl extends AbstractRepositoryPackager implements Chocolatey { +class ChocolateyPackagerImpl extends AbstractRepositoryPackager implements ChocolateyPackager { final Property packageName final Property packageVersion final Property username @@ -49,16 +50,16 @@ class ChocolateyImpl extends AbstractRepositoryPackager implements Chocolatey { final TapImpl bucket @Inject - ChocolateyImpl(ObjectFactory objects) { + ChocolateyPackagerImpl(ObjectFactory objects) { super(objects) - packageName = objects.property(String).convention(Providers.notDefined()) - packageVersion = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - apiKey = objects.property(String).convention(Providers.notDefined()) - title = objects.property(String).convention(Providers.notDefined()) - iconUrl = objects.property(String).convention(Providers.notDefined()) - source = objects.property(String).convention(Providers.notDefined()) - remoteBuild = objects.property(Boolean).convention(Providers.notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + packageVersion = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + apiKey = objects.property(String).convention(Providers. notDefined()) + title = objects.property(String).convention(Providers. notDefined()) + iconUrl = objects.property(String).convention(Providers. notDefined()) + source = objects.property(String).convention(Providers. notDefined()) + remoteBuild = objects.property(Boolean).convention(Providers. notDefined()) bucket = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) } @@ -99,8 +100,8 @@ class ChocolateyImpl extends AbstractRepositoryPackager implements Chocolatey { ConfigureUtil.configure(action, commitAuthor) } - org.jreleaser.model.Chocolatey toModel() { - org.jreleaser.model.Chocolatey packager = new org.jreleaser.model.Chocolatey() + org.jreleaser.model.internal.packagers.ChocolateyPackager toModel() { + org.jreleaser.model.internal.packagers.ChocolateyPackager packager = new org.jreleaser.model.internal.packagers.ChocolateyPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (bucket.isSet()) packager.bucket = bucket.toChocolateyBucket() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DockerImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/DockerPackagerImpl.groovy similarity index 83% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DockerImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/DockerPackagerImpl.groovy index 9121b1845..eb3ba8ec7 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DockerImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/DockerPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileDynamic import groovy.transform.CompileStatic @@ -26,9 +26,10 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Docker -import org.jreleaser.gradle.plugin.dsl.DockerSpec +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.DockerPackager +import org.jreleaser.gradle.plugin.dsl.packagers.DockerSpec +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.jreleaser.model.Active import org.jreleaser.util.StringUtils import org.kordamp.gradle.util.ConfigureUtil @@ -41,7 +42,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class DockerImpl extends AbstractDockerConfiguration implements Docker { +class DockerPackagerImpl extends AbstractDockerConfiguration implements DockerPackager { final NamedDomainObjectContainer specs final Property continueOnError final Property downloadUrl @@ -49,10 +50,10 @@ class DockerImpl extends AbstractDockerConfiguration implements Docker { final CommitAuthorImpl commitAuthor @Inject - DockerImpl(ObjectFactory objects) { + DockerPackagerImpl(ObjectFactory objects) { super(objects) - continueOnError = objects.property(Boolean).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) + continueOnError = objects.property(Boolean).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) repository = objects.newInstance(DockerRepositoryImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) @@ -108,8 +109,8 @@ class DockerImpl extends AbstractDockerConfiguration implements Docker { } @CompileDynamic - org.jreleaser.model.Docker toModel() { - org.jreleaser.model.Docker packager = new org.jreleaser.model.Docker() + org.jreleaser.model.internal.packagers.DockerPackager toModel() { + org.jreleaser.model.internal.packagers.DockerPackager packager = new org.jreleaser.model.internal.packagers.DockerPackager() toModel(packager) if (continueOnError.present) packager.continueOnError = continueOnError.get() if (downloadUrl.present) packager.downloadUrl = downloadUrl.get() @@ -135,15 +136,15 @@ class DockerImpl extends AbstractDockerConfiguration implements Docker { @Inject DockerRepositoryImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - repoOwner = objects.property(String).convention(Providers.notDefined()) - name = objects.property(String).convention(Providers.notDefined()) - tagName = objects.property(String).convention(Providers.notDefined()) - branch = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - token = objects.property(String).convention(Providers.notDefined()) - commitMessage = objects.property(String).convention(Providers.notDefined()) - versionedSubfolders = objects.property(Boolean).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + repoOwner = objects.property(String).convention(Providers. notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + tagName = objects.property(String).convention(Providers. notDefined()) + branch = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + token = objects.property(String).convention(Providers. notDefined()) + commitMessage = objects.property(String).convention(Providers. notDefined()) + versionedSubfolders = objects.property(Boolean).convention(Providers. notDefined()) } @Override @@ -166,8 +167,8 @@ class DockerImpl extends AbstractDockerConfiguration implements Docker { commitMessage.present } - org.jreleaser.model.Docker.DockerRepository toModel() { - org.jreleaser.model.Docker.DockerRepository tap = new org.jreleaser.model.Docker.DockerRepository() + org.jreleaser.model.internal.packagers.DockerPackager.DockerRepository toModel() { + org.jreleaser.model.internal.packagers.DockerPackager.DockerRepository tap = new org.jreleaser.model.internal.packagers.DockerPackager.DockerRepository() if (active.present) tap.active = active.get() if (repoOwner.present) tap.owner = repoOwner.get() if (name.present) tap.name = name.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DockerSpecImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/DockerSpecImpl.groovy similarity index 85% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DockerSpecImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/DockerSpecImpl.groovy index 0ba83f0ac..fb0df8956 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/DockerSpecImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/DockerSpecImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.DockerSpec +import org.jreleaser.gradle.plugin.dsl.packagers.DockerSpec import javax.inject.Inject @@ -59,8 +59,8 @@ class DockerSpecImpl extends AbstractDockerConfiguration implements DockerSpec { !matchers.present } - org.jreleaser.model.DockerSpec toModel() { - org.jreleaser.model.DockerSpec spec = new org.jreleaser.model.DockerSpec() + org.jreleaser.model.internal.packagers.DockerSpec toModel() { + org.jreleaser.model.internal.packagers.DockerSpec spec = new org.jreleaser.model.internal.packagers.DockerSpec() spec.name = name toModel(spec) if (matchers.present) spec.matchers.putAll(matchers.get()) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FlatpakImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/FlatpakPackagerImpl.groovy similarity index 83% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FlatpakImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/FlatpakPackagerImpl.groovy index dbc1619c5..885a0b4c3 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FlatpakImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/FlatpakPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -27,11 +27,15 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Flatpak -import org.jreleaser.gradle.plugin.dsl.Icon -import org.jreleaser.gradle.plugin.dsl.Screenshot -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.common.Icon +import org.jreleaser.gradle.plugin.dsl.common.Screenshot +import org.jreleaser.gradle.plugin.dsl.packagers.FlatpakPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.IconImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.ScreenshotImpl +import org.jreleaser.model.Flatpak import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -44,13 +48,13 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 1.2.0 */ @CompileStatic -class FlatpakImpl extends AbstractRepositoryPackager implements Flatpak { +class FlatpakPackagerImpl extends AbstractRepositoryPackager implements FlatpakPackager { final CommitAuthorImpl commitAuthor final TapImpl repository final Property componentId final ListProperty categories final Property developerName - final Property runtime + final Property runtime final Property runtimeVersion final SetProperty sdkExtensions final SetProperty finishArgs @@ -60,18 +64,18 @@ class FlatpakImpl extends AbstractRepositoryPackager implements Flatpak { private final NamedDomainObjectContainer icons @Inject - FlatpakImpl(ObjectFactory objects) { + FlatpakPackagerImpl(ObjectFactory objects) { super(objects) repository = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) - componentId = objects.property(String).convention(Providers.notDefined()) - categories = objects.listProperty(String).convention(Providers.notDefined()) - developerName = objects.property(String).convention(Providers.notDefined()) - runtime = objects.property(org.jreleaser.model.Flatpak.Runtime).convention(Providers.notDefined()) - runtimeVersion = objects.property(String).convention(Providers.notDefined()) - sdkExtensions = objects.setProperty(String).convention(Providers.notDefined()) - finishArgs = objects.setProperty(String).convention(Providers.notDefined()) - skipReleases = objects.setProperty(String).convention(Providers.notDefined()) + componentId = objects.property(String).convention(Providers. notDefined()) + categories = objects.listProperty(String).convention(Providers.> notDefined()) + developerName = objects.property(String).convention(Providers. notDefined()) + runtime = objects.property(Flatpak.Runtime).convention(Providers. notDefined()) + runtimeVersion = objects.property(String).convention(Providers. notDefined()) + sdkExtensions = objects.setProperty(String).convention(Providers.> notDefined()) + finishArgs = objects.setProperty(String).convention(Providers.> notDefined()) + skipReleases = objects.setProperty(String).convention(Providers.> notDefined()) screenshots = objects.domainObjectContainer(ScreenshotImpl, new NamedDomainObjectFactory() { @Override @@ -95,7 +99,7 @@ class FlatpakImpl extends AbstractRepositoryPackager implements Flatpak { @Override void setRuntime(String str) { if (isNotBlank(str)) { - this.runtime.set(org.jreleaser.model.Flatpak.Runtime.of(str.trim())) + this.runtime.set(Flatpak.Runtime.of(str.trim())) } } @@ -185,8 +189,8 @@ class FlatpakImpl extends AbstractRepositoryPackager implements Flatpak { ConfigureUtil.configure(action, icons.maybeCreate("icons-${icons.size()}".toString())) } - org.jreleaser.model.Flatpak toModel() { - org.jreleaser.model.Flatpak packager = new org.jreleaser.model.Flatpak() + org.jreleaser.model.internal.packagers.FlatpakPackager toModel() { + org.jreleaser.model.internal.packagers.FlatpakPackager packager = new org.jreleaser.model.internal.packagers.FlatpakPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (repository.isSet()) packager.repository = repository.toFlatpakRepository() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GofishImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/GofishPackagerImpl.groovy similarity index 77% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GofishImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/GofishPackagerImpl.groovy index 2f053d303..33389a171 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GofishImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/GofishPackagerImpl.groovy @@ -15,15 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Gofish -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.GofishPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -34,12 +35,12 @@ import javax.inject.Inject * @since 0.10.0 */ @CompileStatic -class GofishImpl extends AbstractRepositoryPackager implements Gofish { +class GofishPackagerImpl extends AbstractRepositoryPackager implements GofishPackager { final CommitAuthorImpl commitAuthor final TapImpl repository @Inject - GofishImpl(ObjectFactory objects) { + GofishPackagerImpl(ObjectFactory objects) { super(objects) repository = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) @@ -73,8 +74,8 @@ class GofishImpl extends AbstractRepositoryPackager implements Gofish { ConfigureUtil.configure(action, commitAuthor) } - org.jreleaser.model.Gofish toModel() { - org.jreleaser.model.Gofish packager = new org.jreleaser.model.Gofish() + org.jreleaser.model.internal.packagers.GofishPackager toModel() { + org.jreleaser.model.internal.packagers.GofishPackager packager = new org.jreleaser.model.internal.packagers.GofishPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (repository.isSet()) packager.repository = repository.toGofishRepository() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JbangImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/JbangPackagerImpl.groovy similarity index 76% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JbangImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/JbangPackagerImpl.groovy index a58a80148..92316c484 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/JbangImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/JbangPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -23,9 +23,10 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Jbang -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.JbangPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -36,15 +37,15 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class JbangImpl extends AbstractRepositoryPackager implements Jbang { +class JbangPackagerImpl extends AbstractRepositoryPackager implements JbangPackager { final Property alias final CommitAuthorImpl commitAuthor final TapImpl catalog @Inject - JbangImpl(ObjectFactory objects) { + JbangPackagerImpl(ObjectFactory objects) { super(objects) - alias = objects.property(String).convention(Providers.notDefined()) + alias = objects.property(String).convention(Providers. notDefined()) catalog = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) } @@ -77,8 +78,8 @@ class JbangImpl extends AbstractRepositoryPackager implements Jbang { ConfigureUtil.configure(action, commitAuthor) } - org.jreleaser.model.Jbang toModel() { - org.jreleaser.model.Jbang packager = new org.jreleaser.model.Jbang() + org.jreleaser.model.internal.packagers.JbangPackager toModel() { + org.jreleaser.model.internal.packagers.JbangPackager packager = new org.jreleaser.model.internal.packagers.JbangPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (alias.present) packager.alias = alias.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MacportsImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/MacportsPackagerImpl.groovy similarity index 81% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MacportsImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/MacportsPackagerImpl.groovy index 575404b38..9b43e9960 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/MacportsImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/MacportsPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -24,9 +24,10 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Macports -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.MacportsPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -39,7 +40,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.9.0 */ @CompileStatic -class MacportsImpl extends AbstractRepositoryPackager implements Macports { +class MacportsPackagerImpl extends AbstractRepositoryPackager implements MacportsPackager { final Property packageName final Property revision final CommitAuthorImpl commitAuthor @@ -48,14 +49,14 @@ class MacportsImpl extends AbstractRepositoryPackager implements Macports { final ListProperty maintainers @Inject - MacportsImpl(ObjectFactory objects) { + MacportsPackagerImpl(ObjectFactory objects) { super(objects) - packageName = objects.property(String).convention(Providers.notDefined()) - revision = objects.property(Integer).convention(Providers.notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + revision = objects.property(Integer).convention(Providers. notDefined()) repository = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) - categories = objects.listProperty(String).convention(Providers.notDefined()) - maintainers = objects.listProperty(String).convention(Providers.notDefined()) + categories = objects.listProperty(String).convention(Providers.> notDefined()) + maintainers = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -104,8 +105,8 @@ class MacportsImpl extends AbstractRepositoryPackager implements Macports { } } - org.jreleaser.model.Macports toModel() { - org.jreleaser.model.Macports packager = new org.jreleaser.model.Macports() + org.jreleaser.model.internal.packagers.MacportsPackager toModel() { + org.jreleaser.model.internal.packagers.MacportsPackager packager = new org.jreleaser.model.internal.packagers.MacportsPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (packageName.present) packager.packageName = packageName.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/PackagersImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/PackagersImpl.groovy similarity index 52% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/PackagersImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/PackagersImpl.groovy index 61b12afaa..574ab9762 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/PackagersImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/PackagersImpl.groovy @@ -15,25 +15,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.model.ObjectFactory -import org.jreleaser.gradle.plugin.dsl.AppImage -import org.jreleaser.gradle.plugin.dsl.Asdf -import org.jreleaser.gradle.plugin.dsl.Brew -import org.jreleaser.gradle.plugin.dsl.Chocolatey -import org.jreleaser.gradle.plugin.dsl.Docker -import org.jreleaser.gradle.plugin.dsl.Flatpak -import org.jreleaser.gradle.plugin.dsl.Gofish -import org.jreleaser.gradle.plugin.dsl.Jbang -import org.jreleaser.gradle.plugin.dsl.Macports -import org.jreleaser.gradle.plugin.dsl.Packagers -import org.jreleaser.gradle.plugin.dsl.Scoop -import org.jreleaser.gradle.plugin.dsl.Sdkman -import org.jreleaser.gradle.plugin.dsl.Snap -import org.jreleaser.gradle.plugin.dsl.Spec +import org.jreleaser.gradle.plugin.dsl.packagers.AppImagePackager +import org.jreleaser.gradle.plugin.dsl.packagers.AsdfPackager +import org.jreleaser.gradle.plugin.dsl.packagers.BrewPackager +import org.jreleaser.gradle.plugin.dsl.packagers.ChocolateyPackager +import org.jreleaser.gradle.plugin.dsl.packagers.DockerPackager +import org.jreleaser.gradle.plugin.dsl.packagers.FlatpakPackager +import org.jreleaser.gradle.plugin.dsl.packagers.GofishPackager +import org.jreleaser.gradle.plugin.dsl.packagers.JbangPackager +import org.jreleaser.gradle.plugin.dsl.packagers.MacportsPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Packagers +import org.jreleaser.gradle.plugin.dsl.packagers.ScoopPackager +import org.jreleaser.gradle.plugin.dsl.packagers.SdkmanPackager +import org.jreleaser.gradle.plugin.dsl.packagers.SnapPackager +import org.jreleaser.gradle.plugin.dsl.packagers.SpecPackager import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -45,169 +45,169 @@ import javax.inject.Inject */ @CompileStatic class PackagersImpl implements Packagers { - final AppImageImpl appImage - final AsdfImpl asdf - final BrewImpl brew - final ChocolateyImpl chocolatey - final DockerImpl docker - final FlatpakImpl flatpak - final GofishImpl gofish - final JbangImpl jbang - final MacportsImpl macports - final ScoopImpl scoop - final SdkmanImpl sdkman - final SnapImpl snap - final SpecImpl spec + final AppImagePackagerImpl appImage + final AsdfPackagerImpl asdf + final BrewPackagerImpl brew + final ChocolateyPackagerImpl chocolatey + final DockerPackagerImpl docker + final FlatpakPackagerImpl flatpak + final GofishPackagerImpl gofish + final JbangPackagerImpl jbang + final MacportsPackagerImpl macports + final ScoopPackagerImpl scoop + final SdkmanPackagerImpl sdkman + final SnapPackagerImpl snap + final SpecPackagerImpl spec @Inject PackagersImpl(ObjectFactory objects) { - appImage = objects.newInstance(AppImageImpl, objects) - asdf = objects.newInstance(AsdfImpl, objects) - brew = objects.newInstance(BrewImpl, objects) - chocolatey = objects.newInstance(ChocolateyImpl, objects) - docker = objects.newInstance(DockerImpl, objects) - flatpak = objects.newInstance(FlatpakImpl, objects) - gofish = objects.newInstance(GofishImpl, objects) - jbang = objects.newInstance(JbangImpl, objects) - macports = objects.newInstance(MacportsImpl, objects) - scoop = objects.newInstance(ScoopImpl, objects) - sdkman = objects.newInstance(SdkmanImpl, objects) - snap = objects.newInstance(SnapImpl, objects) - spec = objects.newInstance(SpecImpl, objects) - } - - @Override - void appImage(Action action) { + appImage = objects.newInstance(AppImagePackagerImpl, objects) + asdf = objects.newInstance(AsdfPackagerImpl, objects) + brew = objects.newInstance(BrewPackagerImpl, objects) + chocolatey = objects.newInstance(ChocolateyPackagerImpl, objects) + docker = objects.newInstance(DockerPackagerImpl, objects) + flatpak = objects.newInstance(FlatpakPackagerImpl, objects) + gofish = objects.newInstance(GofishPackagerImpl, objects) + jbang = objects.newInstance(JbangPackagerImpl, objects) + macports = objects.newInstance(MacportsPackagerImpl, objects) + scoop = objects.newInstance(ScoopPackagerImpl, objects) + sdkman = objects.newInstance(SdkmanPackagerImpl, objects) + snap = objects.newInstance(SnapPackagerImpl, objects) + spec = objects.newInstance(SpecPackagerImpl, objects) + } + + @Override + void appImage(Action action) { action.execute(appImage) } @Override - void asdf(Action action) { + void asdf(Action action) { action.execute(asdf) } @Override - void brew(Action action) { + void brew(Action action) { action.execute(brew) } @Override - void chocolatey(Action action) { + void chocolatey(Action action) { action.execute(chocolatey) } @Override - void docker(Action action) { + void docker(Action action) { action.execute(docker) } @Override - void flatpak(Action action) { + void flatpak(Action action) { action.execute(flatpak) } @Override - void gofish(Action action) { + void gofish(Action action) { action.execute(gofish) } @Override - void jbang(Action action) { + void jbang(Action action) { action.execute(jbang) } @Override - void macports(Action action) { + void macports(Action action) { action.execute(macports) } @Override - void scoop(Action action) { + void scoop(Action action) { action.execute(scoop) } @Override - void sdkman(Action action) { + void sdkman(Action action) { action.execute(sdkman) } @Override - void snap(Action action) { + void snap(Action action) { action.execute(snap) } @Override - void spec(Action action) { + void spec(Action action) { action.execute(spec) } @Override - void appImage(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AppImage) Closure action) { + void appImage(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AppImagePackager) Closure action) { ConfigureUtil.configure(action, appImage) } @Override - void asdf(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Asdf) Closure action) { + void asdf(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = AsdfPackager) Closure action) { ConfigureUtil.configure(action, asdf) } @Override - void brew(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Brew) Closure action) { + void brew(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = BrewPackager) Closure action) { ConfigureUtil.configure(action, brew) } @Override - void chocolatey(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Chocolatey) Closure action) { + void chocolatey(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ChocolateyPackager) Closure action) { ConfigureUtil.configure(action, chocolatey) } @Override - void docker(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Docker) Closure action) { + void docker(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = DockerPackager) Closure action) { ConfigureUtil.configure(action, docker) } @Override - void flatpak(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Flatpak) Closure action) { + void flatpak(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = FlatpakPackager) Closure action) { ConfigureUtil.configure(action, flatpak) } @Override - void gofish(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gofish) Closure action) { + void gofish(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GofishPackager) Closure action) { ConfigureUtil.configure(action, gofish) } @Override - void jbang(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Jbang) Closure action) { + void jbang(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = JbangPackager) Closure action) { ConfigureUtil.configure(action, jbang) } @Override - void macports(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Macports) Closure action) { + void macports(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = MacportsPackager) Closure action) { ConfigureUtil.configure(action, macports) } @Override - void scoop(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Scoop) Closure action) { + void scoop(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = ScoopPackager) Closure action) { ConfigureUtil.configure(action, scoop) } @Override - void sdkman(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Sdkman) Closure action) { + void sdkman(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SdkmanPackager) Closure action) { ConfigureUtil.configure(action, sdkman) } @Override - void snap(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Snap) Closure action) { + void snap(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SnapPackager) Closure action) { ConfigureUtil.configure(action, snap) } @Override - void spec(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Spec) Closure action) { + void spec(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = SpecPackager) Closure action) { ConfigureUtil.configure(action, spec) } - org.jreleaser.model.Packagers toModel() { - org.jreleaser.model.Packagers packagers = new org.jreleaser.model.Packagers() + org.jreleaser.model.internal.packagers.Packagers toModel() { + org.jreleaser.model.internal.packagers.Packagers packagers = new org.jreleaser.model.internal.packagers.Packagers() if (appImage.isSet()) packagers.appImage = appImage.toModel() if (asdf.isSet()) packagers.asdf = asdf.toModel() if (brew.isSet()) packagers.brew = brew.toModel() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/RegistryImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/RegistryImpl.groovy similarity index 78% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/RegistryImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/RegistryImpl.groovy index e65da64d7..bd8913cb8 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/RegistryImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/RegistryImpl.groovy @@ -15,13 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Registry +import org.jreleaser.gradle.plugin.dsl.packagers.Registry +import org.jreleaser.model.internal.packagers.DockerConfiguration import javax.inject.Inject @@ -41,14 +42,14 @@ class RegistryImpl implements Registry { @Inject RegistryImpl(String name, ObjectFactory objects) { this.name = name - server = objects.property(String).convention(Providers.notDefined()) - repositoryName = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) + server = objects.property(String).convention(Providers. notDefined()) + repositoryName = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) } - org.jreleaser.model.Registry toModel() { - org.jreleaser.model.Registry registry = new org.jreleaser.model.Registry() + DockerConfiguration.Registry toModel() { + DockerConfiguration.Registry registry = new DockerConfiguration.Registry() registry.serverName = name if (server.present) registry.server = server.get() if (repositoryName.present) registry.repositoryName = repositoryName.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScoopImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/ScoopPackagerImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScoopImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/ScoopPackagerImpl.groovy index d8b08d371..2a0b6de5c 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ScoopImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/ScoopPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -23,9 +23,10 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Scoop -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.ScoopPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -36,7 +37,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class ScoopImpl extends AbstractRepositoryPackager implements Scoop { +class ScoopPackagerImpl extends AbstractRepositoryPackager implements ScoopPackager { final Property packageName final Property checkverUrl final Property autoupdateUrl @@ -44,11 +45,11 @@ class ScoopImpl extends AbstractRepositoryPackager implements Scoop { final TapImpl bucket @Inject - ScoopImpl(ObjectFactory objects) { + ScoopPackagerImpl(ObjectFactory objects) { super(objects) - packageName = objects.property(String).convention(Providers.notDefined()) - checkverUrl = objects.property(String).convention(Providers.notDefined()) - autoupdateUrl = objects.property(String).convention(Providers.notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + checkverUrl = objects.property(String).convention(Providers. notDefined()) + autoupdateUrl = objects.property(String).convention(Providers. notDefined()) bucket = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) } @@ -84,8 +85,8 @@ class ScoopImpl extends AbstractRepositoryPackager implements Scoop { ConfigureUtil.configure(action, commitAuthor) } - org.jreleaser.model.Scoop toModel() { - org.jreleaser.model.Scoop packager = new org.jreleaser.model.Scoop() + org.jreleaser.model.internal.packagers.ScoopPackager toModel() { + org.jreleaser.model.internal.packagers.ScoopPackager packager = new org.jreleaser.model.internal.packagers.ScoopPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (packageName.present) packager.packageName = packageName.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SdkmanImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SdkmanPackagerImpl.groovy similarity index 74% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SdkmanImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SdkmanPackagerImpl.groovy index 5b4745c27..4065e37d7 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SdkmanImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SdkmanPackagerImpl.groovy @@ -15,14 +15,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Sdkman +import org.jreleaser.gradle.plugin.dsl.packagers.SdkmanPackager +import org.jreleaser.model.Sdkman import javax.inject.Inject @@ -34,31 +35,31 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.6.0 */ @CompileStatic -class SdkmanImpl extends AbstractPackager implements Sdkman { +class SdkmanPackagerImpl extends AbstractPackager implements SdkmanPackager { final Property consumerKey final Property consumerToken final Property candidate final Property releaseNotesUrl final Property connectTimeout final Property readTimeout - final Property command + final Property command @Inject - SdkmanImpl(ObjectFactory objects) { + SdkmanPackagerImpl(ObjectFactory objects) { super(objects) - consumerKey = objects.property(String).convention(Providers.notDefined()) - consumerToken = objects.property(String).convention(Providers.notDefined()) - candidate = objects.property(String).convention(Providers.notDefined()) - releaseNotesUrl = objects.property(String).convention(Providers.notDefined()) - connectTimeout = objects.property(Integer).convention(Providers.notDefined()) - readTimeout = objects.property(Integer).convention(Providers.notDefined()) - command = objects.property(org.jreleaser.model.Sdkman.Command).convention(Providers.notDefined()) + consumerKey = objects.property(String).convention(Providers. notDefined()) + consumerToken = objects.property(String).convention(Providers. notDefined()) + candidate = objects.property(String).convention(Providers. notDefined()) + releaseNotesUrl = objects.property(String).convention(Providers. notDefined()) + connectTimeout = objects.property(Integer).convention(Providers. notDefined()) + readTimeout = objects.property(Integer).convention(Providers. notDefined()) + command = objects.property(Sdkman.Command).convention(Providers. notDefined()) } @Override void setCommand(String str) { if (isNotBlank(str)) { - command.set(org.jreleaser.model.Sdkman.Command.of(str.trim())) + command.set(Sdkman.Command.of(str.trim())) } } @@ -75,8 +76,8 @@ class SdkmanImpl extends AbstractPackager implements Sdkman { command.present } - org.jreleaser.model.Sdkman toModel() { - org.jreleaser.model.Sdkman sdkman = new org.jreleaser.model.Sdkman() + org.jreleaser.model.internal.packagers.SdkmanPackager toModel() { + org.jreleaser.model.internal.packagers.SdkmanPackager sdkman = new org.jreleaser.model.internal.packagers.SdkmanPackager() fillPackagerProperties(sdkman) if (consumerKey.present) sdkman.consumerKey = consumerKey.get() if (consumerToken.present) sdkman.consumerToken = consumerToken.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SnapImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SnapPackagerImpl.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SnapImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SnapPackagerImpl.groovy index 7d10c96bc..782f73e44 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SnapImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SnapPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -29,9 +29,10 @@ import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Snap -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.SnapPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -44,7 +45,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -class SnapImpl extends AbstractRepositoryPackager implements Snap { +class SnapPackagerImpl extends AbstractRepositoryPackager implements SnapPackager { final Property packageName final Property base final Property grade @@ -61,16 +62,16 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { private final NamedDomainObjectContainer architectures @Inject - SnapImpl(ObjectFactory objects) { + SnapPackagerImpl(ObjectFactory objects) { super(objects) - packageName = objects.property(String).convention(Providers.notDefined()) - base = objects.property(String).convention(Providers.notDefined()) - grade = objects.property(String).convention(Providers.notDefined()) - confinement = objects.property(String).convention(Providers.notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + base = objects.property(String).convention(Providers. notDefined()) + grade = objects.property(String).convention(Providers. notDefined()) + confinement = objects.property(String).convention(Providers. notDefined()) exportedLogin = objects.fileProperty().convention(Providers.notDefined()) - remoteBuild = objects.property(Boolean).convention(Providers.notDefined()) - localPlugs = objects.setProperty(String).convention(Providers.notDefined()) - localSlots = objects.setProperty(String).convention(Providers.notDefined()) + remoteBuild = objects.property(Boolean).convention(Providers. notDefined()) + localPlugs = objects.setProperty(String).convention(Providers.> notDefined()) + localSlots = objects.setProperty(String).convention(Providers.> notDefined()) snap = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) @@ -189,8 +190,8 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { ConfigureUtil.configure(action, snap) } - org.jreleaser.model.Snap toModel() { - org.jreleaser.model.Snap packager = new org.jreleaser.model.Snap() + org.jreleaser.model.internal.packagers.SnapPackager toModel() { + org.jreleaser.model.internal.packagers.SnapPackager packager = new org.jreleaser.model.internal.packagers.SnapPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (snap.isSet()) packager.snap = snap.toSnapTap() @@ -208,10 +209,10 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { packager.localSlots = (Set) localSlots.getOrElse([] as Set) packager.plugs.addAll(plugs.collect([]) { Plug plug -> ((PlugImpl) plug).toModel() - } as Set) + } as Set) packager.slots.addAll(slots.collect([]) { Slot slot -> ((SlotImpl) slot).toModel() - } as Set) + } as Set) for (ArchitectureImpl architecture : architectures) { packager.addArchitecture(architecture.toModel()) } @@ -228,8 +229,8 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { @Inject SlotImpl(ObjectFactory objects) { attributes = objects.mapProperty(String, String).convention([:]) - reads = objects.listProperty(String).convention(Providers.notDefined()) - writes = objects.listProperty(String).convention(Providers.notDefined()) + reads = objects.listProperty(String).convention(Providers.> notDefined()) + writes = objects.listProperty(String).convention(Providers.> notDefined()) } void setName(String name) { @@ -257,8 +258,8 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { } } - org.jreleaser.model.Snap.Slot toModel() { - org.jreleaser.model.Snap.Slot slot = new org.jreleaser.model.Snap.Slot() + org.jreleaser.model.internal.packagers.SnapPackager.Slot toModel() { + org.jreleaser.model.internal.packagers.SnapPackager.Slot slot = new org.jreleaser.model.internal.packagers.SnapPackager.Slot() slot.name = name slot.attributes.putAll(attributes.get()) slot.reads = (List) reads.getOrElse([]) @@ -277,8 +278,8 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { @Inject PlugImpl(ObjectFactory objects) { attributes = objects.mapProperty(String, String).convention([:]) - reads = objects.listProperty(String).convention(Providers.notDefined()) - writes = objects.listProperty(String).convention(Providers.notDefined()) + reads = objects.listProperty(String).convention(Providers.> notDefined()) + writes = objects.listProperty(String).convention(Providers.> notDefined()) } void setName(String name) { @@ -306,8 +307,8 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { } } - org.jreleaser.model.Snap.Plug toModel() { - org.jreleaser.model.Snap.Plug plug = new org.jreleaser.model.Snap.Plug() + org.jreleaser.model.internal.packagers.SnapPackager.Plug toModel() { + org.jreleaser.model.internal.packagers.SnapPackager.Plug plug = new org.jreleaser.model.internal.packagers.SnapPackager.Plug() plug.name = name plug.attributes.putAll(attributes.get()) plug.reads = (List) reads.getOrElse([]) @@ -325,9 +326,9 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { @Inject ArchitectureImpl(ObjectFactory objects) { - buildOn = objects.listProperty(String).convention(Providers.notDefined()) - runOn = objects.listProperty(String).convention(Providers.notDefined()) - ignoreError = objects.property(Boolean).convention(Providers.notDefined()) + buildOn = objects.listProperty(String).convention(Providers.> notDefined()) + runOn = objects.listProperty(String).convention(Providers.> notDefined()) + ignoreError = objects.property(Boolean).convention(Providers. notDefined()) } @Override @@ -344,8 +345,8 @@ class SnapImpl extends AbstractRepositoryPackager implements Snap { } } - org.jreleaser.model.Snap.Architecture toModel() { - org.jreleaser.model.Snap.Architecture architecture = new org.jreleaser.model.Snap.Architecture() + org.jreleaser.model.internal.packagers.SnapPackager.Architecture toModel() { + org.jreleaser.model.internal.packagers.SnapPackager.Architecture architecture = new org.jreleaser.model.internal.packagers.SnapPackager.Architecture() architecture.buildOn = (List) buildOn.getOrElse([]) architecture.runOn = (List) runOn.getOrElse([]) architecture.ignoreError = ignoreError.getOrElse(false) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SpecImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SpecPackagerImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SpecImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SpecPackagerImpl.groovy index 438bcaf1b..10d222f87 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SpecImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/SpecPackagerImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.Action @@ -24,9 +24,10 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.Spec -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.packagers.SpecPackager +import org.jreleaser.gradle.plugin.dsl.packagers.Tap +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -37,7 +38,7 @@ import javax.inject.Inject * @since 0.9.1 */ @CompileStatic -class SpecImpl extends AbstractRepositoryPackager implements Spec { +class SpecPackagerImpl extends AbstractRepositoryPackager implements SpecPackager { final Property packageName final Property release final CommitAuthorImpl commitAuthor @@ -45,13 +46,13 @@ class SpecImpl extends AbstractRepositoryPackager implements Spec { final ListProperty requires @Inject - SpecImpl(ObjectFactory objects) { + SpecPackagerImpl(ObjectFactory objects) { super(objects) - packageName = objects.property(String).convention(Providers.notDefined()) - release = objects.property(String).convention(Providers.notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + release = objects.property(String).convention(Providers. notDefined()) repository = objects.newInstance(TapImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) - requires = objects.listProperty(String).convention(Providers.notDefined()) + requires = objects.listProperty(String).convention(Providers.> notDefined()) } @Override @@ -85,8 +86,8 @@ class SpecImpl extends AbstractRepositoryPackager implements Spec { ConfigureUtil.configure(action, commitAuthor) } - org.jreleaser.model.Spec toModel() { - org.jreleaser.model.Spec packager = new org.jreleaser.model.Spec() + org.jreleaser.model.internal.packagers.SpecPackager toModel() { + org.jreleaser.model.internal.packagers.SpecPackager packager = new org.jreleaser.model.internal.packagers.SpecPackager() fillPackagerProperties(packager) fillTemplatePackagerProperties(packager) if (packageName.present) packager.packageName = packageName.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TapImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/TapImpl.groovy similarity index 50% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TapImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/TapImpl.groovy index bfa3cce0b..4ce9eea1d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/TapImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/packagers/TapImpl.groovy @@ -15,28 +15,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.packagers import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Tap +import org.jreleaser.gradle.plugin.dsl.packagers.Tap import org.jreleaser.model.Active -import org.jreleaser.model.AppImage -import org.jreleaser.model.Asdf -import org.jreleaser.model.Brew -import org.jreleaser.model.Chocolatey -import org.jreleaser.model.Flatpak -import org.jreleaser.model.Gofish -import org.jreleaser.model.Jbang -import org.jreleaser.model.Macports -import org.jreleaser.model.Repository -import org.jreleaser.model.RepositoryTap -import org.jreleaser.model.Scoop -import org.jreleaser.model.Snap -import org.jreleaser.model.Spec +import org.jreleaser.model.internal.announce.ArticleAnnouncer +import org.jreleaser.model.internal.packagers.AbstractRepositoryTap +import org.jreleaser.model.internal.packagers.AppImagePackager +import org.jreleaser.model.internal.packagers.AsdfPackager +import org.jreleaser.model.internal.packagers.BrewPackager +import org.jreleaser.model.internal.packagers.ChocolateyPackager +import org.jreleaser.model.internal.packagers.FlatpakPackager +import org.jreleaser.model.internal.packagers.GofishPackager +import org.jreleaser.model.internal.packagers.JbangPackager +import org.jreleaser.model.internal.packagers.MacportsPackager +import org.jreleaser.model.internal.packagers.ScoopPackager +import org.jreleaser.model.internal.packagers.SnapPackager +import org.jreleaser.model.internal.packagers.SpecPackager import javax.inject.Inject @@ -60,14 +60,14 @@ class TapImpl implements Tap { @Inject TapImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - repoOwner = objects.property(String).convention(Providers.notDefined()) - name = objects.property(String).convention(Providers.notDefined()) - tagName = objects.property(String).convention(Providers.notDefined()) - branch = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - token = objects.property(String).convention(Providers.notDefined()) - commitMessage = objects.property(String).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + repoOwner = objects.property(String).convention(Providers. notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + tagName = objects.property(String).convention(Providers. notDefined()) + branch = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + token = objects.property(String).convention(Providers. notDefined()) + commitMessage = objects.property(String).convention(Providers. notDefined()) } @Override @@ -89,7 +89,7 @@ class TapImpl implements Tap { commitMessage.present } - private void convert(RepositoryTap into) { + private void convert(AbstractRepositoryTap into) { if (active.present) into.active = active.get() if (repoOwner.present) into.owner = repoOwner.get() if (name.present) into.name = name.get() @@ -100,74 +100,74 @@ class TapImpl implements Tap { if (commitMessage.present) into.commitMessage = commitMessage.get() } - AppImage.AppImageRepository toAppImageRepository() { - AppImage.AppImageRepository tap = new AppImage.AppImageRepository() + AppImagePackager.AppImageRepository toAppImageRepository() { + AppImagePackager.AppImageRepository tap = new AppImagePackager.AppImageRepository() convert(tap) tap } - Asdf.AsdfRepository toAsdfRepository() { - Asdf.AsdfRepository tap = new Asdf.AsdfRepository() + AsdfPackager.AsdfRepository toAsdfRepository() { + AsdfPackager.AsdfRepository tap = new AsdfPackager.AsdfRepository() convert(tap) tap } - Brew.HomebrewTap toHomebrewTap() { - Brew.HomebrewTap tap = new Brew.HomebrewTap() + BrewPackager.HomebrewTap toHomebrewTap() { + BrewPackager.HomebrewTap tap = new BrewPackager.HomebrewTap() convert(tap) tap } - Macports.MacportsRepository toMacportsRepository() { - Macports.MacportsRepository tap = new Macports.MacportsRepository() + MacportsPackager.MacportsRepository toMacportsRepository() { + MacportsPackager.MacportsRepository tap = new MacportsPackager.MacportsRepository() convert(tap) tap } - Flatpak.FlatpakRepository toFlatpakRepository() { - Flatpak.FlatpakRepository tap = new Flatpak.FlatpakRepository() + FlatpakPackager.FlatpakRepository toFlatpakRepository() { + FlatpakPackager.FlatpakRepository tap = new FlatpakPackager.FlatpakRepository() convert(tap) tap } - Gofish.GofishRepository toGofishRepository() { - Gofish.GofishRepository tap = new Gofish.GofishRepository() + GofishPackager.GofishRepository toGofishRepository() { + GofishPackager.GofishRepository tap = new GofishPackager.GofishRepository() convert(tap) tap } - Spec.SpecRepository toSpecRepository() { - Spec.SpecRepository tap = new Spec.SpecRepository() + SpecPackager.SpecRepository toSpecRepository() { + SpecPackager.SpecRepository tap = new SpecPackager.SpecRepository() convert(tap) tap } - Snap.SnapTap toSnapTap() { - Snap.SnapTap tap = new Snap.SnapTap() + SnapPackager.SnapRepository toSnapTap() { + SnapPackager.SnapRepository tap = new SnapPackager.SnapRepository() convert(tap) tap } - Repository toRepository() { - Repository tap = new Repository() + ArticleAnnouncer.Repository toRepository() { + ArticleAnnouncer.Repository tap = new ArticleAnnouncer.Repository() convert(tap) tap } - Scoop.ScoopBucket toScoopBucket() { - Scoop.ScoopBucket tap = new Scoop.ScoopBucket() + ScoopPackager.ScoopRepository toScoopBucket() { + ScoopPackager.ScoopRepository tap = new ScoopPackager.ScoopRepository() convert(tap) tap } - Chocolatey.ChocolateyBucket toChocolateyBucket() { - Chocolatey.ChocolateyBucket tap = new Chocolatey.ChocolateyBucket() + ChocolateyPackager.ChocolateyRepository toChocolateyBucket() { + ChocolateyPackager.ChocolateyRepository tap = new ChocolateyPackager.ChocolateyRepository() convert(tap) tap } - Jbang.JbangCatalog toJbangCatalog() { - Jbang.JbangCatalog tap = new Jbang.JbangCatalog() + JbangPackager.JbangRepository toJbangCatalog() { + JbangPackager.JbangRepository tap = new JbangPackager.JbangRepository() convert(tap) tap } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/PlatformImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/platform/PlatformImpl.groovy similarity index 81% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/PlatformImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/platform/PlatformImpl.groovy index a82335205..829176dd1 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/PlatformImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/platform/PlatformImpl.groovy @@ -15,13 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.platform import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty -import org.jreleaser.gradle.plugin.dsl.Platform +import org.jreleaser.gradle.plugin.dsl.platform.Platform import javax.inject.Inject @@ -43,8 +43,8 @@ class PlatformImpl implements Platform { replacements.present } - org.jreleaser.model.Platform toModel() { - org.jreleaser.model.Platform environment = new org.jreleaser.model.Platform() + org.jreleaser.model.internal.platform.Platform toModel() { + org.jreleaser.model.internal.platform.Platform environment = new org.jreleaser.model.internal.platform.Platform() if (replacements.present) environment.properties.putAll(replacements.get()) environment } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ProjectImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/project/ProjectImpl.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ProjectImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/project/ProjectImpl.groovy index 6058c88a2..aadcf0fe0 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ProjectImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/project/ProjectImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.project import groovy.transform.CompileStatic import org.gradle.api.Action @@ -28,10 +28,13 @@ import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Icon -import org.jreleaser.gradle.plugin.dsl.Java -import org.jreleaser.gradle.plugin.dsl.Project -import org.jreleaser.gradle.plugin.dsl.Screenshot +import org.jreleaser.gradle.plugin.dsl.common.Icon +import org.jreleaser.gradle.plugin.dsl.common.Java +import org.jreleaser.gradle.plugin.dsl.common.Screenshot +import org.jreleaser.gradle.plugin.dsl.project.Project +import org.jreleaser.gradle.plugin.internal.dsl.common.IconImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.JavaImpl +import org.jreleaser.gradle.plugin.internal.dsl.common.ScreenshotImpl import org.jreleaser.model.Stereotype import org.kordamp.gradle.util.ConfigureUtil @@ -77,20 +80,20 @@ class ProjectImpl implements Project { Provider versionProvider) { name = objects.property(String).convention(nameProvider) version = objects.property(String).convention(versionProvider) - versionPattern = objects.property(String).convention(Providers.notDefined()) + versionPattern = objects.property(String).convention(Providers. notDefined()) description = objects.property(String).convention(descriptionProvider) longDescription = objects.property(String).convention(descriptionProvider) - website = objects.property(String).convention(Providers.notDefined()) - license = objects.property(String).convention(Providers.notDefined()) - inceptionYear = objects.property(String).convention(Providers.notDefined()) - licenseUrl = objects.property(String).convention(Providers.notDefined()) - copyright = objects.property(String).convention(Providers.notDefined()) - vendor = objects.property(String).convention(Providers.notDefined()) - docsUrl = objects.property(String).convention(Providers.notDefined()) - stereotype = objects.property(Stereotype).convention(Providers.notDefined()) - authors = objects.listProperty(String).convention(Providers.notDefined()) - tags = objects.listProperty(String).convention(Providers.notDefined()) - maintainers = objects.listProperty(String).convention(Providers.notDefined()) + website = objects.property(String).convention(Providers. notDefined()) + license = objects.property(String).convention(Providers. notDefined()) + inceptionYear = objects.property(String).convention(Providers. notDefined()) + licenseUrl = objects.property(String).convention(Providers. notDefined()) + copyright = objects.property(String).convention(Providers. notDefined()) + vendor = objects.property(String).convention(Providers. notDefined()) + docsUrl = objects.property(String).convention(Providers. notDefined()) + stereotype = objects.property(Stereotype).convention(Providers. notDefined()) + authors = objects.listProperty(String).convention(Providers.> notDefined()) + tags = objects.listProperty(String).convention(Providers.> notDefined()) + maintainers = objects.listProperty(String).convention(Providers.> notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) java = objects.newInstance(JavaImpl, objects) @@ -194,8 +197,8 @@ class ProjectImpl implements Project { ConfigureUtil.configure(action, icons.maybeCreate("icons-${icons.size()}".toString())) } - org.jreleaser.model.Project toModel() { - org.jreleaser.model.Project project = new org.jreleaser.model.Project() + org.jreleaser.model.internal.project.Project toModel() { + org.jreleaser.model.internal.project.Project project = new org.jreleaser.model.internal.project.Project() project.name = name.get() project.version = version.get() if (versionPattern.present) project.versionPattern = versionPattern.get() @@ -233,9 +236,9 @@ class ProjectImpl implements Project { @Inject SnapshotImpl(ObjectFactory objects) { - pattern = objects.property(String).convention(Providers.notDefined()) - label = objects.property(String).convention(Providers.notDefined()) - fullChangelog = objects.property(Boolean).convention(Providers.notDefined()) + pattern = objects.property(String).convention(Providers. notDefined()) + label = objects.property(String).convention(Providers. notDefined()) + fullChangelog = objects.property(Boolean).convention(Providers. notDefined()) } @Internal @@ -245,8 +248,8 @@ class ProjectImpl implements Project { fullChangelog.present } - org.jreleaser.model.Project.Snapshot toModel() { - org.jreleaser.model.Project.Snapshot snapshot = new org.jreleaser.model.Project.Snapshot() + org.jreleaser.model.internal.project.Project.Snapshot toModel() { + org.jreleaser.model.internal.project.Project.Snapshot snapshot = new org.jreleaser.model.internal.project.Project.Snapshot() if (pattern.present) snapshot.pattern = pattern.get() if (label.present) snapshot.label = label.get() if (fullChangelog.present) snapshot.fullChangelog = fullChangelog.get() @@ -271,17 +274,17 @@ class ProjectImpl implements Project { @Inject LinksImpl(ObjectFactory objects) { - homepage = objects.property(String).convention(Providers.notDefined()) - documentation = objects.property(String).convention(Providers.notDefined()) - license = objects.property(String).convention(Providers.notDefined()) - bugTracker = objects.property(String).convention(Providers.notDefined()) - faq = objects.property(String).convention(Providers.notDefined()) - help = objects.property(String).convention(Providers.notDefined()) - donation = objects.property(String).convention(Providers.notDefined()) - translate = objects.property(String).convention(Providers.notDefined()) - contact = objects.property(String).convention(Providers.notDefined()) - vcsBrowser = objects.property(String).convention(Providers.notDefined()) - contribute = objects.property(String).convention(Providers.notDefined()) + homepage = objects.property(String).convention(Providers. notDefined()) + documentation = objects.property(String).convention(Providers. notDefined()) + license = objects.property(String).convention(Providers. notDefined()) + bugTracker = objects.property(String).convention(Providers. notDefined()) + faq = objects.property(String).convention(Providers. notDefined()) + help = objects.property(String).convention(Providers. notDefined()) + donation = objects.property(String).convention(Providers. notDefined()) + translate = objects.property(String).convention(Providers. notDefined()) + contact = objects.property(String).convention(Providers. notDefined()) + vcsBrowser = objects.property(String).convention(Providers. notDefined()) + contribute = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -299,8 +302,8 @@ class ProjectImpl implements Project { contribute.present } - org.jreleaser.model.Project.Links toModel() { - org.jreleaser.model.Project.Links links = new org.jreleaser.model.Project.Links() + org.jreleaser.model.internal.project.Project.Links toModel() { + org.jreleaser.model.internal.project.Project.Links links = new org.jreleaser.model.internal.project.Project.Links() if (homepage.present) links.homepage = homepage.get() if (documentation.present) links.documentation = documentation.get() if (license.present) links.license = license.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractGitService.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/BaseReleaserImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractGitService.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/BaseReleaserImpl.groovy index ae0431bdd..672534adb 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractGitService.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/BaseReleaserImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -24,9 +24,9 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Changelog -import org.jreleaser.gradle.plugin.dsl.CommitAuthor -import org.jreleaser.gradle.plugin.dsl.GitService +import org.jreleaser.gradle.plugin.dsl.common.CommitAuthor +import org.jreleaser.gradle.plugin.dsl.release.BaseReleaser +import org.jreleaser.gradle.plugin.dsl.release.Changelog import org.jreleaser.model.Active import org.jreleaser.model.UpdateSection import org.kordamp.gradle.util.ConfigureUtil @@ -41,7 +41,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.1.0 */ @CompileStatic -abstract class AbstractGitService implements GitService { +abstract class BaseReleaserImpl implements BaseReleaser { final Property enabled final Property host final Property repoOwner @@ -77,38 +77,38 @@ abstract class AbstractGitService implements GitService { final IssuesImpl issues @Inject - AbstractGitService(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) - host = objects.property(String).convention(Providers.notDefined()) - repoOwner = objects.property(String).convention(Providers.notDefined()) - name = objects.property(String).convention(Providers.notDefined()) - repoUrl = objects.property(String).convention(Providers.notDefined()) - repoCloneUrl = objects.property(String).convention(Providers.notDefined()) - commitUrl = objects.property(String).convention(Providers.notDefined()) - srcUrl = objects.property(String).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) - releaseNotesUrl = objects.property(String).convention(Providers.notDefined()) - latestReleaseUrl = objects.property(String).convention(Providers.notDefined()) - issueTrackerUrl = objects.property(String).convention(Providers.notDefined()) - - username = objects.property(String).convention(Providers.notDefined()) - token = objects.property(String).convention(Providers.notDefined()) - tagName = objects.property(String).convention(Providers.notDefined()) - previousTagName = objects.property(String).convention(Providers.notDefined()) - releaseName = objects.property(String).convention(Providers.notDefined()) - branch = objects.property(String).convention(Providers.notDefined()) - sign = objects.property(Boolean).convention(Providers.notDefined()) - skipTag = objects.property(Boolean).convention(Providers.notDefined()) - skipRelease = objects.property(Boolean).convention(Providers.notDefined()) - apiEndpoint = objects.property(String).convention(Providers.notDefined()) - connectTimeout = objects.property(Integer).convention(Providers.notDefined()) - readTimeout = objects.property(Integer).convention(Providers.notDefined()) - artifacts = objects.property(Boolean).convention(Providers.notDefined()) - files = objects.property(Boolean).convention(Providers.notDefined()) - checksums = objects.property(Boolean).convention(Providers.notDefined()) - signatures = objects.property(Boolean).convention(Providers.notDefined()) - overwrite = objects.property(Boolean).convention(Providers.notDefined()) - uploadAssets = objects.property(Active).convention(Providers.notDefined()) + BaseReleaserImpl(ObjectFactory objects) { + enabled = objects.property(Boolean).convention(Providers. notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + repoOwner = objects.property(String).convention(Providers. notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + repoUrl = objects.property(String).convention(Providers. notDefined()) + repoCloneUrl = objects.property(String).convention(Providers. notDefined()) + commitUrl = objects.property(String).convention(Providers. notDefined()) + srcUrl = objects.property(String).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) + releaseNotesUrl = objects.property(String).convention(Providers. notDefined()) + latestReleaseUrl = objects.property(String).convention(Providers. notDefined()) + issueTrackerUrl = objects.property(String).convention(Providers. notDefined()) + + username = objects.property(String).convention(Providers. notDefined()) + token = objects.property(String).convention(Providers. notDefined()) + tagName = objects.property(String).convention(Providers. notDefined()) + previousTagName = objects.property(String).convention(Providers. notDefined()) + releaseName = objects.property(String).convention(Providers. notDefined()) + branch = objects.property(String).convention(Providers. notDefined()) + sign = objects.property(Boolean).convention(Providers. notDefined()) + skipTag = objects.property(Boolean).convention(Providers. notDefined()) + skipRelease = objects.property(Boolean).convention(Providers. notDefined()) + apiEndpoint = objects.property(String).convention(Providers. notDefined()) + connectTimeout = objects.property(Integer).convention(Providers. notDefined()) + readTimeout = objects.property(Integer).convention(Providers. notDefined()) + artifacts = objects.property(Boolean).convention(Providers. notDefined()) + files = objects.property(Boolean).convention(Providers. notDefined()) + checksums = objects.property(Boolean).convention(Providers. notDefined()) + signatures = objects.property(Boolean).convention(Providers. notDefined()) + overwrite = objects.property(Boolean).convention(Providers. notDefined()) + uploadAssets = objects.property(Active).convention(Providers. notDefined()) update = objects.newInstance(UpdateImpl, objects) issues = objects.newInstance(IssuesImpl, objects) @@ -207,7 +207,7 @@ abstract class AbstractGitService implements GitService { ConfigureUtil.configure(action, issues) } - protected void toModel(org.jreleaser.model.GitService service) { + protected void toModel(org.jreleaser.model.internal.release.BaseReleaser service) { if (enabled.present) service.enabled = enabled.get() if (host.present) service.host = host.get() if (repoOwner.present) service.owner = repoOwner.get() @@ -249,8 +249,8 @@ abstract class AbstractGitService implements GitService { @Inject UpdateImpl(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) - sections = objects.setProperty(UpdateSection).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) + sections = objects.setProperty(UpdateSection).convention(Providers.> notDefined()) } @Internal @@ -266,8 +266,8 @@ abstract class AbstractGitService implements GitService { } } - org.jreleaser.model.GitService.Update toModel() { - org.jreleaser.model.GitService.Update update = new org.jreleaser.model.GitService.Update() + org.jreleaser.model.internal.release.BaseReleaser.Update toModel() { + org.jreleaser.model.internal.release.BaseReleaser.Update update = new org.jreleaser.model.internal.release.BaseReleaser.Update() if (enabled.present) update.enabled = enabled.get() update.sections = (Set) sections.getOrElse([] as Set) update @@ -281,8 +281,8 @@ abstract class AbstractGitService implements GitService { @Inject PrereleaseImpl(ObjectFactory objects) { - pattern = objects.property(String).convention(Providers.notDefined()) - enabled = objects.property(Boolean).convention(Providers.notDefined()) + pattern = objects.property(String).convention(Providers. notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) } @Internal @@ -291,8 +291,8 @@ abstract class AbstractGitService implements GitService { enabled.present } - org.jreleaser.model.GitService.Prerelease toModel() { - org.jreleaser.model.GitService.Prerelease prerelease = new org.jreleaser.model.GitService.Prerelease() + org.jreleaser.model.internal.release.BaseReleaser.Prerelease toModel() { + org.jreleaser.model.internal.release.BaseReleaser.Prerelease prerelease = new org.jreleaser.model.internal.release.BaseReleaser.Prerelease() if (pattern.present) prerelease.pattern = pattern.get() if (enabled.present) prerelease.enabled = enabled.get() prerelease @@ -306,8 +306,8 @@ abstract class AbstractGitService implements GitService { @Inject MilestoneImpl(ObjectFactory objects) { - close = objects.property(Boolean).convention(Providers.notDefined()) - name = objects.property(String).convention(Providers.notDefined()) + close = objects.property(Boolean).convention(Providers. notDefined()) + name = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -316,8 +316,8 @@ abstract class AbstractGitService implements GitService { name.present } - org.jreleaser.model.GitService.Milestone toModel() { - org.jreleaser.model.GitService.Milestone milestone = new org.jreleaser.model.GitService.Milestone() + org.jreleaser.model.internal.release.BaseReleaser.Milestone toModel() { + org.jreleaser.model.internal.release.BaseReleaser.Milestone milestone = new org.jreleaser.model.internal.release.BaseReleaser.Milestone() if (close.present) milestone.close = close.get() if (name.present) milestone.name = name.get() milestone @@ -332,8 +332,8 @@ abstract class AbstractGitService implements GitService { @Inject IssuesImpl(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) - comment = objects.property(String).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) + comment = objects.property(String).convention(Providers. notDefined()) label = objects.newInstance(LabelImpl, objects) } @@ -354,8 +354,8 @@ abstract class AbstractGitService implements GitService { ConfigureUtil.configure(action, label) } - org.jreleaser.model.GitService.Issues toModel() { - org.jreleaser.model.GitService.Issues issues = new org.jreleaser.model.GitService.Issues() + org.jreleaser.model.internal.release.BaseReleaser.Issues toModel() { + org.jreleaser.model.internal.release.BaseReleaser.Issues issues = new org.jreleaser.model.internal.release.BaseReleaser.Issues() if (enabled.present) issues.enabled = enabled.get() if (comment.present) issues.comment = comment.get() if (label.isSet()) issues.label = label.toModel() @@ -370,9 +370,9 @@ abstract class AbstractGitService implements GitService { @Inject LabelImpl(ObjectFactory objects) { - name = objects.property(String).convention(Providers.notDefined()) - color = objects.property(String).convention(Providers.notDefined()) - description = objects.property(String).convention(Providers.notDefined()) + name = objects.property(String).convention(Providers. notDefined()) + color = objects.property(String).convention(Providers. notDefined()) + description = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -382,8 +382,8 @@ abstract class AbstractGitService implements GitService { description.present } - org.jreleaser.model.GitService.Issues.Label toModel() { - org.jreleaser.model.GitService.Issues.Label label = new org.jreleaser.model.GitService.Issues.Label() + org.jreleaser.model.internal.release.BaseReleaser.Issues.Label toModel() { + org.jreleaser.model.internal.release.BaseReleaser.Issues.Label label = new org.jreleaser.model.internal.release.BaseReleaser.Issues.Label() if (name.present) label.name = name.get() if (color.present) label.color = color.get() if (description.present) label.description = description.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChangelogImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/ChangelogImpl.groovy similarity index 82% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChangelogImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/ChangelogImpl.groovy index af32f0d97..73500191d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ChangelogImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/ChangelogImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -25,7 +25,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Changelog +import org.jreleaser.gradle.plugin.dsl.release.Changelog import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -64,19 +64,19 @@ class ChangelogImpl implements Changelog { @Inject ChangelogImpl(ObjectFactory objects) { this.objects = objects - enabled = objects.property(Boolean).convention(Providers.notDefined()) - links = objects.property(Boolean).convention(Providers.notDefined()) - hideUncategorized = objects.property(Boolean).convention(Providers.notDefined()) - skipMergeCommits = objects.property(Boolean).convention(Providers.notDefined()) - sort = objects.property(org.jreleaser.model.Changelog.Sort).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) + links = objects.property(Boolean).convention(Providers. notDefined()) + hideUncategorized = objects.property(Boolean).convention(Providers. notDefined()) + skipMergeCommits = objects.property(Boolean).convention(Providers. notDefined()) + sort = objects.property(org.jreleaser.model.Changelog.Sort).convention(Providers. notDefined()) external = objects.fileProperty().convention(Providers.notDefined()) - formatted = objects.property(Active).convention(Providers.notDefined()) - format = objects.property(String).convention(Providers.notDefined()) - preset = objects.property(String).convention(Providers.notDefined()) - content = objects.property(String).convention(Providers.notDefined()) + formatted = objects.property(Active).convention(Providers. notDefined()) + format = objects.property(String).convention(Providers. notDefined()) + preset = objects.property(String).convention(Providers. notDefined()) + content = objects.property(String).convention(Providers. notDefined()) contentTemplate = objects.fileProperty().convention(Providers.notDefined()) - includeLabels = objects.setProperty(String).convention(Providers.notDefined()) - excludeLabels = objects.setProperty(String).convention(Providers.notDefined()) + includeLabels = objects.setProperty(String).convention(Providers.> notDefined()) + excludeLabels = objects.setProperty(String).convention(Providers.> notDefined()) hide = objects.newInstance(HideImpl, objects) contributors = objects.newInstance(ContributorsImpl, objects) } @@ -100,7 +100,7 @@ class ChangelogImpl implements Changelog { @Internal boolean isSet() { - links.present || + links.present || skipMergeCommits.present || hideUncategorized.present || external.present || @@ -200,8 +200,8 @@ class ChangelogImpl implements Changelog { ConfigureUtil.configure(action, contributors) } - org.jreleaser.model.Changelog toModel() { - org.jreleaser.model.Changelog changelog = new org.jreleaser.model.Changelog() + org.jreleaser.model.internal.release.Changelog toModel() { + org.jreleaser.model.internal.release.Changelog changelog = new org.jreleaser.model.internal.release.Changelog() if (enabled.present) { changelog.enabled = enabled.get() } else { @@ -226,13 +226,13 @@ class ChangelogImpl implements Changelog { changelog.excludeLabels = (Set) excludeLabels.getOrElse([] as Set) changelog.setCategories(categories.collect([]) { CategoryImpl category -> category.toModel() - } as Set) + } as Set) changelog.setLabelers(labelers.collect([] as Set) { LabelerImpl labeler -> labeler.toModel() - } as Set) + } as Set) changelog.setReplacers(replacers.collect([] as List) { ReplacerImpl replacer -> replacer.toModel() - } as List) + } as List) changelog.hide = hide.toModel() changelog.contributors = contributors.toModel() changelog @@ -248,15 +248,15 @@ class ChangelogImpl implements Changelog { @Inject CategoryImpl(ObjectFactory objects) { - key = objects.property(String).convention(Providers.notDefined()) - title = objects.property(String).convention(Providers.notDefined()) - labels = objects.setProperty(String).convention(Providers.notDefined()) - format = objects.property(String).convention(Providers.notDefined()) - order = objects.property(Integer).convention(Providers.notDefined()) + key = objects.property(String).convention(Providers. notDefined()) + title = objects.property(String).convention(Providers. notDefined()) + labels = objects.setProperty(String).convention(Providers.> notDefined()) + format = objects.property(String).convention(Providers. notDefined()) + order = objects.property(Integer).convention(Providers. notDefined()) } - org.jreleaser.model.Changelog.Category toModel() { - org.jreleaser.model.Changelog.Category category = new org.jreleaser.model.Changelog.Category() + org.jreleaser.model.internal.release.Changelog.Category toModel() { + org.jreleaser.model.internal.release.Changelog.Category category = new org.jreleaser.model.internal.release.Changelog.Category() category.key = key.orNull category.title = title.orNull category.labels = (Set) labels.getOrElse([] as Set) @@ -275,14 +275,14 @@ class ChangelogImpl implements Changelog { @Inject LabelerImpl(ObjectFactory objects) { - label = objects.property(String).convention(Providers.notDefined()) - title = objects.property(String).convention(Providers.notDefined()) - body = objects.property(String).convention(Providers.notDefined()) - order = objects.property(Integer).convention(Providers.notDefined()) + label = objects.property(String).convention(Providers. notDefined()) + title = objects.property(String).convention(Providers. notDefined()) + body = objects.property(String).convention(Providers. notDefined()) + order = objects.property(Integer).convention(Providers. notDefined()) } - org.jreleaser.model.Changelog.Labeler toModel() { - org.jreleaser.model.Changelog.Labeler labeler = new org.jreleaser.model.Changelog.Labeler() + org.jreleaser.model.internal.release.Changelog.Labeler toModel() { + org.jreleaser.model.internal.release.Changelog.Labeler labeler = new org.jreleaser.model.internal.release.Changelog.Labeler() labeler.label = label.orNull labeler.title = title.orNull labeler.body = body.orNull @@ -298,12 +298,12 @@ class ChangelogImpl implements Changelog { @Inject ReplacerImpl(ObjectFactory objects) { - search = objects.property(String).convention(Providers.notDefined()) - replace = objects.property(String).convention(Providers.notDefined()) + search = objects.property(String).convention(Providers. notDefined()) + replace = objects.property(String).convention(Providers. notDefined()) } - org.jreleaser.model.Changelog.Replacer toModel() { - org.jreleaser.model.Changelog.Replacer replacer = new org.jreleaser.model.Changelog.Replacer() + org.jreleaser.model.internal.release.Changelog.Replacer toModel() { + org.jreleaser.model.internal.release.Changelog.Replacer replacer = new org.jreleaser.model.internal.release.Changelog.Replacer() replacer.search = search.orNull replacer.replace = replace.getOrElse('') replacer @@ -317,8 +317,8 @@ class ChangelogImpl implements Changelog { @Inject ContributorsImpl(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) - format = objects.property(String).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) + format = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -327,8 +327,8 @@ class ChangelogImpl implements Changelog { format.present } - org.jreleaser.model.Changelog.Contributors toModel() { - org.jreleaser.model.Changelog.Contributors contributors = new org.jreleaser.model.Changelog.Contributors() + org.jreleaser.model.internal.release.Changelog.Contributors toModel() { + org.jreleaser.model.internal.release.Changelog.Contributors contributors = new org.jreleaser.model.internal.release.Changelog.Contributors() if (enabled.present) contributors.enabled = enabled.get() if (format.present) contributors.format = format.get() contributors @@ -343,9 +343,9 @@ class ChangelogImpl implements Changelog { @Inject HideImpl(ObjectFactory objects) { - uncategorized = objects.property(Boolean).convention(Providers.notDefined()) - categories = objects.setProperty(String).convention(Providers.notDefined()) - contributors = objects.setProperty(String).convention(Providers.notDefined()) + uncategorized = objects.property(Boolean).convention(Providers. notDefined()) + categories = objects.setProperty(String).convention(Providers.> notDefined()) + contributors = objects.setProperty(String).convention(Providers.> notDefined()) } @Internal @@ -369,8 +369,8 @@ class ChangelogImpl implements Changelog { } } - org.jreleaser.model.Changelog.Hide toModel() { - org.jreleaser.model.Changelog.Hide hide = new org.jreleaser.model.Changelog.Hide() + org.jreleaser.model.internal.release.Changelog.Hide toModel() { + org.jreleaser.model.internal.release.Changelog.Hide hide = new org.jreleaser.model.internal.release.Changelog.Hide() if (uncategorized.present) hide.uncategorized = uncategorized.get() hide.categories = (Set) categories.getOrElse([] as Set) hide.contributors = (Set) contributors.getOrElse([] as Set) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CodebergImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/CodebergReleaserImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CodebergImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/CodebergReleaserImpl.groovy index 3a03637db..f0f2d7965 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/CodebergImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/CodebergReleaserImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -23,7 +23,8 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Codeberg +import org.jreleaser.gradle.plugin.dsl.release.CodebergReleaser +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -34,7 +35,7 @@ import javax.inject.Inject * @since 0.4.0 */ @CompileStatic -class CodebergImpl extends AbstractGitService implements Codeberg { +class CodebergReleaserImpl extends BaseReleaserImpl implements CodebergReleaser { final Property draft final ChangelogImpl changelog final MilestoneImpl milestone @@ -42,9 +43,9 @@ class CodebergImpl extends AbstractGitService implements Codeberg { final PrereleaseImpl prerelease @Inject - CodebergImpl(ObjectFactory objects) { + CodebergReleaserImpl(ObjectFactory objects) { super(objects) - draft = objects.property(Boolean).convention(Providers.notDefined()) + draft = objects.property(Boolean).convention(Providers. notDefined()) changelog = objects.newInstance(ChangelogImpl, objects) milestone = objects.newInstance(MilestoneImpl, objects) @@ -73,8 +74,8 @@ class CodebergImpl extends AbstractGitService implements Codeberg { ConfigureUtil.configure(action, prerelease) } - org.jreleaser.model.Codeberg toModel() { - org.jreleaser.model.Codeberg service = new org.jreleaser.model.Codeberg() + org.jreleaser.model.internal.release.CodebergReleaser toModel() { + org.jreleaser.model.internal.release.CodebergReleaser service = new org.jreleaser.model.internal.release.CodebergReleaser() toModel(service) if (draft.present) service.draft = draft.get() service.prerelease = prerelease.toModel() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GenericGitImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GenericGitReleaserImpl.groovy similarity index 75% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GenericGitImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GenericGitReleaserImpl.groovy index 85f995226..42a56b0a0 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GenericGitImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GenericGitReleaserImpl.groovy @@ -15,12 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.GenericGit +import org.jreleaser.gradle.plugin.dsl.release.GenericGitReleaser +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import javax.inject.Inject @@ -30,13 +31,13 @@ import javax.inject.Inject * @since 0.4.0 */ @CompileStatic -class GenericGitImpl extends AbstractGitService implements GenericGit { +class GenericGitReleaserImpl extends BaseReleaserImpl implements GenericGitReleaser { final ChangelogImpl changelog final MilestoneImpl milestone final CommitAuthorImpl commitAuthor @Inject - GenericGitImpl(ObjectFactory objects) { + GenericGitReleaserImpl(ObjectFactory objects) { super(objects) changelog = objects.newInstance(ChangelogImpl, objects) milestone = objects.newInstance(MilestoneImpl, objects) @@ -52,8 +53,8 @@ class GenericGitImpl extends AbstractGitService implements GenericGit { commitAuthor.isSet() } - org.jreleaser.model.GenericGit toModel() { - org.jreleaser.model.GenericGit service = new org.jreleaser.model.GenericGit() + org.jreleaser.model.internal.release.GenericGitReleaser toModel() { + org.jreleaser.model.internal.release.GenericGitReleaser service = new org.jreleaser.model.internal.release.GenericGitReleaser() toModel(service) service.changelog = changelog.toModel() if (milestone.isSet()) service.milestone = milestone.toModel() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GiteaImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GiteaReleaserImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GiteaImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GiteaReleaserImpl.groovy index 6c7272521..46dd4e9bd 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GiteaImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GiteaReleaserImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -23,7 +23,8 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Gitea +import org.jreleaser.gradle.plugin.dsl.release.GiteaReleaser +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -34,7 +35,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class GiteaImpl extends AbstractGitService implements Gitea { +class GiteaReleaserImpl extends BaseReleaserImpl implements GiteaReleaser { final Property draft final ChangelogImpl changelog final MilestoneImpl milestone @@ -42,9 +43,9 @@ class GiteaImpl extends AbstractGitService implements Gitea { final PrereleaseImpl prerelease @Inject - GiteaImpl(ObjectFactory objects) { + GiteaReleaserImpl(ObjectFactory objects) { super(objects) - draft = objects.property(Boolean).convention(Providers.notDefined()) + draft = objects.property(Boolean).convention(Providers. notDefined()) changelog = objects.newInstance(ChangelogImpl, objects) milestone = objects.newInstance(MilestoneImpl, objects) @@ -73,8 +74,8 @@ class GiteaImpl extends AbstractGitService implements Gitea { ConfigureUtil.configure(action, prerelease) } - org.jreleaser.model.Gitea toModel() { - org.jreleaser.model.Gitea service = new org.jreleaser.model.Gitea() + org.jreleaser.model.internal.release.GiteaReleaser toModel() { + org.jreleaser.model.internal.release.GiteaReleaser service = new org.jreleaser.model.internal.release.GiteaReleaser() toModel(service) if (draft.present) service.draft = draft.get() service.prerelease = prerelease.toModel() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GithubImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GithubReleaserImpl.groovy similarity index 80% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GithubImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GithubReleaserImpl.groovy index 3b70ae091..6c91f1dd4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GithubImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GithubReleaserImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action @@ -23,7 +23,8 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Github +import org.jreleaser.gradle.plugin.dsl.release.GithubReleaser +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -34,7 +35,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class GithubImpl extends AbstractGitService implements Github { +class GithubReleaserImpl extends BaseReleaserImpl implements GithubReleaser { final Property draft final Property discussionCategoryName final ChangelogImpl changelog @@ -44,10 +45,10 @@ class GithubImpl extends AbstractGitService implements Github { final ReleaseNotesImpl releaseNotes @Inject - GithubImpl(ObjectFactory objects) { + GithubReleaserImpl(ObjectFactory objects) { super(objects) - draft = objects.property(Boolean).convention(Providers.notDefined()) - discussionCategoryName = objects.property(String).convention(Providers.notDefined()) + draft = objects.property(Boolean).convention(Providers. notDefined()) + discussionCategoryName = objects.property(String).convention(Providers. notDefined()) changelog = objects.newInstance(ChangelogImpl, objects) milestone = objects.newInstance(MilestoneImpl, objects) @@ -89,8 +90,8 @@ class GithubImpl extends AbstractGitService implements Github { ConfigureUtil.configure(action, releaseNotes) } - org.jreleaser.model.Github toModel() { - org.jreleaser.model.Github service = new org.jreleaser.model.Github() + org.jreleaser.model.internal.release.GithubReleaser toModel() { + org.jreleaser.model.internal.release.GithubReleaser service = new org.jreleaser.model.internal.release.GithubReleaser() toModel(service) if (draft.present) service.draft = draft.get() service.prerelease = prerelease.toModel() @@ -109,8 +110,8 @@ class GithubImpl extends AbstractGitService implements Github { @Inject ReleaseNotesImpl(ObjectFactory objects) { - enabled = objects.property(Boolean).convention(Providers.notDefined()) - configurationFile = objects.property(String).convention(Providers.notDefined()) + enabled = objects.property(Boolean).convention(Providers. notDefined()) + configurationFile = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -119,8 +120,8 @@ class GithubImpl extends AbstractGitService implements Github { configurationFile.present } - org.jreleaser.model.Github.ReleaseNotes toModel() { - org.jreleaser.model.Github.ReleaseNotes releaseNotes = new org.jreleaser.model.Github.ReleaseNotes() + org.jreleaser.model.internal.release.GithubReleaser.ReleaseNotes toModel() { + org.jreleaser.model.internal.release.GithubReleaser.ReleaseNotes releaseNotes = new org.jreleaser.model.internal.release.GithubReleaser.ReleaseNotes() if (enabled.present) releaseNotes.enabled = enabled.get() if (configurationFile.present) releaseNotes.configurationFile = configurationFile.get() releaseNotes diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitlabImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GitlabReleaserImpl.groovy similarity index 81% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitlabImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GitlabReleaserImpl.groovy index c2fd28723..7314799af 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitlabImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/GitlabReleaserImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,8 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Gitlab +import org.jreleaser.gradle.plugin.dsl.release.GitlabReleaser +import org.jreleaser.gradle.plugin.internal.dsl.common.CommitAuthorImpl import javax.inject.Inject @@ -33,7 +34,7 @@ import javax.inject.Inject * @since 0.1.0 */ @CompileStatic -class GitlabImpl extends AbstractGitService implements Gitlab { +class GitlabReleaserImpl extends BaseReleaserImpl implements GitlabReleaser { final ChangelogImpl changelog final MilestoneImpl milestone final CommitAuthorImpl commitAuthor @@ -41,14 +42,14 @@ class GitlabImpl extends AbstractGitService implements Gitlab { final MapProperty uploadLinks @Inject - GitlabImpl(ObjectFactory objects) { + GitlabReleaserImpl(ObjectFactory objects) { super(objects) changelog = objects.newInstance(ChangelogImpl, objects) milestone = objects.newInstance(MilestoneImpl, objects) commitAuthor = objects.newInstance(CommitAuthorImpl, objects) - projectIdentifier = objects.property(String).convention(Providers.notDefined()) + projectIdentifier = objects.property(String).convention(Providers. notDefined()) uploadLinks = objects.mapProperty(String, String).convention(Providers.notDefined()) } @@ -67,8 +68,8 @@ class GitlabImpl extends AbstractGitService implements Gitlab { uploadLinks.present } - org.jreleaser.model.Gitlab toModel() { - org.jreleaser.model.Gitlab service = new org.jreleaser.model.Gitlab() + org.jreleaser.model.internal.release.GitlabReleaser toModel() { + org.jreleaser.model.internal.release.GitlabReleaser service = new org.jreleaser.model.internal.release.GitlabReleaser() toModel(service) service.changelog = changelog.toModel() if (milestone.isSet()) service.milestone = milestone.toModel() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ReleaseImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/ReleaseImpl.groovy similarity index 57% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ReleaseImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/ReleaseImpl.groovy index 66daf64ea..01994c278 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ReleaseImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/release/ReleaseImpl.groovy @@ -15,17 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.release import groovy.transform.CompileStatic import org.gradle.api.Action import org.gradle.api.model.ObjectFactory -import org.jreleaser.gradle.plugin.dsl.Codeberg -import org.jreleaser.gradle.plugin.dsl.GenericGit -import org.jreleaser.gradle.plugin.dsl.Gitea -import org.jreleaser.gradle.plugin.dsl.Github -import org.jreleaser.gradle.plugin.dsl.Gitlab -import org.jreleaser.gradle.plugin.dsl.Release +import org.jreleaser.gradle.plugin.dsl.release.CodebergReleaser +import org.jreleaser.gradle.plugin.dsl.release.GenericGitReleaser +import org.jreleaser.gradle.plugin.dsl.release.GiteaReleaser +import org.jreleaser.gradle.plugin.dsl.release.GithubReleaser +import org.jreleaser.gradle.plugin.dsl.release.GitlabReleaser +import org.jreleaser.gradle.plugin.dsl.release.Release import org.kordamp.gradle.util.ConfigureUtil import javax.inject.Inject @@ -37,73 +37,73 @@ import javax.inject.Inject */ @CompileStatic class ReleaseImpl implements Release { - final GithubImpl github - final GitlabImpl gitlab - final GiteaImpl gitea - final CodebergImpl codeberg - final GenericGitImpl generic + final GithubReleaserImpl github + final GitlabReleaserImpl gitlab + final GiteaReleaserImpl gitea + final CodebergReleaserImpl codeberg + final GenericGitReleaserImpl generic @Inject ReleaseImpl(ObjectFactory objects) { - github = objects.newInstance(GithubImpl, objects) - gitlab = objects.newInstance(GitlabImpl, objects) - gitea = objects.newInstance(GiteaImpl, objects) - codeberg = objects.newInstance(CodebergImpl, objects) - generic = objects.newInstance(GenericGitImpl, objects) + github = objects.newInstance(GithubReleaserImpl, objects) + gitlab = objects.newInstance(GitlabReleaserImpl, objects) + gitea = objects.newInstance(GiteaReleaserImpl, objects) + codeberg = objects.newInstance(CodebergReleaserImpl, objects) + generic = objects.newInstance(GenericGitReleaserImpl, objects) } @Override - void github(Action action) { + void github(Action action) { action.execute(github) } @Override - void gitlab(Action action) { + void gitlab(Action action) { action.execute(gitlab) } @Override - void gitea(Action action) { + void gitea(Action action) { action.execute(gitea) } @Override - void codeberg(Action action) { + void codeberg(Action action) { action.execute(codeberg) } @Override - void generic(Action action) { + void generic(Action action) { action.execute(generic) } @Override - void github(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Github) Closure action) { + void github(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GithubReleaser) Closure action) { ConfigureUtil.configure(action, github) } @Override - void gitlab(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gitlab) Closure action) { + void gitlab(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GitlabReleaser) Closure action) { ConfigureUtil.configure(action, gitlab) } @Override - void gitea(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Gitea) Closure action) { + void gitea(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GiteaReleaser) Closure action) { ConfigureUtil.configure(action, gitea) } @Override - void codeberg(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = Codeberg) Closure action) { + void codeberg(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = CodebergReleaser) Closure action) { ConfigureUtil.configure(action, codeberg) } @Override - void generic(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GenericGit) Closure action) { + void generic(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = GenericGitReleaser) Closure action) { ConfigureUtil.configure(action, generic) } - org.jreleaser.model.Release toModel() { - org.jreleaser.model.Release release = new org.jreleaser.model.Release() + org.jreleaser.model.internal.release.Release toModel() { + org.jreleaser.model.internal.release.Release release = new org.jreleaser.model.internal.release.Release() if (github.isSet()) release.github = github.toModel() if (gitlab.isSet()) release.gitlab = gitlab.toModel() if (gitea.isSet()) release.gitea = gitea.toModel() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SigningImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/signing/SigningImpl.groovy similarity index 85% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SigningImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/signing/SigningImpl.groovy index cd5138e11..aaeb49db4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SigningImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/signing/SigningImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.signing import groovy.transform.CompileStatic import org.gradle.api.Action @@ -25,7 +25,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Signing +import org.jreleaser.gradle.plugin.dsl.signing.Signing import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -54,15 +54,15 @@ class SigningImpl implements Signing { @Inject SigningImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - armored = objects.property(Boolean).convention(Providers.notDefined()) - passphrase = objects.property(String).convention(Providers.notDefined()) - publicKey = objects.property(String).convention(Providers.notDefined()) - secretKey = objects.property(String).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + armored = objects.property(Boolean).convention(Providers. notDefined()) + passphrase = objects.property(String).convention(Providers. notDefined()) + publicKey = objects.property(String).convention(Providers. notDefined()) + secretKey = objects.property(String).convention(Providers. notDefined()) mode = objects.property(org.jreleaser.model.Signing.Mode).convention(org.jreleaser.model.Signing.Mode.MEMORY) - artifacts = objects.property(Boolean).convention(Providers.notDefined()) - files = objects.property(Boolean).convention(Providers.notDefined()) - checksums = objects.property(Boolean).convention(Providers.notDefined()) + artifacts = objects.property(Boolean).convention(Providers. notDefined()) + files = objects.property(Boolean).convention(Providers. notDefined()) + checksums = objects.property(Boolean).convention(Providers. notDefined()) command = objects.newInstance(CommandImpl, objects) cosign = objects.newInstance(CosignImpl, objects) } @@ -115,8 +115,8 @@ class SigningImpl implements Signing { ConfigureUtil.configure(action, cosign) } - org.jreleaser.model.Signing toModel() { - org.jreleaser.model.Signing signing = new org.jreleaser.model.Signing() + org.jreleaser.model.internal.signing.Signing toModel() { + org.jreleaser.model.internal.signing.Signing signing = new org.jreleaser.model.internal.signing.Signing() if (active.present) signing.active = active.get() if (armored.present) signing.armored = armored.get() if (passphrase.present) signing.passphrase = passphrase.get() @@ -141,12 +141,12 @@ class SigningImpl implements Signing { @Inject CommandImpl(ObjectFactory objects) { - executable = objects.property(String).convention(Providers.notDefined()) - keyName = objects.property(String).convention(Providers.notDefined()) - homeDir = objects.property(String).convention(Providers.notDefined()) - publicKeyring = objects.property(String).convention(Providers.notDefined()) - defaultKeyring = objects.property(Boolean).convention(Providers.notDefined()) - args = objects.listProperty(String).convention(Providers.notDefined()) + executable = objects.property(String).convention(Providers. notDefined()) + keyName = objects.property(String).convention(Providers. notDefined()) + homeDir = objects.property(String).convention(Providers. notDefined()) + publicKeyring = objects.property(String).convention(Providers. notDefined()) + defaultKeyring = objects.property(Boolean).convention(Providers. notDefined()) + args = objects.listProperty(String).convention(Providers.> notDefined()) } @Internal @@ -166,8 +166,8 @@ class SigningImpl implements Signing { } } - org.jreleaser.model.Signing.Command toModel() { - org.jreleaser.model.Signing.Command command = new org.jreleaser.model.Signing.Command() + org.jreleaser.model.internal.signing.Signing.Command toModel() { + org.jreleaser.model.internal.signing.Signing.Command command = new org.jreleaser.model.internal.signing.Signing.Command() if (executable.present) command.executable = executable.get() if (keyName.present) command.keyName = keyName.get() if (homeDir.present) command.homeDir = homeDir.get() @@ -185,7 +185,7 @@ class SigningImpl implements Signing { @Inject CosignImpl(ObjectFactory objects) { - version = objects.property(String).convention(Providers.notDefined()) + version = objects.property(String).convention(Providers. notDefined()) privateKeyFile = objects.fileProperty().convention(Providers.notDefined()) publicKeyFile = objects.fileProperty().convention(Providers.notDefined()) } @@ -207,8 +207,8 @@ class SigningImpl implements Signing { publicKeyFile.present } - org.jreleaser.model.Signing.Cosign toModel() { - org.jreleaser.model.Signing.Cosign cosign = new org.jreleaser.model.Signing.Cosign() + org.jreleaser.model.internal.signing.Signing.Cosign toModel() { + org.jreleaser.model.internal.signing.Signing.Cosign cosign = new org.jreleaser.model.internal.signing.Signing.Cosign() if (version.present) cosign.version = version.get() if (privateKeyFile.present) cosign.privateKeyFile = privateKeyFile.get().asFile.toPath().toString() if (publicKeyFile.present) cosign.publicKeyFile = publicKeyFile.get().asFile.toPath().toString() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractSshUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractSshUploader.groovy similarity index 82% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractSshUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractSshUploader.groovy index 18c5ba040..120301f42 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractSshUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractSshUploader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.file.RegularFileProperty @@ -23,7 +23,7 @@ import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.SshUploader +import org.jreleaser.gradle.plugin.dsl.upload.SshUploader import javax.inject.Inject @@ -49,17 +49,17 @@ abstract class AbstractSshUploader extends AbstractUploader implements SshUpload @Inject AbstractSshUploader(ObjectFactory objects) { super(objects) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - host = objects.property(String).convention(Providers.notDefined()) - port = objects.property(Integer).convention(Providers.notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + port = objects.property(Integer).convention(Providers. notDefined()) knownHostsFile = objects.fileProperty().convention(Providers.notDefined()) - publicKey = objects.property(String).convention(Providers.notDefined()) - privateKey = objects.property(String).convention(Providers.notDefined()) - passphrase = objects.property(String).convention(Providers.notDefined()) - fingerprint = objects.property(String).convention(Providers.notDefined()) - path = objects.property(String).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) + publicKey = objects.property(String).convention(Providers. notDefined()) + privateKey = objects.property(String).convention(Providers. notDefined()) + passphrase = objects.property(String).convention(Providers. notDefined()) + fingerprint = objects.property(String).convention(Providers. notDefined()) + path = objects.property(String).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) } @Override @@ -79,7 +79,7 @@ abstract class AbstractSshUploader extends AbstractUploader implements SshUpload downloadUrl.present } - protected void fillProperties(U uploader) { + protected void fillProperties(U uploader) { super.fillProperties(uploader) uploader.username = username.orNull uploader.password = password.orNull diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractUploader.groovy similarity index 84% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractUploader.groovy index 7a1e3f2e1..3ab1f1be8 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractUploader.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Uploader +import org.jreleaser.gradle.plugin.dsl.upload.Uploader import org.jreleaser.model.Active import javax.inject.Inject @@ -48,14 +48,14 @@ abstract class AbstractUploader implements Uploader { @Inject AbstractUploader(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - connectTimeout = objects.property(Integer).convention(Providers.notDefined()) - readTimeout = objects.property(Integer).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + connectTimeout = objects.property(Integer).convention(Providers. notDefined()) + readTimeout = objects.property(Integer).convention(Providers. notDefined()) extraProperties = objects.mapProperty(String, Object).convention(Providers.notDefined()) - artifacts = objects.property(Boolean).convention(Providers.notDefined()) - files = objects.property(Boolean).convention(Providers.notDefined()) - signatures = objects.property(Boolean).convention(Providers.notDefined()) - checksums = objects.property(Boolean).convention(Providers.notDefined()) + artifacts = objects.property(Boolean).convention(Providers. notDefined()) + files = objects.property(Boolean).convention(Providers. notDefined()) + signatures = objects.property(Boolean).convention(Providers. notDefined()) + checksums = objects.property(Boolean).convention(Providers. notDefined()) } @Internal @@ -77,7 +77,7 @@ abstract class AbstractUploader implements Uploader { } } - protected void fillProperties(U uploader) { + protected void fillProperties(U uploader) { if (active.present) uploader.active = active.get() if (connectTimeout.present) uploader.connectTimeout = connectTimeout.get() if (readTimeout.present) uploader.readTimeout = readTimeout.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractWebUploader.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractWebUploader.groovy similarity index 85% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractWebUploader.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractWebUploader.groovy index e793f327d..f18fb45fd 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/AbstractWebUploader.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/AbstractWebUploader.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.WebUploader +import org.jreleaser.gradle.plugin.dsl.upload.WebUploader import javax.inject.Inject @@ -39,8 +39,8 @@ abstract class AbstractWebUploader extends AbstractUploader implements WebUpload @Inject AbstractWebUploader(ObjectFactory objects) { super(objects) - uploadUrl = objects.property(String).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) + uploadUrl = objects.property(String).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) } @Internal @@ -50,7 +50,7 @@ abstract class AbstractWebUploader extends AbstractUploader implements WebUpload downloadUrl.present } - protected void fillProperties(U uploader) { + protected void fillProperties(U uploader) { super.fillProperties(uploader) if (uploadUrl.present) uploader.uploadUrl = uploadUrl.get() if (downloadUrl.present) uploader.downloadUrl = downloadUrl.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArtifactoryImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/ArtifactoryUploaderImpl.groovy similarity index 81% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArtifactoryImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/ArtifactoryUploaderImpl.groovy index 71dfd1739..1b823eeaf 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/ArtifactoryImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/ArtifactoryUploaderImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.Action @@ -26,7 +26,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.Artifactory +import org.jreleaser.gradle.plugin.dsl.upload.ArtifactoryUploader import org.jreleaser.model.Active import org.jreleaser.model.Http import org.jreleaser.util.FileType @@ -42,7 +42,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.3.0 */ @CompileStatic -class ArtifactoryImpl extends AbstractWebUploader implements Artifactory { +class ArtifactoryUploaderImpl extends AbstractWebUploader implements ArtifactoryUploader { String name final Property host final Property username @@ -52,12 +52,12 @@ class ArtifactoryImpl extends AbstractWebUploader implements Artifactory { final NamedDomainObjectContainer repositories @Inject - ArtifactoryImpl(ObjectFactory objects) { + ArtifactoryUploaderImpl(ObjectFactory objects) { super(objects) - host = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - authorization = objects.property(Http.Authorization).convention(Providers.notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + authorization = objects.property(Http.Authorization).convention(Providers. notDefined()) repositories = objects.domainObjectContainer(ArtifactoryRepositoryImpl, new NamedDomainObjectFactory() { @Override @@ -94,8 +94,8 @@ class ArtifactoryImpl extends AbstractWebUploader implements Artifactory { ConfigureUtil.configure(action, repositories.maybeCreate("repository-${repositories.size()}".toString())) } - org.jreleaser.model.Artifactory toModel() { - org.jreleaser.model.Artifactory artifactory = new org.jreleaser.model.Artifactory() + org.jreleaser.model.internal.upload.ArtifactoryUploader toModel() { + org.jreleaser.model.internal.upload.ArtifactoryUploader artifactory = new org.jreleaser.model.internal.upload.ArtifactoryUploader() artifactory.name = name fillProperties(artifactory) if (host.present) artifactory.host = host.get() @@ -117,9 +117,9 @@ class ArtifactoryImpl extends AbstractWebUploader implements Artifactory { @Inject ArtifactoryRepositoryImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) - path = objects.property(String).convention(Providers.notDefined()) - fileTypes = objects.setProperty(FileType).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) + path = objects.property(String).convention(Providers. notDefined()) + fileTypes = objects.setProperty(FileType).convention(Providers.> notDefined()) } @Override @@ -136,8 +136,8 @@ class ArtifactoryImpl extends AbstractWebUploader implements Artifactory { } } - org.jreleaser.model.Artifactory.ArtifactoryRepository toModel() { - org.jreleaser.model.Artifactory.ArtifactoryRepository repository = new org.jreleaser.model.Artifactory.ArtifactoryRepository() + org.jreleaser.model.internal.upload.ArtifactoryUploader.ArtifactoryRepository toModel() { + org.jreleaser.model.internal.upload.ArtifactoryUploader.ArtifactoryRepository repository = new org.jreleaser.model.internal.upload.ArtifactoryUploader.ArtifactoryRepository() if (active.present) repository.active = active.get() if (path.present) repository.path = path.get() repository.fileTypes = (Set) fileTypes.getOrElse([] as Set) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FtpUploaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/FtpUploaderImpl.groovy similarity index 77% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FtpUploaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/FtpUploaderImpl.groovy index 184967a40..410fab1d5 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/FtpUploaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/FtpUploaderImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.FtpUploader +import org.jreleaser.gradle.plugin.dsl.upload.FtpUploader import javax.inject.Inject @@ -44,12 +44,12 @@ class FtpUploaderImpl extends AbstractUploader implements FtpUploader { @Inject FtpUploaderImpl(ObjectFactory objects) { super(objects) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - host = objects.property(String).convention(Providers.notDefined()) - port = objects.property(Integer).convention(Providers.notDefined()) - path = objects.property(String).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + port = objects.property(Integer).convention(Providers. notDefined()) + path = objects.property(String).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) } @Override @@ -64,8 +64,8 @@ class FtpUploaderImpl extends AbstractUploader implements FtpUploader { downloadUrl.present } - org.jreleaser.model.FtpUploader toModel() { - org.jreleaser.model.FtpUploader ftp = new org.jreleaser.model.FtpUploader() + org.jreleaser.model.internal.upload.FtpUploader toModel() { + org.jreleaser.model.internal.upload.FtpUploader ftp = new org.jreleaser.model.internal.upload.FtpUploader() ftp.name = name fillProperties(ftp) ftp.username = username.orNull diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GiteaUploaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/GiteaUploaderImpl.groovy similarity index 77% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GiteaUploaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/GiteaUploaderImpl.groovy index d34a5440e..988a341cc 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GiteaUploaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/GiteaUploaderImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.GiteaUploader +import org.jreleaser.gradle.plugin.dsl.upload.GiteaUploader import javax.inject.Inject @@ -43,11 +43,11 @@ class GiteaUploaderImpl extends AbstractUploader implements GiteaUploader { @Inject GiteaUploaderImpl(ObjectFactory objects) { super(objects) - host = objects.property(String).convention(Providers.notDefined()) - owner = objects.property(String).convention(Providers.notDefined()) - token = objects.property(String).convention(Providers.notDefined()) - packageName = objects.property(String).convention(Providers.notDefined()) - packageVersion = objects.property(String).convention(Providers.notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + owner = objects.property(String).convention(Providers. notDefined()) + token = objects.property(String).convention(Providers. notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + packageVersion = objects.property(String).convention(Providers. notDefined()) } @Override @@ -61,8 +61,8 @@ class GiteaUploaderImpl extends AbstractUploader implements GiteaUploader { packageVersion.present } - org.jreleaser.model.GiteaUploader toModel() { - org.jreleaser.model.GiteaUploader gitea = new org.jreleaser.model.GiteaUploader() + org.jreleaser.model.internal.upload.GiteaUploader toModel() { + org.jreleaser.model.internal.upload.GiteaUploader gitea = new org.jreleaser.model.internal.upload.GiteaUploader() gitea.name = name fillProperties(gitea) if (host.present) gitea.host = host.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitlabUploaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/GitlabUploaderImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitlabUploaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/GitlabUploaderImpl.groovy index a2a49f32a..7c9155c2d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/GitlabUploaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/GitlabUploaderImpl.groovy @@ -15,14 +15,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.GitlabUploader +import org.jreleaser.gradle.plugin.dsl.upload.GitlabUploader import javax.inject.Inject @@ -43,11 +43,11 @@ class GitlabUploaderImpl extends AbstractUploader implements GitlabUploader { @Inject GitlabUploaderImpl(ObjectFactory objects) { super(objects) - host = objects.property(String).convention(Providers.notDefined()) - token = objects.property(String).convention(Providers.notDefined()) - packageName = objects.property(String).convention(Providers.notDefined()) - packageVersion = objects.property(String).convention(Providers.notDefined()) - projectIdentifier = objects.property(String).convention(Providers.notDefined()) + host = objects.property(String).convention(Providers. notDefined()) + token = objects.property(String).convention(Providers. notDefined()) + packageName = objects.property(String).convention(Providers. notDefined()) + packageVersion = objects.property(String).convention(Providers. notDefined()) + projectIdentifier = objects.property(String).convention(Providers. notDefined()) } @Override @@ -61,8 +61,8 @@ class GitlabUploaderImpl extends AbstractUploader implements GitlabUploader { projectIdentifier.present } - org.jreleaser.model.GitlabUploader toModel() { - org.jreleaser.model.GitlabUploader gitlab = new org.jreleaser.model.GitlabUploader() + org.jreleaser.model.internal.upload.GitlabUploader toModel() { + org.jreleaser.model.internal.upload.GitlabUploader gitlab = new org.jreleaser.model.internal.upload.GitlabUploader() gitlab.name = name fillProperties(gitlab) if (host.present) gitlab.host = host.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpUploaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/HttpUploaderImpl.groovy similarity index 86% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpUploaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/HttpUploaderImpl.groovy index a98038752..505aca716 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/HttpUploaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/HttpUploaderImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.HttpUploader +import org.jreleaser.gradle.plugin.dsl.upload.HttpUploader import org.jreleaser.model.Http import javax.inject.Inject @@ -47,10 +47,10 @@ class HttpUploaderImpl extends AbstractWebUploader implements HttpUploader { @Inject HttpUploaderImpl(ObjectFactory objects) { super(objects) - username = objects.property(String).convention(Providers.notDefined()) - password = objects.property(String).convention(Providers.notDefined()) - method = objects.property(Http.Method).convention(Providers.notDefined()) - authorization = objects.property(Http.Authorization).convention(Providers.notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + password = objects.property(String).convention(Providers. notDefined()) + method = objects.property(Http.Method).convention(Providers. notDefined()) + authorization = objects.property(Http.Authorization).convention(Providers. notDefined()) headers = objects.mapProperty(String, String).convention(Providers.notDefined()) } @@ -82,8 +82,8 @@ class HttpUploaderImpl extends AbstractWebUploader implements HttpUploader { this.method.set(Http.Method.of(method)) } - org.jreleaser.model.HttpUploader toModel() { - org.jreleaser.model.HttpUploader http = new org.jreleaser.model.HttpUploader() + org.jreleaser.model.internal.upload.HttpUploader toModel() { + org.jreleaser.model.internal.upload.HttpUploader http = new org.jreleaser.model.internal.upload.HttpUploader() http.name = name fillProperties(http) if (username.present) http.username = username.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/S3Impl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/S3UploaderImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/S3Impl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/S3UploaderImpl.groovy index a9ccdc62e..a91f97de5 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/S3Impl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/S3UploaderImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.internal.provider.Providers @@ -23,7 +23,7 @@ import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal -import org.jreleaser.gradle.plugin.dsl.S3 +import org.jreleaser.gradle.plugin.dsl.upload.S3Uploader import javax.inject.Inject @@ -35,7 +35,7 @@ import static org.jreleaser.util.StringUtils.isNotBlank * @since 0.3.0 */ @CompileStatic -class S3Impl extends AbstractUploader implements S3 { +class S3UploaderImpl extends AbstractUploader implements S3Uploader { String name final Property region final Property bucket @@ -48,16 +48,16 @@ class S3Impl extends AbstractUploader implements S3 { final MapProperty headers @Inject - S3Impl(ObjectFactory objects) { + S3UploaderImpl(ObjectFactory objects) { super(objects) - region = objects.property(String).convention(Providers.notDefined()) - bucket = objects.property(String).convention(Providers.notDefined()) - accessKeyId = objects.property(String).convention(Providers.notDefined()) - secretKey = objects.property(String).convention(Providers.notDefined()) - sessionToken = objects.property(String).convention(Providers.notDefined()) - endpoint = objects.property(String).convention(Providers.notDefined()) - path = objects.property(String).convention(Providers.notDefined()) - downloadUrl = objects.property(String).convention(Providers.notDefined()) + region = objects.property(String).convention(Providers. notDefined()) + bucket = objects.property(String).convention(Providers. notDefined()) + accessKeyId = objects.property(String).convention(Providers. notDefined()) + secretKey = objects.property(String).convention(Providers. notDefined()) + sessionToken = objects.property(String).convention(Providers. notDefined()) + endpoint = objects.property(String).convention(Providers. notDefined()) + path = objects.property(String).convention(Providers. notDefined()) + downloadUrl = objects.property(String).convention(Providers. notDefined()) headers = objects.mapProperty(String, String).convention(Providers.notDefined()) } @@ -83,8 +83,8 @@ class S3Impl extends AbstractUploader implements S3 { } } - org.jreleaser.model.S3 toModel() { - org.jreleaser.model.S3 s3 = new org.jreleaser.model.S3() + org.jreleaser.model.internal.upload.S3Uploader toModel() { + org.jreleaser.model.internal.upload.S3Uploader s3 = new org.jreleaser.model.internal.upload.S3Uploader() s3.name = name fillProperties(s3) if (region.present) s3.region = region.get() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SftpUploaderImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/SftpUploaderImpl.groovy similarity index 78% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SftpUploaderImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/SftpUploaderImpl.groovy index 60fe2926b..f0379d22d 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/SftpUploaderImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/SftpUploaderImpl.groovy @@ -15,11 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileStatic import org.gradle.api.model.ObjectFactory -import org.jreleaser.gradle.plugin.dsl.SftpUploader +import org.jreleaser.gradle.plugin.dsl.upload.SftpUploader import javax.inject.Inject @@ -37,8 +37,8 @@ class SftpUploaderImpl extends AbstractSshUploader implements SftpUploader { super(objects) } - org.jreleaser.model.SftpUploader toModel() { - org.jreleaser.model.SftpUploader sftp = new org.jreleaser.model.SftpUploader() + org.jreleaser.model.internal.upload.SftpUploader toModel() { + org.jreleaser.model.internal.upload.SftpUploader sftp = new org.jreleaser.model.internal.upload.SftpUploader() sftp.name = name fillProperties(sftp) sftp diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/UploadImpl.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/UploadImpl.groovy similarity index 79% rename from plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/UploadImpl.groovy rename to plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/UploadImpl.groovy index 7c7cb0737..13593e289 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/UploadImpl.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/internal/dsl/upload/UploadImpl.groovy @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.gradle.plugin.internal.dsl +package org.jreleaser.gradle.plugin.internal.dsl.upload import groovy.transform.CompileDynamic import groovy.transform.CompileStatic @@ -25,15 +25,16 @@ import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.internal.provider.Providers import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property -import org.jreleaser.gradle.plugin.dsl.Artifactory -import org.jreleaser.gradle.plugin.dsl.FtpUploader -import org.jreleaser.gradle.plugin.dsl.GiteaUploader -import org.jreleaser.gradle.plugin.dsl.GitlabUploader -import org.jreleaser.gradle.plugin.dsl.HttpUploader -import org.jreleaser.gradle.plugin.dsl.S3 -import org.jreleaser.gradle.plugin.dsl.ScpUploader -import org.jreleaser.gradle.plugin.dsl.SftpUploader -import org.jreleaser.gradle.plugin.dsl.Upload +import org.jreleaser.gradle.plugin.dsl.upload.ArtifactoryUploader +import org.jreleaser.gradle.plugin.dsl.upload.FtpUploader +import org.jreleaser.gradle.plugin.dsl.upload.GiteaUploader +import org.jreleaser.gradle.plugin.dsl.upload.GitlabUploader +import org.jreleaser.gradle.plugin.dsl.upload.HttpUploader +import org.jreleaser.gradle.plugin.dsl.upload.S3Uploader +import org.jreleaser.gradle.plugin.dsl.upload.ScpUploader +import org.jreleaser.gradle.plugin.dsl.upload.SftpUploader +import org.jreleaser.gradle.plugin.dsl.upload.Upload +import org.jreleaser.gradle.plugin.internal.dsl.download.ScpUploaderImpl import org.jreleaser.model.Active import org.kordamp.gradle.util.ConfigureUtil @@ -49,23 +50,23 @@ import static org.jreleaser.util.StringUtils.isNotBlank @CompileStatic class UploadImpl implements Upload { final Property active - final NamedDomainObjectContainer artifactory + final NamedDomainObjectContainer artifactory final NamedDomainObjectContainer ftp final NamedDomainObjectContainer gitea final NamedDomainObjectContainer gitlab final NamedDomainObjectContainer http - final NamedDomainObjectContainer s3 + final NamedDomainObjectContainer s3 final NamedDomainObjectContainer scp final NamedDomainObjectContainer sftp @Inject UploadImpl(ObjectFactory objects) { - active = objects.property(Active).convention(Providers.notDefined()) + active = objects.property(Active).convention(Providers. notDefined()) - artifactory = objects.domainObjectContainer(Artifactory, new NamedDomainObjectFactory() { + artifactory = objects.domainObjectContainer(ArtifactoryUploader, new NamedDomainObjectFactory() { @Override - Artifactory create(String name) { - ArtifactoryImpl a = objects.newInstance(ArtifactoryImpl, objects) + ArtifactoryUploader create(String name) { + ArtifactoryUploaderImpl a = objects.newInstance(ArtifactoryUploaderImpl, objects) a.name = name return a } @@ -107,10 +108,10 @@ class UploadImpl implements Upload { } }) - s3 = objects.domainObjectContainer(S3, new NamedDomainObjectFactory() { + s3 = objects.domainObjectContainer(S3Uploader, new NamedDomainObjectFactory() { @Override - S3 create(String name) { - S3Impl s = objects.newInstance(S3Impl, objects) + S3Uploader create(String name) { + S3UploaderImpl s = objects.newInstance(S3UploaderImpl, objects) s.name = name return s } @@ -143,7 +144,7 @@ class UploadImpl implements Upload { } @Override - void artifactory(Action> action) { + void artifactory(Action> action) { action.execute(artifactory) } @@ -168,7 +169,7 @@ class UploadImpl implements Upload { } @Override - void s3(Action> action) { + void s3(Action> action) { action.execute(s3) } @@ -223,16 +224,16 @@ class UploadImpl implements Upload { } @CompileDynamic - org.jreleaser.model.Upload toModel() { - org.jreleaser.model.Upload upload = new org.jreleaser.model.Upload() + org.jreleaser.model.internal.upload.Upload toModel() { + org.jreleaser.model.internal.upload.Upload upload = new org.jreleaser.model.internal.upload.Upload() if (active.present) upload.active = active.get() - artifactory.each { upload.addArtifactory(((ArtifactoryImpl) it).toModel()) } + artifactory.each { upload.addArtifactory(((ArtifactoryUploaderImpl) it).toModel()) } ftp.each { upload.addFtp(((FtpUploaderImpl) it).toModel()) } gitea.each { upload.addGitea(((GiteaUploaderImpl) it).toModel()) } gitlab.each { upload.addGitlab(((GitlabUploaderImpl) it).toModel()) } http.each { upload.addHttp(((HttpUploaderImpl) it).toModel()) } - s3.each { upload.addS3(((S3Impl) it).toModel()) } + s3.each { upload.addS3(((S3UploaderImpl) it).toModel()) } scp.each { upload.addScp(((ScpUploaderImpl) it).toModel()) } sftp.each { upload.addSftp(((SftpUploaderImpl) it).toModel()) } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserDistributionTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserDistributionTask.groovy index 3bbb16589..607a1fc47 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserDistributionTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserDistributionTask.groovy @@ -23,7 +23,7 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import javax.inject.Inject diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserPackagerTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserPackagerTask.groovy index dfef77794..ebd547ec4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserPackagerTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserPackagerTask.groovy @@ -23,7 +23,7 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import javax.inject.Inject diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserTask.groovy index a011bf981..2de6273e1 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/AbstractJReleaserTask.groovy @@ -28,16 +28,16 @@ import org.gradle.api.tasks.options.Option import org.jreleaser.engine.context.ContextCreator import org.jreleaser.gradle.plugin.JReleaserExtension import org.jreleaser.logging.JReleaserLogger -import org.jreleaser.model.JReleaserContext -import org.jreleaser.model.JReleaserModel import org.jreleaser.model.JReleaserVersion +import org.jreleaser.model.internal.JReleaserContext +import org.jreleaser.model.internal.JReleaserModel import org.jreleaser.util.PlatformUtils import org.jreleaser.util.StringUtils import javax.inject.Inject -import static org.jreleaser.model.JReleaserContext.Configurer -import static org.jreleaser.model.JReleaserContext.Mode +import static org.jreleaser.model.api.JReleaserContext.Mode.FULL +import static org.jreleaser.model.internal.JReleaserContext.Configurer /** * @@ -61,13 +61,13 @@ abstract class AbstractJReleaserTask extends DefaultTask { final Property jlogger @Internal - Mode mode + org.jreleaser.model.api.JReleaserContext.Mode mode @Inject AbstractJReleaserTask(ObjectFactory objects) { model = objects.property(JReleaserModel) jlogger = objects.property(JReleaserLogger) - mode = Mode.FULL + mode = FULL dryrun = objects.property(Boolean).convention(false) gitRootSearch = objects.property(Boolean).convention(false) outputDirectory = objects.directoryProperty() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaseAutoConfigReleaseTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaseAutoConfigReleaseTask.groovy index 5e9d2f018..ecb45e8b0 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaseAutoConfigReleaseTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaseAutoConfigReleaseTask.groovy @@ -31,8 +31,8 @@ import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option import org.jreleaser.engine.context.ModelAutoConfigurer import org.jreleaser.gradle.plugin.internal.JReleaserLoggerAdapter -import org.jreleaser.model.JReleaserContext import org.jreleaser.model.UpdateSection +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.util.PlatformUtils import org.jreleaser.workflow.Workflows @@ -353,29 +353,29 @@ abstract class JReleaseAutoConfigReleaseTask extends DefaultTask { projectName = objects.property(String).convention(project.name) projectVersion = objects.property(String).convention(String.valueOf(project.version)) - projectVersionPattern = objects.property(String).convention(Providers.notDefined()) - projectSnapshotPattern = objects.property(String).convention(Providers.notDefined()) - projectSnapshotLabel = objects.property(String).convention(Providers.notDefined()) + projectVersionPattern = objects.property(String).convention(Providers. notDefined()) + projectSnapshotPattern = objects.property(String).convention(Providers. notDefined()) + projectSnapshotLabel = objects.property(String).convention(Providers. notDefined()) projectSnapshotFullChangelog = objects.property(Boolean).convention(false) - projectCopyright = objects.property(String).convention(Providers.notDefined()) - projectDescription = objects.property(String).convention(Providers.notDefined()) - projectInceptionYear = objects.property(String).convention(Providers.notDefined()) - projectStereotype = objects.property(String).convention(Providers.notDefined()) + projectCopyright = objects.property(String).convention(Providers. notDefined()) + projectDescription = objects.property(String).convention(Providers. notDefined()) + projectInceptionYear = objects.property(String).convention(Providers. notDefined()) + projectStereotype = objects.property(String).convention(Providers. notDefined()) authors = objects.listProperty(String).convention([]) - tagName = objects.property(String).convention(Providers.notDefined()) - releaseName = objects.property(String).convention(Providers.notDefined()) - branch = objects.property(String).convention(Providers.notDefined()) - milestoneName = objects.property(String).convention(Providers.notDefined()) - changeLog = objects.property(String).convention(Providers.notDefined()) - username = objects.property(String).convention(Providers.notDefined()) - commitAuthorName = objects.property(String).convention(Providers.notDefined()) - commitAuthorEmail = objects.property(String).convention(Providers.notDefined()) + tagName = objects.property(String).convention(Providers. notDefined()) + releaseName = objects.property(String).convention(Providers. notDefined()) + branch = objects.property(String).convention(Providers. notDefined()) + milestoneName = objects.property(String).convention(Providers. notDefined()) + changeLog = objects.property(String).convention(Providers. notDefined()) + username = objects.property(String).convention(Providers. notDefined()) + commitAuthorName = objects.property(String).convention(Providers. notDefined()) + commitAuthorEmail = objects.property(String).convention(Providers. notDefined()) prerelease = objects.property(Boolean).convention(false) - prereleasePattern = objects.property(String).convention(Providers.notDefined()) + prereleasePattern = objects.property(String).convention(Providers. notDefined()) draft = objects.property(Boolean).convention(false) overwrite = objects.property(Boolean).convention(false) update = objects.property(Boolean).convention(false) - updateSections = objects.setProperty(UpdateSection).convention(Providers.notDefined()) + updateSections = objects.setProperty(UpdateSection).convention(Providers.> notDefined()) skipTag = objects.property(Boolean).convention(false) skipRelease = objects.property(Boolean).convention(false) changelogFormatted = objects.property(Boolean).convention(false) @@ -439,7 +439,7 @@ abstract class JReleaseAutoConfigReleaseTask extends DefaultTask { } protected List collectSelectedPlatforms() { - if (selectCurrentPlatform.present) return Collections.singletonList(PlatformUtils.getCurrentFull()); + if (selectCurrentPlatform.present) return Collections.singletonList(PlatformUtils.getCurrentFull()) return selectPlatforms.get() } } diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAnnounceTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAnnounceTask.groovy index 362acbb26..c4c66ec9b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAnnounceTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAnnounceTask.groovy @@ -24,11 +24,13 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject +import static org.jreleaser.model.api.JReleaserContext.Mode.ANNOUNCE + /** * * @author Andres Almiray @@ -49,7 +51,7 @@ abstract class JReleaserAnnounceTask extends AbstractPlatformAwareJReleaserTask super(objects) announcers = objects.listProperty(String).convention([]) excludedAnnouncers = objects.listProperty(String).convention([]) - mode = JReleaserContext.Mode.ANNOUNCE + mode = ANNOUNCE } @Option(option = 'announcer', description = 'Include an announcer (OPTIONAL).') diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAssembleTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAssembleTask.groovy index 5fe546d18..15e2f5773 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAssembleTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserAssembleTask.groovy @@ -24,11 +24,13 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject +import static org.jreleaser.model.api.JReleaserContext.Mode.ASSEMBLE + /** * * @author Andres Almiray @@ -87,7 +89,7 @@ abstract class JReleaserAssembleTask extends AbstractPlatformAwareJReleaserTask } protected JReleaserContext setupContext() { - mode = JReleaserContext.Mode.ASSEMBLE + mode = ASSEMBLE JReleaserContext ctx = createContext() ctx.includedAssemblers = assemblers.orNull ctx.excludedAssemblers = excludedAssemblers.orNull diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChangelogTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChangelogTask.groovy index 05d90b278..eedf525ae 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChangelogTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChangelogTask.groovy @@ -20,11 +20,12 @@ package org.jreleaser.gradle.plugin.tasks import groovy.transform.CompileStatic import org.gradle.api.model.ObjectFactory import org.gradle.api.tasks.TaskAction -import org.jreleaser.model.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject +import static org.jreleaser.model.api.JReleaserContext.Mode.CHANGELOG + /** * * @author Andres Almiray @@ -35,7 +36,7 @@ abstract class JReleaserChangelogTask extends AbstractJReleaserTask { @Inject JReleaserChangelogTask(ObjectFactory objects) { super(objects) - mode = JReleaserContext.Mode.CHANGELOG + mode = CHANGELOG } @TaskAction diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChecksumTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChecksumTask.groovy index 1015bb2dd..c9de9cfe9 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChecksumTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserChecksumTask.groovy @@ -24,7 +24,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserConfigTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserConfigTask.groovy index a81ba7df2..faa4927bb 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserConfigTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserConfigTask.groovy @@ -25,10 +25,16 @@ import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option import org.jreleaser.engine.context.ModelValidator import org.jreleaser.gradle.plugin.internal.JReleaserModelPrinter -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import javax.inject.Inject +import static org.jreleaser.model.api.JReleaserContext.Mode.ANNOUNCE +import static org.jreleaser.model.api.JReleaserContext.Mode.ASSEMBLE +import static org.jreleaser.model.api.JReleaserContext.Mode.CHANGELOG +import static org.jreleaser.model.api.JReleaserContext.Mode.CONFIG +import static org.jreleaser.model.api.JReleaserContext.Mode.DOWNLOAD + /** * * @author Andres Almiray @@ -89,15 +95,15 @@ abstract class JReleaserConfigTask extends AbstractPlatformAwareJReleaserTask { @TaskAction void displayConfig() { if (download.get()) { - mode = JReleaserContext.Mode.DOWNLOAD + mode = DOWNLOAD } else if (announce.get()) { - mode = JReleaserContext.Mode.ANNOUNCE + mode = ANNOUNCE } else if (assembly.get()) { - mode = JReleaserContext.Mode.ASSEMBLE + mode = ASSEMBLE } else if (changelog.get()) { - mode = JReleaserContext.Mode.CHANGELOG + mode = CHANGELOG } else { - mode = JReleaserContext.Mode.CONFIG + mode = CONFIG } JReleaserContext context = createContext() diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserDownloadTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserDownloadTask.groovy index 661e75f70..3977f09ac 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserDownloadTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserDownloadTask.groovy @@ -24,11 +24,13 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject +import static org.jreleaser.model.api.JReleaserContext.Mode.DOWNLOAD + /** * * @author Andres Almiray @@ -83,7 +85,7 @@ abstract class JReleaserDownloadTask extends AbstractJReleaserTask { @TaskAction void performAction() { - mode = JReleaserContext.Mode.DOWNLOAD + mode = DOWNLOAD JReleaserContext ctx = createContext() ctx.includedDownloaderTypes = downloaderTypes.orNull ctx.excludedDownloaderTypes = excludedDownloaderTypes.orNull diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserFullReleaseTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserFullReleaseTask.groovy index 002589e4d..d1a568b49 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserFullReleaseTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserFullReleaseTask.groovy @@ -24,7 +24,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserReleaseTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserReleaseTask.groovy index 3b18c0947..ee16b88d4 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserReleaseTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserReleaseTask.groovy @@ -24,7 +24,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserSignTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserSignTask.groovy index c99db1dba..820e02965 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserSignTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserSignTask.groovy @@ -24,7 +24,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserTemplateTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserTemplateTask.groovy index 284b65edd..10e9f840b 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserTemplateTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserTemplateTask.groovy @@ -78,7 +78,7 @@ abstract class JReleaserTemplateTask extends DefaultTask { distributionType = objects.property(Distribution.DistributionType).convention(Distribution.DistributionType.JAVA_BINARY) distributionName = objects.property(String) packagerName = objects.property(String) - announcerName = objects.property(String).convention(Providers.notDefined()) + announcerName = objects.property(String).convention(Providers. notDefined()) overwrite = objects.property(Boolean).convention(false) snapshot = objects.property(Boolean).convention(false) diff --git a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserUploadTask.groovy b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserUploadTask.groovy index 1289f48e6..6ccca7913 100644 --- a/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserUploadTask.groovy +++ b/plugins/jreleaser-gradle-plugin/src/main/groovy/org/jreleaser/gradle/plugin/tasks/JReleaserUploadTask.groovy @@ -24,7 +24,7 @@ import org.gradle.api.tasks.Input import org.gradle.api.tasks.Optional import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option -import org.jreleaser.model.JReleaserContext +import org.jreleaser.model.internal.JReleaserContext import org.jreleaser.workflow.Workflows import javax.inject.Inject diff --git a/plugins/jreleaser-maven-plugin/gradle.properties b/plugins/jreleaser-maven-plugin/gradle.properties index 3a7012f04..f632492c9 100644 --- a/plugins/jreleaser-maven-plugin/gradle.properties +++ b/plugins/jreleaser-maven-plugin/gradle.properties @@ -16,5 +16,5 @@ # limitations under the License. # -project_description = JReleaser Maven Plugin -pluginDisplayName = JReleaser Maven Plugin \ No newline at end of file +project_description=JReleaser Maven Plugin +pluginDisplayName=JReleaser Maven Plugin \ No newline at end of file diff --git a/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle b/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle index 8180184d0..930a3d5f9 100644 --- a/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle +++ b/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle @@ -38,7 +38,7 @@ mavenPlugin { dependencies { api "org.slf4j:slf4j-api:$slf4jVersion" - api project(':jreleaser-workflow') + api project(':jreleaser-engine') //config api project(':jreleaser-config-yaml') api project(':jreleaser-config-toml') diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/AbstractJReleaserMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/AbstractJReleaserMojo.java index b97184b57..6f846761e 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/AbstractJReleaserMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/AbstractJReleaserMojo.java @@ -26,10 +26,11 @@ import org.jreleaser.logging.JReleaserLogger; import org.jreleaser.maven.plugin.internal.JReleaserLoggerAdapter; import org.jreleaser.maven.plugin.internal.JReleaserModelConfigurer; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.JReleaserException; import org.jreleaser.model.JReleaserVersion; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; import org.jreleaser.util.PlatformUtils; import org.jreleaser.util.StringUtils; @@ -44,7 +45,7 @@ import java.util.List; import java.util.Locale; -import static org.jreleaser.util.JReleaserOutput.JRELEASER_QUIET; +import static org.jreleaser.model.JReleaserOutput.JRELEASER_QUIET; import static org.jreleaser.util.StringUtils.isNotBlank; /** @@ -113,7 +114,7 @@ protected JReleaserModel convertModel() { } protected JReleaserModel readModel(JReleaserLogger logger) { - JReleaserModel jreleaserModel = ContextCreator.resolveModel(logger, configFile.toPath()); + JReleaserModel jreleaserModel = (JReleaserModel) ContextCreator.resolveModel(logger, configFile.toPath()); return JReleaserModelConfigurer.configure(jreleaserModel, project, session); } @@ -167,8 +168,8 @@ protected JReleaserContext.Configurer resolveConfigurer(File configFile) { throw new IllegalArgumentException("Invalid configuration format: " + configFile.getName()); } - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.FULL; + protected Mode getMode() { + return Mode.FULL; } private Path resolveBasedir() { diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAnnounceMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAnnounceMojo.java index aaac058ac..89f9bef73 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAnnounceMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAnnounceMojo.java @@ -21,7 +21,8 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** @@ -65,7 +66,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.ANNOUNCE; + protected Mode getMode() { + return Mode.ANNOUNCE; } } diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAssembleMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAssembleMojo.java index bfd257deb..2fedfd75c 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAssembleMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAssembleMojo.java @@ -21,7 +21,8 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** @@ -79,7 +80,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.ASSEMBLE; + protected Mode getMode() { + return Mode.ASSEMBLE; } } diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAutoConfigReleaseMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAutoConfigReleaseMojo.java index abcda0c07..f5c1ebcd6 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAutoConfigReleaseMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserAutoConfigReleaseMojo.java @@ -27,8 +27,8 @@ import org.jreleaser.engine.context.ModelAutoConfigurer; import org.jreleaser.logging.JReleaserLogger; import org.jreleaser.maven.plugin.internal.JReleaserLoggerAdapter; -import org.jreleaser.model.JReleaserContext; import org.jreleaser.model.UpdateSection; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.util.PlatformUtils; import org.jreleaser.workflow.Workflows; diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChangelogMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChangelogMojo.java index 1a18be23a..d2aab6aea 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChangelogMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChangelogMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; import org.jreleaser.workflow.Workflows; /** @@ -50,7 +50,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.CHANGELOG; + protected Mode getMode() { + return Mode.CHANGELOG; } } diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChecksumMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChecksumMojo.java index 5b5b4a0fd..2d38d8db4 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChecksumMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserChecksumMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java index 1f9b97cf3..84da4f307 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java @@ -23,7 +23,8 @@ import org.apache.maven.plugins.annotations.Parameter; import org.jreleaser.engine.context.ModelValidator; import org.jreleaser.maven.plugin.internal.JReleaserModelPrinter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import java.io.PrintWriter; @@ -81,11 +82,11 @@ public void execute() throws MojoExecutionException, MojoFailureException { context.report(); } - protected JReleaserContext.Mode getMode() { - if (download) return JReleaserContext.Mode.DOWNLOAD; - if (assembly) return JReleaserContext.Mode.ASSEMBLE; - if (changelog) return JReleaserContext.Mode.CHANGELOG; - if (announce) return JReleaserContext.Mode.ANNOUNCE; - return JReleaserContext.Mode.CONFIG; + protected Mode getMode() { + if (download) return Mode.DOWNLOAD; + if (assembly) return Mode.ASSEMBLE; + if (changelog) return Mode.CHANGELOG; + if (announce) return Mode.ANNOUNCE; + return Mode.CONFIG; } } diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserDownloadMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserDownloadMojo.java index a25acb96d..937730e27 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserDownloadMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserDownloadMojo.java @@ -21,7 +21,8 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** @@ -79,7 +80,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.DOWNLOAD; + protected Mode getMode() { + return Mode.DOWNLOAD; } } diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserFullReleaseMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserFullReleaseMojo.java index 9f8bbfe36..28c56f3cb 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserFullReleaseMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserFullReleaseMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPackageMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPackageMojo.java index 7de523f8b..a6241040c 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPackageMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPackageMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPrepareMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPrepareMojo.java index 9e48aa64d..d6ab59674 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPrepareMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPrepareMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPublishMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPublishMojo.java index c3b701060..cc469524f 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPublishMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserPublishMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserReleaseMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserReleaseMojo.java index ca8e2b714..c426ed4b6 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserReleaseMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserReleaseMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserSignMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserSignMojo.java index b14e9201e..29681500d 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserSignMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserSignMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserTemplateMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserTemplateMojo.java index 918f610e3..013e87287 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserTemplateMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserTemplateMojo.java @@ -25,7 +25,6 @@ import org.apache.maven.project.MavenProject; import org.jreleaser.logging.JReleaserLogger; import org.jreleaser.maven.plugin.internal.JReleaserLoggerAdapter; -import org.jreleaser.model.Distribution; import org.jreleaser.templates.TemplateGenerationException; import org.jreleaser.templates.TemplateGenerator; @@ -66,7 +65,7 @@ public class JReleaserTemplateMojo extends AbstractMojo { * The type of the distribution. */ @Parameter(property = "jreleaser.template.distribution.type", defaultValue = "JAVA_BINARY") - private final Distribution.DistributionType distributionType = Distribution.DistributionType.JAVA_BINARY; + private final org.jreleaser.model.Distribution.DistributionType distributionType = org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY; /** * The name of the packager. diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserUploadMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserUploadMojo.java index f52981df7..dfde8e657 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserUploadMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserUploadMojo.java @@ -21,7 +21,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; /** diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelConfigurer.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelConfigurer.java index d79a2f901..521feccb4 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelConfigurer.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelConfigurer.java @@ -21,9 +21,9 @@ import org.apache.maven.model.Developer; import org.apache.maven.model.License; import org.apache.maven.project.MavenProject; -import org.jreleaser.model.Environment; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Project; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.environment.Environment; +import org.jreleaser.model.internal.project.Project; import java.util.ArrayList; import java.util.Collections; diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java index 675ccced4..e4f447ce9 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java @@ -26,7 +26,7 @@ * @author Andres Almiray * @since 0.1.0 */ -public class JReleaserModelPrinter extends org.jreleaser.model.JReleaserModelPrinter { +public class JReleaserModelPrinter extends org.jreleaser.model.internal.JReleaserModelPrinter { public JReleaserModelPrinter(PrintWriter out) { super(out); } diff --git a/apps/jreleaser-tool-provider/gradle.properties b/plugins/jreleaser-tool-provider/gradle.properties similarity index 100% rename from apps/jreleaser-tool-provider/gradle.properties rename to plugins/jreleaser-tool-provider/gradle.properties diff --git a/apps/jreleaser-tool-provider/jreleaser-tool-provider.gradle b/plugins/jreleaser-tool-provider/jreleaser-tool-provider.gradle similarity index 100% rename from apps/jreleaser-tool-provider/jreleaser-tool-provider.gradle rename to plugins/jreleaser-tool-provider/jreleaser-tool-provider.gradle diff --git a/apps/jreleaser-tool-provider/src/main/java/org/jreleaser/tool/JReleaser.java b/plugins/jreleaser-tool-provider/src/main/java/org/jreleaser/tool/JReleaser.java similarity index 100% rename from apps/jreleaser-tool-provider/src/main/java/org/jreleaser/tool/JReleaser.java rename to plugins/jreleaser-tool-provider/src/main/java/org/jreleaser/tool/JReleaser.java diff --git a/apps/jreleaser/gradle.properties b/plugins/jreleaser/gradle.properties similarity index 100% rename from apps/jreleaser/gradle.properties rename to plugins/jreleaser/gradle.properties diff --git a/apps/jreleaser/jreleaser.gradle b/plugins/jreleaser/jreleaser.gradle similarity index 97% rename from apps/jreleaser/jreleaser.gradle rename to plugins/jreleaser/jreleaser.gradle index c7fad07d1..f84ba1634 100644 --- a/apps/jreleaser/jreleaser.gradle +++ b/plugins/jreleaser/jreleaser.gradle @@ -37,7 +37,7 @@ config { } dependencies { - api project(':jreleaser-workflow') + api project(':jreleaser-engine') //config api project(':jreleaser-config-yaml') api project(':jreleaser-config-toml') @@ -47,7 +47,6 @@ dependencies { annotationProcessor "info.picocli:picocli-codegen:$picocliVersion" api "info.picocli:picocli:$picocliVersion" - api "org.slf4j:slf4j-api:$slf4jVersion" runtimeOnly "org.slf4j:slf4j-simple:$slf4jVersion" } diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractCommand.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractCommand.java similarity index 97% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractCommand.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractCommand.java index 3b2f4ac70..631c98984 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractCommand.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractCommand.java @@ -18,7 +18,7 @@ package org.jreleaser.cli; import org.jreleaser.cli.internal.Colorizer; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.JReleaserException; import java.util.concurrent.Callable; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractLoggingCommand.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractLoggingCommand.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractLoggingCommand.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractLoggingCommand.java index 13e58e362..c2c1daafd 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractLoggingCommand.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractLoggingCommand.java @@ -32,7 +32,7 @@ import java.util.Locale; import java.util.concurrent.Callable; -import static org.jreleaser.util.JReleaserOutput.JRELEASER_QUIET; +import static org.jreleaser.model.JReleaserOutput.JRELEASER_QUIET; import static org.jreleaser.util.StringUtils.isNotBlank; /** diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractModelCommand.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractModelCommand.java similarity index 96% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractModelCommand.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractModelCommand.java index 323b0e85d..278e7f0d7 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractModelCommand.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractModelCommand.java @@ -19,10 +19,11 @@ import org.jreleaser.config.JReleaserConfigParser; import org.jreleaser.engine.context.ContextCreator; -import org.jreleaser.model.Environment; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; import org.jreleaser.model.JReleaserVersion; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.environment.Environment; import org.jreleaser.util.PlatformUtils; import org.jreleaser.util.StringUtils; import picocli.CommandLine; @@ -184,8 +185,8 @@ private Set getSupportedConfigFormats() { return extensions; } - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.FULL; + protected Mode getMode() { + return Mode.FULL; } protected List collectSelectedPlatforms() { diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractPlatformAwareModelCommand.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractPlatformAwareModelCommand.java similarity index 100% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/AbstractPlatformAwareModelCommand.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/AbstractPlatformAwareModelCommand.java diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Announce.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Announce.java similarity index 93% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Announce.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Announce.java index 7594c4841..2586e9b21 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Announce.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Announce.java @@ -17,7 +17,8 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; @@ -78,7 +79,7 @@ protected boolean dryrun() { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.ANNOUNCE; + protected Mode getMode() { + return Mode.ANNOUNCE; } } diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Assemble.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Assemble.java similarity index 94% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Assemble.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Assemble.java index 1eb70eb57..63138c884 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Assemble.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Assemble.java @@ -17,7 +17,8 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; @@ -88,7 +89,7 @@ protected void doExecute(JReleaserContext context) { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.ASSEMBLE; + protected Mode getMode() { + return Mode.ASSEMBLE; } } diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Banner.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Banner.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Banner.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Banner.java index 8e095714a..94ced5cf5 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Banner.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Banner.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.util.JReleaserOutput; +import org.jreleaser.model.JReleaserOutput; import java.io.File; import java.io.FileInputStream; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/BaseCommand.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/BaseCommand.java similarity index 100% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/BaseCommand.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/BaseCommand.java diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Changelog.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Changelog.java similarity index 86% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Changelog.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Changelog.java index b1f92dec4..89e6b9d73 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Changelog.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Changelog.java @@ -17,7 +17,8 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; @@ -33,7 +34,7 @@ protected void doExecute(JReleaserContext context) { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.CHANGELOG; + protected Mode getMode() { + return Mode.CHANGELOG; } } diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java similarity index 97% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java index cda8c83b2..b601d5e8d 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Config.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Config.java similarity index 84% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Config.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Config.java index 111c1fde2..d66410649 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Config.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Config.java @@ -19,7 +19,8 @@ import org.jreleaser.cli.internal.JReleaserModelPrinter; import org.jreleaser.engine.context.ModelValidator; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import picocli.CommandLine; /** @@ -56,12 +57,12 @@ protected void doExecute(JReleaserContext context) { } @Override - protected JReleaserContext.Mode getMode() { - if (download()) return JReleaserContext.Mode.DOWNLOAD; - if (assembly()) return JReleaserContext.Mode.ASSEMBLE; - if (changelog()) return JReleaserContext.Mode.CHANGELOG; - if (announce()) return JReleaserContext.Mode.ANNOUNCE; - return JReleaserContext.Mode.CONFIG; + protected Mode getMode() { + if (download()) return Mode.DOWNLOAD; + if (assembly()) return Mode.ASSEMBLE; + if (changelog()) return Mode.CHANGELOG; + if (announce()) return Mode.ANNOUNCE; + return Mode.CONFIG; } private boolean download() { diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Download.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Download.java similarity index 94% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Download.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Download.java index 2a4059baa..d1f092028 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Download.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Download.java @@ -17,7 +17,8 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.api.JReleaserContext.Mode; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; @@ -96,7 +97,7 @@ protected boolean dryrun() { } @Override - protected JReleaserContext.Mode getMode() { - return JReleaserContext.Mode.DOWNLOAD; + protected Mode getMode() { + return Mode.DOWNLOAD; } } diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/FullRelease.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/FullRelease.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/FullRelease.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/FullRelease.java index 8391816ed..0ff3a1969 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/FullRelease.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/FullRelease.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/HaltExecutionException.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/HaltExecutionException.java similarity index 100% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/HaltExecutionException.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/HaltExecutionException.java diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Init.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Init.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Init.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Init.java index 4f56154f8..ab02fcfa9 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Init.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Init.java @@ -19,9 +19,9 @@ import org.apache.commons.io.IOUtils; import org.jreleaser.config.JReleaserConfigParser; +import org.jreleaser.model.JReleaserException; import org.jreleaser.templates.TemplateResource; import org.jreleaser.templates.TemplateUtils; -import org.jreleaser.util.JReleaserException; import picocli.CommandLine; import java.io.IOException; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/JsonSchema.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/JsonSchema.java similarity index 90% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/JsonSchema.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/JsonSchema.java index 49ad16460..21c5b4be9 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/JsonSchema.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/JsonSchema.java @@ -30,9 +30,9 @@ import com.github.victools.jsonschema.generator.impl.DefinitionKey; import com.github.victools.jsonschema.generator.naming.DefaultSchemaDefinitionNamingStrategy; import com.github.victools.jsonschema.module.jackson.JacksonModule; -import org.jreleaser.model.JReleaserModel; +import org.jreleaser.model.JReleaserException; import org.jreleaser.model.JReleaserVersion; -import org.jreleaser.util.JReleaserException; +import org.jreleaser.model.internal.JReleaserModel; import picocli.CommandLine; import java.nio.file.Files; @@ -64,26 +64,26 @@ protected void execute() { Map mappings = new LinkedHashMap<>(); mappings.put("Map", "Properties"); mappings.put("Map", "StringProperties"); - mappings.put("Map", "WebhookMap"); - mappings.put("Map", "ArchiveMap"); - mappings.put("Map", "JlinkMap"); - mappings.put("Map", "JpackageMap"); - mappings.put("Map", "NativeImageMap"); + mappings.put("Map", "WebhookAnnouncerMap"); + mappings.put("Map", "HttpAnnouncerMap"); + mappings.put("Map", "ArchiveAssemblerMap"); + mappings.put("Map", "JlinkAssemblerMap"); + mappings.put("Map", "JpackageAssemblerMap"); + mappings.put("Map", "NativeImageAssemblerMap"); mappings.put("Map", "DistributionMap"); mappings.put("Map", "DockerSpecMap"); - mappings.put("Map", "ArtifactoryMap"); + mappings.put("Map", "ArtifactoryUploaderMap"); mappings.put("Map", "GiteaUploaderMap"); mappings.put("Map", "GitlabUploaderMap"); mappings.put("Map", "FtpUploaderMap"); mappings.put("Map", "HttpUploaderMap"); mappings.put("Map", "SftpUploaderMap"); mappings.put("Map", "ScpUploaderMap"); - mappings.put("Map", "S3Map"); + mappings.put("Map", "S3UploaderMap"); mappings.put("Map", "FtpDownloaderMap"); mappings.put("Map", "HttpDownloaderMap"); mappings.put("Map", "SftpDownloaderMap"); mappings.put("Map", "ScpDownloaderMap"); - mappings.put("Map", "HttpAnnouncerMap"); mappings.put("Map", "ExtensionMap"); try { diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Main.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Main.java similarity index 100% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Main.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Main.java diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Package.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Package.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Package.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Package.java index 4e4beb1e5..c3c526d3a 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Package.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Package.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Prepare.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Prepare.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Prepare.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Prepare.java index d135aee07..de9c4e3d6 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Prepare.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Prepare.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Publish.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Publish.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Publish.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Publish.java index 3bcac800b..c51db6a89 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Publish.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Publish.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Release.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Release.java similarity index 99% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Release.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Release.java index 46b2e2c4b..a8b89157c 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Release.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Release.java @@ -18,8 +18,8 @@ package org.jreleaser.cli; import org.jreleaser.engine.context.ModelAutoConfigurer; -import org.jreleaser.model.JReleaserContext; import org.jreleaser.model.UpdateSection; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Sign.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Sign.java similarity index 97% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Sign.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Sign.java index bb14f77d7..2da0e70f0 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Sign.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Sign.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Template.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Template.java similarity index 95% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Template.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Template.java index 09531c1bd..b4692e314 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Template.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Template.java @@ -17,10 +17,9 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.Distribution; +import org.jreleaser.model.JReleaserException; import org.jreleaser.templates.TemplateGenerationException; import org.jreleaser.templates.TemplateGenerator; -import org.jreleaser.util.JReleaserException; import picocli.CommandLine; import java.nio.file.Path; @@ -56,7 +55,7 @@ String distributionName() { return packagers != null ? packagers.distributionName : null; } - Distribution.DistributionType distributionType() { + org.jreleaser.model.Distribution.DistributionType distributionType() { return packagers != null ? packagers.distributionType : null; } } @@ -84,7 +83,7 @@ static class Packagers { paramLabel = "", required = true, defaultValue = "JAVA_BINARY") - Distribution.DistributionType distributionType; + org.jreleaser.model.Distribution.DistributionType distributionType; } @CommandLine.Option(names = {"-o", "--overwrite"}) diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Upload.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Upload.java similarity index 98% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Upload.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Upload.java index d87f04a6a..9212dcc95 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Upload.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Upload.java @@ -17,7 +17,7 @@ */ package org.jreleaser.cli; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; import org.jreleaser.workflow.Workflows; import picocli.CommandLine; diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Versions.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/Versions.java similarity index 100% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/Versions.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/Versions.java diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/internal/ColorizedJReleaserLoggerAdapter.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/ColorizedJReleaserLoggerAdapter.java similarity index 100% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/internal/ColorizedJReleaserLoggerAdapter.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/ColorizedJReleaserLoggerAdapter.java diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/internal/Colorizer.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/Colorizer.java similarity index 100% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/internal/Colorizer.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/Colorizer.java diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/internal/JReleaserModelPrinter.java b/plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/JReleaserModelPrinter.java similarity index 91% rename from apps/jreleaser/src/main/java/org/jreleaser/cli/internal/JReleaserModelPrinter.java rename to plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/JReleaserModelPrinter.java index 525358768..eceb937e7 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/internal/JReleaserModelPrinter.java +++ b/plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/JReleaserModelPrinter.java @@ -25,7 +25,7 @@ * @author Andres Almiray * @since 0.1.0 */ -public class JReleaserModelPrinter extends org.jreleaser.model.JReleaserModelPrinter { +public class JReleaserModelPrinter extends org.jreleaser.model.internal.JReleaserModelPrinter { public JReleaserModelPrinter(PrintWriter out) { super(out); } diff --git a/apps/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.json.tpl b/plugins/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.json.tpl similarity index 100% rename from apps/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.json.tpl rename to plugins/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.json.tpl diff --git a/apps/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.toml.tpl b/plugins/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.toml.tpl similarity index 100% rename from apps/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.toml.tpl rename to plugins/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.toml.tpl diff --git a/apps/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.yml.tpl b/plugins/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.yml.tpl similarity index 100% rename from apps/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.yml.tpl rename to plugins/jreleaser/src/main/resources/META-INF/jreleaser/templates/jreleaser.yml.tpl diff --git a/apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/native-image.properties b/plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/native-image.properties similarity index 100% rename from apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/native-image.properties rename to plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/native-image.properties diff --git a/apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/proxy-config.json b/plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/proxy-config.json similarity index 100% rename from apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/proxy-config.json rename to plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/proxy-config.json diff --git a/apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/reflect-config.json b/plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/reflect-config.json similarity index 100% rename from apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/reflect-config.json rename to plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/reflect-config.json diff --git a/apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/resource-config.json b/plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/resource-config.json similarity index 100% rename from apps/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/resource-config.json rename to plugins/jreleaser/src/main/resources/META-INF/native-image/org.jreleaser/jreleaser/resource-config.json diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ca.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ca.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ca.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ca.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_de.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_de.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_de.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_de.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_es.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_es.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_es.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_es.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_fr.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_fr.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_fr.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_fr.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_hi.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_hi.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_hi.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_hi.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_it.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_it.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_it.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_it.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ja.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ja.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ja.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ja.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ko.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ko.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ko.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ko.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_nl.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_nl.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_nl.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_nl.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_pt_BR.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_pt_BR.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_pt_BR.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_pt_BR.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ru.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ru.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ru.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_ru.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_zh_TW.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_zh_TW.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Banner_zh_TW.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Banner_zh_TW.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ca.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ca.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ca.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ca.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_de.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_de.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_de.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_de.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_es.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_es.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_es.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_es.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_fr.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_fr.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_fr.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_fr.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_hi.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_hi.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_hi.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_hi.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_it.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_it.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_it.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_it.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ja.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ja.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ja.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ja.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ko.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ko.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ko.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ko.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_nl.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_nl.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_nl.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_nl.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_pt_BR.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_pt_BR.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_pt_BR.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_pt_BR.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ru.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ru.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ru.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_ru.properties diff --git a/apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_zh_TW.properties b/plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_zh_TW.properties similarity index 100% rename from apps/jreleaser/src/main/resources/org/jreleaser/cli/Messages_zh_TW.properties rename to plugins/jreleaser/src/main/resources/org/jreleaser/cli/Messages_zh_TW.properties diff --git a/sdks/genericgit-java-sdk/genericgit-java-sdk.gradle b/sdks/genericgit-java-sdk/genericgit-java-sdk.gradle deleted file mode 100644 index d8568d914..000000000 --- a/sdks/genericgit-java-sdk/genericgit-java-sdk.gradle +++ /dev/null @@ -1,25 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':git-sdk') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/sdks/gitlab-java-sdk/gitlab-java-sdk.gradle b/sdks/gitlab-java-sdk/gitlab-java-sdk.gradle deleted file mode 100644 index d8568d914..000000000 --- a/sdks/gitlab-java-sdk/gitlab-java-sdk.gradle +++ /dev/null @@ -1,25 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':git-sdk') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/sdks/http-java-sdk/http-java-sdk.gradle b/sdks/http-java-sdk/http-java-sdk.gradle deleted file mode 100644 index eccc2d436..000000000 --- a/sdks/http-java-sdk/http-java-sdk.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/sdks/artifactory-java-sdk/gradle.properties b/sdks/jreleaser-artifactory-java-sdk/gradle.properties similarity index 100% rename from sdks/artifactory-java-sdk/gradle.properties rename to sdks/jreleaser-artifactory-java-sdk/gradle.properties diff --git a/sdks/discord-java-sdk/discord-java-sdk.gradle b/sdks/jreleaser-artifactory-java-sdk/jreleaser-artifactory-java-sdk.gradle similarity index 90% rename from sdks/discord-java-sdk/discord-java-sdk.gradle rename to sdks/jreleaser-artifactory-java-sdk/jreleaser-artifactory-java-sdk.gradle index eccc2d436..a290e7587 100644 --- a/sdks/discord-java-sdk/discord-java-sdk.gradle +++ b/sdks/jreleaser-artifactory-java-sdk/jreleaser-artifactory-java-sdk.gradle @@ -19,6 +19,6 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') } \ No newline at end of file diff --git a/sdks/artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploader.java b/sdks/jreleaser-artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploader.java similarity index 89% rename from sdks/artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploader.java rename to sdks/jreleaser-artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploader.java index 05e3b9522..64f7e7448 100644 --- a/sdks/artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploader.java +++ b/sdks/jreleaser-artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploader.java @@ -19,10 +19,10 @@ import feign.form.FormData; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Artifactory; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.ArtifactoryUploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import org.jreleaser.sdk.commons.ClientUtils; import org.jreleaser.util.Algorithm; @@ -40,26 +40,26 @@ * @since 0.3.0 */ @org.jreleaser.infra.nativeimage.annotations.NativeImage -public class ArtifactoryArtifactUploader extends AbstractArtifactUploader { - private Artifactory uploader; +public class ArtifactoryArtifactUploader extends AbstractArtifactUploader { + private ArtifactoryUploader uploader; public ArtifactoryArtifactUploader(JReleaserContext context) { super(context); } @Override - public Artifactory getUploader() { + public ArtifactoryUploader getUploader() { return uploader; } @Override - public void setUploader(Artifactory uploader) { + public void setUploader(ArtifactoryUploader uploader) { this.uploader = uploader; } @Override public String getType() { - return Artifactory.TYPE; + return org.jreleaser.model.api.upload.ArtifactoryUploader.TYPE; } @Override diff --git a/sdks/artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploaderFactory.java b/sdks/jreleaser-artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploaderFactory.java similarity index 77% rename from sdks/artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploaderFactory.java rename to sdks/jreleaser-artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploaderFactory.java index 9866401a5..a7e8700b1 100644 --- a/sdks/artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploaderFactory.java +++ b/sdks/jreleaser-artifactory-java-sdk/src/main/java/org/jreleaser/sdk/artifactory/ArtifactoryArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.artifactory; -import org.jreleaser.model.Artifactory; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.ArtifactoryUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.3.0 */ @ServiceProviderFor(ArtifactUploaderFactory.class) -public class ArtifactoryArtifactUploaderFactory implements ArtifactUploaderFactory { +public class ArtifactoryArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return Artifactory.TYPE; + return org.jreleaser.model.api.upload.ArtifactoryUploader.TYPE; } @Override diff --git a/sdks/codeberg-java-sdk/gradle.properties b/sdks/jreleaser-codeberg-java-sdk/gradle.properties similarity index 100% rename from sdks/codeberg-java-sdk/gradle.properties rename to sdks/jreleaser-codeberg-java-sdk/gradle.properties diff --git a/sdks/codeberg-java-sdk/codeberg-java-sdk.gradle b/sdks/jreleaser-codeberg-java-sdk/jreleaser-codeberg-java-sdk.gradle similarity index 94% rename from sdks/codeberg-java-sdk/codeberg-java-sdk.gradle rename to sdks/jreleaser-codeberg-java-sdk/jreleaser-codeberg-java-sdk.gradle index f8e57adab..dc68b8793 100644 --- a/sdks/codeberg-java-sdk/codeberg-java-sdk.gradle +++ b/sdks/jreleaser-codeberg-java-sdk/jreleaser-codeberg-java-sdk.gradle @@ -19,5 +19,5 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':gitea-java-sdk') + api project(':jreleaser-gitea-java-sdk') } \ No newline at end of file diff --git a/sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaser.java b/sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaser.java similarity index 83% rename from sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaser.java rename to sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaser.java index c9e172d03..6dcfce596 100644 --- a/sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaser.java +++ b/sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaser.java @@ -17,10 +17,9 @@ */ package org.jreleaser.sdk.codeberg; -import org.jreleaser.model.Gitea; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.releaser.spi.Asset; -import org.jreleaser.model.releaser.spi.Repository; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.release.Asset; +import org.jreleaser.model.spi.release.Repository; import org.jreleaser.sdk.gitea.GiteaReleaser; import java.util.List; @@ -36,7 +35,7 @@ public CodebergReleaser(JReleaserContext context, List assets) { } @Override - protected Gitea resolveGiteaFromModel() { + protected org.jreleaser.model.internal.release.GiteaReleaser resolveGiteaFromModel() { return context.getModel().getRelease().getCodeberg(); } diff --git a/sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilder.java b/sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilder.java similarity index 93% rename from sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilder.java rename to sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilder.java index e2c7879bd..18a2b815b 100644 --- a/sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilder.java +++ b/sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.codeberg; -import org.jreleaser.model.releaser.spi.AbstractReleaserBuilder; +import org.jreleaser.model.spi.release.AbstractReleaserBuilder; /** * @author Andres Almiray diff --git a/sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilderFactory.java b/sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilderFactory.java similarity index 89% rename from sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilderFactory.java rename to sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilderFactory.java index 258a4f40f..b410284bb 100644 --- a/sdks/codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilderFactory.java +++ b/sdks/jreleaser-codeberg-java-sdk/src/main/java/org/jreleaser/sdk/codeberg/CodebergReleaserBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.codeberg; -import org.jreleaser.model.releaser.spi.ReleaserBuilderFactory; +import org.jreleaser.model.spi.release.ReleaserBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class CodebergReleaserBuilderFactory implements ReleaserBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Codeberg.NAME; + return org.jreleaser.model.api.release.CodebergReleaser.TYPE; } @Override diff --git a/core/jreleaser-workflow/gradle.properties b/sdks/jreleaser-command-java-sdk/gradle.properties similarity index 93% rename from core/jreleaser-workflow/gradle.properties rename to sdks/jreleaser-command-java-sdk/gradle.properties index ae042e533..fd6157064 100644 --- a/core/jreleaser-workflow/gradle.properties +++ b/sdks/jreleaser-command-java-sdk/gradle.properties @@ -16,4 +16,4 @@ # limitations under the License. # -project_description = JReleaser Workflow +project_description = JReleaser command SDK \ No newline at end of file diff --git a/core/jreleaser-assemblers/jreleaser-assemblers.gradle b/sdks/jreleaser-command-java-sdk/jreleaser-command-java-sdk.gradle similarity index 78% rename from core/jreleaser-assemblers/jreleaser-assemblers.gradle rename to sdks/jreleaser-command-java-sdk/jreleaser-command-java-sdk.gradle index a4d6440f4..4878f4f6c 100644 --- a/core/jreleaser-assemblers/jreleaser-assemblers.gradle +++ b/sdks/jreleaser-command-java-sdk/jreleaser-command-java-sdk.gradle @@ -16,12 +16,13 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model') - api project(':git-sdk') - api project(':tool-sdk') - api project(':jreleaser-templates') - api "commons-io:commons-io:$commonsIoVersion" + api project(':jreleaser-model-api') + api project(':jreleaser-logger-api') + api project(':jreleaser-resource-bundle') + api project(':jreleaser-utils') compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api "org.zeroturnaround:zt-exec:$ztexecVersion" } \ No newline at end of file diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/command/Command.java b/sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/Command.java similarity index 96% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/command/Command.java rename to sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/Command.java index b1a53ea32..acdba1cad 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/command/Command.java +++ b/sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/Command.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.command; +package org.jreleaser.sdk.command; import org.jreleaser.util.PlatformUtils; @@ -31,6 +31,7 @@ * @author Andres Almiray * @since 0.8.0 */ +@org.jreleaser.infra.nativeimage.annotations.NativeImage public class Command { private final List args = new ArrayList<>(); private final boolean supportsArgsfile; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/command/CommandException.java b/sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/CommandException.java similarity index 96% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/command/CommandException.java rename to sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/CommandException.java index 57bcc7a6c..1d384c85b 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/command/CommandException.java +++ b/sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/CommandException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.command; +package org.jreleaser.sdk.command; /** * @author Andres Almiray diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/command/CommandExecutor.java b/sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/CommandExecutor.java similarity index 99% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/command/CommandExecutor.java rename to sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/CommandExecutor.java index 50b19fdaf..3b671d27d 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/command/CommandExecutor.java +++ b/sdks/jreleaser-command-java-sdk/src/main/java/org/jreleaser/sdk/command/CommandExecutor.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.command; +package org.jreleaser.sdk.command; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; diff --git a/sdks/disco-java-sdk/gradle.properties b/sdks/jreleaser-disco-java-sdk/gradle.properties similarity index 100% rename from sdks/disco-java-sdk/gradle.properties rename to sdks/jreleaser-disco-java-sdk/gradle.properties diff --git a/sdks/disco-java-sdk/disco-java-sdk.gradle b/sdks/jreleaser-disco-java-sdk/jreleaser-disco-java-sdk.gradle similarity index 100% rename from sdks/disco-java-sdk/disco-java-sdk.gradle rename to sdks/jreleaser-disco-java-sdk/jreleaser-disco-java-sdk.gradle diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/Disco.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/Disco.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/Disco.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/Disco.java diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/JReleaserVersion.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/JReleaserVersion.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/JReleaserVersion.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/JReleaserVersion.java diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/RestAPIException.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/RestAPIException.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/RestAPIException.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/RestAPIException.java diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/DiscoAPI.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/DiscoAPI.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/DiscoAPI.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/DiscoAPI.java diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/EphemeralId.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/EphemeralId.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/EphemeralId.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/EphemeralId.java diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Links.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Links.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Links.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Links.java diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Pkg.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Pkg.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Pkg.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Pkg.java diff --git a/sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Result.java b/sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Result.java similarity index 100% rename from sdks/disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Result.java rename to sdks/jreleaser-disco-java-sdk/src/main/java/org/jreleaser/sdk/disco/api/Result.java diff --git a/sdks/disco-java-sdk/src/main/resources/org/jreleaser/sdk/disco/JReleaserVersion.properties b/sdks/jreleaser-disco-java-sdk/src/main/resources/org/jreleaser/sdk/disco/JReleaserVersion.properties similarity index 100% rename from sdks/disco-java-sdk/src/main/resources/org/jreleaser/sdk/disco/JReleaserVersion.properties rename to sdks/jreleaser-disco-java-sdk/src/main/resources/org/jreleaser/sdk/disco/JReleaserVersion.properties diff --git a/sdks/discord-java-sdk/gradle.properties b/sdks/jreleaser-discord-java-sdk/gradle.properties similarity index 100% rename from sdks/discord-java-sdk/gradle.properties rename to sdks/jreleaser-discord-java-sdk/gradle.properties diff --git a/sdks/artifactory-java-sdk/artifactory-java-sdk.gradle b/sdks/jreleaser-discord-java-sdk/jreleaser-discord-java-sdk.gradle similarity index 90% rename from sdks/artifactory-java-sdk/artifactory-java-sdk.gradle rename to sdks/jreleaser-discord-java-sdk/jreleaser-discord-java-sdk.gradle index eccc2d436..a290e7587 100644 --- a/sdks/artifactory-java-sdk/artifactory-java-sdk.gradle +++ b/sdks/jreleaser-discord-java-sdk/jreleaser-discord-java-sdk.gradle @@ -19,6 +19,6 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') } \ No newline at end of file diff --git a/sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncer.java b/sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncer.java similarity index 79% rename from sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncer.java rename to sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncer.java index 649cee880..fe6b3e75f 100644 --- a/sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncer.java +++ b/sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncer.java @@ -17,13 +17,12 @@ */ package org.jreleaser.sdk.discord; -import org.jreleaser.model.Discord; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.sdk.commons.ClientUtils; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -44,7 +43,7 @@ public class DiscordAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Discord.NAME; + return org.jreleaser.model.api.announce.DiscordAnnouncer.TYPE; } @Override @@ -54,7 +53,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Discord discord = context.getModel().getAnnounce().getDiscord(); + org.jreleaser.model.internal.announce.DiscordAnnouncer discord = context.getModel().getAnnounce().getDiscord(); String message = ""; if (isNotBlank(discord.getMessage())) { @@ -62,7 +61,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = discord.getResolvedMessageTemplate(context, props); } diff --git a/sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilder.java b/sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilder.java similarity index 93% rename from sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilder.java rename to sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilder.java index 49483f069..baf3266d0 100644 --- a/sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilder.java +++ b/sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.discord; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilderFactory.java b/sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilderFactory.java similarity index 89% rename from sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilderFactory.java rename to sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilderFactory.java index 4010e1f3b..e19e2eff1 100644 --- a/sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/DiscordAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.discord; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class DiscordAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Discord.NAME; + return org.jreleaser.model.api.announce.DiscordAnnouncer.TYPE; } @Override diff --git a/sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/Message.java b/sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/Message.java similarity index 100% rename from sdks/discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/Message.java rename to sdks/jreleaser-discord-java-sdk/src/main/java/org/jreleaser/sdk/discord/Message.java diff --git a/sdks/ftp-java-sdk/gradle.properties b/sdks/jreleaser-ftp-java-sdk/gradle.properties similarity index 100% rename from sdks/ftp-java-sdk/gradle.properties rename to sdks/jreleaser-ftp-java-sdk/gradle.properties diff --git a/sdks/ftp-java-sdk/ftp-java-sdk.gradle b/sdks/jreleaser-ftp-java-sdk/jreleaser-ftp-java-sdk.gradle similarity index 90% rename from sdks/ftp-java-sdk/ftp-java-sdk.gradle rename to sdks/jreleaser-ftp-java-sdk/jreleaser-ftp-java-sdk.gradle index 0b6348bb9..644b5f721 100644 --- a/sdks/ftp-java-sdk/ftp-java-sdk.gradle +++ b/sdks/jreleaser-ftp-java-sdk/jreleaser-ftp-java-sdk.gradle @@ -19,7 +19,7 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') api "commons-net:commons-net:$commonsNetVersion" } \ No newline at end of file diff --git a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloader.java b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloader.java similarity index 91% rename from sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloader.java rename to sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloader.java index 18f6d4670..6907bc0e8 100644 --- a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloader.java +++ b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloader.java @@ -19,11 +19,10 @@ import org.apache.commons.net.ftp.FTPClient; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.FtpDownloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpDownloader; -import org.jreleaser.model.downloader.spi.DownloadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.FtpDownloader; +import org.jreleaser.model.spi.download.DownloadException; import org.jreleaser.sdk.commons.AbstractArtifactDownloader; import java.io.IOException; @@ -60,7 +59,7 @@ public void setDownloader(FtpDownloader downloader) { @Override public String getType() { - return ScpDownloader.TYPE; + return org.jreleaser.model.api.download.ScpDownloader.TYPE; } @Override diff --git a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloaderFactory.java b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloaderFactory.java similarity index 82% rename from sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloaderFactory.java rename to sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloaderFactory.java index 3187d108c..009656a0a 100644 --- a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloaderFactory.java +++ b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactDownloaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.ftp; -import org.jreleaser.model.FtpDownloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.downloader.spi.ArtifactDownloaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.FtpDownloader; +import org.jreleaser.model.spi.download.ArtifactDownloaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class FtpArtifactDownloaderFactory implements ArtifactDownloaderFactory { @Override public String getName() { - return FtpDownloader.TYPE; + return org.jreleaser.model.api.download.FtpDownloader.TYPE; } @Override diff --git a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploader.java b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploader.java similarity index 90% rename from sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploader.java rename to sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploader.java index f759ff879..9a7534ac5 100644 --- a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploader.java +++ b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploader.java @@ -19,10 +19,10 @@ import org.apache.commons.net.ftp.FTPClient; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.FtpUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.FtpUploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import java.io.IOException; @@ -55,7 +55,7 @@ public void setUploader(FtpUploader uploader) { @Override public String getType() { - return FtpUploader.TYPE; + return org.jreleaser.model.api.upload.FtpUploader.TYPE; } @Override diff --git a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploaderFactory.java b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploaderFactory.java similarity index 82% rename from sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploaderFactory.java rename to sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploaderFactory.java index e017edc84..6d538496d 100644 --- a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploaderFactory.java +++ b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.ftp; -import org.jreleaser.model.FtpUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.FtpUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class FtpArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return FtpUploader.TYPE; + return org.jreleaser.model.api.upload.FtpUploader.TYPE; } @Override diff --git a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpUtils.java b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpUtils.java similarity index 92% rename from sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpUtils.java rename to sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpUtils.java index 80c149be2..1cc24589b 100644 --- a/sdks/ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpUtils.java +++ b/sdks/jreleaser-ftp-java-sdk/src/main/java/org/jreleaser/sdk/ftp/FtpUtils.java @@ -22,13 +22,13 @@ import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Ftp; -import org.jreleaser.model.FtpDownloader; -import org.jreleaser.model.FtpUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.TimeoutAware; -import org.jreleaser.model.downloader.spi.DownloadException; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Ftp; +import org.jreleaser.model.internal.common.TimeoutAware; +import org.jreleaser.model.internal.download.FtpDownloader; +import org.jreleaser.model.internal.upload.FtpUploader; +import org.jreleaser.model.spi.download.DownloadException; +import org.jreleaser.model.spi.upload.UploadException; import java.io.IOException; diff --git a/sdks/genericgit-java-sdk/gradle.properties b/sdks/jreleaser-genericgit-java-sdk/gradle.properties similarity index 100% rename from sdks/genericgit-java-sdk/gradle.properties rename to sdks/jreleaser-genericgit-java-sdk/gradle.properties diff --git a/sdks/jreleaser-genericgit-java-sdk/jreleaser-genericgit-java-sdk.gradle b/sdks/jreleaser-genericgit-java-sdk/jreleaser-genericgit-java-sdk.gradle new file mode 100644 index 000000000..d9496d561 --- /dev/null +++ b/sdks/jreleaser-genericgit-java-sdk/jreleaser-genericgit-java-sdk.gradle @@ -0,0 +1,25 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-git-java-sdk') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaser.java b/sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaser.java similarity index 80% rename from sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaser.java rename to sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaser.java index bb95f98b8..ab4e2e989 100644 --- a/sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaser.java +++ b/sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaser.java @@ -18,16 +18,16 @@ package org.jreleaser.sdk.generic.git; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.releaser.spi.AbstractReleaser; -import org.jreleaser.model.releaser.spi.Asset; -import org.jreleaser.model.releaser.spi.Release; -import org.jreleaser.model.releaser.spi.ReleaseException; -import org.jreleaser.model.releaser.spi.Repository; -import org.jreleaser.model.releaser.spi.User; +import org.jreleaser.model.JReleaserException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.release.AbstractReleaser; +import org.jreleaser.model.spi.release.Asset; +import org.jreleaser.model.spi.release.Release; +import org.jreleaser.model.spi.release.ReleaseException; +import org.jreleaser.model.spi.release.Repository; +import org.jreleaser.model.spi.release.User; import org.jreleaser.sdk.git.ChangelogProvider; import org.jreleaser.sdk.git.ReleaseUtils; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.util.Collections; @@ -55,7 +55,7 @@ public String generateReleaseNotes() throws IOException { @Override protected void createTag() throws ReleaseException { - if (context.getModel().getRelease().getGitService().isMatch()) { + if (context.getModel().getRelease().getReleaser().isMatch()) { ReleaseUtils.createTag(context); } } @@ -63,7 +63,7 @@ protected void createTag() throws ReleaseException { @Override protected void createRelease() throws ReleaseException { context.getLogger().info(RB.$("generic.git.warning")); - if (context.getModel().getRelease().getGitService().isMatch()) { + if (context.getModel().getRelease().getReleaser().isMatch()) { ReleaseUtils.createTag(context); } } diff --git a/sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilder.java b/sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilder.java similarity index 93% rename from sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilder.java rename to sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilder.java index 80198b053..e587ffed3 100644 --- a/sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilder.java +++ b/sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.generic.git; -import org.jreleaser.model.releaser.spi.AbstractReleaserBuilder; +import org.jreleaser.model.spi.release.AbstractReleaserBuilder; /** * @author Andres Almiray diff --git a/sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilderFactory.java b/sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilderFactory.java similarity index 89% rename from sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilderFactory.java rename to sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilderFactory.java index b17455458..f1c029e22 100644 --- a/sdks/genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilderFactory.java +++ b/sdks/jreleaser-genericgit-java-sdk/src/main/java/org/jreleaser/sdk/generic/git/GenericGitReleaserBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.generic.git; -import org.jreleaser.model.releaser.spi.ReleaserBuilderFactory; +import org.jreleaser.model.spi.release.ReleaserBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class GenericGitReleaserBuilderFactory implements ReleaserBuilderFactory { @Override public String getName() { - return org.jreleaser.model.GenericGit.NAME; + return org.jreleaser.model.api.release.GenericGitReleaser.TYPE; } @Override diff --git a/sdks/git-sdk/gradle.properties b/sdks/jreleaser-git-java-sdk/gradle.properties similarity index 100% rename from sdks/git-sdk/gradle.properties rename to sdks/jreleaser-git-java-sdk/gradle.properties diff --git a/sdks/git-sdk/git-sdk.gradle b/sdks/jreleaser-git-java-sdk/jreleaser-git-java-sdk.gradle similarity index 96% rename from sdks/git-sdk/git-sdk.gradle rename to sdks/jreleaser-git-java-sdk/jreleaser-git-java-sdk.gradle index 6026bb8a2..979e3c845 100644 --- a/sdks/git-sdk/git-sdk.gradle +++ b/sdks/jreleaser-git-java-sdk/jreleaser-git-java-sdk.gradle @@ -16,7 +16,7 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "org.eclipse.jgit:org.eclipse.jgit:$jgitVersion" diff --git a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogGenerator.java b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogGenerator.java similarity index 93% rename from sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogGenerator.java rename to sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogGenerator.java index a1fd116b0..397769379 100644 --- a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogGenerator.java +++ b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogGenerator.java @@ -24,16 +24,15 @@ import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.revwalk.RevCommit; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Changelog; -import org.jreleaser.model.GitService; -import org.jreleaser.model.Gitlab; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Project; -import org.jreleaser.model.releaser.spi.User; -import org.jreleaser.model.util.VersionUtils; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.Changelog; +import org.jreleaser.model.internal.util.VersionUtils; +import org.jreleaser.model.spi.release.User; import org.jreleaser.util.CollectionUtils; import org.jreleaser.util.StringUtils; -import org.jreleaser.util.Version; +import org.jreleaser.version.Version; import java.io.IOException; import java.util.ArrayList; @@ -54,19 +53,19 @@ import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; +import static org.jreleaser.model.Constants.KEY_CHANGELOG_CHANGES; +import static org.jreleaser.model.Constants.KEY_CHANGELOG_CONTRIBUTORS; +import static org.jreleaser.mustache.MustacheUtils.applyTemplate; +import static org.jreleaser.mustache.MustacheUtils.passThrough; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.sdk.git.ChangelogProvider.extractIssues; import static org.jreleaser.sdk.git.ChangelogProvider.storeIssues; import static org.jreleaser.sdk.git.GitSdk.extractTagName; import static org.jreleaser.util.ComparatorUtils.lessThan; -import static org.jreleaser.util.Constants.KEY_CHANGELOG_CHANGES; -import static org.jreleaser.util.Constants.KEY_CHANGELOG_CONTRIBUTORS; -import static org.jreleaser.util.MustacheUtils.applyTemplate; -import static org.jreleaser.util.MustacheUtils.passThrough; import static org.jreleaser.util.StringUtils.isNotBlank; import static org.jreleaser.util.StringUtils.normalizeRegexPattern; import static org.jreleaser.util.StringUtils.stripMargin; import static org.jreleaser.util.StringUtils.toSafeRegexPattern; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -81,11 +80,11 @@ public ChangelogGenerator() { } protected String createChangelog(JReleaserContext context) throws IOException { - GitService gitService = context.getModel().getRelease().getGitService(); - Changelog changelog = gitService.getChangelog(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); + Changelog changelog = releaser.getChangelog(); String separator = lineSeparator(); - if (Gitlab.NAME.equals(gitService.getServiceName())) { + if (org.jreleaser.model.api.release.GitlabReleaser.TYPE.equals(releaser.getServiceName())) { separator += lineSeparator(); } String commitSeparator = separator; @@ -96,7 +95,7 @@ protected String createChangelog(JReleaserContext context) throws IOException { Iterable commits = resolveCommits(git, context); Comparator revCommitComparator = Comparator.comparing(RevCommit::getCommitTime).reversed(); - if (changelog.getSort() == Changelog.Sort.ASC) { + if (changelog.getSort() == org.jreleaser.model.Changelog.Sort.ASC) { revCommitComparator = Comparator.comparing(RevCommit::getCommitTime); } context.getLogger().debug(RB.$("changelog.generator.sort.commits"), changelog.getSort()); @@ -106,7 +105,7 @@ protected String createChangelog(JReleaserContext context) throws IOException { .filter(c -> !changelog.isSkipMergeCommits() || c.getParentCount() <= 1) .collect(toList()); - if (context.getModel().getRelease().getGitService().getIssues().isEnabled()) { + if (context.getModel().getRelease().getReleaser().getIssues().isEnabled()) { // extract issues String rawContent = commitList.stream() .map(RevCommit::getFullMessage) @@ -119,7 +118,7 @@ protected String createChangelog(JReleaserContext context) throws IOException { return formatChangelog(context, changelog, commitList, revCommitComparator, commitSeparator); } - String commitsUrl = gitService.getResolvedCommitUrl(context.getModel()); + String commitsUrl = releaser.getResolvedCommitUrl(context.getModel()); return "## Changelog" + lineSeparator() + @@ -169,9 +168,9 @@ public Tags resolveTags(Git git, JReleaserContext context) throws GitAPIExceptio List tags = git.tagList().call(); - GitService gitService = context.getModel().getRelease().getGitService(); - String effectiveTagName = gitService.getEffectiveTagName(context.getModel()); - String tagName = gitService.getConfiguredTagName(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); + String effectiveTagName = releaser.getEffectiveTagName(context.getModel()); + String tagName = releaser.getConfiguredTagName(); String tagPattern = tagName.replaceAll("\\{\\{.*}}", "\\.\\*"); Pattern versionPattern = VersionUtils.resolveVersionPattern(context); @@ -189,7 +188,7 @@ public Tags resolveTags(Git git, JReleaserContext context) throws GitAPIExceptio .findFirst(); Optional previousTag = Optional.empty(); - String previousTagName = gitService.getConfiguredPreviousTagName(); + String previousTagName = releaser.getConfiguredPreviousTagName(); if (isNotBlank(previousTagName)) { context.getLogger().debug(RB.$("changelog.generator.lookup.previous.tag"), previousTagName); previousTag = tags.stream() @@ -279,7 +278,7 @@ public Tags resolveTags(Git git, JReleaserContext context) throws GitAPIExceptio protected Iterable resolveCommits(Git git, JReleaserContext context) throws GitAPIException, IOException { Tags tags = resolveTags(git, context); - GitService gitService = context.getModel().getRelease().getGitService(); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); ObjectId head = git.getRepository().resolve(Constants.HEAD); @@ -287,7 +286,7 @@ protected Iterable resolveCommits(Git git, JReleaserContext context) if (context.getModel().getProject().isSnapshot()) { Project.Snapshot snapshot = context.getModel().getProject().getSnapshot(); String effectiveLabel = snapshot.getEffectiveLabel(); - if (effectiveLabel.equals(gitService.getEffectiveTagName(context.getModel()))) { + if (effectiveLabel.equals(releaser.getEffectiveTagName(context.getModel()))) { if (tags.getPrevious().isPresent()) { Ref fromRef = tags.getPrevious().get(); return git.log().addRange(getObjectId(git, fromRef), head).call(); @@ -350,9 +349,8 @@ protected String formatChangelog(JReleaserContext context, .computeIfAbsent(categorize(commit, changelog), k -> new ArrayList<>()) .add(commit)); - - GitService gitService = context.getModel().getRelease().getGitService(); - String commitsUrl = gitService.getResolvedCommitUrl(context.getModel()); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); + String commitsUrl = releaser.getResolvedCommitUrl(context.getModel()); StringBuilder changes = new StringBuilder(); for (Changelog.Category category : changelog.getCategories()) { @@ -445,7 +443,7 @@ private String formatContributors(JReleaserContext context, private String applyReplacers(JReleaserContext context, Changelog changelog, String text) { Map props = context.getModel().props(); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); for (Changelog.Replacer replacer : changelog.getReplacers()) { String search = resolveTemplate(replacer.getSearch(), props); String replace = resolveTemplate(replacer.getReplace(), props); @@ -509,7 +507,7 @@ protected boolean checkLabels(Commit commit, Changelog changelog) { } public static String generate(JReleaserContext context) throws IOException { - if (!context.getModel().getRelease().getGitService().getChangelog().isEnabled()) { + if (!context.getModel().getRelease().getReleaser().getChangelog().isEnabled()) { return ""; } diff --git a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogProvider.java b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogProvider.java similarity index 91% rename from sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogProvider.java rename to sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogProvider.java index 2512388ae..ddc6ebd12 100644 --- a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogProvider.java +++ b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ChangelogProvider.java @@ -18,9 +18,9 @@ package org.jreleaser.sdk.git; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Changelog; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.Changelog; import org.jreleaser.util.StringUtils; import java.io.File; @@ -51,7 +51,7 @@ public class ChangelogProvider { public static final String CHANGELOG_FILE = "CHANGELOG.md"; public static String getChangelog(JReleaserContext context) throws IOException { - Changelog changelog = context.getModel().getRelease().getGitService().getChangelog(); + Changelog changelog = context.getModel().getRelease().getReleaser().getChangelog(); if (!changelog.isEnabled()) { context.getLogger().info(RB.$("changelog.disabled")); @@ -90,7 +90,7 @@ private static String resolveChangelog(JReleaserContext context) throws IOExcept // clean up first if (Files.exists(issuesFile)) Files.delete(issuesFile); - Changelog changelog = context.getModel().getRelease().getGitService().getChangelog(); + Changelog changelog = context.getModel().getRelease().getReleaser().getChangelog(); String externalChangelog = changelog.getExternal(); if (isNotBlank(externalChangelog)) { @@ -103,7 +103,7 @@ private static String resolveChangelog(JReleaserContext context) throws IOExcept context.getLogger().info(RB.$("changelog.generator.read"), context.getBasedir().relativize(externalChangelogPath)); String content = new String(Files.readAllBytes(externalChangelogPath)); - if (context.getModel().getRelease().getGitService().getIssues().isEnabled()) { + if (context.getModel().getRelease().getReleaser().getIssues().isEnabled()) { Set issues = extractIssues(context, content); storeIssues(context, issues); } @@ -118,14 +118,14 @@ private static String resolveChangelog(JReleaserContext context) throws IOExcept public static Set extractIssues(JReleaserContext context, String content) { context.getLogger().info(RB.$("issues.generator.extract")); - GitService service = context.getModel().getRelease().getGitService(); - String issueTracker = service.getResolvedIssueTrackerUrl(context.getModel()); + BaseReleaser releaser = context.getModel().getRelease().getReleaser(); + String issueTracker = releaser.getResolvedIssueTrackerUrl(context.getModel()); if (!issueTracker.endsWith("/")) { issueTracker += "/"; } String p1 = StringUtils.escapeRegexChars(issueTracker); - String p2 = StringUtils.escapeRegexChars(service.getCanonicalRepoName()); + String p2 = StringUtils.escapeRegexChars(releaser.getCanonicalRepoName()); Pattern pattern = Pattern.compile(".*" + p1 + "(\\d+)|.*" + p2 + "#(\\d+)|.*#(\\d+)" + ".*"); Matcher matcher = pattern.matcher(content); Set issues = new TreeSet<>(); diff --git a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/GitSdk.java b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/GitSdk.java similarity index 98% rename from sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/GitSdk.java rename to sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/GitSdk.java index a60254212..050142a02 100644 --- a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/GitSdk.java +++ b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/GitSdk.java @@ -29,9 +29,9 @@ import org.eclipse.jgit.transport.RemoteConfig; import org.eclipse.jgit.transport.URIish; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.releaser.spi.Commit; -import org.jreleaser.model.releaser.spi.Repository; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.release.Commit; +import org.jreleaser.model.spi.release.Repository; import org.jreleaser.util.Env; import org.jreleaser.util.StringUtils; @@ -212,7 +212,7 @@ public void tag(String tagName, boolean force, JReleaserContext context) throws Git git = open(); try { - boolean signEnabled = context.getModel().getRelease().getGitService().isSign(); + boolean signEnabled = context.getModel().getRelease().getReleaser().isSign(); git.tag() .setSigned(signEnabled) .setSigningKey("**********") diff --git a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/JReleaserGpgSigner.java b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/JReleaserGpgSigner.java similarity index 96% rename from sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/JReleaserGpgSigner.java rename to sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/JReleaserGpgSigner.java index bbf1afca9..3e08d8352 100644 --- a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/JReleaserGpgSigner.java +++ b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/JReleaserGpgSigner.java @@ -42,12 +42,12 @@ import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.transport.CredentialsProvider; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Signing; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.signing.GpgCommandSigner; -import org.jreleaser.util.signing.Keyring; -import org.jreleaser.util.signing.SigningException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.signing.Signing; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.signing.GpgCommandSigner; +import org.jreleaser.sdk.signing.Keyring; +import org.jreleaser.sdk.signing.SigningException; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -109,7 +109,7 @@ public void signObject(ObjectBuilder object, String gpgSigningKey, PersonIdent c if (!enabled) return; try { - if (context.getModel().getSigning().resolveMode() == Signing.Mode.COMMAND) { + if (context.getModel().getSigning().resolveMode() == org.jreleaser.model.Signing.Mode.COMMAND) { new CommandSigner(context).sign(object); } else { new BCSigner(context, committer).sign(object); diff --git a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ReleaseUtils.java b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ReleaseUtils.java similarity index 87% rename from sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ReleaseUtils.java rename to sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ReleaseUtils.java index ed3d2cea4..f120bb376 100644 --- a/sdks/git-sdk/src/main/java/org/jreleaser/sdk/git/ReleaseUtils.java +++ b/sdks/jreleaser-git-java-sdk/src/main/java/org/jreleaser/sdk/git/ReleaseUtils.java @@ -19,9 +19,10 @@ import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.releaser.spi.ReleaseException; -import org.jreleaser.model.releaser.spi.Repository; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.spi.release.ReleaseException; +import org.jreleaser.model.spi.release.Repository; import java.io.IOException; @@ -36,7 +37,7 @@ private ReleaseUtils() { } public static void createTag(JReleaserContext context) throws ReleaseException { - org.jreleaser.model.GitService service = context.getModel().getRelease().getGitService(); + BaseReleaser service = context.getModel().getRelease().getReleaser(); try { GitSdk git = GitSdk.of(context); @@ -76,8 +77,8 @@ private static void tagRelease(JReleaserContext context, Repository repository, context.getLogger().debug(RB.$("git.push.tag"), context.isDryrun()); UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider( - context.getModel().getRelease().getGitService().getResolvedUsername(), - context.getModel().getRelease().getGitService().getResolvedToken()); + context.getModel().getRelease().getReleaser().getResolvedUsername(), + context.getModel().getRelease().getReleaser().getResolvedToken()); gitSdk.open().push() .setDryRun(context.isDryrun()) diff --git a/sdks/git-sdk/src/test/java/org/jreleaser/sdk/git/ChangelogGeneratorUnitTest.java b/sdks/jreleaser-git-java-sdk/src/test/java/org/jreleaser/sdk/git/ChangelogGeneratorUnitTest.java similarity index 91% rename from sdks/git-sdk/src/test/java/org/jreleaser/sdk/git/ChangelogGeneratorUnitTest.java rename to sdks/jreleaser-git-java-sdk/src/test/java/org/jreleaser/sdk/git/ChangelogGeneratorUnitTest.java index e76d1253d..f8b873de5 100644 --- a/sdks/git-sdk/src/test/java/org/jreleaser/sdk/git/ChangelogGeneratorUnitTest.java +++ b/sdks/jreleaser-git-java-sdk/src/test/java/org/jreleaser/sdk/git/ChangelogGeneratorUnitTest.java @@ -26,14 +26,13 @@ import org.eclipse.jgit.lib.ObjectIdRef; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.revwalk.RevCommit; -import org.jreleaser.model.Changelog; -import org.jreleaser.model.GitService; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.JReleaserModel; -import org.jreleaser.model.Project; -import org.jreleaser.model.Release; -import org.jreleaser.model.VersionPattern; -import org.jreleaser.util.SemVer; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.JReleaserModel; +import org.jreleaser.model.internal.project.Project; +import org.jreleaser.model.internal.release.BaseReleaser; +import org.jreleaser.model.internal.release.Changelog; +import org.jreleaser.model.internal.release.Release; +import org.jreleaser.version.SemanticVersion; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -76,7 +75,7 @@ public class ChangelogGeneratorUnitTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private JReleaserContext context; @Mock(answer = Answers.RETURNS_DEEP_STUBS) - GitService gitService; + BaseReleaser releaser; @Mock(answer = Answers.RETURNS_DEEP_STUBS) Changelog changelog; @@ -175,7 +174,7 @@ public void skipMergeCommits() throws GitAPIException, IOException { // given: setUpStaticMocks(); RevCommit mergeCommit = getMockRevCommit(true, false); - when(gitService.getChangelog()).thenReturn(changelog); + when(releaser.getChangelog()).thenReturn(changelog); Mockito.doReturn(Collections.singletonList(mergeCommit)).when(changelogGenerator).resolveCommits(git, context); // when: @@ -193,7 +192,7 @@ public void keepMergeCommits() throws GitAPIException, IOException { // given: setUpStaticMocks(); RevCommit mergeCommit = getMockRevCommit(false, false); - when(gitService.getChangelog()).thenReturn(changelog); + when(releaser.getChangelog()).thenReturn(changelog); Mockito.doReturn(Collections.singletonList(mergeCommit)).when(changelogGenerator).resolveCommits(git, context); // when: @@ -248,19 +247,19 @@ private LogCommand doNecessaryMock(String effectiveTagName, String configuredTag when(model.getProject()).thenReturn(project); Release release = mock(Release.class); when(model.getRelease()).thenReturn(release); - VersionPattern versionPattern = mock(VersionPattern.class); - when(versionPattern.getType()).thenReturn(VersionPattern.Type.SEMVER); + Project.VersionPattern versionPattern = mock(Project.VersionPattern.class); + when(versionPattern.getType()).thenReturn(org.jreleaser.model.VersionPattern.Type.SEMVER); when(project.versionPattern()).thenReturn(versionPattern); LogCommand logCommand = mock(LogCommand.class, RETURNS_DEEP_STUBS); when(git.log()).thenReturn(logCommand); when(listTagCommand.call()).thenReturn(tagRefs); when(git.tagList()).thenReturn(listTagCommand); - when(release.getGitService()).thenReturn(gitService); + when(release.getReleaser()).thenReturn(releaser); - when(gitService.getEffectiveTagName(any())).thenReturn(effectiveTagName); - when(gitService.getConfiguredTagName()).thenReturn(configuredTagName); + when(releaser.getEffectiveTagName(any())).thenReturn(effectiveTagName); + when(releaser.getConfiguredTagName()).thenReturn(configuredTagName); when(git.getRepository().resolve(Constants.HEAD)).thenReturn(headId); - doReturn(SemVer.of(effectiveTagName)).when(project).version(); + doReturn(SemanticVersion.of(effectiveTagName)).when(project).version(); when(context.getModel().getProject().isSnapshot()).thenReturn(isSnapshot); return logCommand; diff --git a/sdks/gitea-java-sdk/gradle.properties b/sdks/jreleaser-gitea-java-sdk/gradle.properties similarity index 100% rename from sdks/gitea-java-sdk/gradle.properties rename to sdks/jreleaser-gitea-java-sdk/gradle.properties diff --git a/sdks/gitea-java-sdk/gitea-java-sdk.gradle b/sdks/jreleaser-gitea-java-sdk/jreleaser-gitea-java-sdk.gradle similarity index 87% rename from sdks/gitea-java-sdk/gitea-java-sdk.gradle rename to sdks/jreleaser-gitea-java-sdk/jreleaser-gitea-java-sdk.gradle index 5574fe875..38af9f2cf 100644 --- a/sdks/gitea-java-sdk/gitea-java-sdk.gradle +++ b/sdks/jreleaser-gitea-java-sdk/jreleaser-gitea-java-sdk.gradle @@ -19,9 +19,9 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':git-sdk') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-git-java-sdk') + api project(':jreleaser-java-sdk-commons') api("io.github.openfeign:feign-httpclient:$feignVersion") { exclude group: 'commons-logging', module: 'commons-logging' } diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/Gitea.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/Gitea.java similarity index 97% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/Gitea.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/Gitea.java index 9cd6818ff..869ba10dd 100644 --- a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/Gitea.java +++ b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/Gitea.java @@ -31,8 +31,9 @@ import org.apache.tika.mime.MediaType; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.releaser.spi.Asset; -import org.jreleaser.model.releaser.spi.User; +import org.jreleaser.model.spi.release.Asset; +import org.jreleaser.model.spi.release.Release; +import org.jreleaser.model.spi.release.User; import org.jreleaser.sdk.commons.ClientUtils; import org.jreleaser.sdk.commons.RestAPIException; import org.jreleaser.sdk.gitea.api.GiteaAPI; @@ -118,10 +119,10 @@ GtRepository findRepository(String owner, String repo) { } } - List listReleases(String owner, String repoName) throws IOException { + List listReleases(String owner, String repoName) throws IOException { logger.debug(RB.$("git.list.releases"), owner, repoName); - List releases = new ArrayList<>(); + List releases = new ArrayList<>(); int pageCount = 0; Map params = CollectionUtils.map() @@ -134,7 +135,7 @@ List listReleases(String owner, String params.put("page", ++pageCount); Page> page = api.listReleases(owner, repoName, params); page.getContent().stream() - .map(r -> new org.jreleaser.model.releaser.spi.Release( + .map(r -> new Release( r.getName(), r.getTagName(), r.getHtmlUrl(), diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploader.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploader.java similarity index 91% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploader.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploader.java index 1f3eb74b7..968385e74 100644 --- a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploader.java +++ b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploader.java @@ -19,10 +19,10 @@ import feign.form.FormData; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.GiteaUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.GiteaUploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import org.jreleaser.sdk.commons.ClientUtils; @@ -55,7 +55,7 @@ public void setUploader(GiteaUploader uploader) { @Override public String getType() { - return GiteaUploader.TYPE; + return org.jreleaser.model.api.upload.GiteaUploader.TYPE; } @Override diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploaderFactory.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploaderFactory.java similarity index 82% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploaderFactory.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploaderFactory.java index 0a2e7fcaf..b41069daf 100644 --- a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploaderFactory.java +++ b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.gitea; -import org.jreleaser.model.GiteaUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.GiteaUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class GiteaArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return GiteaUploader.TYPE; + return org.jreleaser.model.api.upload.GiteaUploader.TYPE; } @Override diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaException.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaException.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaException.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaException.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaser.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaser.java similarity index 90% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaser.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaser.java index d3bdfb12e..6710c78ec 100644 --- a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaser.java +++ b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaser.java @@ -18,14 +18,16 @@ package org.jreleaser.sdk.gitea; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.JReleaserException; import org.jreleaser.model.UpdateSection; -import org.jreleaser.model.releaser.spi.AbstractReleaser; -import org.jreleaser.model.releaser.spi.Asset; -import org.jreleaser.model.releaser.spi.ReleaseException; -import org.jreleaser.model.releaser.spi.Repository; -import org.jreleaser.model.releaser.spi.User; -import org.jreleaser.model.util.VersionUtils; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.util.VersionUtils; +import org.jreleaser.model.spi.release.AbstractReleaser; +import org.jreleaser.model.spi.release.Asset; +import org.jreleaser.model.spi.release.Release; +import org.jreleaser.model.spi.release.ReleaseException; +import org.jreleaser.model.spi.release.Repository; +import org.jreleaser.model.spi.release.User; import org.jreleaser.sdk.commons.RestAPIException; import org.jreleaser.sdk.git.ChangelogProvider; import org.jreleaser.sdk.git.GitSdk; @@ -36,7 +38,6 @@ import org.jreleaser.sdk.gitea.api.GtMilestone; import org.jreleaser.sdk.gitea.api.GtRelease; import org.jreleaser.sdk.gitea.api.GtRepository; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.nio.file.Files; @@ -47,8 +48,8 @@ import java.util.Optional; import java.util.regex.Pattern; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.capitalize; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -76,7 +77,7 @@ protected void createTag() throws ReleaseException { @Override protected void createRelease() throws ReleaseException { - org.jreleaser.model.Gitea gitea = resolveGiteaFromModel(); + org.jreleaser.model.internal.release.GiteaReleaser gitea = resolveGiteaFromModel(); context.getLogger().info(RB.$("git.releaser.releasing"), gitea.getResolvedRepoUrl(context.getModel())); String tagName = gitea.getEffectiveTagName(context.getModel()); @@ -154,7 +155,7 @@ protected void createRelease() throws ReleaseException { } } - protected org.jreleaser.model.Gitea resolveGiteaFromModel() { + protected org.jreleaser.model.internal.release.GiteaReleaser resolveGiteaFromModel() { return context.getModel().getRelease().getGitea(); } @@ -164,7 +165,7 @@ protected Repository.Kind resolveRepositoryKind() { @Override public Repository maybeCreateRepository(String owner, String repo, String password) throws IOException { - org.jreleaser.model.Gitea gitea = resolveGiteaFromModel(); + org.jreleaser.model.internal.release.GiteaReleaser gitea = resolveGiteaFromModel(); context.getLogger().debug(RB.$("git.repository.lookup"), owner, repo); Gitea api = new Gitea(context.getLogger(), @@ -187,7 +188,7 @@ public Repository maybeCreateRepository(String owner, String repo, String passwo @Override public Optional findUser(String email, String name) { - org.jreleaser.model.Gitea gitea = resolveGiteaFromModel(); + org.jreleaser.model.internal.release.GiteaReleaser gitea = resolveGiteaFromModel(); try { String host = gitea.getHost(); @@ -216,8 +217,8 @@ public Optional findUser(String email, String name) { } @Override - public List listReleases(String owner, String repo) throws IOException { - org.jreleaser.model.Gitea gitea = resolveGiteaFromModel(); + public List listReleases(String owner, String repo) throws IOException { + org.jreleaser.model.internal.release.GiteaReleaser gitea = resolveGiteaFromModel(); Gitea api = new Gitea(context.getLogger(), gitea.getApiEndpoint(), @@ -225,11 +226,11 @@ public List listReleases(String owner, gitea.getConnectTimeout(), gitea.getReadTimeout()); - List releases = api.listReleases(owner, repo); + List releases = api.listReleases(owner, repo); VersionUtils.clearUnparseableTags(); Pattern versionPattern = VersionUtils.resolveVersionPattern(context); - for (org.jreleaser.model.releaser.spi.Release release : releases) { + for (Release release : releases) { release.setVersion(VersionUtils.version(context, release.getTagName(), versionPattern)); } @@ -239,7 +240,7 @@ public List listReleases(String owner, } private void createRelease(Gitea api, String tagName, String changelog, boolean deleteTags) throws IOException { - org.jreleaser.model.Gitea gitea = resolveGiteaFromModel(); + org.jreleaser.model.internal.release.GiteaReleaser gitea = resolveGiteaFromModel(); if (context.isDryrun()) { for (Asset asset : assets) { @@ -289,7 +290,7 @@ private void createRelease(Gitea api, String tagName, String changelog, boolean updateIssues(gitea, api); } - private void updateIssues(org.jreleaser.model.Gitea gitea, Gitea api) throws IOException { + private void updateIssues(org.jreleaser.model.internal.release.GiteaReleaser gitea, Gitea api) throws IOException { if (!gitea.getIssues().isEnabled()) return; List issueNumbers = ChangelogProvider.getIssues(context); @@ -347,7 +348,7 @@ private void updateIssues(org.jreleaser.model.Gitea gitea, Gitea api) throws IOE } private void updateAssets(Gitea api, GtRelease release) throws IOException { - org.jreleaser.model.Gitea gitea = resolveGiteaFromModel(); + org.jreleaser.model.internal.release.GiteaReleaser gitea = resolveGiteaFromModel(); List assetsToBeUpdated = new ArrayList<>(); List assetsToBeUploaded = new ArrayList<>(); diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilder.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilder.java similarity index 93% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilder.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilder.java index 609c05d15..495d596b9 100644 --- a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilder.java +++ b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.gitea; -import org.jreleaser.model.releaser.spi.AbstractReleaserBuilder; +import org.jreleaser.model.spi.release.AbstractReleaserBuilder; /** * @author Andres Almiray diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilderFactory.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilderFactory.java similarity index 89% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilderFactory.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilderFactory.java index 993fe8d5b..1c45cb534 100644 --- a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilderFactory.java +++ b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/GiteaReleaserBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.gitea; -import org.jreleaser.model.releaser.spi.ReleaserBuilderFactory; +import org.jreleaser.model.spi.release.ReleaserBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class GiteaReleaserBuilderFactory implements ReleaserBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Gitea.NAME; + return org.jreleaser.model.api.release.GiteaReleaser.TYPE; } @Override diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GiteaAPI.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GiteaAPI.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GiteaAPI.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GiteaAPI.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAsset.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAsset.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAsset.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAsset.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAttachment.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAttachment.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAttachment.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtAttachment.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtBranch.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtBranch.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtBranch.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtBranch.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtIssue.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtIssue.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtIssue.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtIssue.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtLabel.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtLabel.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtLabel.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtLabel.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtMilestone.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtMilestone.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtMilestone.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtMilestone.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtOrganization.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtOrganization.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtOrganization.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtOrganization.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRelease.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRelease.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRelease.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRelease.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRepository.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRepository.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRepository.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtRepository.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtSearchUser.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtSearchUser.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtSearchUser.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtSearchUser.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtUser.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtUser.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtUser.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/api/GtUser.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/Page.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/Page.java similarity index 100% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/Page.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/Page.java diff --git a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/PaginatingDecoder.java b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/PaginatingDecoder.java similarity index 95% rename from sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/PaginatingDecoder.java rename to sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/PaginatingDecoder.java index 369b61dff..70fd4592e 100644 --- a/sdks/gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/PaginatingDecoder.java +++ b/sdks/jreleaser-gitea-java-sdk/src/main/java/org/jreleaser/sdk/gitea/internal/PaginatingDecoder.java @@ -19,7 +19,6 @@ import feign.FeignException; import feign.Response; -import feign.codec.DecodeException; import feign.codec.Decoder; import org.jreleaser.sdk.commons.feign.DelegatingFeignDecoder; @@ -37,7 +36,7 @@ public PaginatingDecoder(Decoder delegate) { } @Override - public Object decode(Response response, Type type) throws IOException, DecodeException, FeignException { + public Object decode(Response response, Type type) throws IOException, FeignException { if (type instanceof ParameterizedType) { ParameterizedType pt = (ParameterizedType) type; if (pt.getRawType().getTypeName().equals(Page.class.getName())) { diff --git a/sdks/github-java-sdk/gradle.properties b/sdks/jreleaser-github-java-sdk/gradle.properties similarity index 100% rename from sdks/github-java-sdk/gradle.properties rename to sdks/jreleaser-github-java-sdk/gradle.properties diff --git a/sdks/github-java-sdk/github-java-sdk.gradle b/sdks/jreleaser-github-java-sdk/jreleaser-github-java-sdk.gradle similarity index 88% rename from sdks/github-java-sdk/github-java-sdk.gradle rename to sdks/jreleaser-github-java-sdk/jreleaser-github-java-sdk.gradle index 510e45217..c76d40347 100644 --- a/sdks/github-java-sdk/github-java-sdk.gradle +++ b/sdks/jreleaser-github-java-sdk/jreleaser-github-java-sdk.gradle @@ -19,9 +19,9 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':git-sdk') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-git-java-sdk') + api project(':jreleaser-java-sdk-commons') api("io.github.openfeign:feign-httpclient:$feignVersion") { exclude group: 'commons-logging', module: 'commons-logging' } diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncer.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncer.java similarity index 80% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncer.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncer.java index 31ebaa207..3866971c7 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncer.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncer.java @@ -18,12 +18,12 @@ package org.jreleaser.sdk.github; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Discussions; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.release.GithubReleaser; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import java.io.IOException; import java.util.LinkedHashMap; @@ -44,7 +44,7 @@ public class DiscussionsAnnouncer implements Announcer { @Override public String getName() { - return Discussions.NAME; + return org.jreleaser.model.api.announce.DiscussionsAnnouncer.TYPE; } @Override @@ -54,8 +54,8 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); - Discussions discussions = context.getModel().getAnnounce().getDiscussions(); + GithubReleaser github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.announce.DiscussionsAnnouncer discussions = context.getModel().getAnnounce().getDiscussions(); String message = ""; if (isNotBlank(discussions.getMessage())) { @@ -63,7 +63,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = discussions.getResolvedMessageTemplate(context, props); } diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilder.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilder.java similarity index 93% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilder.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilder.java index 6460b4991..acc0a6789 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilder.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.github; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilderFactory.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilderFactory.java similarity index 89% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilderFactory.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilderFactory.java index 677bc15ef..5ad863b8b 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/DiscussionsAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.github; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class DiscussionsAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Discussions.NAME; + return org.jreleaser.model.api.announce.DiscussionsAnnouncer.TYPE; } @Override diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/Github.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/Github.java similarity index 99% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/Github.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/Github.java index 617ef6129..4e8ac27c2 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/Github.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/Github.java @@ -22,7 +22,7 @@ import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; import org.jreleaser.model.JReleaserVersion; -import org.jreleaser.model.releaser.spi.Asset; +import org.jreleaser.model.spi.release.Asset; import org.kohsuke.github.GHAsset; import org.kohsuke.github.GHBranch; import org.kohsuke.github.GHDiscussion; diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java similarity index 91% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java index 860ad7b43..eacc5f5ac 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java @@ -20,15 +20,16 @@ import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.JReleaserException; import org.jreleaser.model.UpdateSection; -import org.jreleaser.model.releaser.spi.AbstractReleaser; -import org.jreleaser.model.releaser.spi.Asset; -import org.jreleaser.model.releaser.spi.Release; -import org.jreleaser.model.releaser.spi.ReleaseException; -import org.jreleaser.model.releaser.spi.Repository; -import org.jreleaser.model.releaser.spi.User; -import org.jreleaser.model.util.VersionUtils; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.util.VersionUtils; +import org.jreleaser.model.spi.release.AbstractReleaser; +import org.jreleaser.model.spi.release.Asset; +import org.jreleaser.model.spi.release.Release; +import org.jreleaser.model.spi.release.ReleaseException; +import org.jreleaser.model.spi.release.Repository; +import org.jreleaser.model.spi.release.User; import org.jreleaser.sdk.commons.RestAPIException; import org.jreleaser.sdk.git.ChangelogGenerator; import org.jreleaser.sdk.git.ChangelogProvider; @@ -37,7 +38,6 @@ import org.jreleaser.sdk.github.api.GhRelease; import org.jreleaser.sdk.github.api.GhReleaseNotes; import org.jreleaser.sdk.github.api.GhReleaseNotesParams; -import org.jreleaser.util.JReleaserException; import org.kohsuke.github.GHAsset; import org.kohsuke.github.GHBranch; import org.kohsuke.github.GHIssue; @@ -59,11 +59,11 @@ import java.util.Set; import java.util.regex.Pattern; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.sdk.git.ChangelogProvider.extractIssues; import static org.jreleaser.sdk.git.ChangelogProvider.storeIssues; import static org.jreleaser.sdk.git.GitSdk.extractTagName; import static org.jreleaser.util.StringUtils.isBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -77,7 +77,7 @@ public GithubReleaser(JReleaserContext context, List assets) { @Override public String generateReleaseNotes() throws IOException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); if (github.getReleaseNotes().isEnabled()) { String content = generateReleaseNotesByAPI(); @@ -98,7 +98,7 @@ public String generateReleaseNotes() throws IOException { } private String generateReleaseNotesByAPI() throws JReleaserException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); String tagName = github.getEffectiveTagName(context.getModel()); try { @@ -126,7 +126,7 @@ private String generateReleaseNotesByAPI() throws JReleaserException { } protected boolean isTagInRemote(JReleaserContext context, String tagName) { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); try { Github api = new Github(context.getLogger(), @@ -157,7 +157,7 @@ protected void createTag() throws ReleaseException { @Override protected void createRelease() throws ReleaseException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); context.getLogger().info(RB.$("git.releaser.releasing"), github.getResolvedRepoUrl(context.getModel())); String tagName = github.getEffectiveTagName(context.getModel()); @@ -237,7 +237,7 @@ protected void createRelease() throws ReleaseException { @Override public Repository maybeCreateRepository(String owner, String repo, String password) throws IOException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); context.getLogger().debug(RB.$("git.repository.lookup"), owner, repo); Github api = new Github(context.getLogger(), @@ -260,7 +260,7 @@ public Repository maybeCreateRepository(String owner, String repo, String passwo @Override public Optional findUser(String email, String name) { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); try { return new XGithub(context.getLogger(), @@ -279,7 +279,7 @@ public Optional findUser(String email, String name) { @Override public List listReleases(String owner, String repo) throws IOException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); Github api = new Github(context.getLogger(), github.getApiEndpoint(), @@ -311,7 +311,7 @@ public List listReleases(String owner, String repo) throws IOException } private void createRelease(Github api, String tagName, String changelog, boolean deleteTags) throws IOException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); if (context.isDryrun()) { for (Asset asset : assets) { @@ -362,7 +362,7 @@ private void createRelease(Github api, String tagName, String changelog, boolean updateIssues(github, api); } - private void updateIssues(org.jreleaser.model.Github github, Github api) throws IOException { + private void updateIssues(org.jreleaser.model.internal.release.GithubReleaser github, Github api) throws IOException { if (!github.getIssues().isEnabled()) return; List issueNumbers = ChangelogProvider.getIssues(context); @@ -419,7 +419,7 @@ private void updateIssues(org.jreleaser.model.Github github, Github api) throws } private void updateAssets(Github api, GHRelease release) throws IOException { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); List assetsToBeUpdated = new ArrayList<>(); List assetsToBeUploaded = new ArrayList<>(); @@ -441,7 +441,7 @@ private void updateAssets(Github api, GHRelease release) throws IOException { } private void linkDiscussion(String tagName, GHRelease release) { - org.jreleaser.model.Github github = context.getModel().getRelease().getGithub(); + org.jreleaser.model.internal.release.GithubReleaser github = context.getModel().getRelease().getGithub(); String discussionCategoryName = github.getDiscussionCategoryName(); if (context.getModel().getProject().isSnapshot() || diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilder.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilder.java similarity index 93% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilder.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilder.java index 514efce0c..fa18d5f5b 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilder.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.github; -import org.jreleaser.model.releaser.spi.AbstractReleaserBuilder; +import org.jreleaser.model.spi.release.AbstractReleaserBuilder; /** * @author Andres Almiray diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilderFactory.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilderFactory.java similarity index 89% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilderFactory.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilderFactory.java index 528fd0bf8..d6d2190d3 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilderFactory.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaserBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.github; -import org.jreleaser.model.releaser.spi.ReleaserBuilderFactory; +import org.jreleaser.model.spi.release.ReleaserBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class GithubReleaserBuilderFactory implements ReleaserBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Github.NAME; + return org.jreleaser.model.api.release.GithubReleaser.TYPE; } @Override diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/XGithub.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/XGithub.java similarity index 99% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/XGithub.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/XGithub.java index 4da2d239e..4deaa531a 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/XGithub.java +++ b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/XGithub.java @@ -28,7 +28,7 @@ import feign.jackson.JacksonEncoder; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.releaser.spi.User; +import org.jreleaser.model.spi.release.User; import org.jreleaser.sdk.commons.ClientUtils; import org.jreleaser.sdk.commons.RestAPIException; import org.jreleaser.sdk.github.api.GhRelease; diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhAsset.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhAsset.java similarity index 100% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhAsset.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhAsset.java diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhRelease.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhRelease.java similarity index 100% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhRelease.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhRelease.java diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotes.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotes.java similarity index 100% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotes.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotes.java diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotesParams.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotesParams.java similarity index 100% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotesParams.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhReleaseNotesParams.java diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhSearchUser.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhSearchUser.java similarity index 100% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhSearchUser.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhSearchUser.java diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhUser.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhUser.java similarity index 100% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhUser.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GhUser.java diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GithubAPI.java b/sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GithubAPI.java similarity index 100% rename from sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GithubAPI.java rename to sdks/jreleaser-github-java-sdk/src/main/java/org/jreleaser/sdk/github/api/GithubAPI.java diff --git a/sdks/gitlab-java-sdk/gradle.properties b/sdks/jreleaser-gitlab-java-sdk/gradle.properties similarity index 100% rename from sdks/gitlab-java-sdk/gradle.properties rename to sdks/jreleaser-gitlab-java-sdk/gradle.properties diff --git a/sdks/jreleaser-gitlab-java-sdk/jreleaser-gitlab-java-sdk.gradle b/sdks/jreleaser-gitlab-java-sdk/jreleaser-gitlab-java-sdk.gradle new file mode 100644 index 000000000..d9496d561 --- /dev/null +++ b/sdks/jreleaser-gitlab-java-sdk/jreleaser-gitlab-java-sdk.gradle @@ -0,0 +1,25 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-git-java-sdk') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/Gitlab.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/Gitlab.java similarity index 97% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/Gitlab.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/Gitlab.java index 32c4b1373..61de1bee9 100644 --- a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/Gitlab.java +++ b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/Gitlab.java @@ -30,8 +30,9 @@ import org.apache.tika.mime.MediaType; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.releaser.spi.Asset; -import org.jreleaser.model.releaser.spi.Release; +import org.jreleaser.model.spi.release.Asset; +import org.jreleaser.model.spi.release.Release; +import org.jreleaser.model.spi.release.User; import org.jreleaser.sdk.commons.ClientUtils; import org.jreleaser.sdk.commons.RestAPIException; import org.jreleaser.sdk.gitlab.api.GitlabAPI; @@ -392,20 +393,20 @@ void linkAssets(String owner, String repoName, GlRelease release, String project } } - Optional findUser(String email, String name) throws RestAPIException { + Optional findUser(String email, String name) throws RestAPIException { logger.debug(RB.$("git.user.lookup"), name, email); List users = api.searchUser(CollectionUtils.mapOf("scope", "users", "search", email)); if (users != null && !users.isEmpty()) { GlUser user = users.get(0); - return Optional.of(new org.jreleaser.model.releaser.spi.User(user.getUsername(), email, user.getWebUrl())); + return Optional.of(new User(user.getUsername(), email, user.getWebUrl())); } users = api.searchUser(CollectionUtils.mapOf("scope", "users", "search", name)); if (users != null && !users.isEmpty()) { GlUser user = users.get(0); if (name.equals(user.getName())) { - return Optional.of(new org.jreleaser.model.releaser.spi.User(user.getUsername(), email, user.getWebUrl())); + return Optional.of(new User(user.getUsername(), email, user.getWebUrl())); } } diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploader.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploader.java similarity index 91% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploader.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploader.java index 4ef2c2302..14fe7cab8 100644 --- a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploader.java +++ b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploader.java @@ -19,10 +19,10 @@ import feign.form.FormData; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.GitlabUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.GitlabUploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import org.jreleaser.sdk.commons.ClientUtils; @@ -55,7 +55,7 @@ public void setUploader(GitlabUploader uploader) { @Override public String getType() { - return GitlabUploader.TYPE; + return org.jreleaser.model.api.upload.GitlabUploader.TYPE; } @Override diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploaderFactory.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploaderFactory.java similarity index 82% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploaderFactory.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploaderFactory.java index 3b47b8a31..1fdda0d4a 100644 --- a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploaderFactory.java +++ b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.gitlab; -import org.jreleaser.model.GitlabUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.GitlabUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class GitlabArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return GitlabUploader.TYPE; + return org.jreleaser.model.api.upload.GitlabUploader.TYPE; } @Override diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabException.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabException.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabException.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabException.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaser.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaser.java similarity index 89% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaser.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaser.java index e08e2c2f7..f6faaff45 100644 --- a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaser.java +++ b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaser.java @@ -18,19 +18,21 @@ package org.jreleaser.sdk.gitlab; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.ExtraProperties; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.JReleaserException; import org.jreleaser.model.UpdateSection; -import org.jreleaser.model.Uploader; -import org.jreleaser.model.releaser.spi.AbstractReleaser; -import org.jreleaser.model.releaser.spi.Asset; -import org.jreleaser.model.releaser.spi.ReleaseException; -import org.jreleaser.model.releaser.spi.Repository; -import org.jreleaser.model.releaser.spi.User; -import org.jreleaser.model.util.Artifacts; -import org.jreleaser.model.util.VersionUtils; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.upload.Uploader; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.model.internal.util.VersionUtils; +import org.jreleaser.model.spi.release.AbstractReleaser; +import org.jreleaser.model.spi.release.Asset; +import org.jreleaser.model.spi.release.Release; +import org.jreleaser.model.spi.release.ReleaseException; +import org.jreleaser.model.spi.release.Repository; +import org.jreleaser.model.spi.release.User; import org.jreleaser.sdk.commons.RestAPIException; import org.jreleaser.sdk.git.ChangelogProvider; import org.jreleaser.sdk.git.GitSdk; @@ -42,7 +44,6 @@ import org.jreleaser.sdk.gitlab.api.GlMilestone; import org.jreleaser.sdk.gitlab.api.GlProject; import org.jreleaser.sdk.gitlab.api.GlRelease; -import org.jreleaser.util.JReleaserException; import java.io.IOException; import java.nio.file.Files; @@ -54,10 +55,10 @@ import java.util.Optional; import java.util.regex.Pattern; -import static org.jreleaser.model.Signing.KEY_SKIP_SIGNING; -import static org.jreleaser.util.Constants.KEY_PLATFORM_REPLACED; +import static org.jreleaser.model.Constants.KEY_PLATFORM_REPLACED; +import static org.jreleaser.model.api.signing.Signing.KEY_SKIP_SIGNING; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -85,7 +86,7 @@ protected void createTag() throws ReleaseException { @Override protected void createRelease() throws ReleaseException { - org.jreleaser.model.Gitlab gitlab = context.getModel().getRelease().getGitlab(); + org.jreleaser.model.internal.release.GitlabReleaser gitlab = context.getModel().getRelease().getGitlab(); context.getLogger().info(RB.$("git.releaser.releasing"), gitlab.getResolvedRepoUrl(context.getModel())); String tagName = gitlab.getEffectiveTagName(context.getModel()); @@ -175,7 +176,7 @@ protected void createRelease() throws ReleaseException { @Override public Repository maybeCreateRepository(String owner, String repo, String password) throws IOException { - org.jreleaser.model.Gitlab gitlab = context.getModel().getRelease().getGitlab(); + org.jreleaser.model.internal.release.GitlabReleaser gitlab = context.getModel().getRelease().getGitlab(); context.getLogger().debug(RB.$("git.repository.lookup"), owner, repo); Gitlab api = new Gitlab(context.getLogger(), @@ -207,7 +208,7 @@ public Repository maybeCreateRepository(String owner, String repo, String passwo @Override public Optional findUser(String email, String name) { - org.jreleaser.model.Gitlab gitlab = context.getModel().getRelease().getGitlab(); + org.jreleaser.model.internal.release.GitlabReleaser gitlab = context.getModel().getRelease().getGitlab(); try { return new Gitlab(context.getLogger(), @@ -225,8 +226,8 @@ public Optional findUser(String email, String name) { } @Override - public List listReleases(String owner, String repo) throws IOException { - org.jreleaser.model.Gitlab gitlab = context.getModel().getRelease().getGitlab(); + public List listReleases(String owner, String repo) throws IOException { + org.jreleaser.model.internal.release.GitlabReleaser gitlab = context.getModel().getRelease().getGitlab(); Gitlab api = new Gitlab(context.getLogger(), gitlab.getApiEndpoint(), @@ -234,11 +235,11 @@ public List listReleases(String owner, gitlab.getConnectTimeout(), gitlab.getReadTimeout()); - List releases = api.listReleases(owner, repo, gitlab.getProjectIdentifier()); + List releases = api.listReleases(owner, repo, gitlab.getProjectIdentifier()); VersionUtils.clearUnparseableTags(); Pattern versionPattern = VersionUtils.resolveVersionPattern(context); - for (org.jreleaser.model.releaser.spi.Release release : releases) { + for (Release release : releases) { release.setVersion(VersionUtils.version(context, release.getTagName(), versionPattern)); } @@ -248,7 +249,7 @@ public List listReleases(String owner, } private void createRelease(Gitlab api, String tagName, String changelog, boolean deleteTags) throws IOException { - org.jreleaser.model.Gitlab gitlab = context.getModel().getRelease().getGitlab(); + org.jreleaser.model.internal.release.GitlabReleaser gitlab = context.getModel().getRelease().getGitlab(); Collection links = collectUploadLinks(gitlab); @@ -316,7 +317,7 @@ private void createRelease(Gitlab api, String tagName, String changelog, boolean updateIssues(gitlab, api); } - private void updateIssues(org.jreleaser.model.Gitlab gitlab, Gitlab api) throws IOException { + private void updateIssues(org.jreleaser.model.internal.release.GitlabReleaser gitlab, Gitlab api) throws IOException { if (!gitlab.getIssues().isEnabled()) return; List issueNumbers = ChangelogProvider.getIssues(context); @@ -381,7 +382,7 @@ private void updateIssues(org.jreleaser.model.Gitlab gitlab, Gitlab api) throws } } - private Collection collectUploadLinks(org.jreleaser.model.Gitlab gitlab) { + private Collection collectUploadLinks(org.jreleaser.model.internal.release.GitlabReleaser gitlab) { List links = new ArrayList<>(); for (Map.Entry e : gitlab.getUploadLinks().entrySet()) { @@ -396,7 +397,7 @@ private Collection collectUploadLinks(org.jreleaser.model.Gitlab private void collectUploadLinks(Uploader uploader, List links) { List keys = uploader.resolveSkipKeys(); - keys.add(org.jreleaser.model.Gitlab.SKIP_GITLAB_LINKS); + keys.add(org.jreleaser.model.api.release.GitlabReleaser.SKIP_GITLAB_LINKS); List artifacts = new ArrayList<>(); @@ -422,7 +423,7 @@ private void collectUploadLinks(Uploader uploader, List links) { String platform = artifact.getPlatform(); String platformReplaced = distribution.getPlatform().applyReplacements(platform); if (isNotBlank(platformReplaced)) { - artifact.mutate(() -> artifact.getExtraProperties().put(KEY_PLATFORM_REPLACED, platformReplaced)); + artifact.getExtraProperties().put(KEY_PLATFORM_REPLACED, platformReplaced); } artifacts.add(artifact); } diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilder.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilder.java similarity index 93% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilder.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilder.java index 43c1aefec..5abe59cd6 100644 --- a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilder.java +++ b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.gitlab; -import org.jreleaser.model.releaser.spi.AbstractReleaserBuilder; +import org.jreleaser.model.spi.release.AbstractReleaserBuilder; /** * @author Andres Almiray diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilderFactory.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilderFactory.java similarity index 89% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilderFactory.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilderFactory.java index c2fab4b39..891ed2947 100644 --- a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilderFactory.java +++ b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/GitlabReleaserBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.gitlab; -import org.jreleaser.model.releaser.spi.ReleaserBuilderFactory; +import org.jreleaser.model.spi.release.ReleaserBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class GitlabReleaserBuilderFactory implements ReleaserBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Gitlab.NAME; + return org.jreleaser.model.api.release.GitlabReleaser.TYPE; } @Override diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GitlabAPI.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GitlabAPI.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GitlabAPI.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GitlabAPI.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlBranch.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlBranch.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlBranch.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlBranch.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlFileUpload.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlFileUpload.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlFileUpload.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlFileUpload.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlIssue.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlIssue.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlIssue.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlIssue.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLabel.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLabel.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLabel.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLabel.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLink.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLink.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLink.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLink.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLinkRequest.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLinkRequest.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLinkRequest.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlLinkRequest.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlMilestone.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlMilestone.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlMilestone.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlMilestone.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlNamespace.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlNamespace.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlNamespace.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlNamespace.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlProject.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlProject.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlProject.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlProject.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlRelease.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlRelease.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlRelease.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlRelease.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlUser.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlUser.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlUser.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/GlUser.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/RuntimeIOException.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/RuntimeIOException.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/RuntimeIOException.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/api/RuntimeIOException.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/Page.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/Page.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/Page.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/Page.java diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/PaginatingDecoder.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/PaginatingDecoder.java similarity index 95% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/PaginatingDecoder.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/PaginatingDecoder.java index f4ce14aca..afe8ddfa1 100644 --- a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/PaginatingDecoder.java +++ b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/PaginatingDecoder.java @@ -19,7 +19,6 @@ import feign.FeignException; import feign.Response; -import feign.codec.DecodeException; import feign.codec.Decoder; import org.jreleaser.sdk.commons.feign.DelegatingFeignDecoder; @@ -37,7 +36,7 @@ public PaginatingDecoder(Decoder delegate) { } @Override - public Object decode(Response response, Type type) throws IOException, DecodeException, FeignException { + public Object decode(Response response, Type type) throws IOException, FeignException { if (type instanceof ParameterizedType) { ParameterizedType pt = (ParameterizedType) type; if (pt.getRawType().getTypeName().equals(Page.class.getName())) { diff --git a/sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/UrlEncoder.java b/sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/UrlEncoder.java similarity index 100% rename from sdks/gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/UrlEncoder.java rename to sdks/jreleaser-gitlab-java-sdk/src/main/java/org/jreleaser/sdk/gitlab/internal/UrlEncoder.java diff --git a/sdks/gitter-java-sdk/gradle.properties b/sdks/jreleaser-gitter-java-sdk/gradle.properties similarity index 100% rename from sdks/gitter-java-sdk/gradle.properties rename to sdks/jreleaser-gitter-java-sdk/gradle.properties diff --git a/sdks/gitter-java-sdk/gitter-java-sdk.gradle b/sdks/jreleaser-gitter-java-sdk/jreleaser-gitter-java-sdk.gradle similarity index 90% rename from sdks/gitter-java-sdk/gitter-java-sdk.gradle rename to sdks/jreleaser-gitter-java-sdk/jreleaser-gitter-java-sdk.gradle index eccc2d436..a290e7587 100644 --- a/sdks/gitter-java-sdk/gitter-java-sdk.gradle +++ b/sdks/jreleaser-gitter-java-sdk/jreleaser-gitter-java-sdk.gradle @@ -19,6 +19,6 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') } \ No newline at end of file diff --git a/sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncer.java b/sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncer.java similarity index 79% rename from sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncer.java rename to sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncer.java index 4cbe77263..c7739e69f 100644 --- a/sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncer.java +++ b/sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncer.java @@ -17,13 +17,12 @@ */ package org.jreleaser.sdk.gitter; -import org.jreleaser.model.Gitter; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.sdk.commons.ClientUtils; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -44,7 +43,7 @@ public class GitterAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Gitter.NAME; + return org.jreleaser.model.api.announce.GitterAnnouncer.TYPE; } @Override @@ -54,7 +53,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Gitter gitter = context.getModel().getAnnounce().getGitter(); + org.jreleaser.model.internal.announce.GitterAnnouncer gitter = context.getModel().getAnnounce().getGitter(); String message = ""; if (isNotBlank(gitter.getMessage())) { @@ -62,7 +61,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = gitter.getResolvedMessageTemplate(context, props); } diff --git a/sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilder.java b/sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilder.java similarity index 93% rename from sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilder.java rename to sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilder.java index 3cfe58bf0..dc65ba9f1 100644 --- a/sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilder.java +++ b/sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.gitter; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilderFactory.java b/sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilderFactory.java similarity index 89% rename from sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilderFactory.java rename to sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilderFactory.java index 5df3547fd..efcec37d9 100644 --- a/sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/GitterAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.gitter; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class GitterAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Gitter.NAME; + return org.jreleaser.model.api.announce.GitterAnnouncer.TYPE; } @Override diff --git a/sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/Message.java b/sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/Message.java similarity index 100% rename from sdks/gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/Message.java rename to sdks/jreleaser-gitter-java-sdk/src/main/java/org/jreleaser/sdk/gitter/Message.java diff --git a/sdks/google-chat-java-sdk/gradle.properties b/sdks/jreleaser-google-chat-java-sdk/gradle.properties similarity index 100% rename from sdks/google-chat-java-sdk/gradle.properties rename to sdks/jreleaser-google-chat-java-sdk/gradle.properties diff --git a/sdks/slack-java-sdk/slack-java-sdk.gradle b/sdks/jreleaser-google-chat-java-sdk/jreleaser-google-chat-java-sdk.gradle similarity index 92% rename from sdks/slack-java-sdk/slack-java-sdk.gradle rename to sdks/jreleaser-google-chat-java-sdk/jreleaser-google-chat-java-sdk.gradle index bd41d3479..b8daef44e 100644 --- a/sdks/slack-java-sdk/slack-java-sdk.gradle +++ b/sdks/jreleaser-google-chat-java-sdk/jreleaser-google-chat-java-sdk.gradle @@ -19,8 +19,8 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') testImplementation("com.github.tomakehurst:wiremock-jre8:$wiremockVersion") { exclude group: 'org.eclipse.jetty', module: 'jetty-alpn-java-server' diff --git a/sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncer.java b/sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncer.java similarity index 79% rename from sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncer.java rename to sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncer.java index 1bf47a673..df757ec84 100644 --- a/sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncer.java +++ b/sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncer.java @@ -17,13 +17,12 @@ */ package org.jreleaser.sdk.googlechat; -import org.jreleaser.model.GoogleChat; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.sdk.commons.ClientUtils; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -44,7 +43,7 @@ public class GoogleChatAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.GoogleChat.NAME; + return org.jreleaser.model.api.announce.GoogleChatAnnouncer.TYPE; } @Override @@ -54,7 +53,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - GoogleChat googleChat = context.getModel().getAnnounce().getGoogleChat(); + org.jreleaser.model.internal.announce.GoogleChatAnnouncer googleChat = context.getModel().getAnnounce().getGoogleChat(); String message; if (isNotBlank(googleChat.getMessage())) { @@ -62,7 +61,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = googleChat.getResolvedMessageTemplate(context, props); } diff --git a/sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilder.java b/sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilder.java similarity index 93% rename from sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilder.java rename to sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilder.java index 7078b3d8e..1999f1acb 100644 --- a/sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilder.java +++ b/sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.googlechat; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Anyul Rivas diff --git a/sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilderFactory.java b/sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilderFactory.java similarity index 89% rename from sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilderFactory.java rename to sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilderFactory.java index 480ad2a78..1939c5b4b 100644 --- a/sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/GoogleChatAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.googlechat; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class GoogleChatAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.GoogleChat.NAME; + return org.jreleaser.model.api.announce.GoogleChatAnnouncer.TYPE; } @Override diff --git a/sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/Message.java b/sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/Message.java similarity index 100% rename from sdks/google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/Message.java rename to sdks/jreleaser-google-chat-java-sdk/src/main/java/org/jreleaser/sdk/googlechat/Message.java diff --git a/sdks/http-java-sdk/gradle.properties b/sdks/jreleaser-http-java-sdk/gradle.properties similarity index 100% rename from sdks/http-java-sdk/gradle.properties rename to sdks/jreleaser-http-java-sdk/gradle.properties diff --git a/sdks/jreleaser-http-java-sdk/jreleaser-http-java-sdk.gradle b/sdks/jreleaser-http-java-sdk/jreleaser-http-java-sdk.gradle new file mode 100644 index 000000000..a290e7587 --- /dev/null +++ b/sdks/jreleaser-http-java-sdk/jreleaser-http-java-sdk.gradle @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncer.java b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncer.java similarity index 82% rename from sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncer.java rename to sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncer.java index 91f5aa036..75c1a43f2 100644 --- a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncer.java +++ b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncer.java @@ -18,22 +18,22 @@ package org.jreleaser.sdk.http; import feign.form.FormData; +import org.jreleaser.model.Constants; import org.jreleaser.model.Http; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.model.spi.upload.UploadException; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.sdk.commons.ClientUtils; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; import java.io.IOException; import java.util.Base64; import java.util.LinkedHashMap; import java.util.Map; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -48,7 +48,7 @@ public class HttpAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.HttpAnnouncers.NAME; + return org.jreleaser.model.api.announce.HttpAnnouncers.TYPE; } @Override @@ -58,9 +58,9 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Map http = context.getModel().getAnnounce().getHttp(); + Map http = context.getModel().getAnnounce().getHttp(); - for (Map.Entry e : http.entrySet()) { + for (Map.Entry e : http.entrySet()) { if (e.getValue().isEnabled()) { context.getLogger().setPrefix("http." + e.getKey()); try { @@ -74,14 +74,14 @@ public void announce() throws AnnounceException { } } - public void announce(org.jreleaser.model.HttpAnnouncer announcer) throws AnnounceException { + public void announce(org.jreleaser.model.internal.announce.HttpAnnouncer announcer) throws AnnounceException { String payload = ""; if (isNotBlank(announcer.getPayload())) { payload = announcer.getResolvedPayload(context); } else { Map props = context.props(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); payload = announcer.getResolvedPayloadTemplate(context, props); } @@ -140,7 +140,7 @@ public void announce(org.jreleaser.model.HttpAnnouncer announcer) throws Announc } } - private void resolveHeaders(org.jreleaser.model.HttpAnnouncer announcer, Map headers) { + private void resolveHeaders(org.jreleaser.model.internal.announce.HttpAnnouncer announcer, Map headers) { Map props = context.props(); announcer.getHeaders().forEach((k, v) -> { String value = resolveTemplate(v, props); diff --git a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilder.java b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilder.java similarity index 93% rename from sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilder.java rename to sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilder.java index 05a3e812a..1410010a1 100644 --- a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilder.java +++ b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.http; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilderFactory.java b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilderFactory.java similarity index 89% rename from sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilderFactory.java rename to sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilderFactory.java index e0536f949..3d2b72e31 100644 --- a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.http; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class HttpAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.HttpAnnouncers.NAME; + return org.jreleaser.model.api.announce.HttpAnnouncers.TYPE; } @Override diff --git a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloader.java b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloader.java similarity index 89% rename from sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloader.java rename to sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloader.java index 34c5c27c2..c7afe7a75 100644 --- a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloader.java +++ b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloader.java @@ -18,10 +18,10 @@ package org.jreleaser.sdk.http; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.HttpDownloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.downloader.spi.DownloadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.HttpDownloader; +import org.jreleaser.model.spi.download.DownloadException; import org.jreleaser.sdk.commons.AbstractArtifactDownloader; import java.io.IOException; @@ -54,7 +54,7 @@ public void setDownloader(HttpDownloader downloader) { @Override public String getType() { - return HttpDownloader.TYPE; + return org.jreleaser.model.api.download.HttpDownloader.TYPE; } @Override diff --git a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloaderFactory.java b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloaderFactory.java similarity index 82% rename from sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloaderFactory.java rename to sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloaderFactory.java index 54e84b63c..fe079fd14 100644 --- a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloaderFactory.java +++ b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactDownloaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.http; -import org.jreleaser.model.HttpDownloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.downloader.spi.ArtifactDownloaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.HttpDownloader; +import org.jreleaser.model.spi.download.ArtifactDownloaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class HttpArtifactDownloaderFactory implements ArtifactDownloaderFactory { @Override public String getName() { - return HttpDownloader.TYPE; + return org.jreleaser.model.api.download.HttpDownloader.TYPE; } @Override diff --git a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploader.java b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploader.java similarity index 92% rename from sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploader.java rename to sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploader.java index 0fe55b07a..abeba87a0 100644 --- a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploader.java +++ b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploader.java @@ -19,11 +19,11 @@ import feign.form.FormData; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; import org.jreleaser.model.Http; -import org.jreleaser.model.HttpUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.HttpUploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import org.jreleaser.sdk.commons.ClientUtils; @@ -34,8 +34,8 @@ import java.util.List; import java.util.Map; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -61,7 +61,7 @@ public void setUploader(HttpUploader uploader) { @Override public String getType() { - return HttpUploader.TYPE; + return org.jreleaser.model.api.upload.HttpUploader.TYPE; } @Override diff --git a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploaderFactory.java b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploaderFactory.java similarity index 82% rename from sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploaderFactory.java rename to sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploaderFactory.java index 8c4028415..249a6d3fd 100644 --- a/sdks/http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploaderFactory.java +++ b/sdks/jreleaser-http-java-sdk/src/main/java/org/jreleaser/sdk/http/HttpArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.http; -import org.jreleaser.model.HttpUploader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.HttpUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class HttpArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return HttpUploader.TYPE; + return org.jreleaser.model.api.upload.HttpUploader.TYPE; } @Override diff --git a/sdks/java-sdk-commons/gradle.properties b/sdks/jreleaser-java-sdk-commons/gradle.properties similarity index 100% rename from sdks/java-sdk-commons/gradle.properties rename to sdks/jreleaser-java-sdk-commons/gradle.properties diff --git a/sdks/java-sdk-commons/java-sdk-commons.gradle b/sdks/jreleaser-java-sdk-commons/jreleaser-java-sdk-commons.gradle similarity index 93% rename from sdks/java-sdk-commons/java-sdk-commons.gradle rename to sdks/jreleaser-java-sdk-commons/jreleaser-java-sdk-commons.gradle index 7e72c71a5..68446b577 100644 --- a/sdks/java-sdk-commons/java-sdk-commons.gradle +++ b/sdks/jreleaser-java-sdk-commons/jreleaser-java-sdk-commons.gradle @@ -19,8 +19,8 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':git-sdk') + api project(':jreleaser-model-impl') + api project(':jreleaser-git-java-sdk') api "org.apache.tika:tika-core:$tikaVersion" diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactDownloader.java b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactDownloader.java similarity index 89% rename from sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactDownloader.java rename to sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactDownloader.java index 027e15df8..d0a290ae1 100644 --- a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactDownloader.java +++ b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactDownloader.java @@ -18,10 +18,10 @@ package org.jreleaser.sdk.commons; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.downloader.spi.ArtifactDownloader; -import org.jreleaser.model.downloader.spi.DownloadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.spi.download.ArtifactDownloader; +import org.jreleaser.model.spi.download.DownloadException; import org.jreleaser.util.FileType; import org.jreleaser.util.FileUtils; diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java similarity index 85% rename from sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java rename to sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java index 3af598fb7..e5d65982e 100644 --- a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java +++ b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java @@ -17,16 +17,16 @@ */ package org.jreleaser.sdk.commons; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.Artifactory; -import org.jreleaser.model.Checksum; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.ExtraProperties; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Signing; -import org.jreleaser.model.Uploader; -import org.jreleaser.model.uploader.spi.ArtifactUploader; -import org.jreleaser.model.util.Artifacts; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.checksum.Checksum; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.common.ExtraProperties; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.signing.Signing; +import org.jreleaser.model.internal.upload.ArtifactoryUploader; +import org.jreleaser.model.internal.upload.Uploader; +import org.jreleaser.model.internal.util.Artifacts; +import org.jreleaser.model.spi.upload.ArtifactUploader; import org.jreleaser.util.Algorithm; import java.nio.file.Files; @@ -34,10 +34,10 @@ import java.util.ArrayList; import java.util.List; -import static org.jreleaser.model.Checksum.INDIVIDUAL_CHECKSUM; -import static org.jreleaser.model.Checksum.KEY_SKIP_CHECKSUM; -import static org.jreleaser.model.Signing.KEY_SKIP_SIGNING; -import static org.jreleaser.util.Constants.KEY_PLATFORM_REPLACED; +import static org.jreleaser.model.Constants.KEY_PLATFORM_REPLACED; +import static org.jreleaser.model.api.checksum.Checksum.INDIVIDUAL_CHECKSUM; +import static org.jreleaser.model.api.checksum.Checksum.KEY_SKIP_CHECKSUM; +import static org.jreleaser.model.api.signing.Signing.KEY_SKIP_SIGNING; import static org.jreleaser.util.StringUtils.isNotBlank; import static org.jreleaser.util.StringUtils.isTrue; @@ -56,7 +56,7 @@ protected List collectArtifacts() { List artifacts = new ArrayList<>(); List keys = getUploader().resolveSkipKeys(); Checksum checksum = context.getModel().getChecksum(); - boolean uploadChecksums = getUploader().isChecksums() && !(getUploader() instanceof Artifactory); + boolean uploadChecksums = getUploader().isChecksums() && !(getUploader() instanceof ArtifactoryUploader); if (getUploader().isFiles()) { for (Artifact artifact : Artifacts.resolveFiles(context)) { @@ -87,7 +87,7 @@ protected List collectArtifacts() { String platform = artifact.getPlatform(); String platformReplaced = distribution.getPlatform().applyReplacements(platform); if (isNotBlank(platformReplaced)) { - artifact.mutate(() -> artifact.getExtraProperties().put(KEY_PLATFORM_REPLACED, platformReplaced)); + artifact.getExtraProperties().put(KEY_PLATFORM_REPLACED, platformReplaced); } artifacts.add(artifact); if (uploadChecksums && isIndividual(context, distribution, artifact)) { @@ -125,7 +125,7 @@ protected List collectArtifacts() { signatures.add(Artifact.of(signaturePath, artifact.getExtraProperties())); } } - if (!signatures.isEmpty() && signing.getMode() == Signing.Mode.COSIGN) { + if (!signatures.isEmpty() && signing.getMode() == org.jreleaser.model.Signing.Mode.COSIGN) { Path publicKeyFile = signing.getCosign().getResolvedPublicKeyFilePath(context); signatures.add(Artifact.of(publicKeyFile)); } diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/ClientUtils.java b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/ClientUtils.java similarity index 98% rename from sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/ClientUtils.java rename to sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/ClientUtils.java index c3f5643ae..35bbb9153 100644 --- a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/ClientUtils.java +++ b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/ClientUtils.java @@ -31,11 +31,11 @@ import org.apache.tika.mime.MediaType; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.model.JReleaserModelPrinter; +import org.jreleaser.model.Constants; import org.jreleaser.model.JReleaserVersion; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.uploader.spi.UploadException; -import org.jreleaser.util.Constants; +import org.jreleaser.model.internal.JReleaserModelPrinter; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.upload.UploadException; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/Links.java b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/Links.java similarity index 100% rename from sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/Links.java rename to sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/Links.java diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RestAPIException.java b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RestAPIException.java similarity index 100% rename from sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RestAPIException.java rename to sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RestAPIException.java diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RuntimeIOException.java b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RuntimeIOException.java similarity index 100% rename from sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RuntimeIOException.java rename to sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/RuntimeIOException.java diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/feign/DelegatingFeignDecoder.java b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/feign/DelegatingFeignDecoder.java similarity index 94% rename from sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/feign/DelegatingFeignDecoder.java rename to sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/feign/DelegatingFeignDecoder.java index fe4b04b5b..01fd4c365 100644 --- a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/feign/DelegatingFeignDecoder.java +++ b/sdks/jreleaser-java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/feign/DelegatingFeignDecoder.java @@ -19,7 +19,6 @@ import feign.FeignException; import feign.Response; -import feign.codec.DecodeException; import feign.codec.Decoder; import java.io.IOException; @@ -37,7 +36,7 @@ public DelegatingFeignDecoder(Decoder delegate) { } @Override - public Object decode(Response response, Type type) throws IOException, DecodeException, FeignException { + public Object decode(Response response, Type type) throws IOException, FeignException { return delegate.decode(response, type); } diff --git a/sdks/mastodon-java-sdk/gradle.properties b/sdks/jreleaser-mastodon-java-sdk/gradle.properties similarity index 100% rename from sdks/mastodon-java-sdk/gradle.properties rename to sdks/jreleaser-mastodon-java-sdk/gradle.properties diff --git a/sdks/jreleaser-mastodon-java-sdk/jreleaser-mastodon-java-sdk.gradle b/sdks/jreleaser-mastodon-java-sdk/jreleaser-mastodon-java-sdk.gradle new file mode 100644 index 000000000..a290e7587 --- /dev/null +++ b/sdks/jreleaser-mastodon-java-sdk/jreleaser-mastodon-java-sdk.gradle @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncer.java b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncer.java similarity index 83% rename from sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncer.java rename to sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncer.java index 469a53772..e93294d47 100644 --- a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncer.java +++ b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncer.java @@ -17,10 +17,9 @@ */ package org.jreleaser.sdk.mastodon; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Mastodon; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; /** * @author Andres Almiray @@ -36,7 +35,7 @@ public class MastodonAnnouncer implements Announcer { @Override public String getName() { - return Mastodon.NAME; + return org.jreleaser.model.api.announce.MastodonAnnouncer.TYPE; } @Override @@ -46,7 +45,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Mastodon mastodon = context.getModel().getAnnounce().getMastodon(); + org.jreleaser.model.internal.announce.MastodonAnnouncer mastodon = context.getModel().getAnnounce().getMastodon(); String status = mastodon.getResolvedStatus(context); diff --git a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilder.java b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilder.java similarity index 93% rename from sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilder.java rename to sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilder.java index abe873993..5495461f7 100644 --- a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilder.java +++ b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.mastodon; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilderFactory.java b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilderFactory.java similarity index 89% rename from sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilderFactory.java rename to sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilderFactory.java index ff110fb9c..03c62c533 100644 --- a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.mastodon; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class MastodonAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Mastodon.NAME; + return org.jreleaser.model.api.announce.MastodonAnnouncer.TYPE; } @Override diff --git a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonException.java b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonException.java similarity index 100% rename from sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonException.java rename to sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonException.java diff --git a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonSdk.java b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonSdk.java similarity index 98% rename from sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonSdk.java rename to sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonSdk.java index 6097fbfde..9b1cfa059 100644 --- a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonSdk.java +++ b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/MastodonSdk.java @@ -68,7 +68,7 @@ private MastodonSdk(JReleaserLogger logger, public void status(String status) throws MastodonException { Status payload = Status.of(status); - logger.debug("mastodon.status: " + payload.toString()); + logger.debug("mastodon.status: " + payload); wrap(() -> api.status(payload)); } diff --git a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/MastodonAPI.java b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/MastodonAPI.java similarity index 100% rename from sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/MastodonAPI.java rename to sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/MastodonAPI.java diff --git a/sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/Status.java b/sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/Status.java similarity index 100% rename from sdks/mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/Status.java rename to sdks/jreleaser-mastodon-java-sdk/src/main/java/org/jreleaser/sdk/mastodon/api/Status.java diff --git a/sdks/mattermost-java-sdk/gradle.properties b/sdks/jreleaser-mattermost-java-sdk/gradle.properties similarity index 100% rename from sdks/mattermost-java-sdk/gradle.properties rename to sdks/jreleaser-mattermost-java-sdk/gradle.properties diff --git a/sdks/jreleaser-mattermost-java-sdk/jreleaser-mattermost-java-sdk.gradle b/sdks/jreleaser-mattermost-java-sdk/jreleaser-mattermost-java-sdk.gradle new file mode 100644 index 000000000..a290e7587 --- /dev/null +++ b/sdks/jreleaser-mattermost-java-sdk/jreleaser-mattermost-java-sdk.gradle @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java similarity index 79% rename from sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java rename to sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java index 2b875372b..2cef6a689 100644 --- a/sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java +++ b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncer.java @@ -17,13 +17,12 @@ */ package org.jreleaser.sdk.mattermost; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Mattermost; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.sdk.commons.ClientUtils; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -44,7 +43,7 @@ public class MattermostAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Mattermost.NAME; + return org.jreleaser.model.api.announce.MattermostAnnouncer.TYPE; } @Override @@ -54,7 +53,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Mattermost mattermost = context.getModel().getAnnounce().getMattermost(); + org.jreleaser.model.internal.announce.MattermostAnnouncer mattermost = context.getModel().getAnnounce().getMattermost(); String message = ""; if (isNotBlank(mattermost.getMessage())) { @@ -62,7 +61,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = mattermost.getResolvedMessageTemplate(context, props); } diff --git a/sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilder.java b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilder.java similarity index 93% rename from sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilder.java rename to sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilder.java index c38731e1c..99f44c9e2 100644 --- a/sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilder.java +++ b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.mattermost; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilderFactory.java b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilderFactory.java similarity index 89% rename from sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilderFactory.java rename to sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilderFactory.java index 72fae98a6..2e7f20dbd 100644 --- a/sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/MattermostAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.mattermost; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class MattermostAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Mattermost.NAME; + return org.jreleaser.model.api.announce.MattermostAnnouncer.TYPE; } @Override diff --git a/sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/Message.java b/sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/Message.java similarity index 100% rename from sdks/mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/Message.java rename to sdks/jreleaser-mattermost-java-sdk/src/main/java/org/jreleaser/sdk/mattermost/Message.java diff --git a/sdks/s3-java-sdk/gradle.properties b/sdks/jreleaser-s3-java-sdk/gradle.properties similarity index 100% rename from sdks/s3-java-sdk/gradle.properties rename to sdks/jreleaser-s3-java-sdk/gradle.properties diff --git a/sdks/s3-java-sdk/s3-java-sdk.gradle b/sdks/jreleaser-s3-java-sdk/jreleaser-s3-java-sdk.gradle similarity index 91% rename from sdks/s3-java-sdk/s3-java-sdk.gradle rename to sdks/jreleaser-s3-java-sdk/jreleaser-s3-java-sdk.gradle index e12e994be..46fbfe5dd 100644 --- a/sdks/s3-java-sdk/s3-java-sdk.gradle +++ b/sdks/jreleaser-s3-java-sdk/jreleaser-s3-java-sdk.gradle @@ -19,8 +19,8 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') api("com.amazonaws:aws-java-sdk-s3:$awsSdkVersion") { exclude group: 'commons-logging', module: 'commons-logging' diff --git a/sdks/s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploader.java b/sdks/jreleaser-s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploader.java similarity index 94% rename from sdks/s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploader.java rename to sdks/jreleaser-s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploader.java index 125041f8c..f533e0d7b 100644 --- a/sdks/s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploader.java +++ b/sdks/jreleaser-s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploader.java @@ -33,10 +33,10 @@ import org.apache.tika.Tika; import org.apache.tika.mime.MediaType; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.S3; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.S3Uploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import java.io.IOException; @@ -55,27 +55,27 @@ * @since 0.8.0 */ @org.jreleaser.infra.nativeimage.annotations.NativeImage -public class S3ArtifactUploader extends AbstractArtifactUploader { +public class S3ArtifactUploader extends AbstractArtifactUploader { private static final Tika TIKA = new Tika(); - private S3 uploader; + private S3Uploader uploader; public S3ArtifactUploader(JReleaserContext context) { super(context); } @Override - public S3 getUploader() { + public S3Uploader getUploader() { return uploader; } @Override - public void setUploader(S3 uploader) { + public void setUploader(S3Uploader uploader) { this.uploader = uploader; } @Override public String getType() { - return S3.TYPE; + return org.jreleaser.model.api.upload.S3Uploader.TYPE; } @Override diff --git a/sdks/s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploaderFactory.java b/sdks/jreleaser-s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploaderFactory.java similarity index 79% rename from sdks/s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploaderFactory.java rename to sdks/jreleaser-s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploaderFactory.java index 57f3fc0f5..c5f0d00e4 100644 --- a/sdks/s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploaderFactory.java +++ b/sdks/jreleaser-s3-java-sdk/src/main/java/org/jreleaser/sdk/s3/S3ArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.s3; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.S3; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.S3Uploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -27,10 +27,10 @@ * @since 0.8.0 */ @ServiceProviderFor(ArtifactUploaderFactory.class) -public class S3ArtifactUploaderFactory implements ArtifactUploaderFactory { +public class S3ArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return S3.TYPE; + return org.jreleaser.model.api.upload.S3Uploader.TYPE; } @Override diff --git a/sdks/sdkman-java-sdk/gradle.properties b/sdks/jreleaser-sdkman-java-sdk/gradle.properties similarity index 100% rename from sdks/sdkman-java-sdk/gradle.properties rename to sdks/jreleaser-sdkman-java-sdk/gradle.properties diff --git a/sdks/sdkman-java-sdk/sdkman-java-sdk.gradle b/sdks/jreleaser-sdkman-java-sdk/jreleaser-sdkman-java-sdk.gradle similarity index 96% rename from sdks/sdkman-java-sdk/sdkman-java-sdk.gradle rename to sdks/jreleaser-sdkman-java-sdk/jreleaser-sdkman-java-sdk.gradle index 897f13351..20377714e 100644 --- a/sdks/sdkman-java-sdk/sdkman-java-sdk.gradle +++ b/sdks/jreleaser-sdkman-java-sdk/jreleaser-sdkman-java-sdk.gradle @@ -19,7 +19,7 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "io.github.openfeign:feign-core:$feignVersion" api "io.github.openfeign:feign-jackson:$feignVersion" diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AbstractSdkmanCommand.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AbstractSdkmanCommand.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AbstractSdkmanCommand.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AbstractSdkmanCommand.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommand.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommand.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommand.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommand.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommand.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommand.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommand.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommand.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommand.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommand.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommand.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommand.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommand.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommand.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommand.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommand.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommand.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommand.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommand.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommand.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/Sdkman.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/Sdkman.java similarity index 97% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/Sdkman.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/Sdkman.java index 35e15d77b..8a0a3c916 100644 --- a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/Sdkman.java +++ b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/Sdkman.java @@ -88,14 +88,14 @@ public void announce(String candidate, String hashtag, String releaseNotesUrl) throws SdkmanException { Announce payload = Announce.of(candidate, version, hashtag, releaseNotesUrl); - logger.debug("sdkman.announce: " + payload.toString()); + logger.debug("sdkman.announce: " + payload); wrap(() -> api.announce(payload)); } public void setDefault(String candidate, String version) throws SdkmanException { Candidate payload = Candidate.of(candidate, version); - logger.debug("sdkman.default: " + payload.toString()); + logger.debug("sdkman.default: " + payload); wrap(() -> api.setDefault(payload)); } @@ -121,7 +121,7 @@ public void release(String candidate, Map platforms) throws SdkmanException { for (Map.Entry entry : platforms.entrySet()) { Release payload = Release.of(candidate, version, entry.getKey(), entry.getValue()); - logger.debug("sdkman.release: " + payload.toString()); + logger.debug("sdkman.release: " + payload); wrap(() -> api.release(payload)); } } diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java similarity index 84% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java index 3addd0b4f..f8ef1b6a6 100644 --- a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java +++ b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java @@ -18,23 +18,23 @@ package org.jreleaser.sdk.sdkman; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Distribution; -import org.jreleaser.model.JReleaserCommand; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Sdkman; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.api.JReleaserCommand; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.distributions.Distribution; +import org.jreleaser.model.internal.packagers.SdkmanPackager; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; import java.util.stream.Collectors; -import static org.jreleaser.model.util.SdkmanHelper.collectArtifacts; -import static org.jreleaser.util.Constants.MAGIC_SET; +import static org.jreleaser.model.Constants.MAGIC_SET; +import static org.jreleaser.model.internal.util.SdkmanHelper.collectArtifacts; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; import static org.jreleaser.util.StringUtils.isTrue; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -50,7 +50,7 @@ public class SdkmanAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.SdkmanAnnouncer.NAME; + return org.jreleaser.model.api.announce.SdkmanAnnouncer.TYPE; } @Override @@ -64,12 +64,12 @@ public void announce() throws AnnounceException { .filter(d -> d.getSdkman().isEnabled()) .filter(d -> !JReleaserCommand.supportsPublish(context.getCommand()) || d.getSdkman().isPublished()) .collect(Collectors.toMap(distribution -> { - Sdkman sdkman = distribution.getSdkman(); + SdkmanPackager sdkman = distribution.getSdkman(); return isNotBlank(sdkman.getCandidate()) ? sdkman.getCandidate().trim() : context.getModel().getProject().getName(); }, distribution -> distribution)); Boolean set = (Boolean) context.getModel().getAnnounce().getSdkman().getExtraProperties().get(MAGIC_SET); - context.getModel().getAnnounce().getSdkman().mutate(()-> context.getModel().getAnnounce().getSdkman().getExtraProperties().remove(MAGIC_SET)); + context.getModel().getAnnounce().getSdkman().getExtraProperties().remove(MAGIC_SET); if (distributions.isEmpty()) { if (set == null || !set) { @@ -85,7 +85,7 @@ public void announce() throws AnnounceException { String candidate = e.getKey(); Distribution distribution = e.getValue(); - Sdkman sdkman = distribution.getSdkman(); + SdkmanPackager sdkman = distribution.getSdkman(); Map props = context.fullProps(); props.putAll(distribution.props()); String releaseNotesUrl = resolveTemplate(sdkman.getReleaseNotesUrl(), props); @@ -116,7 +116,7 @@ public void announce() throws AnnounceException { } private void announceProject() throws AnnounceException { - org.jreleaser.model.SdkmanAnnouncer sdkman = context.getModel().getAnnounce().getSdkman(); + org.jreleaser.model.internal.announce.SdkmanAnnouncer sdkman = context.getModel().getAnnounce().getSdkman(); Map platforms = new LinkedHashMap<>(); // collect artifacts by supported SDKMAN! platform @@ -171,9 +171,9 @@ private void announceProject() throws AnnounceException { } private boolean isDistributionSupported(Distribution distribution) { - return (distribution.getType() == Distribution.DistributionType.JAVA_BINARY || - distribution.getType() == Distribution.DistributionType.JLINK || - distribution.getType() == Distribution.DistributionType.NATIVE_IMAGE) && + return (distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.JLINK || + distribution.getType() == org.jreleaser.model.Distribution.DistributionType.NATIVE_IMAGE) && !isTrue(distribution.getExtraProperties().get("skipSdkman")); } } diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilder.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilder.java similarity index 93% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilder.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilder.java index 2b3b846c8..1ae653fa7 100644 --- a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilder.java +++ b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.sdkman; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilderFactory.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilderFactory.java similarity index 89% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilderFactory.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilderFactory.java index 2cd4d17f8..59cf25537 100644 --- a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.sdkman; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class SdkmanAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.SdkmanAnnouncer.NAME; + return org.jreleaser.model.api.announce.SdkmanAnnouncer.TYPE; } @Override diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanCommand.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanCommand.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanCommand.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanCommand.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanException.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanException.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanException.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanException.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Announce.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Announce.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Announce.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Announce.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Candidate.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Candidate.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Candidate.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Candidate.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Release.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Release.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Release.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/Release.java diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/SdkmanAPI.java b/sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/SdkmanAPI.java similarity index 100% rename from sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/SdkmanAPI.java rename to sdks/jreleaser-sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/api/SdkmanAPI.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommandTest.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommandTest.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommandTest.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/AnnounceSdkmanCommandTest.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ApiEndpoints.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ApiEndpoints.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ApiEndpoints.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ApiEndpoints.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommandTest.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommandTest.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommandTest.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/DefaultSdkmanCommandTest.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommandTest.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommandTest.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommandTest.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MajorReleaseSdkmanCommandTest.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommandTest.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommandTest.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommandTest.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/MinorReleaseSdkmanCommandTest.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommandTest.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommandTest.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommandTest.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/ReleaseSdkmanCommandTest.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/Stubs.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/Stubs.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/Stubs.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/Stubs.java diff --git a/sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/WireMockExtension.java b/sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/WireMockExtension.java similarity index 100% rename from sdks/sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/WireMockExtension.java rename to sdks/jreleaser-sdkman-java-sdk/src/test/java/org/jreleaser/sdk/sdkman/WireMockExtension.java diff --git a/core/jreleaser-model/gradle.properties b/sdks/jreleaser-signing-java-sdk/gradle.properties similarity index 92% rename from core/jreleaser-model/gradle.properties rename to sdks/jreleaser-signing-java-sdk/gradle.properties index d42a27001..e25ac2c5e 100644 --- a/core/jreleaser-model/gradle.properties +++ b/sdks/jreleaser-signing-java-sdk/gradle.properties @@ -16,4 +16,4 @@ # limitations under the License. # -project_description = JReleaser Model \ No newline at end of file +project_description = JReleaser signing Java SDK \ No newline at end of file diff --git a/sdks/jreleaser-signing-java-sdk/jreleaser-signing-java-sdk.gradle b/sdks/jreleaser-signing-java-sdk/jreleaser-signing-java-sdk.gradle new file mode 100644 index 000000000..f3ebbdee3 --- /dev/null +++ b/sdks/jreleaser-signing-java-sdk/jreleaser-signing-java-sdk.gradle @@ -0,0 +1,22 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + api project(':jreleaser-command-java-sdk') + + api "org.bouncycastle:bcpg-jdk15on:$bouncyCastleVersion" +} \ No newline at end of file diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/FilesKeyring.java b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/FilesKeyring.java similarity index 94% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/FilesKeyring.java rename to sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/FilesKeyring.java index 662d7897c..759595354 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/FilesKeyring.java +++ b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/FilesKeyring.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.signing; +package org.jreleaser.sdk.signing; import org.bouncycastle.openpgp.PGPException; @@ -28,6 +28,7 @@ * @author Andres Almiray * @since 0.4.0 */ +@org.jreleaser.infra.nativeimage.annotations.NativeImage public final class FilesKeyring extends Keyring { private final Path publicKeyring; private final Path secretKeyring; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/GpgCommandSigner.java b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/GpgCommandSigner.java similarity index 96% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/GpgCommandSigner.java rename to sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/GpgCommandSigner.java index d72a73ac5..7b9369a6d 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/GpgCommandSigner.java +++ b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/GpgCommandSigner.java @@ -15,13 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.signing; +package org.jreleaser.sdk.signing; import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.command.CommandExecutor; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.command.CommandExecutor; import java.io.ByteArrayInputStream; import java.io.IOException; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/InMemoryKeyring.java b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/InMemoryKeyring.java similarity index 97% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/InMemoryKeyring.java rename to sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/InMemoryKeyring.java index a183738e8..95c250306 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/InMemoryKeyring.java +++ b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/InMemoryKeyring.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.signing; +package org.jreleaser.sdk.signing; import org.bouncycastle.openpgp.PGPException; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/Keyring.java b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/Keyring.java similarity index 99% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/Keyring.java rename to sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/Keyring.java index edd0db468..69b0c4e90 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/Keyring.java +++ b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/Keyring.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.signing; +package org.jreleaser.sdk.signing; import org.bouncycastle.bcpg.PublicKeyAlgorithmTags; import org.bouncycastle.openpgp.PGPException; diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/SigningException.java b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/SigningException.java similarity index 96% rename from core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/SigningException.java rename to sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/SigningException.java index 62791f208..dd98f39c8 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/signing/SigningException.java +++ b/sdks/jreleaser-signing-java-sdk/src/main/java/org/jreleaser/sdk/signing/SigningException.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.util.signing; +package org.jreleaser.sdk.signing; /** * @author Andres Almiray diff --git a/sdks/slack-java-sdk/gradle.properties b/sdks/jreleaser-slack-java-sdk/gradle.properties similarity index 100% rename from sdks/slack-java-sdk/gradle.properties rename to sdks/jreleaser-slack-java-sdk/gradle.properties diff --git a/sdks/zulip-java-sdk/zulip-java-sdk.gradle b/sdks/jreleaser-slack-java-sdk/jreleaser-slack-java-sdk.gradle similarity index 92% rename from sdks/zulip-java-sdk/zulip-java-sdk.gradle rename to sdks/jreleaser-slack-java-sdk/jreleaser-slack-java-sdk.gradle index bd41d3479..b8daef44e 100644 --- a/sdks/zulip-java-sdk/zulip-java-sdk.gradle +++ b/sdks/jreleaser-slack-java-sdk/jreleaser-slack-java-sdk.gradle @@ -19,8 +19,8 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') testImplementation("com.github.tomakehurst:wiremock-jre8:$wiremockVersion") { exclude group: 'org.eclipse.jetty', module: 'jetty-alpn-java-server' diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncer.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncer.java similarity index 86% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncer.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncer.java index f303693a9..4cd4082c6 100644 --- a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncer.java +++ b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncer.java @@ -17,14 +17,13 @@ */ package org.jreleaser.sdk.slack; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Slack; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.sdk.commons.ClientUtils; import org.jreleaser.sdk.slack.api.Message; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -47,7 +46,7 @@ public class SlackAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Slack.NAME; + return org.jreleaser.model.api.announce.SlackAnnouncer.TYPE; } @Override @@ -57,7 +56,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Slack slack = context.getModel().getAnnounce().getSlack(); + org.jreleaser.model.internal.announce.SlackAnnouncer slack = context.getModel().getAnnounce().getSlack(); String message = ""; if (isNotBlank(slack.getMessage())) { @@ -65,7 +64,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = slack.getResolvedMessageTemplate(context, props); } diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilder.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilder.java similarity index 93% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilder.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilder.java index 4ea43837d..acb265de5 100644 --- a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilder.java +++ b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.slack; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilderFactory.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilderFactory.java similarity index 89% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilderFactory.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilderFactory.java index 0ef1469ba..f069c39e4 100644 --- a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.slack; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class SlackAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Slack.NAME; + return org.jreleaser.model.api.announce.SlackAnnouncer.TYPE; } @Override diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackException.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackException.java similarity index 100% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackException.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackException.java diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackSdk.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackSdk.java similarity index 98% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackSdk.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackSdk.java index 97d1632b8..d3a190f81 100644 --- a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackSdk.java +++ b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/SlackSdk.java @@ -60,7 +60,7 @@ private SlackSdk(JReleaserLogger logger, public void message(String channel, String message) throws SlackException { Message payload = Message.of(channel, message); - logger.debug("slack.message: " + payload.toString()); + logger.debug("slack.message: " + payload); decode(wrap(() -> { SlackResponse response = api.message(payload); return response.getError(); diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/Message.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/Message.java similarity index 100% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/Message.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/Message.java diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackAPI.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackAPI.java similarity index 100% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackAPI.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackAPI.java diff --git a/sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackResponse.java b/sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackResponse.java similarity index 100% rename from sdks/slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackResponse.java rename to sdks/jreleaser-slack-java-sdk/src/main/java/org/jreleaser/sdk/slack/api/SlackResponse.java diff --git a/sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/ApiEndpoints.java b/sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/ApiEndpoints.java similarity index 100% rename from sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/ApiEndpoints.java rename to sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/ApiEndpoints.java diff --git a/sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/SlackMessageTest.java b/sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/SlackMessageTest.java similarity index 100% rename from sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/SlackMessageTest.java rename to sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/SlackMessageTest.java diff --git a/sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/Stubs.java b/sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/Stubs.java similarity index 100% rename from sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/Stubs.java rename to sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/Stubs.java diff --git a/sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/WireMockExtension.java b/sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/WireMockExtension.java similarity index 100% rename from sdks/slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/WireMockExtension.java rename to sdks/jreleaser-slack-java-sdk/src/test/java/org/jreleaser/sdk/slack/WireMockExtension.java diff --git a/sdks/mail-java-sdk/gradle.properties b/sdks/jreleaser-smtp-java-sdk/gradle.properties similarity index 94% rename from sdks/mail-java-sdk/gradle.properties rename to sdks/jreleaser-smtp-java-sdk/gradle.properties index 742bb628f..2012edf7e 100644 --- a/sdks/mail-java-sdk/gradle.properties +++ b/sdks/jreleaser-smtp-java-sdk/gradle.properties @@ -16,4 +16,4 @@ # limitations under the License. # -project_description = Java SDK for Mail +project_description = Java SDK for SMTP diff --git a/sdks/mail-java-sdk/mail-java-sdk.gradle b/sdks/jreleaser-smtp-java-sdk/jreleaser-smtp-java-sdk.gradle similarity index 96% rename from sdks/mail-java-sdk/mail-java-sdk.gradle rename to sdks/jreleaser-smtp-java-sdk/jreleaser-smtp-java-sdk.gradle index 05d60b173..2286479ee 100644 --- a/sdks/mail-java-sdk/mail-java-sdk.gradle +++ b/sdks/jreleaser-smtp-java-sdk/jreleaser-smtp-java-sdk.gradle @@ -19,7 +19,7 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "com.sun.mail:jakarta.mail:$mailApiVersion" diff --git a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MessageMailCommand.java b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/MessageSmtpCommand.java similarity index 88% rename from sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MessageMailCommand.java rename to sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/MessageSmtpCommand.java index 12d86bdb6..204c44f78 100644 --- a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MessageMailCommand.java +++ b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/MessageSmtpCommand.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.sdk.mail; +package org.jreleaser.sdk.smtp; import jakarta.mail.Message; import jakarta.mail.Session; @@ -27,7 +27,6 @@ import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; import org.jreleaser.model.JReleaserVersion; -import org.jreleaser.model.Mail; import java.util.Date; import java.util.LinkedHashMap; @@ -41,10 +40,10 @@ * @author Andres Almiray * @since 0.1.0 */ -public class MessageMailCommand implements MailCommand { +public class MessageSmtpCommand implements SmtpCommand { private final JReleaserLogger logger; private final boolean dryrun; - private final Mail.Transport transport; + private final org.jreleaser.model.Mail.Transport transport; private final String host; private final Integer port; private final Boolean auth; @@ -56,12 +55,12 @@ public class MessageMailCommand implements MailCommand { private final String bcc; private final String subject; private final String message; - private final Mail.MimeType mimeType; + private final org.jreleaser.model.Mail.MimeType mimeType; private final Map properties = new LinkedHashMap<>(); - private MessageMailCommand(JReleaserLogger logger, + private MessageSmtpCommand(JReleaserLogger logger, boolean dryrun, - Mail.Transport transport, + org.jreleaser.model.Mail.Transport transport, String host, Integer port, Boolean auth, @@ -73,7 +72,7 @@ private MessageMailCommand(JReleaserLogger logger, String bcc, String subject, String message, - Mail.MimeType mimeType, + org.jreleaser.model.Mail.MimeType mimeType, Map properties) { this.logger = logger; this.dryrun = dryrun; @@ -94,7 +93,7 @@ private MessageMailCommand(JReleaserLogger logger, } @Override - public void execute() throws MailException { + public void execute() throws SmtpException { logger.info(RB.$("mail.message.send")); if (dryrun) return; @@ -108,7 +107,7 @@ public void execute() throws MailException { if (!props.containsKey("mail.smtp.auth")) { props.put("mail.smtp.auth", "true"); } - if (transport == Mail.Transport.SMTP) { + if (transport == org.jreleaser.model.Mail.Transport.SMTP) { if (!props.containsKey("mail.smtp.starttls.enable")) { props.put("mail.smtp.starttls.enable", "true"); } @@ -159,7 +158,7 @@ public void execute() throws MailException { } t.sendMessage(message, message.getAllRecipients()); } catch (Exception e) { - throw new MailException(e); + throw new SmtpException(e); } } @@ -170,7 +169,7 @@ public static Builder builder(JReleaserLogger logger) { public static class Builder { private final JReleaserLogger logger; private boolean dryrun; - private Mail.Transport transport = Mail.Transport.SMTP; + private org.jreleaser.model.Mail.Transport transport = org.jreleaser.model.Mail.Transport.SMTP; private String host; private Integer port; private Boolean auth; @@ -182,7 +181,7 @@ public static class Builder { private String bcc; private String subject; private String message; - private Mail.MimeType mimeType = Mail.MimeType.TEXT; + private org.jreleaser.model.Mail.MimeType mimeType = org.jreleaser.model.Mail.MimeType.TEXT; private final Map properties = new LinkedHashMap<>(); protected Builder(JReleaserLogger logger) { @@ -194,7 +193,7 @@ public Builder dryrun(boolean dryrun) { return this; } - public Builder transport(Mail.Transport transport) { + public Builder transport(org.jreleaser.model.Mail.Transport transport) { this.transport = transport; return this; } @@ -254,7 +253,7 @@ public Builder message(String message) { return this; } - public Builder mimeType(Mail.MimeType mimeType) { + public Builder mimeType(org.jreleaser.model.Mail.MimeType mimeType) { this.mimeType = mimeType; return this; } @@ -264,8 +263,8 @@ public Builder properties(Map properties) { return this; } - public MessageMailCommand build() { - return new MessageMailCommand( + public MessageSmtpCommand build() { + return new MessageSmtpCommand( logger, dryrun, transport, diff --git a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncer.java b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncer.java similarity index 57% rename from sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncer.java rename to sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncer.java index 213d93876..d0ced6221 100644 --- a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncer.java +++ b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncer.java @@ -15,14 +15,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.sdk.mail; +package org.jreleaser.sdk.smtp; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Mail; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -34,16 +33,16 @@ * @since 0.1.0 */ @org.jreleaser.infra.nativeimage.annotations.NativeImage -public class MailAnnouncer implements Announcer { +public class SmtpAnnouncer implements Announcer { private final JReleaserContext context; - MailAnnouncer(JReleaserContext context) { + SmtpAnnouncer(JReleaserContext context) { this.context = context; } @Override public String getName() { - return org.jreleaser.model.Mail.NAME; + return org.jreleaser.model.api.announce.SmtpAnnouncer.TYPE; } @Override @@ -53,41 +52,41 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Mail mail = context.getModel().getAnnounce().getMail(); + org.jreleaser.model.internal.announce.SmtpAnnouncer smtp = context.getModel().getAnnounce().getMail(); String message = ""; - if (isNotBlank(mail.getMessage())) { - message = mail.getResolvedMessage(context); + if (isNotBlank(smtp.getMessage())) { + message = smtp.getResolvedMessage(context); } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); - message = mail.getResolvedMessageTemplate(context, props); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); + message = smtp.getResolvedMessageTemplate(context, props); } - String subject = mail.getResolvedSubject(context); + String subject = smtp.getResolvedSubject(context); context.getLogger().info("subject: {}", subject); context.getLogger().debug("message: {}", message); try { - MessageMailCommand.builder(context.getLogger()) + MessageSmtpCommand.builder(context.getLogger()) .dryrun(context.isDryrun()) - .transport(mail.getTransport()) - .host(mail.getHost()) - .port(mail.getPort()) - .auth(mail.isAuth()) - .username(mail.getUsername()) - .password(context.isDryrun() ? "**UNDEFINED**" : mail.getResolvedPassword()) - .from(mail.getFrom()) - .to(mail.getTo()) - .cc(mail.getCc()) - .bcc(mail.getBcc()) + .transport(smtp.getTransport()) + .host(smtp.getHost()) + .port(smtp.getPort()) + .auth(smtp.isAuth()) + .username(smtp.getUsername()) + .password(context.isDryrun() ? "**UNDEFINED**" : smtp.getResolvedPassword()) + .from(smtp.getFrom()) + .to(smtp.getTo()) + .cc(smtp.getCc()) + .bcc(smtp.getBcc()) .subject(subject) .message(message) - .mimeType(mail.getMimeType()) + .mimeType(smtp.getMimeType()) .build() .execute(); - } catch (MailException e) { + } catch (SmtpException e) { context.getLogger().trace(e); throw new AnnounceException(e); } diff --git a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncerBuilder.java b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncerBuilder.java similarity index 74% rename from sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncerBuilder.java rename to sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncerBuilder.java index c037adf7a..8a806c232 100644 --- a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncerBuilder.java +++ b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncerBuilder.java @@ -15,19 +15,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.sdk.mail; +package org.jreleaser.sdk.smtp; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray * @since 0.1.0 */ -public class MailAnnouncerBuilder extends AbstractAnnouncerBuilder { +public class SmtpAnnouncerBuilder extends AbstractAnnouncerBuilder { @Override - public MailAnnouncer build() { + public SmtpAnnouncer build() { validate(); - return new MailAnnouncer(context); + return new SmtpAnnouncer(context); } } diff --git a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncerBuilderFactory.java b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncerBuilderFactory.java similarity index 70% rename from sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncerBuilderFactory.java rename to sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncerBuilderFactory.java index eb0a84e66..b537cfbeb 100644 --- a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpAnnouncerBuilderFactory.java @@ -15,9 +15,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.sdk.mail; +package org.jreleaser.sdk.smtp; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -25,14 +25,14 @@ * @since 0.1.0 */ @ServiceProviderFor(AnnouncerBuilderFactory.class) -public class MailAnnouncerBuilderFactory implements AnnouncerBuilderFactory { +public class SmtpAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Mail.NAME; + return org.jreleaser.model.api.announce.SmtpAnnouncer.TYPE; } @Override - public MailAnnouncerBuilder getBuilder() { - return new MailAnnouncerBuilder(); + public SmtpAnnouncerBuilder getBuilder() { + return new SmtpAnnouncerBuilder(); } } \ No newline at end of file diff --git a/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpCommand.java b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpCommand.java new file mode 100644 index 000000000..96ae4cf9a --- /dev/null +++ b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpCommand.java @@ -0,0 +1,26 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +package org.jreleaser.sdk.smtp; + +/** + * @author Andres Almiray + * @since 0.1.0 + */ +public interface SmtpCommand { + void execute() throws SmtpException; +} diff --git a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailException.java b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpException.java similarity index 78% rename from sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailException.java rename to sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpException.java index 30a2f71dc..2fde1b6ce 100644 --- a/sdks/mail-java-sdk/src/main/java/org/jreleaser/sdk/mail/MailException.java +++ b/sdks/jreleaser-smtp-java-sdk/src/main/java/org/jreleaser/sdk/smtp/SmtpException.java @@ -15,22 +15,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.sdk.mail; +package org.jreleaser.sdk.smtp; /** * @author Andres Almiray * @since 0.1.0 */ -public class MailException extends Exception { - public MailException(String message) { +public class SmtpException extends Exception { + public SmtpException(String message) { super(message); } - public MailException(String message, Throwable cause) { + public SmtpException(String message, Throwable cause) { super(message, cause); } - public MailException(Throwable cause) { + public SmtpException(Throwable cause) { super(cause); } } diff --git a/sdks/mail-java-sdk/src/test/java/org/jreleaser/sdk/mail/MessageMailCommandTest.java b/sdks/jreleaser-smtp-java-sdk/src/test/java/org/jreleaser/sdk/smtp/MessageSmtpCommandTest.java similarity index 89% rename from sdks/mail-java-sdk/src/test/java/org/jreleaser/sdk/mail/MessageMailCommandTest.java rename to sdks/jreleaser-smtp-java-sdk/src/test/java/org/jreleaser/sdk/smtp/MessageSmtpCommandTest.java index e564d3655..ac497ab4d 100644 --- a/sdks/mail-java-sdk/src/test/java/org/jreleaser/sdk/mail/MessageMailCommandTest.java +++ b/sdks/jreleaser-smtp-java-sdk/src/test/java/org/jreleaser/sdk/smtp/MessageSmtpCommandTest.java @@ -15,12 +15,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.sdk.mail; +package org.jreleaser.sdk.smtp; import com.icegreen.greenmail.junit5.GreenMailExtension; import com.icegreen.greenmail.util.ServerSetupTest; import jakarta.mail.MessagingException; -import org.jreleaser.model.Mail; import org.jreleaser.logging.SimpleJReleaserLoggerAdapter; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -36,12 +35,12 @@ * @author Andres Almiray * @since 0.1.0 */ -public class MessageMailCommandTest { +public class MessageSmtpCommandTest { @RegisterExtension GreenMailExtension greenMail = new GreenMailExtension(ServerSetupTest.SMTP); @Test - public void testMessage() throws MailException, MessagingException { + public void testMessage() throws SmtpException, MessagingException { // given: String sender = "test@acme.com"; String receiver = "jreleaser@acme.com"; @@ -49,9 +48,9 @@ public void testMessage() throws MailException, MessagingException { String bcc = "hidden@acme.com"; String message = "Test"; - MessageMailCommand command = MessageMailCommand + MessageSmtpCommand command = MessageSmtpCommand .builder(new SimpleJReleaserLoggerAdapter(SimpleJReleaserLoggerAdapter.Level.DEBUG)) - .transport(Mail.Transport.SMTP) + .transport(org.jreleaser.model.Mail.Transport.SMTP) .host("localhost") .port(3025) .auth(false) @@ -61,7 +60,7 @@ public void testMessage() throws MailException, MessagingException { .bcc(bcc) .subject("Test") .message(message) - .mimeType(Mail.MimeType.HTML) + .mimeType(org.jreleaser.model.Mail.MimeType.HTML) .build(); // when: diff --git a/sdks/ssh-java-sdk/gradle.properties b/sdks/jreleaser-ssh-java-sdk/gradle.properties similarity index 100% rename from sdks/ssh-java-sdk/gradle.properties rename to sdks/jreleaser-ssh-java-sdk/gradle.properties diff --git a/sdks/ssh-java-sdk/ssh-java-sdk.gradle b/sdks/jreleaser-ssh-java-sdk/jreleaser-ssh-java-sdk.gradle similarity index 90% rename from sdks/ssh-java-sdk/ssh-java-sdk.gradle rename to sdks/jreleaser-ssh-java-sdk/jreleaser-ssh-java-sdk.gradle index 1e6d8e576..57edab11d 100644 --- a/sdks/ssh-java-sdk/ssh-java-sdk.gradle +++ b/sdks/jreleaser-ssh-java-sdk/jreleaser-ssh-java-sdk.gradle @@ -19,7 +19,7 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') api "com.hierynomus:sshj:$sshjVersion" } \ No newline at end of file diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloader.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloader.java similarity index 90% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloader.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloader.java index 9be00a0c2..e520d6aab 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloader.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloader.java @@ -19,10 +19,10 @@ import net.schmizz.sshj.SSHClient; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpDownloader; -import org.jreleaser.model.downloader.spi.DownloadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.ScpDownloader; +import org.jreleaser.model.spi.download.DownloadException; import org.jreleaser.sdk.commons.AbstractArtifactDownloader; import java.io.IOException; @@ -57,7 +57,7 @@ public void setDownloader(ScpDownloader downloader) { @Override public String getType() { - return ScpDownloader.TYPE; + return org.jreleaser.model.api.download.ScpDownloader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloaderFactory.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloaderFactory.java similarity index 82% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloaderFactory.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloaderFactory.java index fa93efa20..ce3f18440 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloaderFactory.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactDownloaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.ssh; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpDownloader; -import org.jreleaser.model.downloader.spi.ArtifactDownloaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.ScpDownloader; +import org.jreleaser.model.spi.download.ArtifactDownloaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class ScpArtifactDownloaderFactory implements ArtifactDownloaderFactory { @Override public String getName() { - return ScpDownloader.TYPE; + return org.jreleaser.model.api.download.ScpDownloader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploader.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploader.java similarity index 91% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploader.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploader.java index f199b81f8..f924a00bb 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploader.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploader.java @@ -19,10 +19,10 @@ import net.schmizz.sshj.SSHClient; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpUploader; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.ScpUploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import java.io.IOException; @@ -58,7 +58,7 @@ public void setUploader(ScpUploader uploader) { @Override public String getType() { - return ScpUploader.TYPE; + return org.jreleaser.model.api.upload.ScpUploader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploaderFactory.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploaderFactory.java similarity index 82% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploaderFactory.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploaderFactory.java index 0af5374e8..3e4c9b216 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploaderFactory.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/ScpArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.ssh; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpUploader; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.ScpUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class ScpArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return ScpUploader.TYPE; + return org.jreleaser.model.api.upload.ScpUploader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloader.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloader.java similarity index 91% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloader.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloader.java index 8a97a3b44..e36cca994 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloader.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloader.java @@ -20,11 +20,10 @@ import net.schmizz.sshj.SSHClient; import net.schmizz.sshj.sftp.SFTPClient; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Downloader; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.ScpDownloader; -import org.jreleaser.model.SftpDownloader; -import org.jreleaser.model.downloader.spi.DownloadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.Downloader; +import org.jreleaser.model.internal.download.SftpDownloader; +import org.jreleaser.model.spi.download.DownloadException; import org.jreleaser.sdk.commons.AbstractArtifactDownloader; import java.io.IOException; @@ -61,7 +60,7 @@ public void setDownloader(SftpDownloader downloader) { @Override public String getType() { - return ScpDownloader.TYPE; + return org.jreleaser.model.api.download.ScpDownloader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloaderFactory.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloaderFactory.java similarity index 82% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloaderFactory.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloaderFactory.java index e8f3be127..3b161b196 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloaderFactory.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactDownloaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.ssh; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.SftpDownloader; -import org.jreleaser.model.downloader.spi.ArtifactDownloaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.download.SftpDownloader; +import org.jreleaser.model.spi.download.ArtifactDownloaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class SftpArtifactDownloaderFactory implements ArtifactDownloaderFactory { @Override public String getName() { - return SftpDownloader.TYPE; + return org.jreleaser.model.api.download.SftpDownloader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploader.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploader.java similarity index 91% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploader.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploader.java index b732d5789..fecb69e90 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploader.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploader.java @@ -20,10 +20,10 @@ import net.schmizz.sshj.SSHClient; import net.schmizz.sshj.sftp.SFTPClient; import org.jreleaser.bundle.RB; -import org.jreleaser.model.Artifact; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.SftpUploader; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Artifact; +import org.jreleaser.model.internal.upload.SftpUploader; +import org.jreleaser.model.spi.upload.UploadException; import org.jreleaser.sdk.commons.AbstractArtifactUploader; import java.io.IOException; @@ -60,7 +60,7 @@ public void setUploader(SftpUploader uploader) { @Override public String getType() { - return SftpUploader.TYPE; + return org.jreleaser.model.api.upload.SftpUploader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploaderFactory.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploaderFactory.java similarity index 82% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploaderFactory.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploaderFactory.java index 838cc0744..6fc26bb2e 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploaderFactory.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SftpArtifactUploaderFactory.java @@ -17,9 +17,9 @@ */ package org.jreleaser.sdk.ssh; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.SftpUploader; -import org.jreleaser.model.uploader.spi.ArtifactUploaderFactory; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.upload.SftpUploader; +import org.jreleaser.model.spi.upload.ArtifactUploaderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -30,7 +30,7 @@ public class SftpArtifactUploaderFactory implements ArtifactUploaderFactory { @Override public String getName() { - return SftpUploader.TYPE; + return org.jreleaser.model.api.upload.SftpUploader.TYPE; } @Override diff --git a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SshUtils.java b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SshUtils.java similarity index 95% rename from sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SshUtils.java rename to sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SshUtils.java index b08903156..6aa0f7f69 100644 --- a/sdks/ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SshUtils.java +++ b/sdks/jreleaser-ssh-java-sdk/src/main/java/org/jreleaser/sdk/ssh/SshUtils.java @@ -26,12 +26,12 @@ import net.schmizz.sshj.userauth.password.PasswordFinder; import net.schmizz.sshj.userauth.password.PasswordUtils; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Ssh; -import org.jreleaser.model.SshDownloader; -import org.jreleaser.model.SshUploader; -import org.jreleaser.model.downloader.spi.DownloadException; -import org.jreleaser.model.uploader.spi.UploadException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.common.Ssh; +import org.jreleaser.model.internal.download.SshDownloader; +import org.jreleaser.model.internal.upload.SshUploader; +import org.jreleaser.model.spi.download.DownloadException; +import org.jreleaser.model.spi.upload.UploadException; import java.io.IOException; import java.nio.file.Files; diff --git a/sdks/teams-java-sdk/gradle.properties b/sdks/jreleaser-teams-java-sdk/gradle.properties similarity index 100% rename from sdks/teams-java-sdk/gradle.properties rename to sdks/jreleaser-teams-java-sdk/gradle.properties diff --git a/sdks/jreleaser-teams-java-sdk/jreleaser-teams-java-sdk.gradle b/sdks/jreleaser-teams-java-sdk/jreleaser-teams-java-sdk.gradle new file mode 100644 index 000000000..a290e7587 --- /dev/null +++ b/sdks/jreleaser-teams-java-sdk/jreleaser-teams-java-sdk.gradle @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncer.java b/sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncer.java similarity index 78% rename from sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncer.java rename to sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncer.java index 7e607cd5f..9e57dcdc8 100644 --- a/sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncer.java +++ b/sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncer.java @@ -18,17 +18,16 @@ package org.jreleaser.sdk.teams; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Teams; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; import org.jreleaser.sdk.commons.ClientUtils; -import org.jreleaser.util.Constants; import java.util.LinkedHashMap; import java.util.Map; -import static org.jreleaser.util.MustacheUtils.passThrough; +import static org.jreleaser.mustache.MustacheUtils.passThrough; /** * @author Andres Almiray @@ -44,7 +43,7 @@ public class TeamsAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Teams.NAME; + return org.jreleaser.model.api.announce.TeamsAnnouncer.TYPE; } @Override @@ -54,11 +53,11 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Teams teams = context.getModel().getAnnounce().getTeams(); + org.jreleaser.model.internal.announce.TeamsAnnouncer teams = context.getModel().getAnnounce().getTeams(); Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, passThrough(convertLineEndings(context.getChangelog()))); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); String message = teams.getResolvedMessageTemplate(context, props); context.getLogger().info(RB.$("webhook.message.send")); diff --git a/sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilder.java b/sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilder.java similarity index 93% rename from sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilder.java rename to sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilder.java index d6aa37ff7..e975a9d7f 100644 --- a/sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilder.java +++ b/sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.teams; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilderFactory.java b/sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilderFactory.java similarity index 89% rename from sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilderFactory.java rename to sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilderFactory.java index 518437625..60e85f936 100644 --- a/sdks/teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-teams-java-sdk/src/main/java/org/jreleaser/sdk/teams/TeamsAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.teams; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class TeamsAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Teams.NAME; + return org.jreleaser.model.api.announce.TeamsAnnouncer.TYPE; } @Override diff --git a/sdks/telegram-java-sdk/gradle.properties b/sdks/jreleaser-telegram-java-sdk/gradle.properties similarity index 100% rename from sdks/telegram-java-sdk/gradle.properties rename to sdks/jreleaser-telegram-java-sdk/gradle.properties diff --git a/sdks/jreleaser-telegram-java-sdk/jreleaser-telegram-java-sdk.gradle b/sdks/jreleaser-telegram-java-sdk/jreleaser-telegram-java-sdk.gradle new file mode 100644 index 000000000..a290e7587 --- /dev/null +++ b/sdks/jreleaser-telegram-java-sdk/jreleaser-telegram-java-sdk.gradle @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncer.java b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncer.java similarity index 81% rename from sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncer.java rename to sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncer.java index dbd276322..1e6312ec2 100644 --- a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncer.java +++ b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncer.java @@ -17,12 +17,11 @@ */ package org.jreleaser.sdk.telegram; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Telegram; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -43,7 +42,7 @@ public class TelegramAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Telegram.NAME; + return org.jreleaser.model.api.announce.TelegramAnnouncer.TYPE; } @Override @@ -53,7 +52,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Telegram telegram = context.getModel().getAnnounce().getTelegram(); + org.jreleaser.model.internal.announce.TelegramAnnouncer telegram = context.getModel().getAnnounce().getTelegram(); String message = ""; if (isNotBlank(telegram.getMessage())) { @@ -61,7 +60,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = telegram.getResolvedMessageTemplate(context, props); } diff --git a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilder.java b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilder.java similarity index 93% rename from sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilder.java rename to sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilder.java index 639050732..f22c569a8 100644 --- a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilder.java +++ b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.telegram; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilderFactory.java b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilderFactory.java similarity index 89% rename from sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilderFactory.java rename to sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilderFactory.java index 9ba920088..1bdb8796c 100644 --- a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.telegram; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class TelegramAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Telegram.NAME; + return org.jreleaser.model.api.announce.TelegramAnnouncer.TYPE; } @Override diff --git a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramException.java b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramException.java similarity index 100% rename from sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramException.java rename to sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramException.java diff --git a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramSdk.java b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramSdk.java similarity index 98% rename from sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramSdk.java rename to sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramSdk.java index be2e8f7d5..ecec5e36c 100644 --- a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramSdk.java +++ b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/TelegramSdk.java @@ -55,7 +55,7 @@ private TelegramSdk(JReleaserLogger logger, public void sendMessage(String chatId, String message) throws TelegramException { Message payload = Message.of(chatId, message); - logger.debug("telegram.message: " + payload.toString()); + logger.debug("telegram.message: " + payload); wrap(() -> api.sendMessage(payload)); } diff --git a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/Message.java b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/Message.java similarity index 100% rename from sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/Message.java rename to sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/Message.java diff --git a/sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/TelegramAPI.java b/sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/TelegramAPI.java similarity index 100% rename from sdks/telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/TelegramAPI.java rename to sdks/jreleaser-telegram-java-sdk/src/main/java/org/jreleaser/sdk/telegram/api/TelegramAPI.java diff --git a/sdks/tool-sdk/gradle.properties b/sdks/jreleaser-tool-java-sdk/gradle.properties similarity index 100% rename from sdks/tool-sdk/gradle.properties rename to sdks/jreleaser-tool-java-sdk/gradle.properties diff --git a/sdks/tool-sdk/tool-sdk.gradle b/sdks/jreleaser-tool-java-sdk/jreleaser-tool-java-sdk.gradle similarity index 94% rename from sdks/tool-sdk/tool-sdk.gradle rename to sdks/jreleaser-tool-java-sdk/jreleaser-tool-java-sdk.gradle index 6a69ca213..ccd45933e 100644 --- a/sdks/tool-sdk/tool-sdk.gradle +++ b/sdks/jreleaser-tool-java-sdk/jreleaser-tool-java-sdk.gradle @@ -16,5 +16,5 @@ * limitations under the License. */ dependencies { - api project(':jreleaser-model') + api project(':jreleaser-model-impl') } \ No newline at end of file diff --git a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/AbstractTool.java b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/AbstractTool.java similarity index 96% rename from sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/AbstractTool.java rename to sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/AbstractTool.java index b4a6727ed..b72edb0cb 100644 --- a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/AbstractTool.java +++ b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/AbstractTool.java @@ -18,9 +18,9 @@ package org.jreleaser.sdk.tool; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.sdk.command.CommandException; import org.jreleaser.util.PlatformUtils; -import org.jreleaser.util.command.CommandException; import static org.jreleaser.util.StringUtils.requireNonBlank; diff --git a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/Cosign.java b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/Cosign.java similarity index 95% rename from sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/Cosign.java rename to sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/Cosign.java index fdb5b250b..c7d3ab3aa 100644 --- a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/Cosign.java +++ b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/Cosign.java @@ -18,11 +18,11 @@ package org.jreleaser.sdk.tool; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.command.CommandExecutor; -import org.jreleaser.util.signing.SigningException; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.command.CommandExecutor; +import org.jreleaser.sdk.signing.SigningException; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/DownloadableTool.java b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/DownloadableTool.java similarity index 97% rename from sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/DownloadableTool.java rename to sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/DownloadableTool.java index e978b98fc..df623e0ef 100644 --- a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/DownloadableTool.java +++ b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/DownloadableTool.java @@ -19,10 +19,10 @@ import org.jreleaser.bundle.RB; import org.jreleaser.logging.JReleaserLogger; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.command.CommandExecutor; import org.jreleaser.util.FileUtils; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.command.CommandExecutor; import java.io.ByteArrayOutputStream; import java.io.File; @@ -39,9 +39,9 @@ import java.util.regex.Pattern; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray diff --git a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/ToolException.java b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/ToolException.java similarity index 100% rename from sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/ToolException.java rename to sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/ToolException.java diff --git a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/Upx.java b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/Upx.java similarity index 85% rename from sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/Upx.java rename to sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/Upx.java index a9878a029..b4b7698c7 100644 --- a/sdks/tool-sdk/src/main/java/org/jreleaser/sdk/tool/Upx.java +++ b/sdks/jreleaser-tool-java-sdk/src/main/java/org/jreleaser/sdk/tool/Upx.java @@ -17,10 +17,10 @@ */ package org.jreleaser.sdk.tool; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.util.command.Command; -import org.jreleaser.util.command.CommandException; -import org.jreleaser.util.command.CommandExecutor; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.sdk.command.Command; +import org.jreleaser.sdk.command.CommandException; +import org.jreleaser.sdk.command.CommandExecutor; import java.nio.file.Path; import java.util.List; diff --git a/sdks/tool-sdk/src/main/resources/META-INF/jreleaser/tools/cosign.properties b/sdks/jreleaser-tool-java-sdk/src/main/resources/META-INF/jreleaser/tools/cosign.properties similarity index 100% rename from sdks/tool-sdk/src/main/resources/META-INF/jreleaser/tools/cosign.properties rename to sdks/jreleaser-tool-java-sdk/src/main/resources/META-INF/jreleaser/tools/cosign.properties diff --git a/sdks/tool-sdk/src/main/resources/META-INF/jreleaser/tools/upx.properties b/sdks/jreleaser-tool-java-sdk/src/main/resources/META-INF/jreleaser/tools/upx.properties similarity index 100% rename from sdks/tool-sdk/src/main/resources/META-INF/jreleaser/tools/upx.properties rename to sdks/jreleaser-tool-java-sdk/src/main/resources/META-INF/jreleaser/tools/upx.properties diff --git a/sdks/twitter-java-sdk/gradle.properties b/sdks/jreleaser-twitter-java-sdk/gradle.properties similarity index 100% rename from sdks/twitter-java-sdk/gradle.properties rename to sdks/jreleaser-twitter-java-sdk/gradle.properties diff --git a/sdks/twitter-java-sdk/twitter-java-sdk.gradle b/sdks/jreleaser-twitter-java-sdk/jreleaser-twitter-java-sdk.gradle similarity index 96% rename from sdks/twitter-java-sdk/twitter-java-sdk.gradle rename to sdks/jreleaser-twitter-java-sdk/jreleaser-twitter-java-sdk.gradle index cbcb1efa9..0a0b790b0 100644 --- a/sdks/twitter-java-sdk/twitter-java-sdk.gradle +++ b/sdks/jreleaser-twitter-java-sdk/jreleaser-twitter-java-sdk.gradle @@ -19,7 +19,7 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') + api project(':jreleaser-model-impl') api "org.twitter4j:twitter4j-core:$twitter4jVersion" diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/AbstractTwitterCommand.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/AbstractTwitterCommand.java similarity index 100% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/AbstractTwitterCommand.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/AbstractTwitterCommand.java diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/Twitter.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/Twitter.java similarity index 100% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/Twitter.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/Twitter.java diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncer.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncer.java similarity index 83% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncer.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncer.java index 53daac3bd..ede174cde 100644 --- a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncer.java +++ b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncer.java @@ -18,12 +18,11 @@ package org.jreleaser.sdk.twitter; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Twitter; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.util.StringUtils; import java.util.ArrayList; @@ -32,10 +31,10 @@ import java.util.List; import java.util.Map; -import static org.jreleaser.util.Constants.KEY_TAG_NAME; -import static org.jreleaser.util.MustacheUtils.applyTemplates; +import static org.jreleaser.model.Constants.KEY_TAG_NAME; +import static org.jreleaser.mustache.MustacheUtils.applyTemplates; +import static org.jreleaser.mustache.Templates.resolveTemplate; import static org.jreleaser.util.StringUtils.isNotBlank; -import static org.jreleaser.util.Templates.resolveTemplate; /** * @author Andres Almiray @@ -51,7 +50,7 @@ public class TwitterAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Twitter.NAME; + return org.jreleaser.model.api.announce.TwitterAnnouncer.TYPE; } @Override @@ -61,14 +60,14 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Twitter twitter = context.getModel().getAnnounce().getTwitter(); + org.jreleaser.model.internal.announce.TwitterAnnouncer twitter = context.getModel().getAnnounce().getTwitter(); List statuses = new ArrayList<>(); if (isNotBlank(twitter.getStatusTemplate())) { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); Arrays.stream(twitter.getResolvedStatusTemplate(context, props) .split(System.lineSeparator())) .filter(StringUtils::isNotBlank) @@ -113,7 +112,7 @@ public void announce() throws AnnounceException { private String getResolvedMessage(JReleaserContext context, String message) { Map props = context.fullProps(); applyTemplates(props, context.getModel().getAnnounce().getTwitter().getResolvedExtraProperties()); - props.put(KEY_TAG_NAME, context.getModel().getRelease().getGitService().getEffectiveTagName(context.getModel())); + props.put(KEY_TAG_NAME, context.getModel().getRelease().getReleaser().getEffectiveTagName(context.getModel())); return resolveTemplate(message, props); } } diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilder.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilder.java similarity index 93% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilder.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilder.java index 2a1b6f56b..8987d1467 100644 --- a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilder.java +++ b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.twitter; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilderFactory.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilderFactory.java similarity index 89% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilderFactory.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilderFactory.java index e20614b91..5ac9a650d 100644 --- a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.twitter; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class TwitterAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Twitter.NAME; + return org.jreleaser.model.api.announce.TwitterAnnouncer.TYPE; } @Override diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterCommand.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterCommand.java similarity index 100% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterCommand.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterCommand.java diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterException.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterException.java similarity index 100% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterException.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/TwitterException.java diff --git a/sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommand.java b/sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommand.java similarity index 100% rename from sdks/twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommand.java rename to sdks/jreleaser-twitter-java-sdk/src/main/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommand.java diff --git a/sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/ApiEndpoints.java b/sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/ApiEndpoints.java similarity index 100% rename from sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/ApiEndpoints.java rename to sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/ApiEndpoints.java diff --git a/sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/Stubs.java b/sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/Stubs.java similarity index 100% rename from sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/Stubs.java rename to sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/Stubs.java diff --git a/sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommandTest.java b/sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommandTest.java similarity index 100% rename from sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommandTest.java rename to sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/UpdateStatusTwitterCommandTest.java diff --git a/sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/WireMockExtension.java b/sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/WireMockExtension.java similarity index 100% rename from sdks/twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/WireMockExtension.java rename to sdks/jreleaser-twitter-java-sdk/src/test/java/org/jreleaser/sdk/twitter/WireMockExtension.java diff --git a/sdks/webhooks-java-sdk/gradle.properties b/sdks/jreleaser-webhooks-java-sdk/gradle.properties similarity index 100% rename from sdks/webhooks-java-sdk/gradle.properties rename to sdks/jreleaser-webhooks-java-sdk/gradle.properties diff --git a/sdks/jreleaser-webhooks-java-sdk/jreleaser-webhooks-java-sdk.gradle b/sdks/jreleaser-webhooks-java-sdk/jreleaser-webhooks-java-sdk.gradle new file mode 100644 index 000000000..a290e7587 --- /dev/null +++ b/sdks/jreleaser-webhooks-java-sdk/jreleaser-webhooks-java-sdk.gradle @@ -0,0 +1,24 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2022 The JReleaser 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. + */ +dependencies { + compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" + annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" + + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') +} \ No newline at end of file diff --git a/sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java similarity index 80% rename from sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java rename to sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java index 0f6b24a5e..9ba69a0c0 100644 --- a/sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java +++ b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncer.java @@ -20,14 +20,14 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.jreleaser.bundle.RB; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Webhook; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.internal.announce.WebhookAnnouncer; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import org.jreleaser.sdk.commons.ClientUtils; import org.jreleaser.util.CollectionUtils; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -48,7 +48,7 @@ public class WebhooksAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Webhooks.NAME; + return org.jreleaser.model.api.announce.WebhooksAnnouncer.TYPE; } @Override @@ -58,9 +58,9 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Map webhooks = context.getModel().getAnnounce().getWebhooks(); + Map webhooks = context.getModel().getAnnounce().getWebhooks(); - for (Map.Entry e : webhooks.entrySet()) { + for (Map.Entry e : webhooks.entrySet()) { if (e.getValue().isEnabled()) { context.getLogger().setPrefix("webhook." + e.getKey()); try { @@ -74,7 +74,7 @@ public void announce() throws AnnounceException { } } - public void announce(Webhook webhook) throws AnnounceException { + public void announce(WebhookAnnouncer webhook) throws AnnounceException { String message = ""; if (isNotBlank(webhook.getMessage())) { message = webhook.getResolvedMessage(context); @@ -88,7 +88,7 @@ public void announce(Webhook webhook) throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = webhook.getResolvedMessageTemplate(context, props); } diff --git a/sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilder.java b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilder.java similarity index 93% rename from sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilder.java rename to sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilder.java index b42cf0234..1f3323abb 100644 --- a/sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilder.java +++ b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.webhooks; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilderFactory.java b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilderFactory.java similarity index 89% rename from sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilderFactory.java rename to sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilderFactory.java index a62186fd8..99e31ef4b 100644 --- a/sdks/webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-webhooks-java-sdk/src/main/java/org/jreleaser/sdk/webhooks/WebhooksAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.webhooks; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class WebhooksAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Webhooks.NAME; + return org.jreleaser.model.api.announce.WebhooksAnnouncer.TYPE; } @Override diff --git a/sdks/zulip-java-sdk/gradle.properties b/sdks/jreleaser-zulip-java-sdk/gradle.properties similarity index 100% rename from sdks/zulip-java-sdk/gradle.properties rename to sdks/jreleaser-zulip-java-sdk/gradle.properties diff --git a/sdks/google-chat-java-sdk/google-chat-java-sdk.gradle b/sdks/jreleaser-zulip-java-sdk/jreleaser-zulip-java-sdk.gradle similarity index 92% rename from sdks/google-chat-java-sdk/google-chat-java-sdk.gradle rename to sdks/jreleaser-zulip-java-sdk/jreleaser-zulip-java-sdk.gradle index bd41d3479..b8daef44e 100644 --- a/sdks/google-chat-java-sdk/google-chat-java-sdk.gradle +++ b/sdks/jreleaser-zulip-java-sdk/jreleaser-zulip-java-sdk.gradle @@ -19,8 +19,8 @@ dependencies { compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - api project(':jreleaser-model') - api project(':java-sdk-commons') + api project(':jreleaser-model-impl') + api project(':jreleaser-java-sdk-commons') testImplementation("com.github.tomakehurst:wiremock-jre8:$wiremockVersion") { exclude group: 'org.eclipse.jetty', module: 'jetty-alpn-java-server' diff --git a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncer.java b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncer.java similarity index 83% rename from sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncer.java rename to sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncer.java index 3ca712bd8..81e816712 100644 --- a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncer.java +++ b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncer.java @@ -17,12 +17,11 @@ */ package org.jreleaser.sdk.zulip; -import org.jreleaser.model.JReleaserContext; -import org.jreleaser.model.Zulip; -import org.jreleaser.model.announcer.spi.AnnounceException; -import org.jreleaser.model.announcer.spi.Announcer; -import org.jreleaser.util.Constants; -import org.jreleaser.util.MustacheUtils; +import org.jreleaser.model.Constants; +import org.jreleaser.model.internal.JReleaserContext; +import org.jreleaser.model.spi.announce.AnnounceException; +import org.jreleaser.model.spi.announce.Announcer; +import org.jreleaser.mustache.MustacheUtils; import java.util.LinkedHashMap; import java.util.Map; @@ -43,7 +42,7 @@ public class ZulipAnnouncer implements Announcer { @Override public String getName() { - return org.jreleaser.model.Zulip.NAME; + return org.jreleaser.model.api.announce.ZulipAnnouncer.TYPE; } @Override @@ -53,7 +52,7 @@ public boolean isEnabled() { @Override public void announce() throws AnnounceException { - Zulip zulip = context.getModel().getAnnounce().getZulip(); + org.jreleaser.model.internal.announce.ZulipAnnouncer zulip = context.getModel().getAnnounce().getZulip(); String message = ""; if (isNotBlank(zulip.getMessage())) { @@ -61,7 +60,7 @@ public void announce() throws AnnounceException { } else { Map props = new LinkedHashMap<>(); props.put(Constants.KEY_CHANGELOG, MustacheUtils.passThrough(context.getChangelog())); - context.getModel().getRelease().getGitService().fillProps(props, context.getModel()); + context.getModel().getRelease().getReleaser().fillProps(props, context.getModel()); message = zulip.getResolvedMessageTemplate(context, props); } diff --git a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilder.java b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilder.java similarity index 93% rename from sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilder.java rename to sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilder.java index bada3fa8f..696a68305 100644 --- a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilder.java +++ b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilder.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.zulip; -import org.jreleaser.model.announcer.spi.AbstractAnnouncerBuilder; +import org.jreleaser.model.spi.announce.AbstractAnnouncerBuilder; /** * @author Andres Almiray diff --git a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilderFactory.java b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilderFactory.java similarity index 89% rename from sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilderFactory.java rename to sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilderFactory.java index 1faf1760b..347df1498 100644 --- a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilderFactory.java +++ b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipAnnouncerBuilderFactory.java @@ -17,7 +17,7 @@ */ package org.jreleaser.sdk.zulip; -import org.jreleaser.model.announcer.spi.AnnouncerBuilderFactory; +import org.jreleaser.model.spi.announce.AnnouncerBuilderFactory; import org.kordamp.jipsy.annotations.ServiceProviderFor; /** @@ -28,7 +28,7 @@ public class ZulipAnnouncerBuilderFactory implements AnnouncerBuilderFactory { @Override public String getName() { - return org.jreleaser.model.Zulip.NAME; + return org.jreleaser.model.api.announce.ZulipAnnouncer.TYPE; } @Override diff --git a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipException.java b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipException.java similarity index 100% rename from sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipException.java rename to sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipException.java diff --git a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipSdk.java b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipSdk.java similarity index 98% rename from sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipSdk.java rename to sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipSdk.java index 6c438d260..5ee096951 100644 --- a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipSdk.java +++ b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/ZulipSdk.java @@ -65,7 +65,7 @@ public void message(String channel, String subject, String message) throws ZulipException { Message payload = Message.of(channel, subject, message); - logger.debug("zulip.message: " + payload.toString()); + logger.debug("zulip.message: " + payload); wrap(() -> api.message(payload)); } diff --git a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/Message.java b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/Message.java similarity index 100% rename from sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/Message.java rename to sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/Message.java diff --git a/sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/ZulipAPI.java b/sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/ZulipAPI.java similarity index 100% rename from sdks/zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/ZulipAPI.java rename to sdks/jreleaser-zulip-java-sdk/src/main/java/org/jreleaser/sdk/zulip/api/ZulipAPI.java diff --git a/sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ApiEndpoints.java b/sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ApiEndpoints.java similarity index 100% rename from sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ApiEndpoints.java rename to sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ApiEndpoints.java diff --git a/sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/Stubs.java b/sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/Stubs.java similarity index 100% rename from sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/Stubs.java rename to sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/Stubs.java diff --git a/sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/WireMockExtension.java b/sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/WireMockExtension.java similarity index 100% rename from sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/WireMockExtension.java rename to sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/WireMockExtension.java diff --git a/sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ZulipMessageTest.java b/sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ZulipMessageTest.java similarity index 100% rename from sdks/zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ZulipMessageTest.java rename to sdks/jreleaser-zulip-java-sdk/src/test/java/org/jreleaser/sdk/zulip/ZulipMessageTest.java diff --git a/sdks/mastodon-java-sdk/mastodon-java-sdk.gradle b/sdks/mastodon-java-sdk/mastodon-java-sdk.gradle deleted file mode 100644 index eccc2d436..000000000 --- a/sdks/mastodon-java-sdk/mastodon-java-sdk.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/sdks/mattermost-java-sdk/mattermost-java-sdk.gradle b/sdks/mattermost-java-sdk/mattermost-java-sdk.gradle deleted file mode 100644 index eccc2d436..000000000 --- a/sdks/mattermost-java-sdk/mattermost-java-sdk.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/sdks/teams-java-sdk/teams-java-sdk.gradle b/sdks/teams-java-sdk/teams-java-sdk.gradle deleted file mode 100644 index eccc2d436..000000000 --- a/sdks/teams-java-sdk/teams-java-sdk.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/sdks/telegram-java-sdk/telegram-java-sdk.gradle b/sdks/telegram-java-sdk/telegram-java-sdk.gradle deleted file mode 100644 index eccc2d436..000000000 --- a/sdks/telegram-java-sdk/telegram-java-sdk.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/sdks/webhooks-java-sdk/webhooks-java-sdk.gradle b/sdks/webhooks-java-sdk/webhooks-java-sdk.gradle deleted file mode 100644 index eccc2d436..000000000 --- a/sdks/webhooks-java-sdk/webhooks-java-sdk.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020-2022 The JReleaser 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. - */ -dependencies { - compileOnly "org.kordamp.jipsy:jipsy-annotations:${jipsyVersion}" - annotationProcessor "org.kordamp.jipsy:jipsy-processor:${jipsyVersion}" - - api project(':jreleaser-model') - api project(':java-sdk-commons') -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index a5f6c10e5..5ed1c961f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -41,7 +41,7 @@ apply plugin: 'org.kordamp.gradle.kordamp-parentbuild' rootProject.name = 'jreleaser' projects { - directories = ['infra', 'apps', 'api', 'core', 'sdks', 'plugins'] + directories = ['infra', 'api', 'core', 'sdks', 'plugins'] plugins { all { @@ -51,7 +51,7 @@ projects { id 'org.kordamp.gradle.java-project' id 'org.kordamp.gradle.checkstyle' } - dirs(['infra', 'apps', 'api', 'core', 'sdks', 'plugins']) { + dirs(['infra', 'api', 'core', 'sdks', 'plugins']) { id 'java-library' } } diff --git a/src/jreleaser/distributions/jreleaser-standalone/appimage/icons/256x256/jreleaser.png b/src/jreleaser/distributions/jreleaser-standalone/appimage/icons/256x256/jreleaser.png new file mode 100644 index 000000000..1c9a4ef1c Binary files /dev/null and b/src/jreleaser/distributions/jreleaser-standalone/appimage/icons/256x256/jreleaser.png differ