Add tons of Typescript strictness
This commit is contained in:
parent
371a3bf0be
commit
08e809b7ae
@ -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
14
package-lock.json
generated
@ -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",
|
||||
|
@ -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": {
|
||||
|
46
src/main.ts
46
src/main.ts
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user