From 781845bc23a403aab93293bf843110c658adec77 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Thu, 29 Oct 2020 23:18:47 -0600 Subject: [PATCH] package: enforce build script line length limits --- .github/workflows/build.yml | 2 +- .../runelite/pluginhub/packager/Plugin.java | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 013cc3305..a6f15a80d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,7 +28,7 @@ jobs: path: | ~/.gradle/caches/ ~/.gradle/wrapper/ - key: package-2.0.0 + key: package-2.0.1 - name: prepare run: | pushd package diff --git a/package/package/src/main/java/net/runelite/pluginhub/packager/Plugin.java b/package/package/src/main/java/net/runelite/pluginhub/packager/Plugin.java index be102dbd8..03b1407dc 100644 --- a/package/package/src/main/java/net/runelite/pluginhub/packager/Plugin.java +++ b/package/package/src/main/java/net/runelite/pluginhub/packager/Plugin.java @@ -43,7 +43,9 @@ import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.nio.file.DirectoryStream; import java.nio.file.Files; +import java.nio.file.Path; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -228,6 +230,35 @@ public class Plugin implements Closeable public void build(String runeliteVersion) throws IOException, PluginBuildException { + try (DirectoryStream ds = Files.newDirectoryStream(repositoryDirectory.toPath(), "**.{gradle,gradle.kts}")) + { + for (Path path : ds) + { + String badLine = MoreFiles.asCharSource(path, StandardCharsets.UTF_8) + .lines() + .filter(l -> l.codePoints().map(cp -> + { + if (cp == '\t') + { + return 8; + } + else if (cp > 127) + { + // any special char is counted as 4 because there are some very wide special characters + return 4; + } + return 1; + }).sum() > 100) + .findAny() + .orElse(null); + if (badLine != null) + { + throw PluginBuildException.of(this, "All gradle files must wrap at 100 characters or less") + .withFileLine(path.toFile(), badLine); + } + } + } + try (ProjectConnection con = GradleConnector.newConnector() .forProjectDirectory(repositoryDirectory) .useInstallation(GRADLE_HOME)