Add tons of Typescript strictness
This commit is contained in:
parent
371a3bf0be
commit
08e809b7ae
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"plugins": ["jest", "@typescript-eslint"],
|
"plugins": ["jest", "@typescript-eslint", "github"],
|
||||||
"extends": ["plugin:github/es6"],
|
"extends": ["plugin:github/typescript"],
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 9,
|
"ecmaVersion": 9,
|
||||||
@ -18,15 +18,10 @@
|
|||||||
"@typescript-eslint/no-require-imports": "error",
|
"@typescript-eslint/no-require-imports": "error",
|
||||||
"@typescript-eslint/array-type": "error",
|
"@typescript-eslint/array-type": "error",
|
||||||
"@typescript-eslint/await-thenable": "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", {
|
"@typescript-eslint/explicit-function-return-type": ["error", {
|
||||||
"allowExpressions": true
|
"allowExpressions": true
|
||||||
}],
|
}],
|
||||||
"@typescript-eslint/func-call-spacing": ["error", "never"],
|
"@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-array-constructor": "error",
|
||||||
"@typescript-eslint/no-empty-interface": "error",
|
"@typescript-eslint/no-empty-interface": "error",
|
||||||
"@typescript-eslint/no-explicit-any": "error",
|
"@typescript-eslint/no-explicit-any": "error",
|
||||||
@ -36,7 +31,6 @@
|
|||||||
"@typescript-eslint/no-misused-new": "error",
|
"@typescript-eslint/no-misused-new": "error",
|
||||||
"@typescript-eslint/no-namespace": "error",
|
"@typescript-eslint/no-namespace": "error",
|
||||||
"@typescript-eslint/no-non-null-assertion": "warn",
|
"@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-qualifier": "error",
|
||||||
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
||||||
"@typescript-eslint/no-useless-constructor": "error",
|
"@typescript-eslint/no-useless-constructor": "error",
|
||||||
@ -44,7 +38,6 @@
|
|||||||
"@typescript-eslint/prefer-for-of": "warn",
|
"@typescript-eslint/prefer-for-of": "warn",
|
||||||
"@typescript-eslint/prefer-function-type": "warn",
|
"@typescript-eslint/prefer-function-type": "warn",
|
||||||
"@typescript-eslint/prefer-includes": "error",
|
"@typescript-eslint/prefer-includes": "error",
|
||||||
"@typescript-eslint/prefer-interface": "error",
|
|
||||||
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
"@typescript-eslint/prefer-string-starts-ends-with": "error",
|
||||||
"@typescript-eslint/promise-function-async": "error",
|
"@typescript-eslint/promise-function-async": "error",
|
||||||
"@typescript-eslint/require-array-sort-compare": "error",
|
"@typescript-eslint/require-array-sort-compare": "error",
|
||||||
|
14
package-lock.json
generated
14
package-lock.json
generated
@ -1410,6 +1410,15 @@
|
|||||||
"integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
|
"integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
|
||||||
"dev": true
|
"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": {
|
"@types/graceful-fs": {
|
||||||
"version": "4.1.3",
|
"version": "4.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz",
|
||||||
@ -1465,6 +1474,11 @@
|
|||||||
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
|
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
|
||||||
"dev": true
|
"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": {
|
"@types/node": {
|
||||||
"version": "12.12.47",
|
"version": "12.12.47",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.47.tgz",
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.2.0",
|
"@actions/core": "^1.2.0",
|
||||||
"@actions/github": "^4.0.0",
|
"@actions/github": "^4.0.0",
|
||||||
|
"@types/glob": "^7.1.2",
|
||||||
"glob": "^7.1.6"
|
"glob": "^7.1.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
46
src/main.ts
46
src/main.ts
@ -1,19 +1,23 @@
|
|||||||
import * as fs from 'fs'
|
import * as fs from 'fs'
|
||||||
|
import {Octokit} from '@octokit/core'
|
||||||
|
import {Endpoints} from '@octokit/types'
|
||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as github from '@actions/github'
|
import * as github from '@actions/github'
|
||||||
import * as path from 'path'
|
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(
|
async function get_release_by_tag(
|
||||||
tag: string,
|
tag: string,
|
||||||
octokit: any,
|
octokit: Octokit
|
||||||
context: any
|
): Promise<ReleaseByTagResp | CreateReleaseResp> {
|
||||||
): Promise<any> {
|
|
||||||
try {
|
try {
|
||||||
core.debug(`Getting release by tag ${tag}.`)
|
core.debug(`Getting release by tag ${tag}.`)
|
||||||
return await octokit.repos.getReleaseByTag({
|
return await octokit.repos.getReleaseByTag({
|
||||||
...context.repo,
|
...github.context.repo,
|
||||||
tag: tag
|
tag: tag
|
||||||
})
|
})
|
||||||
} catch (error) {
|
} 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.`
|
`Release for tag ${tag} doesn't exist yet so we'll create it now.`
|
||||||
)
|
)
|
||||||
return await octokit.repos.createRelease({
|
return await octokit.repos.createRelease({
|
||||||
...context.repo,
|
...github.context.repo,
|
||||||
tag_name: tag
|
tag_name: tag
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -33,14 +37,13 @@ async function get_release_by_tag(
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function upload_to_release(
|
async function upload_to_release(
|
||||||
release: any,
|
release: ReleaseByTagResp | CreateReleaseResp,
|
||||||
file: string,
|
file: string,
|
||||||
asset_name: string,
|
asset_name: string,
|
||||||
tag: string,
|
tag: string,
|
||||||
overwrite: string,
|
overwrite: string,
|
||||||
octokit: any,
|
octokit: Octokit
|
||||||
context: any
|
): Promise<void> {
|
||||||
) {
|
|
||||||
const stat = fs.statSync(file)
|
const stat = fs.statSync(file)
|
||||||
if (!stat.isFile()) {
|
if (!stat.isFile()) {
|
||||||
core.debug(`Skipping ${file}, since its not a file`)
|
core.debug(`Skipping ${file}, since its not a file`)
|
||||||
@ -50,18 +53,18 @@ async function upload_to_release(
|
|||||||
const file_bytes = fs.readFileSync(file)
|
const file_bytes = fs.readFileSync(file)
|
||||||
|
|
||||||
// Check for duplicates.
|
// Check for duplicates.
|
||||||
const assets = await octokit.repos.listAssetsForRelease({
|
const assets: RepoAssetsResp = await octokit.repos.listAssetsForRelease({
|
||||||
...context.repo,
|
...github.context.repo,
|
||||||
release_id: release.data.id
|
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 (duplicate_asset !== undefined) {
|
||||||
if (overwrite === 'true') {
|
if (overwrite === 'true') {
|
||||||
core.debug(
|
core.debug(
|
||||||
`An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`
|
`An asset called ${asset_name} already exists in release ${tag} so we'll overwrite it.`
|
||||||
)
|
)
|
||||||
await octokit.repos.deleteReleaseAsset({
|
await octokit.repos.deleteReleaseAsset({
|
||||||
...context.repo,
|
...github.context.repo,
|
||||||
asset_id: duplicate_asset.id
|
asset_id: duplicate_asset.id
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -86,7 +89,7 @@ async function upload_to_release(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async function run() {
|
async function run(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
const token = core.getInput('repo_token', {required: true})
|
const token = core.getInput('repo_token', {required: true})
|
||||||
const file = core.getInput('file', {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 tag = core.getInput('tag', {required: true}).replace('refs/tags/', '')
|
||||||
const overwrite = core.getInput('overwrite')
|
const overwrite = core.getInput('overwrite')
|
||||||
|
|
||||||
const octokit = github.getOctokit(token)
|
const octokit: Octokit = github.getOctokit(token)
|
||||||
const context = github.context
|
const release = await get_release_by_tag(tag, octokit)
|
||||||
const release = await get_release_by_tag(tag, octokit, context)
|
|
||||||
|
|
||||||
if (file_glob === 'true') {
|
if (file_glob === 'true') {
|
||||||
const files = glob.sync(file)
|
const files = glob.sync(file)
|
||||||
if (files.length > 0) {
|
if (files.length > 0) {
|
||||||
for (let file of files) {
|
for (const file of files) {
|
||||||
const asset_name = path.basename(file)
|
const asset_name = path.basename(file)
|
||||||
await upload_to_release(
|
await upload_to_release(
|
||||||
release,
|
release,
|
||||||
@ -109,8 +111,7 @@ async function run() {
|
|||||||
asset_name,
|
asset_name,
|
||||||
tag,
|
tag,
|
||||||
overwrite,
|
overwrite,
|
||||||
octokit,
|
octokit
|
||||||
context
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -126,8 +127,7 @@ async function run() {
|
|||||||
asset_name,
|
asset_name,
|
||||||
tag,
|
tag,
|
||||||
overwrite,
|
overwrite,
|
||||||
octokit,
|
octokit
|
||||||
context
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user