mirror of
https://github.com/actions/checkout.git
synced 2025-10-24 14:02:33 +08:00
* auth-helper: properly await replacement of the token value in the config
After writing the `.extraheader` config, we manually replace the token
with the actual value. This is done in an `async` function, but we were
not `await`ing the result.
In our tests, this commit fixes a flakiness we observed where
`remote.origin.url` sometimes (very rarely, actually) is not set for
submodules. Our interpretation is that the configs are in the process of
being rewritten with the correct token value _while_ another `git
config` that wants to set the `insteadOf` value is reading the config,
which is currently empty.
A more idiomatic way to fix this in Typescript would use
`Promise.all()`, like this:
await Promise.all(
configPaths.map(async configPath => {
core.debug(`Replacing token placeholder in '${configPath}'`)
await this.replaceTokenPlaceholder(configPath)
})
)
However, during review of https://github.com/actions/checkout/pull/379
it was decided to keep the `for` loop in the interest of simplicity.
Reported by Ian Lynagh.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* downloadRepository(): await the result of recursive deletions
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* Ask ESLint to report floating Promises
This rule is quite helpful in avoiding hard-to-debug missing `await`s.
Note: there are two locations in `src/main.ts` that trigger warnings:
the `run()` and the `cleanup()` function are called without `await` and
without any `.catch()` clause.
In the initial version of https://github.com/actions/checkout/pull/379,
this was addressed by adding `.catch()` clauses. However, it was
determined that this is boilerplate code that will need to be fixed in a
broader way.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* Rebuild
This trick was brought to you by `npm ci && npm run build`. Needed to
get the PR build to pass.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
60 lines
2.5 KiB
JSON
60 lines
2.5 KiB
JSON
{
|
|
"plugins": ["jest", "@typescript-eslint"],
|
|
"extends": ["plugin:github/es6"],
|
|
"parser": "@typescript-eslint/parser",
|
|
"parserOptions": {
|
|
"ecmaVersion": 9,
|
|
"sourceType": "module",
|
|
"project": "./tsconfig.json"
|
|
},
|
|
"rules": {
|
|
"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-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",
|
|
"@typescript-eslint/no-extraneous-class": "error",
|
|
"@typescript-eslint/no-floating-promises": "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-object-literal-type-assertion": "error",
|
|
"@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-interface": "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
|
|
}
|
|
}
|