mirror of
https://github.com/Borales/actions-yarn.git
synced 2026-04-03 19:22:17 +08:00
Initial migration on TS
This commit is contained in:
parent
fdf0082f89
commit
6bc995441e
@ -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
4
.eslintignore
Normal file
@ -0,0 +1,4 @@
|
||||
dist/
|
||||
lib/
|
||||
node_modules/
|
||||
jest.config.js
|
||||
61
.eslintrc.json
Normal file
61
.eslintrc.json
Normal 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
48
.github/workflows/check-dist.yml
vendored
Normal 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/
|
||||
21
.github/workflows/docker-publish.yml
vendored
21
.github/workflows/docker-publish.yml
vendored
@ -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
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
lib
|
||||
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
3
.prettierignore
Normal file
3
.prettierignore
Normal file
@ -0,0 +1,3 @@
|
||||
dist/
|
||||
lib/
|
||||
node_modules/
|
||||
10
.prettierrc.json
Normal file
10
.prettierrc.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"printWidth": 80,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": false,
|
||||
"arrowParens": "avoid"
|
||||
}
|
||||
@ -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))
|
||||
|
||||
@ -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"]
|
||||
21
action.yml
21
action.yml
@ -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
5764
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
30
package.json
Normal file
30
package.json
Normal 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
20
src/index.ts
Normal 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
5
src/run.ts
Normal 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
18
src/yarn.ts
Normal 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
12
tsconfig.json
Normal 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"]
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user