From f6026432026ce74e6ce764d07153e68a9b7019de Mon Sep 17 00:00:00 2001 From: John Blum Date: Fri, 9 Jun 2023 14:59:44 -0700 Subject: [PATCH] Remove local Sagan Gradle Plugins from buildSrc/. --- buildSrc/build.gradle | 4 - .../springframework/gradle/sagan/Release.java | 123 ------------------ .../gradle/sagan/SaganApi.java | 93 ------------- .../gradle/sagan/SaganCreateReleaseTask.java | 86 ------------ .../gradle/sagan/SaganDeleteReleaseTask.java | 62 --------- .../gradle/sagan/SaganPlugin.java | 47 ------- 6 files changed, 415 deletions(-) delete mode 100644 buildSrc/src/main/java/org/springframework/gradle/sagan/Release.java delete mode 100644 buildSrc/src/main/java/org/springframework/gradle/sagan/SaganApi.java delete mode 100644 buildSrc/src/main/java/org/springframework/gradle/sagan/SaganCreateReleaseTask.java delete mode 100644 buildSrc/src/main/java/org/springframework/gradle/sagan/SaganDeleteReleaseTask.java delete mode 100644 buildSrc/src/main/java/org/springframework/gradle/sagan/SaganPlugin.java diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 9994caf..0f49a63 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -39,10 +39,6 @@ gradlePlugin { id = "org.springframework.propdeps" implementationClass = "org.springframework.gradle.propdeps.PropDepsPlugin" } - sagan { - id = "org.springframework.sagan" - implementationClass = "org.springframework.gradle.sagan.SaganPlugin" - } } } diff --git a/buildSrc/src/main/java/org/springframework/gradle/sagan/Release.java b/buildSrc/src/main/java/org/springframework/gradle/sagan/Release.java deleted file mode 100644 index 5f9f717..0000000 --- a/buildSrc/src/main/java/org/springframework/gradle/sagan/Release.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2022-present the original author or 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.springframework.gradle.sagan; - -import java.util.regex.Pattern; - -/** - * Domain object for creating a new release version. - */ -public class Release { - private String version; - - private ReleaseStatus status; - - private boolean current; - - private String referenceDocUrl; - - private String apiDocUrl; - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public ReleaseStatus getStatus() { - return status; - } - - public void setStatus(ReleaseStatus status) { - this.status = status; - } - - public boolean isCurrent() { - return current; - } - - public void setCurrent(boolean current) { - this.current = current; - } - - public String getReferenceDocUrl() { - return referenceDocUrl; - } - - public void setReferenceDocUrl(String referenceDocUrl) { - this.referenceDocUrl = referenceDocUrl; - } - - public String getApiDocUrl() { - return apiDocUrl; - } - - public void setApiDocUrl(String apiDocUrl) { - this.apiDocUrl = apiDocUrl; - } - - @Override - public String toString() { - return "Release{" + - "version='" + version + '\'' + - ", status=" + status + - ", current=" + current + - ", referenceDocUrl='" + referenceDocUrl + '\'' + - ", apiDocUrl='" + apiDocUrl + '\'' + - '}'; - } - - public enum ReleaseStatus { - /** - * Unstable version with limited support - */ - SNAPSHOT, - /** - * Pre-Release version meant to be tested by the community - */ - PRERELEASE, - /** - * Release Generally Available on public artifact repositories and enjoying full support from maintainers - */ - GENERAL_AVAILABILITY; - - private static final Pattern PRERELEASE_PATTERN = Pattern.compile("[A-Za-z0-9\\.\\-]+?(M|RC)\\d+"); - - private static final String SNAPSHOT_SUFFIX = "SNAPSHOT"; - - /** - * Parse the ReleaseStatus from a String - * @param version a project version - * @return the release status for this version - */ - public static ReleaseStatus parse(String version) { - if (version == null) { - throw new IllegalArgumentException("version cannot be null"); - } - if (version.endsWith(SNAPSHOT_SUFFIX)) { - return SNAPSHOT; - } - if (PRERELEASE_PATTERN.matcher(version).matches()) { - return PRERELEASE; - } - return GENERAL_AVAILABILITY; - } - } - -} diff --git a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganApi.java b/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganApi.java deleted file mode 100644 index ed342b1..0000000 --- a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganApi.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2022-present the original author or 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.springframework.gradle.sagan; - -import com.google.gson.Gson; -import okhttp3.*; - -import java.io.IOException; -import java.util.Base64; - -/** - * Implements necessary calls to the Sagan API See https://spring.io/restdocs/index.html - */ -public class SaganApi { - private String baseUrl = "https://spring.io/api"; - - private OkHttpClient client; - private Gson gson = new Gson(); - - public SaganApi(String gitHubToken) { - this.client = new OkHttpClient.Builder() - .addInterceptor(new BasicInterceptor("not-used", gitHubToken)) - .build(); - } - - public void setBaseUrl(String baseUrl) { - this.baseUrl = baseUrl; - } - - public void createReleaseForProject(Release release, String projectName) { - String url = this.baseUrl + "/projects/" + projectName + "/releases"; - String releaseJsonString = gson.toJson(release); - RequestBody body = RequestBody.create(MediaType.parse("application/json"), releaseJsonString); - Request request = new Request.Builder() - .url(url) - .post(body) - .build(); - try { - Response response = this.client.newCall(request).execute(); - if (!response.isSuccessful()) { - throw new RuntimeException("Could not create release " + release + ". Got response " + response); - } - } catch (IOException fail) { - throw new RuntimeException("Could not create release " + release, fail); - } - } - - public void deleteReleaseForProject(String release, String projectName) { - String url = this.baseUrl + "/projects/" + projectName + "/releases/" + release; - Request request = new Request.Builder() - .url(url) - .delete() - .build(); - try { - Response response = this.client.newCall(request).execute(); - if (!response.isSuccessful()) { - throw new RuntimeException("Could not delete release " + release + ". Got response " + response); - } - } catch (IOException fail) { - throw new RuntimeException("Could not delete release " + release, fail); - } - } - - private static class BasicInterceptor implements Interceptor { - - private final String token; - - public BasicInterceptor(String username, String token) { - this.token = Base64.getEncoder().encodeToString((username + ":" + token).getBytes()); - } - - @Override - public okhttp3.Response intercept(Chain chain) throws IOException { - Request request = chain.request().newBuilder() - .addHeader("Authorization", "Basic " + this.token).build(); - return chain.proceed(request); - } - } -} diff --git a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganCreateReleaseTask.java b/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganCreateReleaseTask.java deleted file mode 100644 index f4729d3..0000000 --- a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganCreateReleaseTask.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2022-present the original author or 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.springframework.gradle.sagan; - -import org.gradle.api.DefaultTask; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.TaskAction; - -public class SaganCreateReleaseTask extends DefaultTask { - - @Input - private String gitHubAccessToken; - @Input - private String version; - @Input - private String apiDocUrl; - @Input - private String referenceDocUrl; - @Input - private String projectName; - - @TaskAction - public void saganCreateRelease() { - SaganApi sagan = new SaganApi(this.gitHubAccessToken); - Release release = new Release(); - release.setVersion(this.version); - release.setApiDocUrl(this.apiDocUrl); - release.setReferenceDocUrl(this.referenceDocUrl); - sagan.createReleaseForProject(release, this.projectName); - } - - public String getGitHubAccessToken() { - return gitHubAccessToken; - } - - public void setGitHubAccessToken(String gitHubAccessToken) { - this.gitHubAccessToken = gitHubAccessToken; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getApiDocUrl() { - return apiDocUrl; - } - - public void setApiDocUrl(String apiDocUrl) { - this.apiDocUrl = apiDocUrl; - } - - public String getReferenceDocUrl() { - return referenceDocUrl; - } - - public void setReferenceDocUrl(String referenceDocUrl) { - this.referenceDocUrl = referenceDocUrl; - } - - public String getProjectName() { - return projectName; - } - - public void setProjectName(String projectName) { - this.projectName = projectName; - } - -} diff --git a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganDeleteReleaseTask.java b/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganDeleteReleaseTask.java deleted file mode 100644 index b8aaadd..0000000 --- a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganDeleteReleaseTask.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2022-present the original author or 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.springframework.gradle.sagan; - -import org.gradle.api.DefaultTask; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.TaskAction; - -public class SaganDeleteReleaseTask extends DefaultTask { - - @Input - private String gitHubAccessToken; - @Input - private String version; - @Input - private String projectName; - - @TaskAction - public void saganCreateRelease() { - SaganApi sagan = new SaganApi(this.gitHubAccessToken); - sagan.deleteReleaseForProject(this.version, this.projectName); - } - - public String getGitHubAccessToken() { - return gitHubAccessToken; - } - - public void setGitHubAccessToken(String gitHubAccessToken) { - this.gitHubAccessToken = gitHubAccessToken; - } - - public String getVersion() { - return version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getProjectName() { - return projectName; - } - - public void setProjectName(String projectName) { - this.projectName = projectName; - } - -} diff --git a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganPlugin.java b/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganPlugin.java deleted file mode 100644 index 50c04ba..0000000 --- a/buildSrc/src/main/java/org/springframework/gradle/sagan/SaganPlugin.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2022-present the original author or 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.springframework.gradle.sagan; - -import io.spring.gradle.convention.Utils; -import org.gradle.api.*; - -public class SaganPlugin implements Plugin { - @Override - public void apply(Project project) { - project.getTasks().register("saganCreateRelease", SaganCreateReleaseTask.class, new Action() { - @Override - public void execute(SaganCreateReleaseTask saganCreateVersion) { - saganCreateVersion.setGroup("Release"); - saganCreateVersion.setDescription("Creates a new version for the specified project on spring.io"); - saganCreateVersion.setVersion((String) project.findProperty("nextVersion")); - saganCreateVersion.setProjectName(Utils.getProjectName(project)); - saganCreateVersion.setGitHubAccessToken((String) project.findProperty("gitHubAccessToken")); - } - }); - project.getTasks().register("saganDeleteRelease", SaganDeleteReleaseTask.class, new Action() { - @Override - public void execute(SaganDeleteReleaseTask saganDeleteVersion) { - saganDeleteVersion.setGroup("Release"); - saganDeleteVersion.setDescription("Delete a version for the specified project on spring.io"); - saganDeleteVersion.setVersion((String) project.findProperty("previousVersion")); - saganDeleteVersion.setProjectName(Utils.getProjectName(project)); - saganDeleteVersion.setGitHubAccessToken((String) project.findProperty("gitHubAccessToken")); - } - }); - } - -}