Initial migration on TS

This commit is contained in:
Borales 2022-11-26 21:54:41 +01:00
parent fdf0082f89
commit 6bc995441e
No known key found for this signature in database
17 changed files with 5994 additions and 46 deletions

View File

@ -1,7 +0,0 @@
# ignore all files by default
*
# include required files with an exception
!entrypoint.sh
!LICENSE
!README.md
!THIRD_PARTY_NOTICE.md

4
.eslintignore Normal file
View File

@ -0,0 +1,4 @@
dist/
lib/
node_modules/
jest.config.js

61
.eslintrc.json Normal file
View File

@ -0,0 +1,61 @@
{
"plugins": ["jest", "@typescript-eslint"],
"extends": ["plugin:github/recommended"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module",
"project": "./tsconfig.json"
},
"rules": {
"i18n-text/no-en": "off",
"eslint-comments/no-use": "off",
"import/no-namespace": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/explicit-member-accessibility": [
"error",
{ "accessibility": "no-public" }
],
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/ban-ts-comment": "error",
"camelcase": "off",
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/explicit-function-return-type": [
"error",
{ "allowExpressions": true }
],
"@typescript-eslint/func-call-spacing": ["error", "never"],
"@typescript-eslint/no-array-constructor": "error",
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-extraneous-class": "error",
"@typescript-eslint/no-for-in-array": "error",
"@typescript-eslint/no-inferrable-types": "error",
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-unnecessary-qualifier": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-useless-constructor": "error",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/prefer-function-type": "warn",
"@typescript-eslint/prefer-includes": "error",
"@typescript-eslint/prefer-string-starts-ends-with": "error",
"@typescript-eslint/promise-function-async": "error",
"@typescript-eslint/require-array-sort-compare": "error",
"@typescript-eslint/restrict-plus-operands": "error",
"semi": "off",
"@typescript-eslint/semi": ["error", "never"],
"@typescript-eslint/type-annotation-spacing": "error",
"@typescript-eslint/unbound-method": "error"
},
"env": {
"node": true,
"es6": true,
"jest/globals": true
}
}

48
.github/workflows/check-dist.yml vendored Normal file
View File

@ -0,0 +1,48 @@
# https://github.com/actions/typescript-action/blob/main/.github/workflows/check-dist.yml
name: Check dist/
on:
push:
branches:
- master
- migration # temp
paths-ignore:
- "**.md"
pull_request:
paths-ignore:
- "**.md"
jobs:
check-dist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set Node.js 16.x
uses: actions/setup-node@v3.5.1
with:
node-version: 16.x
- name: Install dependencies
run: npm ci
- name: Rebuild the dist/ directory
run: |
npm run build
npm run package
- name: Compare the expected and actual dist/ directories
run: |
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
id: diff
# If index.js was different than expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v2
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
with:
name: dist
path: dist/

View File

@ -1,21 +0,0 @@
name: Publish Docker image
on:
push:
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@master
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: borales/yarn
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
cache: true

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
node_modules
lib
.DS_Store
Thumbs.db

3
.prettierignore Normal file
View File

@ -0,0 +1,3 @@
dist/
lib/
node_modules/

10
.prettierrc.json Normal file
View File

@ -0,0 +1,10 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": false,
"arrowParens": "avoid"
}

View File

@ -1,5 +1,9 @@
# CHANGELOG
## 4.0.0 (26 Nov 2022)
- Migrated to Actions toolkit
## 3.0.0 (8 Jun 2022)
- Migrating to Python3 (thanks to [@richard-chim](https://github.com/richard-chim))

View File

@ -1,7 +0,0 @@
FROM node:lts-alpine
RUN apk add --no-cache git python3 build-base
RUN npm i -g --force yarn
COPY "entrypoint.sh" "/entrypoint.sh"
ENTRYPOINT ["/entrypoint.sh"]
CMD ["help"]

View File

@ -1,5 +1,6 @@
name: 'GitHub Action for Yarn'
description: 'Wraps the yarn CLI to enable common yarn commands'
author: 'Alex Bordun'
branding:
icon: 'package'
color: 'blue'
@ -7,15 +8,13 @@ inputs:
cmd:
description: 'Yarn command'
required: true
auth-token:
description: 'NPM_AUTH_TOKEN'
registry-url:
description: 'NPM_REGISTRY_URL'
# auth-token:
# description: 'NPM_AUTH_TOKEN'
# registry-url:
# description: 'NPM_REGISTRY_URL'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.cmd }}
env:
NPM_AUTH_TOKEN: ${{ inputs.auth-token }}
NPM_REGISTRY_URL: ${{ inputs.registry-url }}
using: 'node16'
main: 'dist/index.js'
# env:
# NPM_AUTH_TOKEN: ${{ inputs.auth-token }}
# NPM_REGISTRY_URL: ${{ inputs.registry-url }}

5764
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

30
package.json Normal file
View File

@ -0,0 +1,30 @@
{
"name": "@borales/actions-yarn",
"version": "4.0.0",
"main": "lib/index.js",
"scripts": {
"build": "tsc",
"format": "prettier --write '**/*.ts'",
"format-check": "prettier --check '**/*.ts'",
"lint": "eslint src/**/*.ts",
"package": "ncc build --source-map --license licenses.txt",
"test": "jest",
"all": "npm run build && npm run format && npm run lint && npm run package && npm test"
},
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1",
"@actions/io": "^1.1.2"
},
"devDependencies": {
"@types/node": "^18.11.9",
"@typescript-eslint/parser": "^5.44.0",
"@vercel/ncc": "^0.34.0",
"eslint-plugin-github": "^4.4.1",
"eslint-plugin-jest": "^27.1.6",
"eslint": "^8.28.0",
"jest": "^29.3.1",
"prettier": "^2.8.0",
"typescript": "^4.9.3"
}
}

20
src/index.ts Normal file
View File

@ -0,0 +1,20 @@
import {debug, getInput, setOutput, setFailed} from '@actions/core'
import {ensureYarnIsInstalled} from './yarn'
import {run} from './run'
const main = async () => {
await ensureYarnIsInstalled()
const cmd: string = getInput('cmd', {required: true})
try {
debug(`Running "${cmd}" command`)
await run(cmd)
setOutput(cmd, 'Done')
} catch (error) {
if (error instanceof Error) setFailed(error.message)
}
}
main()

5
src/run.ts Normal file
View File

@ -0,0 +1,5 @@
import {exec} from '@actions/exec'
export const run = async (cmd: string) => {
await exec('yarn', [cmd])
}

18
src/yarn.ts Normal file
View File

@ -0,0 +1,18 @@
import {debug} from '@actions/core'
import {exec, getExecOutput} from '@actions/exec'
import {which} from '@actions/io'
export const ensureYarnIsInstalled = async () => {
try {
await which('yarn', true)
} catch (e) {
await exec('npm install --global yarn')
}
const [{stdout: yarnVersion}, {stdout: nodeVersion}] = await Promise.all([
getExecOutput('yarn', ['--version'], {silent: true}),
getExecOutput('node', ['--version'], {silent: true})
])
debug(`Node ${nodeVersion.trim()} detected`)
debug(`Yarn v${yarnVersion.trim()} detected`)
}

12
tsconfig.json Normal file
View File

@ -0,0 +1,12 @@
{
"compilerOptions": {
"target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
"outDir": "./lib" /* Redirect output structure to the directory. */,
"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
"strict": true /* Enable all strict type-checking options. */,
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
},
"exclude": ["node_modules", "**/*.test.ts"]
}