Skip to content

Commit 3f1315f

Browse files
authored
fix: create missing directory before writing dev bundle README (#22309)
ensure src/main/bundles directory exists before creating README file
1 parent aa8a4b2 commit 3f1315f

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskRunDevBundleBuild.java

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ public class TaskRunDevBundleBuild implements FallibleCommand {
7474
"Read more [about Vaadin development mode](https://vaadin.com/docs/next/flow/configuration/development-mode#precompiled-bundle).";
7575
//@formatter:on
7676

77-
private final String README_NOT_CREATED;
78-
7977
private final Options options;
8078

8179
/**
@@ -86,9 +84,6 @@ public class TaskRunDevBundleBuild implements FallibleCommand {
8684
*/
8785
TaskRunDevBundleBuild(Options options) {
8886
this.options = options;
89-
README_NOT_CREATED = "Failed to create a README file in "
90-
+ options.getBuildDirectoryName() + "/"
91-
+ Constants.DEV_BUNDLE_LOCATION;
9287
getLogger().info(
9388
"Creating a new development mode bundle. This can take a while but will only run when the project setup is changed, addons are added or frontend files are modified");
9489
}
@@ -107,17 +102,25 @@ public void execute() throws ExecutionFailedException {
107102

108103
if (options.isCompressBundle()) {
109104
DevBundleUtils.compressBundle(options.getNpmFolder(),
110-
new File(
111-
new File(options.getNpmFolder(),
112-
options.getBuildDirectoryName()),
113-
Constants.DEV_BUNDLE_LOCATION));
105+
getDevBundleFolderInTarget());
114106
}
115107
}
116108

117109
private static Logger getLogger() {
118110
return LoggerFactory.getLogger(TaskRunDevBundleBuild.class);
119111
}
120112

113+
private File getDevBundleFolderInTarget() {
114+
return new File(
115+
new File(options.getNpmFolder(),
116+
options.getBuildDirectoryName()),
117+
Constants.DEV_BUNDLE_LOCATION);
118+
}
119+
120+
private File getDevBundleFolderInSrc() {
121+
return new File(options.getNpmFolder(), Constants.BUNDLE_LOCATION);
122+
}
123+
121124
private void runFrontendBuildTool(String toolName, String packageName,
122125
String binaryName, String... params)
123126
throws ExecutionFailedException {
@@ -226,10 +229,7 @@ private void runFrontendBuildTool(String toolName, String packageName,
226229
}
227230

228231
private void copyPackageLockToBundleFolder() {
229-
File devBundleFolder = new File(
230-
new File(options.getNpmFolder(),
231-
options.getBuildDirectoryName()),
232-
Constants.DEV_BUNDLE_LOCATION);
232+
File devBundleFolder = getDevBundleFolderInTarget();
233233
assert devBundleFolder.exists() : "No dev-bundle folder created";
234234

235235
String packageLockFile = options.isEnablePnpm()
@@ -244,7 +244,7 @@ private void copyPackageLockToBundleFolder() {
244244
new File(devBundleFolder, packageLockFile));
245245
} catch (IOException e) {
246246
getLogger().error("Failed to copy '" + packageLockFile + "' to "
247-
+ Constants.DEV_BUNDLE_LOCATION, e);
247+
+ getDevBundleFolderInTarget(), e);
248248
}
249249
}
250250
}
@@ -253,24 +253,28 @@ private void addReadme() {
253253
if (!options.isCompressBundle()) {
254254
return;
255255
}
256-
File devBundleFolder = new File(options.getNpmFolder(),
257-
Constants.BUNDLE_LOCATION);
258-
assert devBundleFolder.exists();
256+
File devBundleFolder = getDevBundleFolderInSrc();
257+
258+
// Ensure the directory exists
259+
if (!devBundleFolder.exists()) {
260+
devBundleFolder.mkdirs();
261+
}
262+
263+
File readme = new File(devBundleFolder, "README.md");
264+
if (readme.exists()) {
265+
return;
266+
}
259267

260268
try {
261-
File readme = new File(devBundleFolder, "README.md");
262-
if (readme.exists()) {
263-
return;
264-
}
265269
boolean created = readme.createNewFile();
266270
if (created) {
267271
FileUtils.writeStringToFile(readme, README,
268272
StandardCharsets.UTF_8);
269273
} else {
270-
getLogger().warn(README_NOT_CREATED);
274+
getLogger().warn("Failed to create " + readme);
271275
}
272276
} catch (Exception e) {
273-
getLogger().error(README_NOT_CREATED, e);
277+
getLogger().error("Failed to create " + readme, e);
274278
}
275279
}
276280
}

0 commit comments

Comments
 (0)