diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml index 04441f91c..6b0d6249f 100644 --- a/.github/workflows/site.yml +++ b/.github/workflows/site.yml @@ -1,28 +1,74 @@ -# This file was autogenerated using `zio-sbt` via `sbt generateGithubWorkflow` -# task and should be included in the git repository. Please do not edit -# it manually. +# This file was autogenerated using `zio-sbt-website` via `sbt generateGithubWorkflow` +# task and should be included in the git repository. Please do not edit it manually. -name: website - -on: +name: Website +'on': + workflow_dispatch: {} release: - types: [ published ] - + types: + - published + push: + branches: + - main jobs: publish-docs: - runs-on: ubuntu-20.04 - timeout-minutes: 30 + name: Publish Docs + runs-on: ubuntu-latest + if: ${{ ((github.event_name == 'release') && (github.event.action == 'published')) || (github.event_name == 'workflow_dispatch') }} + steps: + - name: Git Checkout + uses: actions/checkout@v3.1.0 + with: + fetch-depth: '0' + - name: Setup Scala + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 17 + check-latest: true + - name: Setup NodeJs + uses: actions/setup-node@v3 + with: + node-version: 16.x + registry-url: https://registry.npmjs.org + - name: Publish Docs to NPM Registry + run: sbt docs/publishToNpm + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + generate-readme: + name: Generate README + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3.1.0 - with: - fetch-depth: 0 - - name: Setup Scala and Java - uses: olafurpg/setup-scala@v13 - - uses: actions/setup-node@v3 - with: - node-version: '16.x' - registry-url: 'https://registry.npmjs.org' - - name: Publishing Docs to NPM Registry - run: sbt publishToNpm - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + - name: Git Checkout + uses: actions/checkout@v3.1.0 + with: + ref: ${{ github.head_ref }} + fetch-depth: '0' + - name: Setup Scala + uses: actions/setup-java@v3.6.0 + with: + distribution: temurin + java-version: 17 + check-latest: true + - name: Generate Readme + run: sbt docs/generateReadme + - name: Commit Changes + run: | + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git add README.md + git commit -m "Update README.md" || echo "No changes to commit" + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + with: + body: | + Autogenerated changes after running the `sbt docs/generateReadme` command of the [zio-sbt-website](https://zio.dev/zio-sbt) plugin. + + I will automatically update the README.md file whenever there is new change for README.md, e.g. + - After each release, I will update the version in the installation section. + - After any changes to the "docs/index.md" file, I will update the README.md file accordingly. + branch: zio-sbt-website/update-readme + commit-message: Update README.md + branch-suffix: short-commit-hash + title: Update README.md + diff --git a/build.sbt b/build.sbt index 6188f1eee..010a2338d 100644 --- a/build.sbt +++ b/build.sbt @@ -303,7 +303,26 @@ lazy val docs = project scalacOptions -= "-Xfatal-warnings", libraryDependencies ++= Seq( "dev.zio" %% "zio" % zioVersion - ) + ), + projectName := "ZIO Schema", + badgeInfo := Some( + BadgeInfo( + artifact = "zio-schema_2.12", + projectStage = ProjectStage.Development + ) + ), + docsPublishBranch := "main", + readmeContribution += + """| + |#### TL;DR + | + |Before you submit a PR, make sure your tests are passing, and that the code is properly formatted + | + |``` + |sbt prepare + | + |sbt test + |```""".stripMargin ) .dependsOn( zioSchemaMacrosJVM, diff --git a/docs/index.md b/docs/index.md index efa12d5fa..017dbb128 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,6 +6,8 @@ sidebar_label: "Introduction" [ZIO Schema](https://github.com/zio/zio-schema) is a [ZIO](https://zio.dev)-based library for modeling the schema of data structures as first-class values. +@PROJECT_BADGES@ + ## Introduction Schema is a structure of a data type. ZIO Schema reifies the concept of structure for data types. It makes a high-level description of any data type and makes them as first-class values. @@ -21,14 +23,20 @@ With schema descriptions that can be automatically derived for case classes and When our data structures need to be serialized, deserialized, persisted, or transported across the wire, then _ZIO Schema_ lets us focus on data modeling and automatically tackle all the low-level, messy details for us. +_ZIO Schema_ is used by a growing number of ZIO libraries, including _ZIO Flow_, _ZIO Redis_, _ZIO Web_, _ZIO SQL_ and _ZIO DynamoDB_. + ## Installation In order to use this library, we need to add the following lines in our `build.sbt` file: ```scala -libraryDependencies += "dev.zio" %% "zio-schema" % "@VERSION@" -libraryDependencies += "dev.zio" %% "zio-schema-json" % "@VERSION@" +libraryDependencies += "dev.zio" %% "zio-schema" % "@VERSION@" +libraryDependencies += "dev.zio" %% "zio-schema-json" % "@VERSION@" libraryDependencies += "dev.zio" %% "zio-schema-protobuf" % "@VERSION@" + +// Required for automatic generic derivation of schemas +libraryDependencies += "dev.zio" %% "zio-schema-derivation" % "@VERSION@", +libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value % "provided" ``` ## Example diff --git a/docs/sidebars.js b/docs/sidebars.js index 19f04d3b4..102859d51 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -1,9 +1,16 @@ const sidebars = { sidebar: [ - 'index', - 'use-cases', - 'our-first-schema', - 'understanding-zio-schema', + { + type: "category", + label: "ZIO Schema", + collapsed: false, + link: { type: "doc", id: "index" }, + items: [ + 'use-cases', + 'our-first-schema', + 'understanding-zio-schema', + ] + } ] }; diff --git a/project/plugins.sbt b/project/plugins.sbt index 4748474d1..562f5ff0e 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -13,7 +13,7 @@ addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.4.3") addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.1.0") addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.4") addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.3") -addSbtPlugin("dev.zio" % "zio-sbt-website" % "0.0.0+80-e5b408eb-SNAPSHOT") +addSbtPlugin("dev.zio" % "zio-sbt-website" % "0.1.5+27-a79a4f13-SNAPSHOT") libraryDependencies += "org.snakeyaml" % "snakeyaml-engine" % "2.5"