Skip to content

Commit 2cc952c

Browse files
committed
clean up workers
1 parent 0366fb2 commit 2cc952c

File tree

16 files changed

+202
-291
lines changed

16 files changed

+202
-291
lines changed

scala/scalafmt/BUILD

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ filegroup(
1414

1515
scala_binary(
1616
name = "scalafmt",
17-
srcs = ["scalafmt/ScalafmtRunner.scala"],
18-
main_class = "io.bazel.rules_scala.scalafmt.ScalafmtRunner",
17+
srcs = ["scalafmt/ScalafmtWorker.scala"],
18+
main_class = "io.bazel.rules_scala.scalafmt.ScalafmtWorker",
1919
visibility = ["//visibility:public"],
2020
deps = [
2121
"//src/java/io/bazel/rulesscala/worker",

scala/scalafmt/scalafmt/ScalafmtRunner.scala renamed to scala/scalafmt/scalafmt/ScalafmtWorker.scala

+6-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.bazel.rules_scala.scalafmt
22

3-
import io.bazel.rulesscala.worker.{GenericWorker, Processor};
3+
import io.bazel.rulesscala.worker.Worker
44
import java.io.File
55
import java.nio.file.Files
66
import org.scalafmt.Scalafmt
@@ -10,21 +10,13 @@ import scala.annotation.tailrec
1010
import scala.collection.JavaConverters._
1111
import scala.io.Codec
1212

13-
object ScalafmtRunner extends GenericWorker(new ScalafmtProcessor) {
14-
def main(args: Array[String]) {
15-
try run(args)
16-
catch {
17-
case x: Exception =>
18-
x.printStackTrace()
19-
System.exit(1)
20-
}
21-
}
22-
}
13+
object ScalafmtWorker extends Worker.Interface {
14+
15+
def main(args: Array[String]): Unit = Worker.workerMain(args, ScalafmtWorker)
2316

24-
class ScalafmtProcessor extends Processor {
25-
def processRequest(args: java.util.List[String]) {
17+
def work(args: Array[String]) {
2618
val argName = List("config", "input", "output")
27-
val argFile = args.asScala.map{x => new File(x)}
19+
val argFile = args.map{x => new File(x)}
2820
val namespace = argName.zip(argFile).toMap
2921

3022
val source = FileOps.readFile(namespace.getOrElse("input", new File("")))(Codec.UTF8)

scala_proto/scala_proto_toolchain.bzl

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ scala_proto_toolchain = rule(
2929
"code_generator": attr.label(
3030
executable = True,
3131
cfg = "host",
32-
default = Label("@io_bazel_rules_scala//src/scala/scripts:scalapb_generator"),
32+
default = Label("@io_bazel_rules_scala//src/scala/scripts:scalapb_worker"),
3333
allow_files = True,
3434
),
3535
"named_generators": attr.string_dict(),

src/java/io/bazel/rulesscala/coverage/instrumenter/JacocoInstrumenter.java

+8-19
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package io.bazel.rulesscala.coverage.instrumenter;
22

33
import io.bazel.rulesscala.jar.JarCreator;
4-
import io.bazel.rulesscala.worker.GenericWorker;
5-
import io.bazel.rulesscala.worker.Processor;
4+
import io.bazel.rulesscala.worker.Worker;
65

76
import java.io.BufferedInputStream;
87
import java.io.BufferedOutputStream;
@@ -26,28 +25,18 @@
2625
import org.jacoco.core.instr.Instrumenter;
2726
import org.jacoco.core.runtime.OfflineInstrumentationAccessGenerator;
2827

29-
public final class JacocoInstrumenter implements Processor {
28+
public final class JacocoInstrumenter implements Worker.Interface {
3029

31-
public static void main(String[] args) throws Exception {
32-
(new Worker()).run(args);
33-
}
34-
35-
private static final class Worker extends GenericWorker {
36-
public Worker() {
37-
super(new JacocoInstrumenter());
38-
}
30+
public static void main(String args[]) throws Exception {
31+
Worker.workerMain(args, new JacocoInstrumenter());
3932
}
4033

4134
@Override
42-
public void processRequest(List < String > args) {
35+
public void work(String args[]) throws Exception {
4336
Instrumenter jacoco = new Instrumenter(new OfflineInstrumentationAccessGenerator());
44-
args.forEach(arg -> {
45-
try {
46-
processArg(jacoco, arg);
47-
} catch (final Exception e) {
48-
throw new RuntimeException(e);
49-
}
50-
});
37+
for (String arg : args) {
38+
processArg(jacoco, arg);
39+
}
5140
}
5241

5342
private void processArg(Instrumenter jacoco, String arg) throws Exception {

src/java/io/bazel/rulesscala/scalac/BUILD

+2-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ java_binary(
1717
"-source 1.8",
1818
"-target 1.8",
1919
],
20-
main_class = "io.bazel.rulesscala.scalac.ScalaCInvoker",
20+
main_class = "io.bazel.rulesscala.scalac.ScalacWorker",
2121
visibility = ["//visibility:public"],
2222
deps = [
2323
":exported_scalac_repositories_from_toolchain_to_jvm",
@@ -33,8 +33,7 @@ filegroup(
3333
srcs = [
3434
"CompileOptions.java",
3535
"Resource.java",
36-
"ScalaCInvoker.java",
37-
"ScalacProcessor.java",
36+
"ScalacWorker.java",
3837
],
3938
visibility = ["//visibility:public"],
4039
)

src/java/io/bazel/rulesscala/scalac/ScalaCInvoker.java

-47
This file was deleted.

src/java/io/bazel/rulesscala/scalac/ScalacProcessor.java renamed to src/java/io/bazel/rulesscala/scalac/ScalacWorker.java

+39-10
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package io.bazel.rulesscala.scalac;
22

33
import io.bazel.rulesscala.jar.JarCreator;
4-
import io.bazel.rulesscala.worker.GenericWorker;
5-
import io.bazel.rulesscala.worker.Processor;
4+
import io.bazel.rulesscala.worker.Worker;
65
import java.io.File;
76
import java.io.FileNotFoundException;
87
import java.io.FileOutputStream;
@@ -28,7 +27,7 @@
2827
import scala.tools.nsc.MainClass;
2928
import scala.tools.nsc.reporters.ConsoleReporter;
3029

31-
class ScalacProcessor implements Processor {
30+
class ScalacWorker implements Worker.Interface {
3231
private static boolean isWindows = System.getProperty("os.name").toLowerCase().contains("windows");
3332

3433
/** This is the reporter field for scalac, which we want to access */
@@ -43,11 +42,15 @@ class ScalacProcessor implements Processor {
4342
}
4443
}
4544

45+
public static void main(String args[]) throws Exception {
46+
Worker.workerMain(args, new ScalacWorker());
47+
}
48+
4649
@Override
47-
public void processRequest(List<String> args) throws Exception {
50+
public void work(String[] args) throws Exception {
4851
Path tmpPath = null;
4952
try {
50-
CompileOptions ops = new CompileOptions(args);
53+
CompileOptions ops = new CompileOptions(Arrays.asList(args));
5154

5255
Path outputPath = FileSystems.getDefault().getPath(ops.outputName);
5356
tmpPath = Files.createTempDirectory(outputPath.getParent(), "tmp");
@@ -63,7 +66,7 @@ public void processRequest(List<String> args) throws Exception {
6366

6467
String[] scalaSources = collectSrcJarSources(ops.files, scalaJarFiles, javaJarFiles);
6568

66-
String[] javaSources = GenericWorker.appendToString(ops.javaFiles, javaJarFiles);
69+
String[] javaSources = appendToString(ops.javaFiles, javaJarFiles);
6770
if (scalaSources.length == 0 && javaSources.length == 0) {
6871
throw new RuntimeException("Must have input files from either source jars or local files.");
6972
}
@@ -95,8 +98,8 @@ public void processRequest(List<String> args) throws Exception {
9598

9699
private static String[] collectSrcJarSources(
97100
String[] files, List<File> scalaJarFiles, List<File> javaJarFiles) {
98-
String[] scalaSources = GenericWorker.appendToString(files, scalaJarFiles);
99-
return GenericWorker.appendToString(scalaSources, javaJarFiles);
101+
String[] scalaSources = appendToString(files, scalaJarFiles);
102+
return appendToString(scalaSources, javaJarFiles);
100103
}
101104

102105
private static List<File> filterFilesByExtension(List<File> files, String extension) {
@@ -166,7 +169,7 @@ private static boolean matchesFileExtensions(String fileName, String[] extension
166169
}
167170

168171
private static String[] encodeBazelTargets(String[] targets) {
169-
return Arrays.stream(targets).map(ScalacProcessor::encodeBazelTarget).toArray(String[]::new);
172+
return Arrays.stream(targets).map(ScalacWorker::encodeBazelTarget).toArray(String[]::new);
170173
}
171174

172175
private static String encodeBazelTarget(String target) {
@@ -223,7 +226,7 @@ private static void compileScalaSources(CompileOptions ops, String[] scalaSource
223226
String[] constParams = {"-classpath", ops.classpath, "-d", tmpPath.toString()};
224227

225228
String[] compilerArgs =
226-
GenericWorker.merge(ops.scalaOpts, ops.pluginArgs, constParams, pluginParams, scalaSources);
229+
merge(ops.scalaOpts, ops.pluginArgs, constParams, pluginParams, scalaSources);
227230

228231
MainClass comp = new MainClass();
229232
long start = System.currentTimeMillis();
@@ -312,4 +315,30 @@ private static void copyResourceJars(String[] resourceJars, Path dest) throws IO
312315
extractJar(jarPath, dest.toString(), null);
313316
}
314317
}
318+
319+
private static <T> String[] appendToString(String[] init, List<T> rest) {
320+
String[] tmp = new String[init.length + rest.size()];
321+
System.arraycopy(init, 0, tmp, 0, init.length);
322+
int baseIdx = init.length;
323+
for (T t : rest) {
324+
tmp[baseIdx] = t.toString();
325+
baseIdx += 1;
326+
}
327+
return tmp;
328+
}
329+
330+
private static String[] merge(String[]... arrays) {
331+
int totalLength = 0;
332+
for (String[] arr : arrays) {
333+
totalLength += arr.length;
334+
}
335+
336+
String[] result = new String[totalLength];
337+
int offset = 0;
338+
for (String[] arr : arrays) {
339+
System.arraycopy(arr, 0, result, offset, arr.length);
340+
offset += arr.length;
341+
}
342+
return result;
343+
}
315344
}

src/java/io/bazel/rulesscala/worker/BUILD

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
1-
load("@rules_java//java:defs.bzl", "java_library")
2-
31
java_library(
42
name = "worker",
5-
srcs = [
6-
"GenericWorker.java",
7-
"Processor.java",
8-
],
9-
visibility = ["//visibility:public"],
3+
srcs = ["Worker.java"],
4+
visibility = ["//:__subpackages__"],
105
deps = [
116
"//third_party/bazel/src/main/protobuf:worker_protocol_java_proto",
127
],

0 commit comments

Comments
 (0)