Add tons of Typescript strictness

This commit is contained in:
Sven-Hendrik Haase 2020-07-02 09:43:25 +02:00
parent 371a3bf0be
commit 08e809b7ae
No known key found for this signature in database
GPG Key ID: 39E4B877E62EB915
4 changed files with 40 additions and 32 deletions

View File

@ -1,6 +1,6 @@
{
"plugins": ["jest", "@typescript-eslint"],
"extends": ["plugin:github/es6"],
"plugins": ["jest", "@typescript-eslint", "github"],
"extends": ["plugin:github/typescript"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 9,
@ -18,15 +18,10 @@
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/ban-ts-ignore": "error",
"camelcase": "off",
"@typescript-eslint/camelcase": "error",
"@typescript-eslint/class-name-casing": "error",
"@typescript-eslint/explicit-function-return-type": ["error", {
"allowExpressions": true
}],
"@typescript-eslint/func-call-spacing": ["error", "never"],
"@typescript-eslint/generic-type-naming": ["error", "^[A-Z][A-Za-z]*$"],
"@typescript-eslint/no-array-constructor": "error",
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-explicit-any": "error",
@ -36,7 +31,6 @@
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-object-literal-type-assertion": "error",
"@typescript-eslint/no-unnecessary-qualifier": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-useless-constructor": "error",
@ -44,7 +38,6 @@
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/prefer-function-type": "warn",
"@typescript-eslint/prefer-includes": "error",
"@typescript-eslint/prefer-interface": "error",
"@typescript-eslint/prefer-string-starts-ends-with": "error",
"@typescript-eslint/promise-function-async": "error",
"@typescript-eslint/require-array-sort-compare": "error",

14
package-lock.json generated
View File

@ -1410,6 +1410,15 @@
"integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
"dev": true
},
"@types/glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==",
"requires": {
"@types/minimatch": "*",
"@types/node": "*"
}
},
"@types/graceful-fs": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz",
@ -1465,6 +1474,11 @@
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
"dev": true
},
"@types/minimatch": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
},
"@types/node": {
"version": "12.12.47",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz",

View File

@ -29,6 +29,7 @@
"dependencies": {
"@actions/core": "^1.2.0",
"@actions/github": "^4.0.0",
"@types/glob": "^7.1.2",
"glob": "^7.1.6"
},
"devDependencies": {

View File

@ -1,19 +1,23 @@
import * as fs from 'fs'
import {Octokit} from '@octokit/core'
import {Endpoints} from '@octokit/types'
import * as core from '@actions/core'
import * as github from '@actions/github'
import * as path from 'path'
import * as glob from 'glob'
const glob = require('glob')
type RepoAssetsResp = Endpoints['GET /repos/:owner/:repo/releases/:release_id/assets']['response']
type ReleaseByTagResp = Endpoints['GET /repos/:owner/:repo/releases/tags/:tag']['response']
type CreateReleaseResp = Endpoints['POST /repos/:owner/:repo/releases']['response']
async function get_release_by_tag(
tag: string,
octokit: any,
context: any
): Promise<any> {
octokit: Octokit
): Promise<ReleaseByTagResp | CreateReleaseResp> {
try {
core.debug(`Getting release by tag ${tag}.`)
return await octokit.repos.getReleaseByTag({
...context.repo,
...github.context.repo,
tag: tag
})
} catch (error) {
@ -23,7 +27,7 @@ async function get_release_by_tag(
`Release for tag ${tag} doesn't exist yet so we'll create it now.`
)
return await octokit.repos.createRelease({
...context.repo,
...github.context.repo,
tag_name: tag
})
} else {
@ -33,14 +37,13 @@ async function get_release_by_tag(
}
async function upload_to_release(
release: any,
release: ReleaseByTagResp | CreateReleaseResp,
file: string,
asset_name: string,
tag: string,
overwrite: string,
octokit: any,
context: any
) {
octokit: Octokit
): Promise<void> {
const stat = fs.statSync(file)
if (!stat.isFile()) {
core.debug(`Skipping ${file}, since its not a file`)
@ -50,18 +53,18 @@ async function upload_to_release(
const file_bytes = fs.readFileSync(file)
// Check for duplicates.
const assets = await octokit.repos.listAssetsForRelease({
...context.repo,
const assets: RepoAssetsResp = await octokit.repos.listAssetsForRelease({
...github.context.repo,
release_id: release.data.id
})
const duplicate_asset = assets.data.find((a: any) => a.name === asset_name)
const duplicate_asset = assets.data.find(a => a.name === asset_name)
if (duplicate_asset !== undefined) {
if (overwrite === 'true') {
core.debug(
`An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`
)
await octokit.repos.deleteReleaseAsset({
...context.repo,
...github.context.repo,
asset_id: duplicate_asset.id
})
} else {
@ -86,7 +89,7 @@ async function upload_to_release(
})
}
async function run() {
async function run(): Promise<void> {
try {
const token = core.getInput('repo_token', {required: true})
const file = core.getInput('file', {required: true})
@ -94,14 +97,13 @@ async function run() {
const tag = core.getInput('tag', {required: true}).replace('refs/tags/', '')
const overwrite = core.getInput('overwrite')
const octokit = github.getOctokit(token)
const context = github.context
const release = await get_release_by_tag(tag, octokit, context)
const octokit: Octokit = github.getOctokit(token)
const release = await get_release_by_tag(tag, octokit)
if (file_glob === 'true') {
const files = glob.sync(file)
if (files.length > 0) {
for (let file of files) {
for (const file of files) {
const asset_name = path.basename(file)
await upload_to_release(
release,
@ -109,8 +111,7 @@ async function run() {
asset_name,
tag,
overwrite,
octokit,
context
octokit
)
}
} else {
@ -126,8 +127,7 @@ async function run() {
asset_name,
tag,
overwrite,
octokit,
context
octokit
)
}
} catch (error) {