mirror of
https://github.com/shimataro/ssh-key-action.git
synced 2025-06-19 22:52:10 +10:00
* add lint tools (#61)
This commit is contained in:
parent
ab2b5fa346
commit
a4ff38c616
8 changed files with 2417 additions and 359 deletions
305
.eslintrc.yml
Normal file
305
.eslintrc.yml
Normal file
|
@ -0,0 +1,305 @@
|
|||
# https://eslint.org/
|
||||
env: # https://eslint.org/docs/user-guide/configuring#specifying-environments
|
||||
es6: true
|
||||
node: true
|
||||
extends:
|
||||
- eslint:recommended
|
||||
- plugin:@typescript-eslint/eslint-recommended
|
||||
- plugin:@typescript-eslint/recommended
|
||||
plugins:
|
||||
- import
|
||||
- "@typescript-eslint"
|
||||
parser: "@typescript-eslint/parser"
|
||||
parserOptions:
|
||||
sourceType: module
|
||||
project: ./tsconfig.json
|
||||
rules: # https://eslint.org/docs/rules/
|
||||
accessor-pairs: error
|
||||
array-bracket-newline: error
|
||||
array-bracket-spacing:
|
||||
- error
|
||||
- never
|
||||
array-callback-return: error
|
||||
arrow-body-style: 'off'
|
||||
arrow-parens:
|
||||
- error
|
||||
- always
|
||||
arrow-spacing:
|
||||
- error
|
||||
- after: true
|
||||
before: true
|
||||
block-scoped-var: error
|
||||
block-spacing: error
|
||||
brace-style:
|
||||
- error
|
||||
- allman
|
||||
callback-return: error
|
||||
capitalized-comments: 'off'
|
||||
class-methods-use-this: error
|
||||
comma-dangle:
|
||||
- error
|
||||
- always-multiline
|
||||
comma-spacing:
|
||||
- error
|
||||
- after: true
|
||||
before: false
|
||||
comma-style:
|
||||
- error
|
||||
- last
|
||||
complexity:
|
||||
- error
|
||||
computed-property-spacing:
|
||||
- error
|
||||
- never
|
||||
consistent-return: 'off'
|
||||
consistent-this: error
|
||||
curly: error
|
||||
default-case: 'off'
|
||||
dot-location:
|
||||
- error
|
||||
- property
|
||||
dot-notation:
|
||||
- error
|
||||
- allowKeywords: true
|
||||
eol-last: error
|
||||
eqeqeq: error
|
||||
for-direction: error
|
||||
func-call-spacing: error
|
||||
func-name-matching: error
|
||||
func-names:
|
||||
- error
|
||||
- never
|
||||
func-style:
|
||||
- error
|
||||
- declaration
|
||||
function-paren-newline: error
|
||||
generator-star-spacing: error
|
||||
getter-return: error
|
||||
global-require: error
|
||||
guard-for-in: error
|
||||
handle-callback-err: error
|
||||
id-blacklist: error
|
||||
id-length: 'off'
|
||||
id-match: error
|
||||
implicit-arrow-linebreak:
|
||||
- error
|
||||
- below
|
||||
indent:
|
||||
- error
|
||||
- tab
|
||||
indent-legacy: 'off'
|
||||
init-declarations: error
|
||||
jsx-quotes: error
|
||||
key-spacing: error
|
||||
keyword-spacing:
|
||||
- error
|
||||
- overrides:
|
||||
if:
|
||||
after: false
|
||||
for:
|
||||
after: false
|
||||
while:
|
||||
after: false
|
||||
catch:
|
||||
after: false
|
||||
with:
|
||||
after: false
|
||||
line-comment-position: 'off'
|
||||
linebreak-style:
|
||||
- error
|
||||
- unix
|
||||
lines-around-comment: 'off'
|
||||
lines-around-directive: error
|
||||
lines-between-class-members:
|
||||
- error
|
||||
- always
|
||||
max-depth: error
|
||||
max-len: 'off'
|
||||
max-lines: 'off'
|
||||
max-nested-callbacks: error
|
||||
max-params: 'off'
|
||||
max-statements: 'off'
|
||||
max-statements-per-line: error
|
||||
multiline-comment-style:
|
||||
- error
|
||||
- separate-lines
|
||||
multiline-ternary: error
|
||||
new-cap: error
|
||||
new-parens: error
|
||||
newline-after-var: 'off'
|
||||
newline-before-return: 'off'
|
||||
no-alert: error
|
||||
no-array-constructor: error
|
||||
no-await-in-loop: error
|
||||
no-bitwise: error
|
||||
no-buffer-constructor: error
|
||||
no-caller: error
|
||||
no-catch-shadow: error
|
||||
no-confusing-arrow: error
|
||||
no-continue: 'off'
|
||||
no-div-regex: error
|
||||
no-duplicate-imports: error
|
||||
no-else-return: 'off'
|
||||
no-empty-function: 'off'
|
||||
no-eq-null: error
|
||||
no-eval: error
|
||||
no-extend-native: error
|
||||
no-extra-bind: error
|
||||
no-extra-label: error
|
||||
no-extra-parens: error
|
||||
no-floating-decimal: error
|
||||
no-implicit-coercion: error
|
||||
no-implicit-globals: error
|
||||
no-implied-eval: error
|
||||
no-inline-comments: 'off'
|
||||
no-invalid-this: error
|
||||
no-iterator: error
|
||||
no-label-var: error
|
||||
no-labels: error
|
||||
no-lonely-if: error
|
||||
no-loop-func: error
|
||||
no-magic-numbers: 'off'
|
||||
no-mixed-operators: error
|
||||
no-mixed-requires: error
|
||||
no-multi-assign: error
|
||||
no-multi-spaces: error
|
||||
no-multi-str: error
|
||||
no-multiple-empty-lines:
|
||||
- error
|
||||
- max: 1
|
||||
no-native-reassign: error
|
||||
no-negated-condition: error
|
||||
no-negated-in-lhs: error
|
||||
no-nested-ternary: error
|
||||
no-new: error
|
||||
no-new-func: error
|
||||
no-new-object: error
|
||||
no-new-require: error
|
||||
no-new-wrappers: error
|
||||
no-octal-escape: error
|
||||
no-param-reassign: 'off'
|
||||
no-path-concat: error
|
||||
no-plusplus: 'off'
|
||||
no-process-env: 'off'
|
||||
no-process-exit: error
|
||||
no-proto: error
|
||||
no-prototype-builtins: 'off'
|
||||
no-restricted-globals: error
|
||||
no-restricted-imports: error
|
||||
no-restricted-modules: error
|
||||
no-restricted-properties: error
|
||||
no-restricted-syntax: error
|
||||
no-return-assign: error
|
||||
no-return-await: error
|
||||
no-script-url: error
|
||||
no-self-compare: error
|
||||
no-sequences: error
|
||||
no-shadow: error
|
||||
no-shadow-restricted-names: error
|
||||
no-spaced-func: error
|
||||
no-sync: 'off'
|
||||
no-tabs: 'off'
|
||||
no-template-curly-in-string: error
|
||||
no-ternary: error
|
||||
no-throw-literal: error
|
||||
no-trailing-spaces: error
|
||||
no-undef-init: error
|
||||
no-undefined: 'off'
|
||||
no-underscore-dangle: 'off'
|
||||
no-unmodified-loop-condition: error
|
||||
no-unneeded-ternary: error
|
||||
no-unused-expressions: error
|
||||
no-use-before-define: 'off'
|
||||
no-useless-call: error
|
||||
no-useless-computed-key: error
|
||||
no-useless-concat: error
|
||||
no-useless-constructor: error
|
||||
no-useless-rename: error
|
||||
no-useless-return: error
|
||||
no-var: error
|
||||
no-void: error
|
||||
no-warning-comments: error
|
||||
no-whitespace-before-property: error
|
||||
no-with: error
|
||||
nonblock-statement-body-position: error
|
||||
object-curly-newline: 'off'
|
||||
object-curly-spacing:
|
||||
- error
|
||||
- never
|
||||
object-property-newline: error
|
||||
object-shorthand: 'off'
|
||||
one-var: 'off'
|
||||
one-var-declaration-per-line: error
|
||||
operator-assignment: error
|
||||
operator-linebreak: error
|
||||
padded-blocks: 'off'
|
||||
padding-line-between-statements: error
|
||||
prefer-arrow-callback: error
|
||||
prefer-const: error
|
||||
prefer-destructuring: error
|
||||
prefer-numeric-literals: error
|
||||
prefer-promise-reject-errors: error
|
||||
prefer-reflect: error
|
||||
prefer-rest-params: error
|
||||
prefer-spread: error
|
||||
prefer-template: error
|
||||
quote-props: 'off'
|
||||
quotes: 'off'
|
||||
radix: error
|
||||
require-await: error
|
||||
require-jsdoc: error
|
||||
rest-spread-spacing:
|
||||
- error
|
||||
- never
|
||||
semi: error
|
||||
semi-spacing: error
|
||||
semi-style:
|
||||
- error
|
||||
- last
|
||||
sort-imports: 'off'
|
||||
sort-keys: 'off'
|
||||
sort-vars: error
|
||||
space-before-blocks: error
|
||||
space-before-function-paren: 'off'
|
||||
space-in-parens:
|
||||
- error
|
||||
- never
|
||||
space-infix-ops: error
|
||||
space-unary-ops: error
|
||||
spaced-comment:
|
||||
- error
|
||||
- always
|
||||
strict: error
|
||||
switch-colon-spacing: error
|
||||
symbol-description: error
|
||||
template-curly-spacing:
|
||||
- error
|
||||
- never
|
||||
template-tag-spacing: error
|
||||
unicode-bom:
|
||||
- error
|
||||
- never
|
||||
valid-jsdoc:
|
||||
- error
|
||||
- requireParamType: false
|
||||
requireReturn: false
|
||||
requireReturnType: false
|
||||
vars-on-top: error
|
||||
wrap-iife: error
|
||||
wrap-regex: error
|
||||
yield-star-spacing: error
|
||||
yoda:
|
||||
- error
|
||||
- never
|
||||
|
||||
# import plugin
|
||||
import/extensions: 'off'
|
||||
import/no-unresolved:
|
||||
- error
|
||||
|
||||
# @typescript-eslint plugin
|
||||
"@typescript-eslint/explicit-function-return-type": 'off'
|
||||
"@typescript-eslint/no-use-before-define":
|
||||
- error
|
||||
- functions: false
|
||||
"@typescript-eslint/strict-boolean-expressions": error
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"MD007": {
|
||||
"indent": 4
|
||||
},
|
||||
"MD013": {
|
||||
"line_length": 255
|
||||
},
|
||||
"MD024": {
|
||||
"siblings_only": true
|
||||
}
|
||||
}
|
6
.markdownlint.yml
Normal file
6
.markdownlint.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
MD007:
|
||||
indent: 4
|
||||
MD013:
|
||||
line_length: 255
|
||||
MD024:
|
||||
siblings_only: true
|
89
lib/main.js
89
lib/main.js
|
@ -1,89 +0,0 @@
|
|||
"use strict";
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
||||
result["default"] = mod;
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const fs = __importStar(require("fs"));
|
||||
const path = __importStar(require("path"));
|
||||
const core = __importStar(require("@actions/core"));
|
||||
/**
|
||||
* main function
|
||||
*/
|
||||
function main() {
|
||||
try {
|
||||
const files = [
|
||||
{
|
||||
name: core.getInput("name"),
|
||||
contents: core.getInput("private-key", {
|
||||
required: true,
|
||||
}),
|
||||
options: {
|
||||
mode: 0o400,
|
||||
flag: "ax",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "known_hosts",
|
||||
contents: prependLf(core.getInput("known-hosts")),
|
||||
options: {
|
||||
mode: 0o644,
|
||||
flag: "a",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "config",
|
||||
contents: prependLf(core.getInput("config")),
|
||||
options: {
|
||||
mode: 0o644,
|
||||
flag: "a",
|
||||
},
|
||||
},
|
||||
];
|
||||
// create ".ssh" directory
|
||||
const home = getHomeDirectory();
|
||||
const dirName = path.resolve(home, ".ssh");
|
||||
fs.mkdirSync(dirName, {
|
||||
recursive: true,
|
||||
mode: 0o700,
|
||||
});
|
||||
// create files
|
||||
for (const file of files) {
|
||||
const fileName = path.join(dirName, file.name);
|
||||
fs.writeFileSync(fileName, file.contents, file.options);
|
||||
}
|
||||
console.log(`SSH key has been stored to ${dirName} successfully.`);
|
||||
}
|
||||
catch (err) {
|
||||
core.setFailed(err.message);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* get home directory
|
||||
* @returns home directory
|
||||
*/
|
||||
function getHomeDirectory() {
|
||||
const homeEnv = process.platform == "win32" ? "USERPROFILE" : "HOME";
|
||||
const home = process.env[homeEnv];
|
||||
if (home === undefined) {
|
||||
throw Error(`${homeEnv} is not defined`);
|
||||
}
|
||||
return home;
|
||||
}
|
||||
/**
|
||||
* prepend LF to value if not empty
|
||||
* @param value the value to prepend LF
|
||||
* @returns prepended value
|
||||
*/
|
||||
function prependLf(value) {
|
||||
if (value.length === 0) {
|
||||
// do nothing if empty
|
||||
return "";
|
||||
}
|
||||
return `\n${value}`;
|
||||
}
|
||||
main();
|
||||
//# sourceMappingURL=main.js.map
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,oDAAsC;AAStC;;GAEG;AACH,SAAS,IAAI;IAEZ,IACA;QACC,MAAM,KAAK,GAAe;YACzB;gBACC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBACtC,QAAQ,EAAE,IAAI;iBACd,CAAC;gBACF,OAAO,EAAE;oBACR,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,IAAI;iBACV;aACD;YACD;gBACC,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACjD,OAAO,EAAE;oBACR,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,GAAG;iBACT;aACD;YACD;gBACC,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC5C,OAAO,EAAE;oBACR,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,GAAG;iBACT;aACD;SACD,CAAC;QAEF,0BAA0B;QAC1B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE;YACrB,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,KAAK;SACX,CAAC,CAAC;QAEH,eAAe;QACf,KAAI,MAAM,IAAI,IAAI,KAAK,EACvB;YACC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACxD;QAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,gBAAgB,CAAC,CAAC;KACnE;IACD,OAAM,GAAG,EACT;QACC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC5B;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB;IAExB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,IAAG,IAAI,KAAK,SAAS,EACrB;QACC,MAAM,KAAK,CAAC,GAAG,OAAO,iBAAiB,CAAC,CAAC;KACzC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAa;IAE/B,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,EACrB;QACC,sBAAsB;QACtB,OAAO,EAAE,CAAC;KACV;IAED,OAAO,KAAK,KAAK,EAAE,CAAC;AACrB,CAAC;AAED,IAAI,EAAE,CAAC"}
|
2318
package-lock.json
generated
2318
package-lock.json
generated
File diff suppressed because it is too large
Load diff
16
package.json
16
package.json
|
@ -10,7 +10,12 @@
|
|||
},
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"check-updates": "ncu"
|
||||
"check-updates": "ncu",
|
||||
"lint": "run-p lint:*",
|
||||
"lint:ts": "eslint ./src --ext .ts",
|
||||
"lint:md": "markdownlint . --ignore node_modules --ignore examples",
|
||||
"lint:yaml": "yamllint .*.yml *.yml --ignore=node_modules/**/*.yml --ignore=node_modules/**/*.yaml",
|
||||
"verify": "run-p lint"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -30,7 +35,14 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "13.1.1",
|
||||
"@typescript-eslint/eslint-plugin": "2.16.0",
|
||||
"@typescript-eslint/parser": "2.16.0",
|
||||
"eslint": "6.8.0",
|
||||
"eslint-plugin-import": "2.20.0",
|
||||
"markdownlint-cli": "0.21.0",
|
||||
"npm-check-updates": "4.0.1",
|
||||
"typescript": "3.7.4"
|
||||
"npm-run-all": "4.1.5",
|
||||
"typescript": "3.7.4",
|
||||
"yaml-lint": "1.2.4"
|
||||
}
|
||||
}
|
||||
|
|
18
src/main.ts
18
src/main.ts
|
@ -75,7 +75,7 @@ function main(): void
|
|||
*/
|
||||
function getHomeDirectory(): string
|
||||
{
|
||||
const homeEnv = process.platform == "win32" ? "USERPROFILE" : "HOME";
|
||||
const homeEnv = getHomeEnv();
|
||||
const home = process.env[homeEnv];
|
||||
if(home === undefined)
|
||||
{
|
||||
|
@ -85,6 +85,22 @@ function getHomeDirectory(): string
|
|||
return home;
|
||||
}
|
||||
|
||||
/**
|
||||
* get HOME environment name
|
||||
* @returns HOME environment name
|
||||
*/
|
||||
function getHomeEnv(): string
|
||||
{
|
||||
if(process.platform === "win32")
|
||||
{
|
||||
// Windows
|
||||
return "USERPROFILE";
|
||||
}
|
||||
|
||||
// macOS / Linux
|
||||
return "HOME";
|
||||
}
|
||||
|
||||
/**
|
||||
* prepend LF to value if not empty
|
||||
* @param value the value to prepend LF
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue