Skip to content

Commit dfe3157

Browse files
committed
feat: added support for typescript language
1 parent b9b2383 commit dfe3157

3 files changed

Lines changed: 31 additions & 4 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ generator.save(Path.of("types.d.ts"));
1313
Generate TypeScript (with JavaScript support) project with declarations
1414
```java
1515
ScriptTsProjectGenerator generator = new ScriptTsProjectGenerator(script);
16-
generator.generate(Path.of("code"));
16+
generator.generate(Path.of("code"), ScriptTsProjectGenerator.TYPESCRIPT);
17+
// Your can also use ScriptTsProjectGenerator.JAVASCRIPT
1718
```
1819

1920
## Maven

build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,21 @@ plugins {
55
}
66

77
group = "com.instancify.scriptify.declaration"
8-
version = "1.0.0-SNAPSHOT"
8+
version = "1.0.1-SNAPSHOT"
99

1010
java {
1111
toolchain {
1212
languageVersion = JavaLanguageVersion.of(17)
1313
}
1414
}
15+
1516
repositories {
1617
mavenCentral()
1718
maven("https://repo.instancify.app/snapshots")
1819
}
1920

2021
dependencies {
21-
compileOnlyApi("com.instancify.scriptify:api:1.4.2-SNAPSHOT")
22+
api("com.instancify.scriptify:api:1.4.2-SNAPSHOT")
2223
compileOnlyApi("org.projectlombok:lombok:1.18.36")
2324
annotationProcessor("org.projectlombok:lombok:1.18.36")
2425
}

src/main/java/com/instancify/scriptify/declaration/ScriptTsProjectGenerator.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@
1111
*/
1212
public class ScriptTsProjectGenerator {
1313

14+
/**
15+
* JavaScript language.
16+
*/
17+
public static final String JAVASCRIPT = "javascript";
18+
/**
19+
* TypeScript language.
20+
*/
21+
public static final String TYPESCRIPT = "typescript";
22+
1423
/**
1524
* Script header comment.
1625
*/
@@ -45,6 +54,16 @@ public ScriptTsProjectGenerator(Script<?> script) {
4554
* @param path Path of generated project
4655
*/
4756
public void generate(Path path) {
57+
this.generate(path, JAVASCRIPT);
58+
}
59+
60+
/**
61+
* Generates TS projects with tsconfig with declarations support.
62+
*s
63+
* @param path Path of generated project
64+
* @param language Scripting language (JavaScript and TypeScript supported)
65+
*/
66+
public void generate(Path path, String language) {
4867
Path src = path.resolve("src");
4968

5069
if (!path.toFile().exists()) {
@@ -54,10 +73,16 @@ public void generate(Path path) {
5473
}
5574
}
5675

76+
String extension = switch (language.toLowerCase()) {
77+
case JAVASCRIPT -> "js";
78+
case TYPESCRIPT -> "ts";
79+
default -> throw new IllegalArgumentException("Unknown language " + language);
80+
};
81+
5782
String declaration = generator.generate();
5883
try {
5984
Files.writeString(src.resolve("types.d.ts"), declaration);
60-
Files.writeString(src.resolve("script.js"), SCRIPT_HEADER_COMMENT);
85+
Files.writeString(src.resolve("script." + extension), SCRIPT_HEADER_COMMENT);
6186
Files.writeString(path.resolve("tsconfig.json"), TYPE_SCRIPT_CONFIG);
6287
} catch (IOException e) {
6388
throw new RuntimeException(e);

0 commit comments

Comments
 (0)