diff --git a/src/it/resources/expected/all_datatypes/generated-files.txt b/src/it/resources/expected/all_datatypes/generated-files.txt index da10cb3..ccea0ae 100644 --- a/src/it/resources/expected/all_datatypes/generated-files.txt +++ b/src/it/resources/expected/all_datatypes/generated-files.txt @@ -42,7 +42,7 @@ src/it/resources/result/all_datatypes/wasm/enum_data.hpp src/it/resources/result/all_datatypes/wasm/enum_data.cpp src/it/resources/result/all_datatypes/wasm/all_datatypes.hpp src/it/resources/result/all_datatypes/wasm/all_datatypes.cpp -src/it/resources/result/all_datatypes/ts/DjinniModule.ts -src/it/resources/result/all_datatypes/ts/DjinniModule.js +src/it/resources/result/all_datatypes/ts/support-lib/DjinniModule.ts +src/it/resources/result/all_datatypes/ts/support-lib/DjinniModule.js src/it/resources/result/all_datatypes/ts/module.ts diff --git a/src/it/resources/expected/deprecation/generated-files.txt b/src/it/resources/expected/deprecation/generated-files.txt index 8828e55..8ff1673 100644 --- a/src/it/resources/expected/deprecation/generated-files.txt +++ b/src/it/resources/expected/deprecation/generated-files.txt @@ -3,7 +3,7 @@ src/it/resources/result/deprecation/cpp-headers/my_flags.hpp src/it/resources/result/deprecation/cpp-headers/my_record.hpp src/it/resources/result/deprecation/cpp-headers/my_interface.hpp src/it/resources/result/deprecation/cpp/my_interface.cpp -src/it/resources/result/deprecation/ts/DjinniModule.ts -src/it/resources/result/deprecation/ts/DjinniModule.js +src/it/resources/result/deprecation/ts/support-lib/DjinniModule.ts +src/it/resources/result/deprecation/ts/support-lib/DjinniModule.js src/it/resources/result/deprecation/ts/module.ts diff --git a/src/it/resources/expected/my_client_interface/generated-files.txt b/src/it/resources/expected/my_client_interface/generated-files.txt index 644b32e..09e9aaa 100644 --- a/src/it/resources/expected/my_client_interface/generated-files.txt +++ b/src/it/resources/expected/my_client_interface/generated-files.txt @@ -16,6 +16,6 @@ src/it/resources/result/my_client_interface/cwrapper/cw__my_client_interface.cpp src/it/resources/result/my_client_interface/cffi/pycffi_lib_build.py src/it/resources/result/my_client_interface/wasm/my_client_interface.hpp src/it/resources/result/my_client_interface/wasm/my_client_interface.cpp -src/it/resources/result/my_client_interface/ts/DjinniModule.ts -src/it/resources/result/my_client_interface/ts/DjinniModule.js +src/it/resources/result/my_client_interface/ts/support-lib/DjinniModule.ts +src/it/resources/result/my_client_interface/ts/support-lib/DjinniModule.js src/it/resources/result/my_client_interface/ts/module.ts diff --git a/src/it/resources/expected/my_cpp_interface/generated-files.txt b/src/it/resources/expected/my_cpp_interface/generated-files.txt index d1ecb35..082de03 100644 --- a/src/it/resources/expected/my_cpp_interface/generated-files.txt +++ b/src/it/resources/expected/my_cpp_interface/generated-files.txt @@ -18,7 +18,7 @@ src/it/resources/result/my_cpp_interface/cwrapper/cw__my_cpp_interface.cpp src/it/resources/result/my_cpp_interface/cffi/pycffi_lib_build.py src/it/resources/result/my_cpp_interface/wasm/my_cpp_interface.hpp src/it/resources/result/my_cpp_interface/wasm/my_cpp_interface.cpp -src/it/resources/result/my_cpp_interface/ts/DjinniModule.ts -src/it/resources/result/my_cpp_interface/ts/DjinniModule.js +src/it/resources/result/my_cpp_interface/ts/support-lib/DjinniModule.ts +src/it/resources/result/my_cpp_interface/ts/support-lib/DjinniModule.js src/it/resources/result/my_cpp_interface/ts/module.ts diff --git a/src/it/resources/expected/my_enum/generated-files.txt b/src/it/resources/expected/my_enum/generated-files.txt index 09ede75..301dedf 100644 --- a/src/it/resources/expected/my_enum/generated-files.txt +++ b/src/it/resources/expected/my_enum/generated-files.txt @@ -13,7 +13,7 @@ src/it/resources/result/my_enum/cwrapper/dh__my_enum.hpp src/it/resources/result/my_enum/cwrapper/dh__my_enum.cpp src/it/resources/result/my_enum/wasm/my_enum.hpp src/it/resources/result/my_enum/wasm/my_enum.cpp -src/it/resources/result/my_enum/ts/DjinniModule.ts -src/it/resources/result/my_enum/ts/DjinniModule.js +src/it/resources/result/my_enum/ts/support-lib/DjinniModule.ts +src/it/resources/result/my_enum/ts/support-lib/DjinniModule.js src/it/resources/result/my_enum/ts/module.ts diff --git a/src/it/resources/expected/my_flags/generated-files.txt b/src/it/resources/expected/my_flags/generated-files.txt index 6c8bb70..991833a 100644 --- a/src/it/resources/expected/my_flags/generated-files.txt +++ b/src/it/resources/expected/my_flags/generated-files.txt @@ -13,7 +13,7 @@ src/it/resources/result/my_flags/cwrapper/dh__my_flags.hpp src/it/resources/result/my_flags/cwrapper/dh__my_flags.cpp src/it/resources/result/my_flags/wasm/my_flags.hpp src/it/resources/result/my_flags/wasm/my_flags.cpp -src/it/resources/result/my_flags/ts/DjinniModule.ts -src/it/resources/result/my_flags/ts/DjinniModule.js +src/it/resources/result/my_flags/ts/support-lib/DjinniModule.ts +src/it/resources/result/my_flags/ts/support-lib/DjinniModule.js src/it/resources/result/my_flags/ts/module.ts diff --git a/src/it/resources/expected/my_record/generated-files.txt b/src/it/resources/expected/my_record/generated-files.txt index 7d6611c..aae0971 100644 --- a/src/it/resources/expected/my_record/generated-files.txt +++ b/src/it/resources/expected/my_record/generated-files.txt @@ -26,7 +26,7 @@ src/it/resources/result/my_record/cwrapper/dh__my_record.hpp src/it/resources/result/my_record/cwrapper/dh__my_record.cpp src/it/resources/result/my_record/wasm/my_record.hpp src/it/resources/result/my_record/wasm/my_record.cpp -src/it/resources/result/my_record/ts/DjinniModule.ts -src/it/resources/result/my_record/ts/DjinniModule.js +src/it/resources/result/my_record/ts/support-lib/DjinniModule.ts +src/it/resources/result/my_record/ts/support-lib/DjinniModule.js src/it/resources/result/my_record/ts/module.ts diff --git a/src/it/resources/expected/using_custom_datatypes/generated-files.txt b/src/it/resources/expected/using_custom_datatypes/generated-files.txt index 37399f0..29bfea2 100644 --- a/src/it/resources/expected/using_custom_datatypes/generated-files.txt +++ b/src/it/resources/expected/using_custom_datatypes/generated-files.txt @@ -34,6 +34,6 @@ src/it/resources/result/using_custom_datatypes/wasm/custom_datatype.hpp src/it/resources/result/using_custom_datatypes/wasm/custom_datatype.cpp src/it/resources/result/using_custom_datatypes/wasm/other_record.hpp src/it/resources/result/using_custom_datatypes/wasm/other_record.cpp -src/it/resources/result/using_custom_datatypes/ts/DjinniModule.ts -src/it/resources/result/using_custom_datatypes/ts/DjinniModule.js +src/it/resources/result/using_custom_datatypes/ts/support-lib/DjinniModule.ts +src/it/resources/result/using_custom_datatypes/ts/support-lib/DjinniModule.js src/it/resources/result/using_custom_datatypes/ts/module.ts diff --git a/src/it/scala/djinni/IntegrationTest.scala b/src/it/scala/djinni/IntegrationTest.scala index 6a8c42c..685a8d7 100644 --- a/src/it/scala/djinni/IntegrationTest.scala +++ b/src/it/scala/djinni/IntegrationTest.scala @@ -156,6 +156,7 @@ class IntegrationTest extends AnyFunSpec { cmd += s" --wasm-out $baseOutputPath/$idl/$WASM" cmd += s" --wasm-namespace testsuite" cmd += s" --ts-out $baseOutputPath/$idl/$TS" + cmd += s" --ts-support-files-out $baseOutputPath/$idl/$TS/support-lib" } if (useNNHeader) { cmd += " --cpp-nn-header nn.hpp" diff --git a/src/main/scala/djinni/Main.scala b/src/main/scala/djinni/Main.scala index 8bbdf13..6d0719b 100644 --- a/src/main/scala/djinni/Main.scala +++ b/src/main/scala/djinni/Main.scala @@ -118,7 +118,7 @@ object Main { var jsIdentStyle = IdentStyle.jsDefault var tsOutFolder: Option[File] = None var tsModule: String = "module" - var tsGenerateSupportFiles: Boolean = false + var tsSupportFilesOutFolder: Option[File] = None val argParser: OptionParser[Unit] = new scopt.OptionParser[Unit]("djinni") { @@ -605,11 +605,12 @@ object Main { .valueName("") .foreach(tsModule = _) .text("TypeScript declaration module name (default: \"module\").") - opt[Boolean]("ts-generate-support-files") - .valueName("") - .foreach(x => tsGenerateSupportFiles = x) + + opt[File]("ts-support-files-out") + .valueName("") + .foreach(x => tsSupportFilesOutFolder = Some(x)) .text( - "Whether to generate DjinniModule.[ts/js] or not. (default: true)" + "Folder in which to generate DjinniModule.[ts/js] files. (Not generated if not specified)" ) note( @@ -1036,7 +1037,7 @@ object Main { jsIdentStyle, tsOutFolder, tsModule, - tsGenerateSupportFiles, + tsSupportFilesOutFolder, idlFile.getName.stripSuffix(".djinni") ) diff --git a/src/main/scala/djinni/TsGenerator.scala b/src/main/scala/djinni/TsGenerator.scala index 17658a3..11a2f8a 100644 --- a/src/main/scala/djinni/TsGenerator.scala +++ b/src/main/scala/djinni/TsGenerator.scala @@ -254,7 +254,7 @@ class TsGenerator(spec: Spec) extends Generator(spec) { } // -------------------------------------------------------------------------- override def generate(idl: Seq[TypeDecl]) { - if(spec.tsGenerateSupportFiles) { + if (!spec.tsSupportFilesOutFolder.isEmpty) { writeDjinniModuleFilesFile() } createFile( @@ -353,16 +353,19 @@ class TsGenerator(spec: Spec) extends Generator(spec) { ) {} def writeDjinniModuleFile(f: IndentWriter => Unit, ext: String): Unit = { - createFileOnce( - spec.tsOutFolder.get, - s"DjinniModule.$ext", - (w: IndentWriter) => { - w.wl("// AUTOGENERATED FILE - DO NOT MODIFY!") - w.wl("// This file was generated by Djinni") - w.wl - f(w) - } - ) + if (!spec.skipGeneration) { + createFolder("TS Support lib", spec.tsSupportFilesOutFolder.get) + createFileOnce( + spec.tsSupportFilesOutFolder.get, + s"DjinniModule.$ext", + (w: IndentWriter) => { + w.wl("// AUTOGENERATED FILE - DO NOT MODIFY!") + w.wl("// This file was generated by Djinni") + w.wl + f(w) + } + ) + } } def writeDjinniModuleFilesFile(): Unit = { diff --git a/src/main/scala/djinni/generator.scala b/src/main/scala/djinni/generator.scala index 327ea63..84e7688 100644 --- a/src/main/scala/djinni/generator.scala +++ b/src/main/scala/djinni/generator.scala @@ -113,7 +113,7 @@ package object generatorTools { jsIdentStyle: JsIdentStyle, tsOutFolder: Option[File], tsModule: String, - tsGenerateSupportFiles: Boolean, + tsSupportFilesOutFolder: Option[File], moduleName: String )