Taught Scala-cask to publish JS model files (#18413)

* Taught Scala-cask to publish JS model files

* cask fix for generated FILES
This commit is contained in:
Aaron Pritzlaff
2024-04-20 11:23:09 +01:00
committed by GitHub
parent d99affda96
commit 93f4323364
42 changed files with 150 additions and 88 deletions

View File

@@ -134,7 +134,7 @@ public class ScalaCaskServerCodegen extends AbstractScalaCodegen implements Code
@Override
public String testPackage() {
return "src/test/scala";
return "jvm/src/test/scala";
}
public String toModelTestFilename(String name) {
@@ -166,8 +166,8 @@ public class ScalaCaskServerCodegen extends AbstractScalaCodegen implements Code
modelPackage = ensureProp(CodegenConstants.MODEL_PACKAGE, basePackage + ".model");
final String apiPath = "src/main/scala/" + apiPackage.replace('.', '/');
final String modelPath = "src/main/scala/" + modelPackage.replace('.', '/');
final String apiPath = "jvm/src/main/scala/" + apiPackage.replace('.', '/');
final String modelPath = "shared/src/main/scala/" + modelPackage.replace('.', '/');
final List<String> appFullPath = Arrays.stream(apiPath.split("/")).collect(Collectors.toList());
final String appFolder = String.join("/", appFullPath.subList(0, appFullPath.size() - 1));
@@ -186,7 +186,7 @@ public class ScalaCaskServerCodegen extends AbstractScalaCodegen implements Code
supportingFiles.add(new SupportingFile("Dockerfile.mustache", "example", "Dockerfile"));
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
supportingFiles.add(new SupportingFile("build.sbt.mustache", "", "build.sbt"));
supportingFiles.add(new SupportingFile("bulidAndPublish.yml.mustache", "", ".github/workflows/bulidAndPublish.yml"));
supportingFiles.add(new SupportingFile("buildAndPublish.yml.mustache", "", ".github/workflows/buildAndPublish.yml"));
supportingFiles.add(new SupportingFile("build.sc.mustache", "", "build.sc"));
supportingFiles.add(new SupportingFile(".scalafmt.conf.mustache", "", ".scalafmt.conf"));
supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore"));
@@ -274,6 +274,16 @@ public class ScalaCaskServerCodegen extends AbstractScalaCodegen implements Code
}
}
@Override
public String apiFileFolder() {
return outputFolder + "/jvm/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar);
}
@Override
public String modelFileFolder() {
return outputFolder + "/shared/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar);
}
static String capitalise(String p) {
if (p.length() < 2) {
return p.toUpperCase(Locale.ROOT);
@@ -323,7 +333,7 @@ public class ScalaCaskServerCodegen extends AbstractScalaCodegen implements Code
String jsonOpenAPI = SerializerUtils.toJsonString(openAPI);
try {
String outputFile = getOutputDir() + "/" + getResourceFolder() + "/openapi.json";
String outputFile = getOutputDir() + "/jvm/" + getResourceFolder() + "/openapi.json";
FileUtils.writeStringToFile(new File(outputFile), jsonOpenAPI, StandardCharsets.UTF_8);
LOGGER.info("wrote file to {}", outputFile);
} catch (Exception e) {

View File

@@ -1,23 +1,45 @@
name := "{{artifactId}}"
organization:="{{groupId}}"
version := "0.0.1-SNAPSHOT"
scalaVersion := "3.3.1"
scalafmtOnCompile := true
libraryDependencies ++= Seq(
"com.lihaoyi" %% "cask" % "0.9.2" ,
"com.lihaoyi" %% "upickle" % "3.2.0",
"org.scalatest" %% "scalatest" % "3.2.18" % Test
ThisBuild / name := "{{artifactId}}"
ThisBuild / organization := "{{groupId}}"
ThisBuild / version := "0.0.1-SNAPSHOT"
ThisBuild / scalaVersion := "3.4.1"
ThisBuild / scalafmtOnCompile := true
// Common settings
lazy val commonSettings = Seq(
libraryDependencies ++= Seq(
"com.lihaoyi" %%% "upickle" % "3.2.0",
"org.scalatest" %%% "scalatest" % "3.2.18" % Test
)
)
publishMavenStyle := true
lazy val app = crossProject(JSPlatform, JVMPlatform).in(file(".")).
settings(commonSettings).
jvmSettings(
libraryDependencies += "com.lihaoyi" %% "cask" % "0.9.2"
).
jsSettings(
scalaJSUseMainModuleInitializer := true,
)
lazy val root = project.in(file(".")).
aggregate(app.js, app.jvm).
settings(
publish := {},
publishLocal := {},
)
ThisBuild / publishMavenStyle := true
val githubUser = "{{{gitUserId}}}"
val githubRepo = "{{{gitRepoId}}}"
publishTo := Some("GitHub Package Registry" at s"https://maven.pkg.github.com/$githubUser/$githubRepo")
ThisBuild / publishTo := Some("GitHub Package Registry" at s"https://maven.pkg.github.com/$githubUser/$githubRepo")
sys.env.get("GITHUB_TOKEN") match {
case Some(token) if !token.isEmpty =>
credentials += Credentials(
ThisBuild / credentials += Credentials(
"GitHub Package Registry",
"maven.pkg.github.com",
githubUser,

View File

@@ -28,8 +28,8 @@ object {{artifactId}} extends SbtModule with ScalafmtModule with PublishModule {
ivy"com.lihaoyi::upickle:3.2.0"
)
override def sources = T.sources(millSourcePath / os.up / "src" / "main" / "scala")
override def resources = T.sources(millSourcePath / os.up / "src" / "main" / "resources")
override def sources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "scala")
override def resources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "resources")
object test extends SbtModuleTests {
def ivyDeps = Agg(

View File

@@ -30,10 +30,7 @@ jobs:
${{{openbrackets}}} runner.os {{{closebrackets}}}-sbt-
- name: Build with sbt
run: sbt clean compile
- name: Test with sbt
run: sbt test
run: sbt clean compile test
- name: Publish to GitHub Packages
run: sbt publish

View File

@@ -1,3 +1,4 @@
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0")
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0")

View File

@@ -30,10 +30,7 @@ jobs:
${{ runner.os }}-sbt-
- name: Build with sbt
run: sbt clean compile
- name: Test with sbt
run: sbt test
run: sbt clean compile test
- name: Publish to GitHub Packages
run: sbt publish

View File

@@ -1,4 +1,4 @@
.github/workflows/bulidAndPublish.yml
.github/workflows/buildAndPublish.yml
.gitignore
.scalafmt.conf
README.md
@@ -7,33 +7,33 @@ build.sbt
build.sc
example/Dockerfile
example/Server.scala
jvm/src/main/scala/sample/cask/AppRoutes.scala
jvm/src/main/scala/sample/cask/BaseApp.scala
jvm/src/main/scala/sample/cask/ExampleApp.scala
jvm/src/main/scala/sample/cask/api/OpenApiRoutes.scala
jvm/src/main/scala/sample/cask/api/PetRoutes.scala
jvm/src/main/scala/sample/cask/api/PetRoutes.scala
jvm/src/main/scala/sample/cask/api/PetService.scala
jvm/src/main/scala/sample/cask/api/StoreRoutes.scala
jvm/src/main/scala/sample/cask/api/StoreRoutes.scala
jvm/src/main/scala/sample/cask/api/StoreService.scala
jvm/src/main/scala/sample/cask/api/UserRoutes.scala
jvm/src/main/scala/sample/cask/api/UserRoutes.scala
jvm/src/main/scala/sample/cask/api/UserService.scala
jvm/src/main/scala/sample/cask/api/package.scala
jvm/src/main/scala/sample/cask/package.scala
project/build.properties
project/plugins.sbt
src/main/scala/sample/cask/AppRoutes.scala
src/main/scala/sample/cask/BaseApp.scala
src/main/scala/sample/cask/ExampleApp.scala
src/main/scala/sample/cask/api/OpenApiRoutes.scala
src/main/scala/sample/cask/api/PetRoutes.scala
src/main/scala/sample/cask/api/PetRoutes.scala
src/main/scala/sample/cask/api/PetService.scala
src/main/scala/sample/cask/api/StoreRoutes.scala
src/main/scala/sample/cask/api/StoreRoutes.scala
src/main/scala/sample/cask/api/StoreService.scala
src/main/scala/sample/cask/api/UserRoutes.scala
src/main/scala/sample/cask/api/UserRoutes.scala
src/main/scala/sample/cask/api/UserService.scala
src/main/scala/sample/cask/api/package.scala
src/main/scala/sample/cask/model/ApiResponse.scala
src/main/scala/sample/cask/model/ApiResponseData.scala
src/main/scala/sample/cask/model/Category.scala
src/main/scala/sample/cask/model/CategoryData.scala
src/main/scala/sample/cask/model/Order.scala
src/main/scala/sample/cask/model/OrderData.scala
src/main/scala/sample/cask/model/Pet.scala
src/main/scala/sample/cask/model/PetData.scala
src/main/scala/sample/cask/model/Tag.scala
src/main/scala/sample/cask/model/TagData.scala
src/main/scala/sample/cask/model/User.scala
src/main/scala/sample/cask/model/UserData.scala
src/main/scala/sample/cask/model/package.scala
src/main/scala/sample/cask/package.scala
shared/src/main/scala/sample/cask/model/ApiResponse.scala
shared/src/main/scala/sample/cask/model/ApiResponseData.scala
shared/src/main/scala/sample/cask/model/Category.scala
shared/src/main/scala/sample/cask/model/CategoryData.scala
shared/src/main/scala/sample/cask/model/Order.scala
shared/src/main/scala/sample/cask/model/OrderData.scala
shared/src/main/scala/sample/cask/model/Pet.scala
shared/src/main/scala/sample/cask/model/PetData.scala
shared/src/main/scala/sample/cask/model/Tag.scala
shared/src/main/scala/sample/cask/model/TagData.scala
shared/src/main/scala/sample/cask/model/User.scala
shared/src/main/scala/sample/cask/model/UserData.scala
shared/src/main/scala/sample/cask/model/package.scala

View File

@@ -1,23 +1,45 @@
name := "scala-cask-petstore"
organization:="cask.groupId"
version := "0.0.1-SNAPSHOT"
scalaVersion := "3.3.1"
scalafmtOnCompile := true
libraryDependencies ++= Seq(
"com.lihaoyi" %% "cask" % "0.9.2" ,
"com.lihaoyi" %% "upickle" % "3.2.0",
"org.scalatest" %% "scalatest" % "3.2.18" % Test
ThisBuild / name := "scala-cask-petstore"
ThisBuild / organization := "cask.groupId"
ThisBuild / version := "0.0.1-SNAPSHOT"
ThisBuild / scalaVersion := "3.4.1"
ThisBuild / scalafmtOnCompile := true
// Common settings
lazy val commonSettings = Seq(
libraryDependencies ++= Seq(
"com.lihaoyi" %%% "upickle" % "3.2.0",
"org.scalatest" %%% "scalatest" % "3.2.18" % Test
)
)
publishMavenStyle := true
lazy val app = crossProject(JSPlatform, JVMPlatform).in(file(".")).
settings(commonSettings).
jvmSettings(
libraryDependencies += "com.lihaoyi" %% "cask" % "0.9.2"
).
jsSettings(
scalaJSUseMainModuleInitializer := true,
)
lazy val root = project.in(file(".")).
aggregate(app.js, app.jvm).
settings(
publish := {},
publishLocal := {},
)
ThisBuild / publishMavenStyle := true
val githubUser = "GIT_USER_ID"
val githubRepo = "GIT_REPO_ID"
publishTo := Some("GitHub Package Registry" at s"https://maven.pkg.github.com/$githubUser/$githubRepo")
ThisBuild / publishTo := Some("GitHub Package Registry" at s"https://maven.pkg.github.com/$githubUser/$githubRepo")
sys.env.get("GITHUB_TOKEN") match {
case Some(token) if !token.isEmpty =>
credentials += Credentials(
ThisBuild / credentials += Credentials(
"GitHub Package Registry",
"maven.pkg.github.com",
githubUser,

View File

@@ -28,8 +28,8 @@ object scala-cask-petstore extends SbtModule with ScalafmtModule with PublishMod
ivy"com.lihaoyi::upickle:3.2.0"
)
override def sources = T.sources(millSourcePath / os.up / "src" / "main" / "scala")
override def resources = T.sources(millSourcePath / os.up / "src" / "main" / "resources")
override def sources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "scala")
override def resources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "resources")
object test extends SbtModuleTests {
def ivyDeps = Agg(

View File

@@ -3,10 +3,12 @@
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
* Contact: team@openapitools.org
*
* NOTE: This class is auto generated by the swagger code generator program.
* https://github.com/swagger-api/swagger-codegen.git
* NOTE: This class is auto generated by OpenAPI Generator.
*
* https://openapi-generator.tech
*/
// this model was generated using modelTest.mustache

View File

@@ -3,10 +3,12 @@
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
* Contact: team@openapitools.org
*
* NOTE: This class is auto generated by the swagger code generator program.
* https://github.com/swagger-api/swagger-codegen.git
* NOTE: This class is auto generated by OpenAPI Generator.
*
* https://openapi-generator.tech
*/
// this model was generated using modelTest.mustache

View File

@@ -3,10 +3,12 @@
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
* Contact: team@openapitools.org
*
* NOTE: This class is auto generated by the swagger code generator program.
* https://github.com/swagger-api/swagger-codegen.git
* NOTE: This class is auto generated by OpenAPI Generator.
*
* https://openapi-generator.tech
*/
// this model was generated using modelTest.mustache

View File

@@ -3,10 +3,12 @@
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
* Contact: team@openapitools.org
*
* NOTE: This class is auto generated by the swagger code generator program.
* https://github.com/swagger-api/swagger-codegen.git
* NOTE: This class is auto generated by OpenAPI Generator.
*
* https://openapi-generator.tech
*/
// this model was generated using modelTest.mustache

View File

@@ -3,10 +3,12 @@
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
* Contact: team@openapitools.org
*
* NOTE: This class is auto generated by the swagger code generator program.
* https://github.com/swagger-api/swagger-codegen.git
* NOTE: This class is auto generated by OpenAPI Generator.
*
* https://openapi-generator.tech
*/
// this model was generated using modelTest.mustache

View File

@@ -3,10 +3,12 @@
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
*
* OpenAPI spec version: 1.0.0
*
* Contact: team@openapitools.org
*
* NOTE: This class is auto generated by the swagger code generator program.
* https://github.com/swagger-api/swagger-codegen.git
* NOTE: This class is auto generated by OpenAPI Generator.
*
* https://openapi-generator.tech
*/
// this model was generated using modelTest.mustache

View File

@@ -1,3 +1,4 @@
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0")
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0")