diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml new file mode 100644 index 0000000..d87101f --- /dev/null +++ b/.github/workflows/bld.yml @@ -0,0 +1,26 @@ +name: badge-ci + +on: [push, pull_request, workflow_dispatch] + +jobs: + build-project: + runs-on: ubuntu-latest + + strategy: + matrix: + java-version: [ 17, 19, 20 ] + + steps: + - name: Checkout source repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up JDK ${{ matrix.java-version }} + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: ${{ matrix.java-version }} + + - name: Run tests + run: ./bld download compile test \ No newline at end of file diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..d9d2fd3 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,60 @@ +name: javadocs-pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + + steps: + - name: Checkout source repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up JDK 19 + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 19 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build Javadocs + run: ./bld download clean javadoc + + - name: Setup Pages + uses: actions/configure-pages@v3 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + # Upload generated Javadocs repository + path: 'build/javadoc/' + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0ad9d7c --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# [Bld](https://github.com/rife2/rife2/wiki/What-Is-Bld) extension to generate ANTLR4 parsers + +[![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) +[![Release](https://img.shields.io/github/release/rife2/bld-antrl4.svg)](https://github.com/rife2/bld-antlr4/releases/latest) +[![GitHub CI](https://github.com/rife2/bld-antrl4/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-antrl4/actions/workflows/bld.yml) + +An extension for generating Java sources from ANTLR4 parsers. + +```java +private final Antlr4Operation antlr4Operation_ = new Antlr4Operation(); +@BuildCommand +public void generateGrammar() +throws Exception { + antlr4Operation_.executeOnce(o -> o + .sourceDirectories(List.of(new File(srcMainDirectory(), "antlr"))) + .outputDirectory(new File(buildDirectory(), "generated")) + .visitor() + .longMessages()); +} + +// compileOperation_ is part of the main project +public void compile() +throws Exception { + generateGrammar(); + compileOperation_.executeOnce(o -> o + .fromProject(this) + .mainSourceDirectories(List.of(antlr4Operation_.outputDirectory()))); +} +``` \ No newline at end of file diff --git a/src/bld/java/rife/bld/extension/Antlr4Build.java b/src/bld/java/rife/bld/extension/Antlr4Build.java index 96d53e6..6873226 100644 --- a/src/bld/java/rife/bld/extension/Antlr4Build.java +++ b/src/bld/java/rife/bld/extension/Antlr4Build.java @@ -18,7 +18,7 @@ public class Antlr4Build extends Project { public Antlr4Build() { pkg = "rife.bld.extension"; name = "Antlr4"; - version = version(0,9,3); + version = version(0,9,4); javadocOptions.docLint(NO_MISSING); publishRepository = repository("rife2"); publishInfo = new PublishInfo()