Skip to content

Commit 4959227

Browse files
committed
extract base serve code
1 parent d9eae0d commit 4959227

File tree

6 files changed

+47
-64
lines changed

6 files changed

+47
-64
lines changed

lib/src/main/java/com/diffplug/spotless/npm/NpmResourceHelper.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2020 DiffPlug
2+
* Copyright 2016-2022 DiffPlug
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -19,7 +19,9 @@
1919
import java.nio.charset.StandardCharsets;
2020
import java.nio.file.Files;
2121
import java.time.Duration;
22+
import java.util.Arrays;
2223
import java.util.concurrent.TimeoutException;
24+
import java.util.stream.Collectors;
2325

2426
import com.diffplug.spotless.ThrowingEx;
2527

@@ -45,6 +47,12 @@ static void deleteFileIfExists(File file) throws IOException {
4547
}
4648
}
4749

50+
static String readUtf8StringFromClasspath(Class<?> clazz, String... resourceNames) {
51+
return Arrays.stream(resourceNames)
52+
.map(resourceName -> readUtf8StringFromClasspath(clazz, resourceName))
53+
.collect(Collectors.joining("\n"));
54+
}
55+
4856
static String readUtf8StringFromClasspath(Class<?> clazz, String resourceName) {
4957
try (InputStream input = clazz.getResourceAsStream(resourceName)) {
5058
return readUtf8StringFromInputStream(input);

lib/src/main/java/com/diffplug/spotless/npm/PrettierFormatterStep.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ private static class State extends NpmFormatterStepStateBase implements Serializ
7070
NpmResourceHelper.readUtf8StringFromClasspath(PrettierFormatterStep.class, "/com/diffplug/spotless/npm/prettier-package.json"),
7171
new TreeMap<>(devDependencies)),
7272
"prettier",
73-
NpmResourceHelper.readUtf8StringFromClasspath(PrettierFormatterStep.class, "/com/diffplug/spotless/npm/prettier-serve.js"),
73+
NpmResourceHelper.readUtf8StringFromClasspath(PrettierFormatterStep.class,
74+
"/com/diffplug/spotless/npm/common-serve.js",
75+
"/com/diffplug/spotless/npm/prettier-serve.js"),
7476
npmPathResolver.resolveNpmrcContent()),
7577
buildDir,
7678
npmPathResolver.resolveNpmExecutable());

lib/src/main/java/com/diffplug/spotless/npm/TsFmtFormatterStep.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ public State(String stepName, Map<String, String> versions, File buildDir, NpmPa
7676
new NpmConfig(
7777
replaceDevDependencies(NpmResourceHelper.readUtf8StringFromClasspath(TsFmtFormatterStep.class, "/com/diffplug/spotless/npm/tsfmt-package.json"), new TreeMap<>(versions)),
7878
"typescript-formatter",
79-
NpmResourceHelper.readUtf8StringFromClasspath(PrettierFormatterStep.class, "/com/diffplug/spotless/npm/tsfmt-serve.js"),
79+
NpmResourceHelper.readUtf8StringFromClasspath(PrettierFormatterStep.class,
80+
"/com/diffplug/spotless/npm/common-serve.js",
81+
"/com/diffplug/spotless/npm/tsfmt-serve.js"),
8082
npmPathResolver.resolveNpmrcContent()),
8183
buildDir,
8284
npmPathResolver.resolveNpmExecutable());
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// this file will be glued to the top of the specific xy-server.js file
2+
const GracefulShutdownManager = require("@moebius/http-graceful-shutdown").GracefulShutdownManager;
3+
const express = require("express");
4+
const app = express();
5+
6+
app.use(express.json({ limit: "50mb" }));
7+
8+
const fs = require("fs");
9+
10+
var listener = app.listen(0, "127.0.0.1", () => {
11+
console.log("Server running on port " + listener.address().port);
12+
fs.writeFile("server.port.tmp", "" + listener.address().port, function(err) {
13+
if (err) {
14+
return console.log(err);
15+
} else {
16+
fs.rename("server.port.tmp", "server.port", function(err) {
17+
if (err) {
18+
return console.log(err);
19+
}
20+
}); // try to be as atomic as possible
21+
}
22+
});
23+
});
24+
const shutdownManager = new GracefulShutdownManager(listener);
25+
26+
app.post("/shutdown", (req, res) => {
27+
res.status(200).send("Shutting down");
28+
setTimeout(function() {
29+
shutdownManager.terminate(() => console.log("graceful shutdown finished."));
30+
}, 200);
31+
});
32+

lib/src/main/resources/com/diffplug/spotless/npm/prettier-serve.js

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,5 @@
1-
const GracefulShutdownManager = require("@moebius/http-graceful-shutdown").GracefulShutdownManager;
2-
const express = require("express");
3-
const app = express();
4-
5-
app.use(express.json({ limit: "50mb" }));
61
const prettier = require("prettier");
72

8-
const fs = require("fs");
9-
10-
var listener = app.listen(0, "127.0.0.1", () => {
11-
console.log("Server running on port " + listener.address().port);
12-
fs.writeFile("server.port.tmp", "" + listener.address().port, function(err) {
13-
if (err) {
14-
return console.log(err);
15-
} else {
16-
fs.rename("server.port.tmp", "server.port", function(err) {
17-
if (err) {
18-
return console.log(err);
19-
}
20-
}); // try to be as atomic as possible
21-
}
22-
});
23-
});
24-
const shutdownManager = new GracefulShutdownManager(listener);
25-
26-
app.post("/shutdown", (req, res) => {
27-
res.status(200).send("Shutting down");
28-
setTimeout(function() {
29-
shutdownManager.terminate(() => console.log("graceful shutdown finished."));
30-
}, 200);
31-
});
32-
333
app.post("/prettier/config-options", (req, res) => {
344
var config_data = req.body;
355
var prettier_config_path = config_data.prettier_config_path;

lib/src/main/resources/com/diffplug/spotless/npm/tsfmt-serve.js

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,5 @@
1-
const GracefulShutdownManager = require("@moebius/http-graceful-shutdown").GracefulShutdownManager;
2-
const express = require("express");
3-
const app = express();
4-
app.use(express.json({ limit: "50mb" }));
5-
61
const tsfmt = require("typescript-formatter");
72

8-
const fs = require("fs");
9-
10-
var listener = app.listen(0, "127.0.0.1", () => {
11-
console.log("Server running on port " + listener.address().port);
12-
fs.writeFile("server.port.tmp", "" + listener.address().port, function(err) {
13-
if (err) {
14-
return console.log(err);
15-
} else {
16-
fs.rename("server.port.tmp", "server.port", function(err) {
17-
if (err) {
18-
return console.log(err);
19-
}
20-
}); // try to be as atomic as possible
21-
}
22-
});
23-
});
24-
25-
const shutdownManager = new GracefulShutdownManager(listener);
26-
27-
app.post("/shutdown", (req, res) => {
28-
res.status(200).send("Shutting down");
29-
setTimeout(function() {
30-
shutdownManager.terminate(() => console.log("graceful shutdown finished."));
31-
}, 200);
32-
});
33-
343
app.post("/tsfmt/format", (req, res) => {
354
var format_data = req.body;
365
tsfmt.processString("spotless-format-string.ts", format_data.file_content, format_data.config_options).then(resultMap => {

0 commit comments

Comments
 (0)