Commit 70d688e9 authored by liaozan's avatar liaozan 🏀

Avoid create file everytime

parent b63e2384
package com.schbrain.archetype.initializer.service;
import cn.hutool.cache.impl.TimedCache;
import cn.hutool.core.io.file.PathUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.system.SystemUtil;
import com.schbrain.archetype.initializer.maven.MavenUtils;
import com.schbrain.archetype.initializer.param.ArchetypeGenerateParam;
import com.schbrain.archetype.initializer.response.PreviewFileTree;
import com.schbrain.common.exception.BaseException;
import com.schbrain.common.web.utils.ServletUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ContentDisposition;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
......@@ -31,11 +35,16 @@ import java.util.stream.Collectors;
* @author liaozan
* @since 2022/3/20
*/
@Slf4j
@Service
public class ArchetypeService {
private static final String GITKEEP = ".gitkeep";
private final TimedCache<String, String> archetypeNameCache = new TimedCache<>(Duration.ofHours(1).toMillis());
private final Path gitKeepFile = createGitKeepFile(SystemUtil.getUserInfo().getTempDir());
public String generate(ArchetypeGenerateParam param) {
String generateId = MavenUtils.generate(param);
archetypeNameCache.put(generateId, param.getArtifactId());
......@@ -59,10 +68,8 @@ public class ArchetypeService {
private PreviewFileTree buildFileTree(File root) {
File[] fileItems = Optional.ofNullable(root.listFiles()).orElse(new File[0]);
if (fileItems.length == 0) {
File gitKeepFile = createGitKeepFile(root);
if (gitKeepFile != null) {
fileItems = new File[]{gitKeepFile};
}
Path target = Path.of(root.getPath(), GITKEEP);
fileItems = new File[]{PathUtil.copy(gitKeepFile, target).toFile()};
}
List<PreviewFileTree> children = Arrays.stream(fileItems)
.map(fileItem -> {
......@@ -79,13 +86,13 @@ public class ArchetypeService {
return new PreviewFileTree(root, children);
}
private File createGitKeepFile(File root) {
private Path createGitKeepFile(String directory) {
try {
Path created = Files.createFile(Path.of(root.getPath(), ".gitkeep"));
Path created = Files.createFile(Path.of(directory, GITKEEP));
Files.writeString(created, "This file is used to keep an empty folder when git uploads, If you put other files in the folder, delete this file please");
return created.toFile();
} catch (IOException ignore) {
return null;
return created;
} catch (IOException e) {
throw new BaseException("Failed to create .gitkeep file", e);
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment