Skip to content

Commit 5b3e6ac

Browse files
committed
Make interactive mode work
1 parent b19c939 commit 5b3e6ac

7 files changed

Lines changed: 33 additions & 32 deletions

File tree

src/main/java/se/mwthinker/CMake.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.io.IOException;
99

1010
abstract class CMake {
11-
static private boolean VERBOSE = false;
11+
private static boolean VERBOSE = false;
1212

1313
public static void setVerbose(boolean verbose) {
1414
CMake.VERBOSE = verbose;

src/main/java/se/mwthinker/CMakeBuilder.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ enum LicenseType {
1313

1414
public class CMakeBuilder {
1515

16-
private record ExternalProject(String name, String gitUrl, String gitTag) {}
17-
private record SourceFile(String file, String namespace) {}
16+
// Must be public for Freemarker template access
17+
public record ExternalProject(String name, String gitUrl, String gitTag) {}
18+
// Must be public for Freemarker template access
19+
public record SourceFile(String file, String namespace) {}
1820

1921
private boolean testProject;
2022
private final FileSystem fileSystem;
@@ -108,7 +110,7 @@ public void buildFiles() {
108110
}
109111

110112
for (var source : sources) {
111-
fileSystem.saveFileFromTemplate(Map.of("source", source), source.file() + ".ftl", source.file());
113+
fileSystem.copyResourceTo(source.file());
112114
}
113115

114116
addExtraFile("CMakePresets.json");

src/main/java/se/mwthinker/FileSystem.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.nio.file.Path;
1414
import java.util.Comparator;
1515
import java.util.Map;
16-
import java.util.Objects;
1716

1817
public class FileSystem {
1918
private final File projectDir;

src/main/java/se/mwthinker/GeneratorCli.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,14 +157,14 @@ private void interactivePrompt(ConsolePrompt prompt, PromptBuilder builder) {
157157
throw new RuntimeException(e);
158158
}
159159

160-
projectDir = new File(result.get("projectName").toString());
161-
description = result.get("description").toString();
162-
gui = result.get("gui").toString().equalsIgnoreCase("yes");
163-
test = result.get("test").toString().equalsIgnoreCase("yes");
164-
licenseAuthor = result.get("licenseAuthor").toString();
165-
cmake = result.get("cmake").toString().equalsIgnoreCase("yes");
166-
open = result.get("open").toString().equalsIgnoreCase("yes");
167-
verbose = result.get("verbose").toString().equalsIgnoreCase("yes");
160+
projectDir = new File(result.get("projectName").getResult());
161+
description = result.get("description").getResult();
162+
gui = result.get("gui").getResult().equalsIgnoreCase("yes");
163+
test = result.get("test").getResult().equalsIgnoreCase("yes");
164+
licenseAuthor = result.get("licenseAuthor").getResult();
165+
cmake = result.get("cmake").getResult().equalsIgnoreCase("yes");
166+
open = result.get("open").getResult().equalsIgnoreCase("yes");
167+
verbose = result.get("verbose").getResult().equalsIgnoreCase("yes");
168168
}
169169

170170
private int executeGeneratorLogic() {
@@ -248,7 +248,7 @@ public void close() throws IOException {
248248
}
249249

250250
@Override
251-
public void flush() throws IOException {
251+
public void flush() {
252252
terminal.flush();
253253
}
254254

src/main/java/se/mwthinker/ResourceHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class ResourceHandler {
1616
public ResourceHandler(String templateDir) {
1717
this.templateDir = templateDir;
1818

19-
cfg = new Configuration(Configuration.VERSION_2_3_32);
19+
cfg = new Configuration(Configuration.VERSION_2_3_34);
2020
cfg.setDefaultEncoding("UTF-8");
2121
cfg.setTemplateLoader(new ClassTemplateLoader(ResourceHandler.class, "/templates/"));
2222
}

src/main/resources/templates/CMakeLists.ftl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ file(COPY data/. DESTINATION ${r"${CMAKE_CURRENT_BINARY_DIR}"})
1515

1616
set(SOURCES
1717
<#list sources as source>
18-
${source}
18+
${source.file()}
1919
</#list>
2020
<#if extraFiles?has_content>
2121

src/test/java/se/mwthinker/CMakeBuilderTest.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.mockito.junit.jupiter.MockitoExtension;
88

99
import static org.assertj.core.api.Assertions.assertThatThrownBy;
10+
import static org.assertj.core.api.Assertions.assertThatCode;
1011
import static org.mockito.ArgumentMatchers.any;
1112
import static org.mockito.ArgumentMatchers.argThat;
1213
import static org.mockito.ArgumentMatchers.eq;
@@ -15,7 +16,7 @@
1516
import static org.mockito.Mockito.when;
1617

1718
@ExtendWith(MockitoExtension.class)
18-
public class CMakeBuilderTest {
19+
class CMakeBuilderTest {
1920

2021
private CMakeBuilder cmakeBuilder;
2122

@@ -25,33 +26,32 @@ public class CMakeBuilderTest {
2526
private Github github;
2627

2728
@BeforeEach
28-
public void setUp() {
29+
void setUp() {
2930
cmakeBuilder = new CMakeBuilder(fileSystem, github);
3031
}
3132

3233
@Test
33-
public void buildMustHaveAtLeastOneSourceFile() {
34+
void buildMustHaveAtLeastOneSourceFile() {
3435
// Given
3536
when(fileSystem.getProjectName()).thenReturn("MyProject");
3637

37-
// When
38-
cmakeBuilder
39-
.addSource("main.cpp")
40-
.buildFiles();
41-
42-
// Then
43-
// No exception
38+
// When/Then
39+
assertThatCode(() ->
40+
cmakeBuilder
41+
.addSource("main.cpp")
42+
.buildFiles()
43+
).doesNotThrowAnyException();
4444
}
4545

4646
@Test
47-
public void buildMissingSourceFile() {
47+
void buildMissingSourceFile() {
4848
assertThatThrownBy(() -> cmakeBuilder
4949
.buildFiles())
5050
.isInstanceOf(RuntimeException.class);
5151
}
5252

5353
@Test
54-
public void buildDefaultFiles() {
54+
void buildDefaultFiles() {
5555
// Given
5656
when(fileSystem.getProjectName()).thenReturn("MyProject");
5757

@@ -71,14 +71,14 @@ public void buildDefaultFiles() {
7171
verify(fileSystem).copyResourceTo("src/main.cpp");
7272

7373
verify(fileSystem, times(2)).copyResourceTo(any(), any());
74-
verify(fileSystem, times(2)).copyResourceTo(any());
74+
verify(fileSystem, times(3)).copyResourceTo(any());
7575
verify(fileSystem, times(2)).saveFileFromTemplate(any(), any());
7676
verify(fileSystem, times(1)).saveToFile(any(VcpkgObject.class), eq("vcpkg.json"));
7777
verify(fileSystem, times(1)).saveToFile(any(VcpkgConfigurationObject.class), eq("vcpkg-configuration.json"));
7878
}
7979

8080
@Test
81-
public void buildProjectWithDependency() {
81+
void buildProjectWithDependency() {
8282
// Given
8383
when(fileSystem.getProjectName()).thenReturn("MyProject");
8484
when(github.fetchLatestCommitSHA("microsoft", "vcpkg"))
@@ -112,7 +112,7 @@ public void buildProjectWithDependency() {
112112
}
113113

114114
@Test
115-
public void buildTestProject() {
115+
void buildTestProject() {
116116
// Given
117117
when(fileSystem.getProjectName()).thenReturn("MyProject");
118118

@@ -128,7 +128,7 @@ public void buildTestProject() {
128128
}
129129

130130
@Test
131-
public void buildWithLicenseFile() {
131+
void buildWithLicenseFile() {
132132
// Given
133133
when(fileSystem.getProjectName()).thenReturn("MyProject");
134134

0 commit comments

Comments
 (0)