1
0
Fork 0
mirror of https://github.com/shimataro/ssh-key-action.git synced 2025-06-19 22:52:10 +10:00

Merge branch 'development' into feature/stars

This commit is contained in:
shimataro 2020-01-18 11:18:55 +09:00 committed by GitHub
commit 03b1d6ce85
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 2522 additions and 339 deletions

305
.eslintrc.yml Normal file
View 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

View file

@ -28,3 +28,5 @@ jobs:
run: npm ci run: npm ci
- name: Build - name: Build
run: npm run build run: npm run build
- name: Verify
run: npm run verify

View file

@ -7,11 +7,12 @@ jobs:
name: Connect to github.com name: Connect to github.com
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
- name: print created files - name: print created files
run: ls -l ~/.ssh run: ls -l ~/.ssh
@ -21,11 +22,12 @@ jobs:
name: Connect to github.com with name and config name: Connect to github.com with name and config
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
name: ssh_key_name # optional name: ssh_key_name # optional
config: | # optional config: | # optional

View file

@ -7,11 +7,12 @@ jobs:
name: Connect to github.com name: Connect to github.com
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
- name: print created files - name: print created files
run: ls -l ~/.ssh run: ls -l ~/.ssh
@ -21,11 +22,12 @@ jobs:
name: Connect to github.com with name and config name: Connect to github.com with name and config
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
name: ssh_key_name # optional name: ssh_key_name # optional
config: | # optional config: | # optional

View file

@ -7,11 +7,12 @@ jobs:
name: Connect to github.com name: Connect to github.com
runs-on: ubuntu-16.04 runs-on: ubuntu-16.04
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
- name: print created files - name: print created files
run: ls -l ~/.ssh run: ls -l ~/.ssh
@ -21,11 +22,12 @@ jobs:
name: Connect to github.com with name and config name: Connect to github.com with name and config
runs-on: ubuntu-16.04 runs-on: ubuntu-16.04
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
name: ssh_key_name # optional name: ssh_key_name # optional
config: | # optional config: | # optional

View file

@ -7,11 +7,12 @@ jobs:
name: Connect to github.com name: Connect to github.com
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
- name: print created files - name: print created files
run: ls ~/.ssh run: ls ~/.ssh
@ -21,11 +22,12 @@ jobs:
name: Connect to github.com with name and config name: Connect to github.com with name and config
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- name: Checkout source codes
uses: actions/checkout@v1
- name: Install SSH key - name: Install SSH key
uses: shimataro/ssh-key-action@HEAD uses: ./.
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # optional
name: ssh_key_name # optional name: ssh_key_name # optional
config: | # optional config: | # optional

View file

@ -1,11 +0,0 @@
{
"MD007": {
"indent": 4
},
"MD013": {
"line_length": 255
},
"MD024": {
"siblings_only": true
}
}

6
.markdownlint.yml Normal file
View file

@ -0,0 +1,6 @@
MD007:
indent: 4
MD013:
line_length: 255
MD024:
siblings_only: true

View file

@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased] ## [Unreleased]
### Changed
* `public-key` is no longer necessarily
## [1.5.0] ## [1.5.0]
### Changed ### Changed

View file

@ -26,7 +26,6 @@ steps:
uses: shimataro/ssh-key-action@v1 uses: shimataro/ssh-key-action@v1
with: with:
private-key: ${{ secrets.SSH_KEY }} private-key: ${{ secrets.SSH_KEY }}
public-key: ${{ secrets.SSH_KEY_PUBLIC }}
name: id_rsa # optional name: id_rsa # optional
known-hosts: ${{ secrets.KNOWN_HOSTS }} # known_hosts; optional known-hosts: ${{ secrets.KNOWN_HOSTS }} # known_hosts; optional
config: ${{ secrets.CONFIG }} # ssh_config; optional config: ${{ secrets.CONFIG }} # ssh_config; optional
@ -43,7 +42,7 @@ See [Workflow syntax for GitHub Actions](https://help.github.com/en/articles/wor
If you want to install multiple keys, call this action multiple times. If you want to install multiple keys, call this action multiple times.
It is useful for port forwarding. It is useful for port forwarding.
**NOTE:** When this action is called multiple times, **the contents of `known-hosts` and `config` will be appended**. But `public-key` and `private-key` must be saved as different name, by using `name` option. **NOTE:** When this action is called multiple times, **the contents of `known-hosts` and `config` will be appended**. But `private-key` must be saved as different name, by using `name` option.
```yaml ```yaml
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -52,7 +51,6 @@ steps:
uses: shimataro/ssh-key-action@v1 uses: shimataro/ssh-key-action@v1
with: with:
private-key: ${{ secrets.SSH_KEY_OF_BASTION }} private-key: ${{ secrets.SSH_KEY_OF_BASTION }}
public-key: ${{ secrets.SSH_KEY_OF_BASTION_PUBLIC }}
name: id_rsa-bastion name: id_rsa-bastion
known-hosts: ${{ secrets.KNOWN_HOSTS_OF_BASTION }} known-hosts: ${{ secrets.KNOWN_HOSTS_OF_BASTION }}
config: | config: |
@ -64,7 +62,6 @@ steps:
uses: shimataro/ssh-key-action@v1 uses: shimataro/ssh-key-action@v1
with: with:
private-key: ${{ secrets.SSH_KEY_OF_TARGET }} private-key: ${{ secrets.SSH_KEY_OF_TARGET }}
public-key: ${{ secrets.SSH_KEY_OF_TARGET_PUBLIC }}
name: id_rsa-target name: id_rsa-target
known-hosts: ${{ secrets.KNOWN_HOSTS_OF_TARGET }} # will be appended! known-hosts: ${{ secrets.KNOWN_HOSTS_OF_TARGET }} # will be appended!
config: | # will be appended! config: | # will be appended!

View file

@ -9,9 +9,6 @@ inputs:
private-key: private-key:
description: "private SSH key" description: "private SSH key"
required: true required: true
public-key:
description: "public SSH key"
required: true
name: name:
description: "SSH key file name (default: id_rsa)" description: "SSH key file name (default: id_rsa)"
required: false required: false

View file

@ -15,10 +15,9 @@ const core = __importStar(require("@actions/core"));
*/ */
function main() { function main() {
try { try {
const name = core.getInput("name");
const files = [ const files = [
{ {
name: name, name: core.getInput("name"),
contents: core.getInput("private-key", { contents: core.getInput("private-key", {
required: true, required: true,
}), }),
@ -27,19 +26,9 @@ function main() {
flag: "ax", flag: "ax",
}, },
}, },
{
name: `${name}.pub`,
contents: core.getInput("public-key", {
required: true,
}),
options: {
mode: 0o444,
flag: "ax",
},
},
{ {
name: "known_hosts", name: "known_hosts",
contents: core.getInput("known-hosts") + "\n", contents: prependLf(core.getInput("known-hosts")),
options: { options: {
mode: 0o644, mode: 0o644,
flag: "a", flag: "a",
@ -47,7 +36,7 @@ function main() {
}, },
{ {
name: "config", name: "config",
contents: core.getInput("config") + "\n", contents: prependLf(core.getInput("config")),
options: { options: {
mode: 0o644, mode: 0o644,
flag: "a", flag: "a",
@ -77,12 +66,36 @@ function main() {
* @returns home directory * @returns home directory
*/ */
function getHomeDirectory() { function getHomeDirectory() {
const homeEnv = process.platform == "win32" ? "USERPROFILE" : "HOME"; const homeEnv = getHomeEnv();
const home = process.env[homeEnv]; const home = process.env[homeEnv];
if (home === undefined) { if (home === undefined) {
throw Error(`${homeEnv} is not defined`); throw Error(`${homeEnv} is not defined`);
} }
return home; return home;
} }
/**
* get HOME environment name
* @returns HOME environment name
*/
function getHomeEnv() {
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
* @returns prepended value
*/
function prependLf(value) {
if (value.length === 0) {
// do nothing if empty
return "";
}
return `\n${value}`;
}
main(); main();
//# sourceMappingURL=main.js.map //# sourceMappingURL=main.js.map

View file

@ -1 +1 @@
{"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,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,KAAK,GAAe;YACzB;gBACC,IAAI,EAAE,IAAI;gBACV,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,GAAG,IAAI,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;oBACrC,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,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;gBAC7C,OAAO,EAAE;oBACR,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,GAAG;iBACT;aACD;YACD;gBACC,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI;gBACxC,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,IAAI,EAAE,CAAC"} {"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,UAAU,EAAE,CAAC;IAC7B,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;;;GAGG;AACH,SAAS,UAAU;IAElB,IAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,EAC/B;QACC,UAAU;QACV,OAAO,aAAa,CAAC;KACrB;IAED,gBAAgB;IAChB,OAAO,MAAM,CAAC;AACf,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"}

View file

@ -34,13 +34,20 @@ class Command {
let cmdStr = CMD_STRING + this.command; let cmdStr = CMD_STRING + this.command;
if (this.properties && Object.keys(this.properties).length > 0) { if (this.properties && Object.keys(this.properties).length > 0) {
cmdStr += ' '; cmdStr += ' ';
let first = true;
for (const key in this.properties) { for (const key in this.properties) {
if (this.properties.hasOwnProperty(key)) { if (this.properties.hasOwnProperty(key)) {
const val = this.properties[key]; const val = this.properties[key];
if (val) { if (val) {
if (first) {
first = false;
}
else {
cmdStr += ',';
}
// safely append the val - avoid blowing up when attempting to // safely append the val - avoid blowing up when attempting to
// call .replace() if message is not a string for some reason // call .replace() if message is not a string for some reason
cmdStr += `${key}=${escape(`${val || ''}`)},`; cmdStr += `${key}=${escape(`${val || ''}`)}`;
} }
} }
} }

View file

@ -1 +1 @@
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;AAAA,yBAAwB;AAQxB;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,UAAkB,EAAE;IACtD,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,8DAA8D;wBAC9D,6DAA6D;wBAC7D,MAAM,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,CAAA;qBAC9C;iBACF;aACF;SACF;QAED,MAAM,IAAI,UAAU,CAAA;QAEpB,kEAAkE;QAClE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;QACvC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC;SACL,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"} {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;AAAA,yBAAwB;AAQxB;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,UAAkB,EAAE;IACtD,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,IAAI,KAAK,GAAG,IAAI,CAAA;YAChB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,IAAI,KAAK,EAAE;4BACT,KAAK,GAAG,KAAK,CAAA;yBACd;6BAAM;4BACL,MAAM,IAAI,GAAG,CAAA;yBACd;wBAED,8DAA8D;wBAC9D,6DAA6D;wBAC7D,MAAM,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAA;qBAC7C;iBACF;aACF;SACF;QAED,MAAM,IAAI,UAAU,CAAA;QAEpB,kEAAkE;QAClE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;QACvC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC;SACL,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"}

View file

@ -1,6 +1,6 @@
{ {
"name": "@actions/core", "name": "@actions/core",
"version": "1.2.0", "version": "1.2.1",
"description": "Actions core lib", "description": "Actions core lib",
"keywords": [ "keywords": [
"github", "github",
@ -10,6 +10,7 @@
"homepage": "https://github.com/actions/toolkit/tree/master/packages/core", "homepage": "https://github.com/actions/toolkit/tree/master/packages/core",
"license": "MIT", "license": "MIT",
"main": "lib/core.js", "main": "lib/core.js",
"types": "lib/core.d.ts",
"directories": { "directories": {
"lib": "lib", "lib": "lib",
"test": "__tests__" "test": "__tests__"
@ -26,6 +27,7 @@
"directory": "packages/core" "directory": "packages/core"
}, },
"scripts": { "scripts": {
"audit-moderate": "npm install && npm audit --audit-level=moderate",
"test": "echo \"Error: run tests from root\" && exit 1", "test": "echo \"Error: run tests from root\" && exit 1",
"tsc": "tsc" "tsc": "tsc"
}, },
@ -36,7 +38,7 @@
"@types/node": "^12.0.2" "@types/node": "^12.0.2"
} }
,"_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.0.tgz" ,"_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.1.tgz"
,"_integrity": "sha512-ZKdyhlSlyz38S6YFfPnyNgCDZuAF2T0Qv5eHflNWytPS8Qjvz39bZFMry9Bb/dpSnqWcNeav5yM2CTYpJeY+Dw==" ,"_integrity": "sha512-xD+CQd9p4lU7ZfRqmUcbJpqR+Ss51rJRVeXMyOLrZQImN9/8Sy/BEUBnHO/UKD3z03R686PVTLfEPmkropGuLw=="
,"_from": "@actions/core@1.2.0" ,"_from": "@actions/core@1.2.1"
} }

2336
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -10,7 +10,12 @@
}, },
"scripts": { "scripts": {
"build": "tsc", "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": { "repository": {
"type": "git", "type": "git",
@ -26,11 +31,18 @@
"author": "shimataro", "author": "shimataro",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "1.2.0" "@actions/core": "1.2.1"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "13.1.1", "@types/node": "13.1.8",
"@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", "npm-check-updates": "4.0.1",
"typescript": "3.7.4" "npm-run-all": "4.1.5",
"typescript": "3.7.5",
"yaml-lint": "1.2.4"
} }
} }

View file

@ -17,10 +17,9 @@ function main(): void
{ {
try try
{ {
const name = core.getInput("name");
const files: FileInfo[] = [ const files: FileInfo[] = [
{ {
name: name, name: core.getInput("name"),
contents: core.getInput("private-key", { contents: core.getInput("private-key", {
required: true, required: true,
}), }),
@ -29,19 +28,9 @@ function main(): void
flag: "ax", flag: "ax",
}, },
}, },
{
name: `${name}.pub`,
contents: core.getInput("public-key", {
required: true,
}),
options: {
mode: 0o444,
flag: "ax",
},
},
{ {
name: "known_hosts", name: "known_hosts",
contents: core.getInput("known-hosts") + "\n", contents: prependLf(core.getInput("known-hosts")),
options: { options: {
mode: 0o644, mode: 0o644,
flag: "a", flag: "a",
@ -49,7 +38,7 @@ function main(): void
}, },
{ {
name: "config", name: "config",
contents: core.getInput("config") + "\n", contents: prependLf(core.getInput("config")),
options: { options: {
mode: 0o644, mode: 0o644,
flag: "a", flag: "a",
@ -86,7 +75,7 @@ function main(): void
*/ */
function getHomeDirectory(): string function getHomeDirectory(): string
{ {
const homeEnv = process.platform == "win32" ? "USERPROFILE" : "HOME"; const homeEnv = getHomeEnv();
const home = process.env[homeEnv]; const home = process.env[homeEnv];
if(home === undefined) if(home === undefined)
{ {
@ -96,4 +85,36 @@ function getHomeDirectory(): string
return home; 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
* @returns prepended value
*/
function prependLf(value: string): string
{
if(value.length === 0)
{
// do nothing if empty
return "";
}
return `\n${value}`;
}
main(); main();