From 882505bb09fbaa3f6f334cdd323971bd04f6a83c Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 13 Jun 2022 15:00:58 -0500 Subject: [PATCH 01/13] Real-development-mode ready versions of pom and CI scripts --- .circleci/config.yml | 77 +++++++++++++++++++++++++++++++++++++ .circleci/mvn-settings.xml | 9 +++++ .github/workflows/maven.yml | 35 ----------------- pom.xml | 34 ++++++++++++---- 4 files changed, 113 insertions(+), 42 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 .circleci/mvn-settings.xml delete mode 100644 .github/workflows/maven.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..7c158891 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,77 @@ +version: 2.1 + +executors: + java17: + docker: + - image: 'cimg/openjdk:17.0' + resource_class: small + +orbs: + slack: circleci/slack@4.10.1 + +commands: + run_maven: + parameters: + maven_subcommand: + default: test + type: string + steps: + - checkout + - restore_cache: + keys: + - v1-dependencies-{{ checksum "pom.xml" }} + - run: + name: Run Maven + command: | + mvn -s .circleci/mvn-settings.xml << parameters.maven_subcommand >> + - run: + name: Save test results + command: | + mkdir -p ~/test-results/junit/ + find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \; + when: always + - store_test_results: + path: ~/test-results + - save_cache: + paths: + - ~/.m2 + key: v1-dependencies-{{ checksum "pom.xml" }} + +jobs: + mvn_test: + executor: java17 + steps: + - run_maven: + maven_subcommand: test + - slack/notify: + event: fail + + mvn_deploy: + executor: java17 + steps: + - run_maven: + maven_subcommand: deploy + - slack/notify: + event: always + +workflows: + test_only: + jobs: + - mvn_test: + context: [ qqq-maven-registry-credentials, kingsrook-slack ] + filters: + branches: + ignore: /dev/ + tags: + ignore: /version-.*/ + + deploy: + jobs: + - mvn_deploy: + context: [ qqq-maven-registry-credentials, kingsrook-slack ] + filters: + branches: + only: /dev/ + tags: + only: /version-.*/ + diff --git a/.circleci/mvn-settings.xml b/.circleci/mvn-settings.xml new file mode 100644 index 00000000..b2a345f0 --- /dev/null +++ b/.circleci/mvn-settings.xml @@ -0,0 +1,9 @@ + + + + github-qqq-maven-registry + ${env.QQQ_MAVEN_REGISTRY_USERNAME} + ${env.QQQ_MAVEN_REGISTRY_PASSWORD} + + + diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index 80d00dfd..00000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,35 +0,0 @@ -# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - -name: Java CI with Maven - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v2 - with: - java-version: '17' - distribution: 'adopt' - cache: maven - - name: maven-settings-xml-action - uses: whelk-io/maven-settings-xml-action@v20 - with: - servers: '[{ "id": "github-qqq-maven-registry", "username": "${{ secrets.QQQ_MAVEN_REGISTRY_USERNAME }}", "password": "${{ secrets.QQQ_MAVEN_REGISTRY_PASSWORD }}" }]' - repositories: '[{ "id": "github-qqq-maven-registry", "url": "https://maven.pkg.github.com/Kingsrook/qqq-maven-registry", "snapshots": { "enabled": "true" }}]' - - name: Build with Maven - run: mvn -B package --file pom.xml - - name: Publish to GitHub Packages Apache Maven - run: mvn deploy - env: - GITHUB_TOKEN: ${{ github.token }} diff --git a/pom.xml b/pom.xml index e9d2c95f..61dfd039 100644 --- a/pom.xml +++ b/pom.xml @@ -20,14 +20,18 @@ ~ along with this program. If not, see . --> - + 4.0.0 com.kingsrook.qqq qqq-middleware-picocli - 0.0-SNAPSHOT + 0.0.0-SNAPSHOT + + + scm:git:git@github.com:Kingsrook/qqq-middleware-picocli.git + scm:git:git@github.com:Kingsrook/qqq-middleware-picocli.git + HEAD + @@ -47,12 +51,12 @@ com.kingsrook.qqq qqq-backend-core - 0.0-SNAPSHOT + 0.0.0-SNAPSHOT com.kingsrook.qqq qqq-backend-module-rdbms - 0.0-SNAPSHOT + 0.0.0-SNAPSHOT test @@ -156,12 +160,28 @@ + + com.amashchenko.maven.plugin + gitflow-maven-plugin + 1.18.0 + + + main + dev + version- + + true + install + true + 1 + + - github + github-qqq-maven-registry GitHub QQQ Maven Registry https://maven.pkg.github.com/Kingsrook/qqq-maven-registry From ca2874b06fe503a6558e6f31dcc24a223d859a1b Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 13 Jun 2022 15:01:05 -0500 Subject: [PATCH 02/13] Update to strip away comment lines (e.g., copyright) and use -- comments --- .../qqq/frontend/picocli/TestUtils.java | 1 + src/test/resources/prime-test-database.sql | 40 +++++++++---------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/test/java/com/kingsrook/qqq/frontend/picocli/TestUtils.java b/src/test/java/com/kingsrook/qqq/frontend/picocli/TestUtils.java index 13835afb..d880837d 100644 --- a/src/test/java/com/kingsrook/qqq/frontend/picocli/TestUtils.java +++ b/src/test/java/com/kingsrook/qqq/frontend/picocli/TestUtils.java @@ -67,6 +67,7 @@ public class TestUtils InputStream primeTestDatabaseSqlStream = TestUtils.class.getResourceAsStream("/prime-test-database.sql"); assertNotNull(primeTestDatabaseSqlStream); List lines = (List) IOUtils.readLines(primeTestDatabaseSqlStream); + lines = lines.stream().filter(line -> !line.startsWith("-- ")).toList(); String joinedSQL = String.join("\n", lines); for(String sql : joinedSQL.split(";")) { diff --git a/src/test/resources/prime-test-database.sql b/src/test/resources/prime-test-database.sql index 6227f249..0780239c 100644 --- a/src/test/resources/prime-test-database.sql +++ b/src/test/resources/prime-test-database.sql @@ -1,23 +1,23 @@ -/* - * QQQ - Low-code Application Framework for Engineers. - * Copyright (C) 2021-2022. Kingsrook, LLC - * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States - * contact@kingsrook.com - * https://github.com/Kingsrook/ - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ +-- +-- QQQ - Low-code Application Framework for Engineers. +-- Copyright (C) 2021-2022. Kingsrook, LLC +-- 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States +-- contact@kingsrook.com +-- https://github.com/Kingsrook/ +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . +-- DROP TABLE IF EXISTS person; CREATE TABLE person From 8dd16cfa92f40c4e0b71a0e0f8f62350d32a36df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 20:09:53 +0000 Subject: [PATCH 03/13] Bump log4j-core from 2.15.0 to 2.17.1 Bumps log4j-core from 2.15.0 to 2.17.1. --- updated-dependencies: - dependency-name: org.apache.logging.log4j:log4j-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 61dfd039..53077c3b 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ org.apache.logging.log4j log4j-core - 2.15.0 + 2.17.1 org.junit.jupiter From 1f5a1ac0b072b5019ef531b9e9f77eb0b65107ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 20:35:49 +0000 Subject: [PATCH 04/13] Bump log4j-api from 2.15.0 to 2.17.1 Bumps log4j-api from 2.15.0 to 2.17.1. --- updated-dependencies: - dependency-name: org.apache.logging.log4j:log4j-api dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53077c3b..c794a137 100644 --- a/pom.xml +++ b/pom.xml @@ -82,7 +82,7 @@ org.apache.logging.log4j log4j-api - 2.15.0 + 2.17.1 org.apache.logging.log4j From 12e53407f2d59d00faf0a1c1f2c0d579d722c705 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 20:36:00 +0000 Subject: [PATCH 05/13] Bump h2 from 1.4.197 to 2.1.210 Bumps [h2](https://github.com/h2database/h2database) from 1.4.197 to 2.1.210. - [Release notes](https://github.com/h2database/h2database/releases) - [Commits](https://github.com/h2database/h2database/compare/version-1.4.197...version-2.1.210) --- updated-dependencies: - dependency-name: com.h2database:h2 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53077c3b..b8a678f4 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,7 @@ com.h2database h2 - 1.4.197 + 2.1.210 test From 59bab29ed9678b598734bbc3c80d4fc026a78a0d Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 13 Jun 2022 15:44:21 -0500 Subject: [PATCH 06/13] QQQ-8 Updating compatibility with h2 updagrade --- .../picocli/QPicoCliImplementationTest.java | 23 ++++++++++++------- src/test/resources/prime-test-database.sql | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java b/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java index 306b537f..0a1a0816 100644 --- a/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java +++ b/src/test/java/com/kingsrook/qqq/frontend/picocli/QPicoCliImplementationTest.java @@ -246,7 +246,8 @@ class QPicoCliImplementationTest { TestOutput testOutput = testCli("person", "insert", "--field-firstName=Lucy", - "--field-lastName=Lu"); + "--field-lastName=Lu", + "--field-email=lucy@kingsrook.com"); JSONObject insertResult = JsonUtils.toJSONObject(testOutput.getOutput()); assertNotNull(insertResult); assertEquals(1, insertResult.getJSONArray("records").length()); @@ -263,11 +264,11 @@ class QPicoCliImplementationTest public void test_tableInsertJsonObjectArgumentWithMapping() { String mapping = """ - --mapping={"firstName":"first","lastName":"ln"} + --mapping={"firstName":"first","lastName":"ln","email":"email"} """; String jsonBody = """ - --jsonBody={"first":"Chester","ln":"Cheese"} + --jsonBody={"first":"Chester","ln":"Cheese","email":"chester@kingsrook.com"} """; TestOutput testOutput = testCli("person", "insert", mapping, jsonBody); @@ -277,6 +278,7 @@ class QPicoCliImplementationTest assertEquals(6, insertResult.getJSONArray("records").getJSONObject(0).getJSONObject("values").getInt("id")); assertEquals("Chester", insertResult.getJSONArray("records").getJSONObject(0).getJSONObject("values").getString("firstName")); assertEquals("Cheese", insertResult.getJSONArray("records").getJSONObject(0).getJSONObject("values").getString("lastName")); + assertEquals("chester@kingsrook.com", insertResult.getJSONArray("records").getJSONObject(0).getJSONObject("values").getString("email")); } @@ -289,11 +291,14 @@ class QPicoCliImplementationTest public void test_tableInsertJsonArrayFileWithMapping() throws IOException { String mapping = """ - --mapping={"firstName":"first","lastName":"ln"} + --mapping={"firstName":"first","lastName":"ln","email":"email"} """; String jsonContents = """ - [{"first":"Charlie","ln":"Bear"},{"first":"Coco","ln":"Bean"}] + [ + {"first":"Charlie","ln":"Bear","email":"charlie-bear@kingsrook.com"}, + {"first":"Coco","ln":"Bean","email":"coco-bean@kingsrook.com"} + ] """; File file = new File("/tmp/" + UUID.randomUUID() + ".json"); @@ -309,8 +314,10 @@ class QPicoCliImplementationTest assertEquals(7, insertResult.getJSONArray("records").getJSONObject(1).getJSONObject("values").getInt("id")); assertEquals("Charlie", records.getJSONObject(0).getJSONObject("values").getString("firstName")); assertEquals("Bear", records.getJSONObject(0).getJSONObject("values").getString("lastName")); + assertEquals("charlie-bear@kingsrook.com", records.getJSONObject(0).getJSONObject("values").getString("email")); assertEquals("Coco", records.getJSONObject(1).getJSONObject("values").getString("firstName")); assertEquals("Bean", records.getJSONObject(1).getJSONObject("values").getString("lastName")); + assertEquals("coco-bean@kingsrook.com", records.getJSONObject(1).getJSONObject("values").getString("email")); } @@ -323,12 +330,12 @@ class QPicoCliImplementationTest public void test_tableInsertCsvFileWithIndexMapping() throws IOException { String mapping = """ - --mapping={"firstName":1,"lastName":3} + --mapping={"firstName":1,"lastName":3,"email":5} """; String csvContents = """ - "Louis","P","Willikers",1024, - "Nestle","G","Crunch",1701, + "Louis","P","Willikers",1024,"louis@kingsrook.com", + "Nestle","G","Crunch",1701,"nestle@kingsrook.com", """; diff --git a/src/test/resources/prime-test-database.sql b/src/test/resources/prime-test-database.sql index 0780239c..be858987 100644 --- a/src/test/resources/prime-test-database.sql +++ b/src/test/resources/prime-test-database.sql @@ -22,7 +22,7 @@ DROP TABLE IF EXISTS person; CREATE TABLE person ( - id SERIAL, + id INT AUTO_INCREMENT, create_date TIMESTAMP DEFAULT now(), modify_date TIMESTAMP DEFAULT now(), From 81b494e494c9c82b1bfa98957c2ffd9fcb645e4e Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 13 Jun 2022 15:51:12 -0500 Subject: [PATCH 07/13] Fixed github link in License --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index fac125e2..672d87d7 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,7 @@ This is a qqq middleware module, providing [picocli](https://picocli.info) acces QQQ - Low-code Application Framework for Engineers. \ Copyright (C) 2022. Kingsrook, LLC \ 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States \ -contact@kingsrook.com -https://github.com/Kingsrook/intellij-commentator-plugin +contact@kingsrook.com | https://github.com/Kingsrook/ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as From fcc831008facb095090b773de6e0506fa3116d4d Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Thu, 23 Jun 2022 16:49:44 -0500 Subject: [PATCH 08/13] Update to run deploy on snapshot tags --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7c158891..0ef02745 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -63,7 +63,7 @@ workflows: branches: ignore: /dev/ tags: - ignore: /version-.*/ + ignore: /(version|snapshot)-.*/ deploy: jobs: @@ -73,5 +73,5 @@ workflows: branches: only: /dev/ tags: - only: /version-.*/ + only: /(version|snapshot)-.*/ From ff834274837ac1745f5d711e3b0bcaec46d34087 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 24 Jun 2022 08:12:21 -0500 Subject: [PATCH 09/13] QQQ-7 first version of actual execution of processes --- checkstyle.xml | 4 +- .../picocli/PicoCliProcessCallback.java | 87 ++++++++++++++++++ .../qqq/frontend/picocli/QCommandBuilder.java | 46 +++++++++- .../picocli/QPicoCliImplementation.java | 86 ++++++++++++++---- .../picocli/QPicoCliImplementationTest.java | 88 ++++++++++++++----- .../qqq/frontend/picocli/TestUtils.java | 28 +++--- 6 files changed, 280 insertions(+), 59 deletions(-) create mode 100644 src/main/java/com/kingsrook/qqq/frontend/picocli/PicoCliProcessCallback.java diff --git a/checkstyle.xml b/checkstyle.xml index dbaa3479..76f872ed 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -46,6 +46,7 @@ --> + @@ -171,7 +172,7 @@ - +