diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..1f55b83 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,69 @@ +## # For most projects, this workflow file will not need changing; you simply need +## # to commit it to your repository. +## # +## # You may wish to alter this file to override the set of languages analyzed, +## # or to provide custom queries or build logic. +## # +## # ******** NOTE ******** +## # We have attempted to detect the languages in your repository. Please check +## # the `language` matrix defined below to confirm you have the correct set of +## # supported CodeQL languages. +## # +## name: "CodeQL" +## +## on: +## push: +## branches: [ "main" ] +## pull_request: +## # The branches below must be a subset of the branches above +## branches: [ "main" ] +## schedule: +## - cron: '38 23 * * 2' +## +## jobs: +## analyze: +## name: Analyze +## runs-on: ubuntu-latest +## +## env: +## MOMENTO_API_KEY: ${{ secrets.ALPHA_TEST_AUTH_TOKEN }} +## +## permissions: +## actions: read +## contents: read +## security-events: write +## +## strategy: +## fail-fast: false +## matrix: +## language: [ 'java' ] +## +## steps: +## - uses: actions/checkout@v3 +## +## # Initializes the CodeQL tools for scanning. +## - name: Initialize CodeQL +## uses: github/codeql-action/init@v2 +## with: +## languages: ${{ matrix.language }} +## # If you wish to specify custom queries, you can do so here or in a config file. +## # By default, queries listed here will override any specified in a config file. +## # Prefix the list here with "+" to use these queries and those in the config file. +## +## # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs +## # queries: security-extended,security-and-quality +## +## +## - name: Set up JDK 17 +## uses: actions/setup-java@v3 +## with: +## java-version: 17 +## distribution: 'corretto' +## +## - name: Build project +## run: make build +## +## - name: Perform CodeQL Analysis +## uses: github/codeql-action/analyze@v2 +## with: +## category: "/language:${{matrix.language}}" diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 0000000..c71cdf2 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,22 @@ +## # Dependency Review Action +## # +## # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable +## # versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, +## # PRs introducing known-vulnerable packages will be blocked from merging. +## # +## # Source repository: https://github.com/actions/dependency-review-action +## # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement +## name: 'Dependency Review' +## on: [pull_request] +## +## permissions: +## contents: read +## +## jobs: +## dependency-review: +## runs-on: ubuntu-latest +## steps: +## - name: 'Checkout Repository' +## uses: actions/checkout@v3 +## - name: 'Dependency Review' +## uses: actions/dependency-review-action@v2 diff --git a/.github/workflows/on-pull-request.yml b/.github/workflows/on-pull-request.yml new file mode 100644 index 0000000..5d196dc --- /dev/null +++ b/.github/workflows/on-pull-request.yml @@ -0,0 +1,59 @@ +name: On pull request + +on: + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + env: + MOMENTO_API_KEY: ${{ secrets.ALPHA_TEST_AUTH_TOKEN }} + + steps: + - name: Checkout project + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'corretto' + +# - name: Verify README generation +# uses: momentohq/standards-and-practices/github-actions/oss-readme-template@gh-actions-v2 +# with: +# project_status: official +# project_stability: stable +# project_type: sdk +# sdk_language: Java +# dev_docs_slug: java +# +# - name: Verify examples README generation +# uses: momentohq/standards-and-practices/github-actions/oss-readme-template@gh-actions-v2 +# with: +# project_status: official +# project_stability: beta +# project_type: other +# template_file: ./examples/README.template.md +# output_file: ./examples/README.md +# +# - name: Verify Storage examples README generation +# uses: momentohq/standards-and-practices/github-actions/oss-readme-template@gh-actions-v2 +# with: +# project_status: official +# project_stability: beta +# project_type: other +# template_file: ./examples/storage/README.template.md +# output_file: ./examples/storage/README.md + + - name: Commitlint and Other Shared Build Steps + uses: momentohq/standards-and-practices/github-actions/shared-build@gh-actions-v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Build project + run: make build + + - name: Run tests + run: make test diff --git a/.github/workflows/on-push-to-main-branch.yml b/.github/workflows/on-push-to-main-branch.yml new file mode 100644 index 0000000..eb24966 --- /dev/null +++ b/.github/workflows/on-push-to-main-branch.yml @@ -0,0 +1,41 @@ +name: On push to main branch + +on: + push: + branches: [main] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Setup repo + uses: actions/checkout@v3 + with: + token: ${{ secrets.MOMENTO_MACHINE_USER_GITHUB_TOKEN }} + +# - name: Generate README +# uses: momentohq/standards-and-practices/github-actions/generate-and-commit-oss-readme@gh-actions-v2 +# with: +# project_status: official +# project_stability: stable +# project_type: sdk +# sdk_language: Java +# dev_docs_slug: java +# +# - name: Verify Storage examples README generation +# uses: momentohq/standards-and-practices/github-actions/generate-and-commit-oss-readme@gh-actions-v2 +# with: +# project_status: official +# project_stability: beta +# project_type: other +# template_file: ./examples/storage/README.template.md +# output_file: ./examples/storage/README.md +# +# - name: Verify examples README generation +# uses: momentohq/standards-and-practices/github-actions/generate-and-commit-oss-readme@gh-actions-v2 +# with: +# project_status: official +# project_stability: beta +# project_type: other +# template_file: ./examples/README.template.md +# output_file: ./examples/README.md diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b8e2dae --- /dev/null +++ b/Makefile @@ -0,0 +1,31 @@ +.PHONY: all clean build test format lint precommit help + + +all: precommit + +## Clean the project +clean: + ./gradlew clean + +## Build the project +build: + ./gradlew build + +## Run all the tests +test: + ./gradlew test + +## Format the code +format: + ./gradlew spotlessApply + +## Lint the code +lint: + ./gradlew spotlessCheck + +## Run the precommit checks +precommit: format lint build test + +# See for explanation. +help: + @echo "$$(tput bold)Available rules:$$(tput sgr0)";echo;sed -ne"/^## /{h;s/.*//;:d" -e"H;n;s/^## //;td" -e"s/:.*//;G;s/\\n## /---/;s/\\n/ /g;p;}" ${MAKEFILE_LIST}|LC_ALL='C' sort -f|awk -F --- -v n=$$(tput cols) -v i=19 -v a="$$(tput setaf 6)" -v z="$$(tput sgr0)" '{printf"%s%*s%s ",a,-i,$$1,z;m=split($$2,w," ");l=n-i;for(j=1;j<=m;j++){l-=length(w[j])+1;if(l<= 0){l=n-i-length(w[j])-1;printf"\n%*s ",-i," ";}printf"%s ",w[j];}printf"\n";}'|more $(shell test $(shell uname) == Darwin && echo '-Xr') diff --git a/build.gradle.kts b/build.gradle.kts index c9e1b9d..f931f73 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,11 @@ plugins { id("java") + id("com.diffplug.spotless") version "5.15.1" } +// TODO replace with etsablished group id group = "momento.lettuce" -version = "1.0-SNAPSHOT" +version = "0.1.0" repositories { mavenCentral() @@ -16,4 +18,11 @@ dependencies { tasks.test { useJUnitPlatform() -} \ No newline at end of file +} + +spotless { + java { + removeUnusedImports() + googleJavaFormat("1.11.0") + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..3a26f08 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,8 @@ +# Needed for https://github.com/diffplug/spotless/issues/834 +# Google's Java Fromat has compatibility issues with JDK 16 - +# https://github.com/google/google-java-format#jdk-16 +org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ + --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ + --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \ + --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \ + --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \ No newline at end of file diff --git a/src/main/java/momento/lettuce/Main.java b/src/main/java/momento/lettuce/Main.java index 698ff51..6182aa8 100644 --- a/src/main/java/momento/lettuce/Main.java +++ b/src/main/java/momento/lettuce/Main.java @@ -1,7 +1,7 @@ package momento.lettuce; public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} \ No newline at end of file + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} diff --git a/src/test/java/TestStub.java b/src/test/java/TestStub.java new file mode 100644 index 0000000..cbb5fbb --- /dev/null +++ b/src/test/java/TestStub.java @@ -0,0 +1,10 @@ +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class TestStub { + @Test + public void testStub() { + assertEquals(1, 1); + } +}