From 03e283a615a8bd3de24816bb9a0eab848541a2ca Mon Sep 17 00:00:00 2001 From: bartkownacki Date: Wed, 16 Aug 2023 16:13:29 +0200 Subject: [PATCH] wip --- .github/workflows/publish.yml | 55 ++++++++++++++++++++++++ .github/workflows/pull-request-lint.yml | 33 ++++++++++++++ .github/workflows/test.yml | 54 +++++++++++++++++++++++ package.json | 4 ++ yarn.lock | 57 ++++++++++++++++++++++++- 5 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/pull-request-lint.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..8f90c26 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,55 @@ +name: publish + +on: + workflow_dispatch: {} + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: 'yarn' + registry-url: 'https://registry.npmjs.org' + - name: Run install + run: yarn install --frozen-lockfile + - name: Run build + run: yarn build + - name: Get current version + id: currentVersionTag + run: | + sudo apt-get install jq; + version=$(cat package.json| jq .version -r); + echo "value=v$version" >> $GITHUB_OUTPUT + - uses: mukunku/tag-exists-action@v1.2.0 + id: checkTag + with: + tag: ${{ steps.currentVersionTag.outputs.value }} + - name: Github Release + if: steps.checkTag.outputs.exists == 'false' + run: | + errout=$(mktemp); + gh release create ${{ steps.currentVersionTag.outputs.value }} \ + -R $GITHUB_REPOSITORY \ + -t ${{ steps.currentVersionTag.outputs.value }} \ + --target main 2> $errout && true; + exitcode=$?; + if ([ $exitcode -ne 0 ] && ! grep -q "Release.tag_name already exists" $errout); then + cat $errout; + exit $exitcode; + fi + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_REPOSITORY: ${{ github.repository }} + - name: Publish packages + if: steps.checkTag.outputs.exists == 'false' + run: | + npm publish + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} diff --git a/.github/workflows/pull-request-lint.yml b/.github/workflows/pull-request-lint.yml new file mode 100644 index 0000000..0d6d64c --- /dev/null +++ b/.github/workflows/pull-request-lint.yml @@ -0,0 +1,33 @@ +name: pull-request-lint +on: + pull_request_target: + types: + - labeled + - opened + - synchronize + - reopened + - ready_for_review + - edited +jobs: + validate: + name: Validate PR title + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: amannn/action-semantic-pull-request@v4.5.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + types: |- + feat + fix + chore + build + ci + docs + style + refactor + perf + test + requireScope: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..5cb6b33 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,54 @@ +name: test + +on: + push: {} + +jobs: + test: + name: test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: 'yarn' + registry-url: 'https://registry.npmjs.org' + - name: Run install + run: yarn install --frozen-lockfile + - name: Run test + run: yarn test + build: + name: build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: 'yarn' + registry-url: 'https://registry.npmjs.org' + - name: Run install + run: yarn install --frozen-lockfile + - name: Run build + run: yarn build + lint: + name: lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: 'yarn' + registry-url: 'https://registry.npmjs.org' + - name: Run install + run: yarn install --frozen-lockfile + - name: Run lint + run: yarn lint \ No newline at end of file diff --git a/package.json b/package.json index 6643ef6..3afdcdd 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "build": "rimraf dist && yarn build:cjs && yarn build:esm", "build:cjs": "rimraf dist/cjs && tsc -p tsconfig.cjs.json && yarn copy:templates:cjs", "build:esm": "rimraf dist/esm && tsc -p tsconfig.esm.json && yarn copy:templates:esm", + "lint": "eslint .", "copy:templates:cjs": "cp -r ./src/templates ./dist/cjs/src/templates", "copy:templates:esm": "cp -r ./src/templates ./dist/esm/src/templates", "test": "jest" @@ -37,6 +38,7 @@ "pug": "^3.0.2" }, "devDependencies": { + "@actions/core": "1.10.0", "@types/chalk": "^2.2.0", "@types/commander": "^2.12.2", "@types/jest": "^29.5.3", @@ -48,9 +50,11 @@ "eslint": "^8.34.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-prettier": "4.2.1", + "fs-extra": "10.1.0", "jest": "^29.6.1", "prettier": "2.8.1", "rimraf": "^5.0.1", + "semver": "7.3.8", "ts-jest": "^29.0.5", "ts-node": "^10.9.1", "typescript": "^5.1.6" diff --git a/yarn.lock b/yarn.lock index ba362d4..35943dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,21 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@actions/core@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.0.tgz#44551c3c71163949a2f06e94d9ca2157a0cfac4f" + integrity sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug== + dependencies: + "@actions/http-client" "^2.0.1" + uuid "^8.3.2" + +"@actions/http-client@^2.0.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.1.1.tgz#a8e97699c315bed0ecaeaaeb640948470d4586a0" + integrity sha512-qhrkRMB40bbbLo7gF+0vu+X+UawOvQQqNAA/5Unx774RS8poaOhThDOG6BGmxvAnxhQnDp2BG/ZUm65xZILTpw== + dependencies: + tunnel "^0.0.6" + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -1704,6 +1719,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +fs-extra@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1810,7 +1834,7 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.2.9: +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -2438,6 +2462,15 @@ json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jstransformer@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" @@ -2991,6 +3024,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +semver@7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -3227,6 +3267,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tunnel@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -3254,6 +3299,11 @@ typescript@^5.1.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + update-browserslist-db@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" @@ -3269,6 +3319,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"