mirror of
https://github.com/shimataro/ssh-key-action.git
synced 2025-06-19 22:52:10 +10:00
Feature/refactor (#209)
* Change code style to 1TBS
* refactor creating ".ssh" directoy
* Add Windows-2022 / macOS-11 / macOS-12 / Ubuntu-22.04
Drop Ubuntu-16.04
* Drop centos:8 (Docker container)
* add CentOS 8 Stream (Docker container)
* use YAML alias
* Revert "use YAML alias"
This reverts commit 1ddbc7fde8
.
* update .eslintrc
* move calling main to front
This commit is contained in:
parent
b38d88da8a
commit
adea214356
13 changed files with 324 additions and 247 deletions
|
@ -25,6 +25,13 @@ spaces_around_brackets = none
|
||||||
indent_brace_style = allman
|
indent_brace_style = allman
|
||||||
|
|
||||||
|
|
||||||
|
# JavaScript/TypeScript
|
||||||
|
[*.{js,ts}]
|
||||||
|
indent_style = space
|
||||||
|
curly_bracket_next_line = false
|
||||||
|
indent_brace_style = K&R
|
||||||
|
|
||||||
|
|
||||||
# JSON/YAML
|
# JSON/YAML
|
||||||
[*.{json,babelrc,code-workspace,yml,yaml}]
|
[*.{json,babelrc,code-workspace,yml,yaml}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
|
|
|
@ -29,9 +29,7 @@ rules: # https://eslint.org/docs/rules/
|
||||||
before: true
|
before: true
|
||||||
block-scoped-var: error
|
block-scoped-var: error
|
||||||
block-spacing: error
|
block-spacing: error
|
||||||
brace-style:
|
brace-style: 'off' # see "@typescript-eslint/brace-style"
|
||||||
- error
|
|
||||||
- allman
|
|
||||||
callback-return: error
|
callback-return: error
|
||||||
capitalized-comments: 'off'
|
capitalized-comments: 'off'
|
||||||
class-methods-use-this: error
|
class-methods-use-this: error
|
||||||
|
@ -87,26 +85,14 @@ rules: # https://eslint.org/docs/rules/
|
||||||
- below
|
- below
|
||||||
indent:
|
indent:
|
||||||
- error
|
- error
|
||||||
- tab
|
- 4
|
||||||
|
- SwitchCase: 1
|
||||||
indent-legacy: 'off'
|
indent-legacy: 'off'
|
||||||
init-declarations: error
|
init-declarations: error
|
||||||
jsx-quotes: error
|
jsx-quotes: error
|
||||||
key-spacing: error
|
key-spacing: error
|
||||||
keyword-spacing:
|
keyword-spacing:
|
||||||
- error
|
- error
|
||||||
- overrides:
|
|
||||||
catch:
|
|
||||||
after: false
|
|
||||||
for:
|
|
||||||
after: false
|
|
||||||
if:
|
|
||||||
after: false
|
|
||||||
switch:
|
|
||||||
after: false
|
|
||||||
while:
|
|
||||||
after: false
|
|
||||||
with:
|
|
||||||
after: false
|
|
||||||
line-comment-position: 'off'
|
line-comment-position: 'off'
|
||||||
linebreak-style:
|
linebreak-style:
|
||||||
- error
|
- error
|
||||||
|
@ -256,7 +242,7 @@ rules: # https://eslint.org/docs/rules/
|
||||||
rest-spread-spacing:
|
rest-spread-spacing:
|
||||||
- error
|
- error
|
||||||
- never
|
- never
|
||||||
semi: error
|
semi: 'off' # see "@typescript-eslint/semi"
|
||||||
semi-spacing: error
|
semi-spacing: error
|
||||||
semi-style:
|
semi-style:
|
||||||
- error
|
- error
|
||||||
|
@ -308,8 +294,21 @@ rules: # https://eslint.org/docs/rules/
|
||||||
|
|
||||||
# @typescript-eslint plugin
|
# @typescript-eslint plugin
|
||||||
"@typescript-eslint/ban-ts-ignore": 'off'
|
"@typescript-eslint/ban-ts-ignore": 'off'
|
||||||
|
"@typescript-eslint/brace-style":
|
||||||
|
- error
|
||||||
|
- 1tbs
|
||||||
|
"@typescript-eslint/member-delimiter-style":
|
||||||
|
- error
|
||||||
|
- multiline:
|
||||||
|
delimiter: semi
|
||||||
|
requireLast: true
|
||||||
|
singleline:
|
||||||
|
delimiter: semi
|
||||||
|
requireLast: true
|
||||||
"@typescript-eslint/no-empty-interface": 'off'
|
"@typescript-eslint/no-empty-interface": 'off'
|
||||||
|
"@typescript-eslint/no-floating-promises": error
|
||||||
"@typescript-eslint/no-use-before-define":
|
"@typescript-eslint/no-use-before-define":
|
||||||
- error
|
- error
|
||||||
- functions: false
|
- functions: false
|
||||||
|
"@typescript-eslint/semi": error
|
||||||
"@typescript-eslint/strict-boolean-expressions": error
|
"@typescript-eslint/strict-boolean-expressions": error
|
||||||
|
|
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
|
@ -13,10 +13,13 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- Windows-2019
|
- Windows-2019
|
||||||
|
- Windows-2022
|
||||||
- macOS-10.15
|
- macOS-10.15
|
||||||
- Ubuntu-16.04
|
- macOS-11
|
||||||
|
- macOS-12
|
||||||
- Ubuntu-18.04
|
- Ubuntu-18.04
|
||||||
- Ubuntu-20.04
|
- Ubuntu-20.04
|
||||||
|
- Ubuntu-22.04
|
||||||
nodejs:
|
nodejs:
|
||||||
- 12
|
- 12
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
10
.github/workflows/verify-on-container-alpine.yml
vendored
10
.github/workflows/verify-on-container-alpine.yml
vendored
|
@ -15,6 +15,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -44,6 +45,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -73,6 +75,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -104,6 +107,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -139,6 +143,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -170,6 +175,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -205,6 +211,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -236,6 +243,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -272,6 +280,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
@ -303,6 +312,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- alpine:3.10
|
- alpine:3.10
|
||||||
- alpine:3.11
|
- alpine:3.11
|
||||||
|
|
50
.github/workflows/verify-on-container-centos.yml
vendored
50
.github/workflows/verify-on-container-centos.yml
vendored
|
@ -15,9 +15,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
|
@ -43,9 +44,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
|
@ -71,9 +73,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
|
@ -101,9 +104,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -135,9 +139,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -165,9 +170,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -199,9 +205,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -229,9 +236,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -264,9 +272,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -294,9 +303,10 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- centos:7
|
- quay.io/centos/centos:centos7
|
||||||
- centos:8
|
- quay.io/centos/centos:stream8
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
|
20
.github/workflows/verify-on-container-ubuntu.yml
vendored
20
.github/workflows/verify-on-container-ubuntu.yml
vendored
|
@ -15,10 +15,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
|
@ -45,10 +47,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
|
@ -75,10 +79,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
|
@ -107,10 +113,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -143,10 +151,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -175,10 +185,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -211,10 +223,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -243,10 +257,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -280,10 +296,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
@ -312,10 +330,12 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
container:
|
container:
|
||||||
- ubuntu:16.04
|
- ubuntu:16.04
|
||||||
- ubuntu:18.04
|
- ubuntu:18.04
|
||||||
- ubuntu:20.04
|
- ubuntu:20.04
|
||||||
|
- ubuntu:22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Install packages
|
- name: Install packages
|
||||||
run: |
|
run: |
|
||||||
|
|
22
.github/workflows/verify-on-macos.yml
vendored
22
.github/workflows/verify-on-macos.yml
vendored
|
@ -14,6 +14,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -34,6 +36,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -54,6 +58,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -74,6 +80,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -101,6 +109,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -127,6 +137,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -149,6 +161,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -175,6 +189,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -197,6 +213,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -224,6 +242,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -246,6 +266,8 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- macos-10.15
|
- macos-10.15
|
||||||
|
- macos-11
|
||||||
|
- macos-12
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
1
.github/workflows/verify-on-ubuntu.yml
vendored
1
.github/workflows/verify-on-ubuntu.yml
vendored
|
@ -36,6 +36,7 @@ jobs:
|
||||||
os:
|
os:
|
||||||
- ubuntu-18.04
|
- ubuntu-18.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
|
- ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
22
.github/workflows/verify-on-windows.yml
vendored
22
.github/workflows/verify-on-windows.yml
vendored
|
@ -13,8 +13,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -34,8 +34,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -55,8 +55,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -76,8 +76,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -104,8 +104,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -131,8 +131,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -154,8 +154,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -181,8 +181,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -204,8 +204,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -232,8 +232,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -255,8 +255,8 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
- windows-2016
|
|
||||||
- windows-2019
|
- windows-2019
|
||||||
|
- windows-2022
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source codes
|
- name: Checkout source codes
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
|
@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Others
|
||||||
|
|
||||||
|
* add `windows-2022`, `macos-11`, `macos-12`, `ubuntu-22.04`, and `CentOS 8 Stream (Docker container)`
|
||||||
|
* drop `ubuntu-16.04`, and `CentOS 8 (Docker container)`
|
||||||
|
|
||||||
## [2.3.1] - 2021-08-01
|
## [2.3.1] - 2021-08-01
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
|
@ -17,9 +17,9 @@ Useful for SCP, SFTP, and `rsync` over SSH in deployment script.
|
||||||
|
|
||||||
tested on:
|
tested on:
|
||||||
|
|
||||||
* [all available virtual machines](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners#supported-runners-and-hardware-resources) (Windows Server 2019/2016, macOS Catalina, and Ubuntu 20.04/18.04)
|
* [all available virtual machines](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners#supported-runners-and-hardware-resources) (Windows Server 2022/2019, macOS Monterey/Big Sur/Catalina, and Ubuntu 22.04/20.04/18.04)
|
||||||
* [Docker container (Ubuntu)](https://hub.docker.com/_/ubuntu) / requires `openssh-client` package; `apt install -y openssh-client`
|
* [Docker container (Ubuntu)](https://hub.docker.com/_/ubuntu) / requires `openssh-client` package; `apt install -y openssh-client`
|
||||||
* [Docker container (CentOS)](https://hub.docker.com/_/centos) / requires `openssh-clients` package; `yum install -y openssh-clients`
|
* [Docker container (CentOS)](https://quay.io/repository/centos/centos) / requires `openssh-clients` package; `yum install -y openssh-clients`
|
||||||
* [Docker container (Alpine Linux)](https://hub.docker.com/_/alpine) / requires `openssh-client` package; `apk add openssh-client`
|
* [Docker container (Alpine Linux)](https://hub.docker.com/_/alpine) / requires `openssh-client` package; `apk add openssh-client`
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
128
lib/index.js
128
lib/index.js
|
@ -586,74 +586,85 @@ __nccwpck_require__.r(__webpack_exports__);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
main();
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
if (err instanceof Error) {
|
||||||
|
_actions_core__WEBPACK_IMPORTED_MODULE_2__.setFailed(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* main function
|
* main function
|
||||||
*/
|
*/
|
||||||
function main() {
|
function main() {
|
||||||
try {
|
// parameters
|
||||||
// parameters
|
const key = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("key", {
|
||||||
const key = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("key", {
|
required: true,
|
||||||
required: true,
|
});
|
||||||
|
const name = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("name");
|
||||||
|
const knownHosts = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("known_hosts", {
|
||||||
|
required: true,
|
||||||
|
});
|
||||||
|
const config = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("config");
|
||||||
|
const ifKeyExists = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("if_key_exists");
|
||||||
|
// create ".ssh" directory
|
||||||
|
const sshDirName = createSshDirectory();
|
||||||
|
// files to be created
|
||||||
|
const files = [];
|
||||||
|
if (shouldCreateKeyFile(path__WEBPACK_IMPORTED_MODULE_1___default().join(sshDirName, name), ifKeyExists)) {
|
||||||
|
files.push({
|
||||||
|
name: name,
|
||||||
|
contents: insertLf(key, false, true),
|
||||||
|
options: {
|
||||||
|
mode: 0o400,
|
||||||
|
flag: "wx",
|
||||||
|
},
|
||||||
});
|
});
|
||||||
const name = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("name");
|
|
||||||
const knownHosts = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("known_hosts", {
|
|
||||||
required: true,
|
|
||||||
});
|
|
||||||
const config = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("config");
|
|
||||||
const ifKeyExists = _actions_core__WEBPACK_IMPORTED_MODULE_2__.getInput("if_key_exists");
|
|
||||||
// create ".ssh" directory
|
|
||||||
const home = getHomeDirectory();
|
|
||||||
const dirName = path__WEBPACK_IMPORTED_MODULE_1___default().resolve(home, ".ssh");
|
|
||||||
fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(dirName, {
|
|
||||||
recursive: true,
|
|
||||||
mode: 0o700,
|
|
||||||
});
|
|
||||||
// files to be created
|
|
||||||
const files = [];
|
|
||||||
if (shouldCreateKeyFile(path__WEBPACK_IMPORTED_MODULE_1___default().join(dirName, name), ifKeyExists)) {
|
|
||||||
files.push({
|
|
||||||
name: name,
|
|
||||||
contents: insertLf(key, false, true),
|
|
||||||
options: {
|
|
||||||
mode: 0o400,
|
|
||||||
flag: "wx",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (knownHosts !== "unnecessary") {
|
|
||||||
files.push({
|
|
||||||
name: "known_hosts",
|
|
||||||
contents: insertLf(knownHosts, true, true),
|
|
||||||
options: {
|
|
||||||
mode: 0o644,
|
|
||||||
flag: "a",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (config !== "") {
|
|
||||||
files.push({
|
|
||||||
name: "config",
|
|
||||||
contents: insertLf(config, true, true),
|
|
||||||
options: {
|
|
||||||
mode: 0o644,
|
|
||||||
flag: "a",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// create files
|
|
||||||
for (const file of files) {
|
|
||||||
const fileName = path__WEBPACK_IMPORTED_MODULE_1___default().join(dirName, file.name);
|
|
||||||
fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(fileName, file.contents, file.options);
|
|
||||||
}
|
|
||||||
console.log(`SSH key has been stored to ${dirName} successfully.`);
|
|
||||||
}
|
}
|
||||||
catch (err) {
|
if (knownHosts !== "unnecessary") {
|
||||||
_actions_core__WEBPACK_IMPORTED_MODULE_2__.setFailed(err.message);
|
files.push({
|
||||||
|
name: "known_hosts",
|
||||||
|
contents: insertLf(knownHosts, true, true),
|
||||||
|
options: {
|
||||||
|
mode: 0o644,
|
||||||
|
flag: "a",
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
if (config !== "") {
|
||||||
|
files.push({
|
||||||
|
name: "config",
|
||||||
|
contents: insertLf(config, true, true),
|
||||||
|
options: {
|
||||||
|
mode: 0o644,
|
||||||
|
flag: "a",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// create files
|
||||||
|
for (const file of files) {
|
||||||
|
const fileName = path__WEBPACK_IMPORTED_MODULE_1___default().join(sshDirName, file.name);
|
||||||
|
fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(fileName, file.contents, file.options);
|
||||||
|
}
|
||||||
|
console.log(`SSH key has been stored to ${sshDirName} successfully.`);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* create ".ssh" directory
|
||||||
|
* @returns directory name
|
||||||
|
*/
|
||||||
|
function createSshDirectory() {
|
||||||
|
const home = getHomeDirectory();
|
||||||
|
const dirName = path__WEBPACK_IMPORTED_MODULE_1___default().resolve(home, ".ssh");
|
||||||
|
fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(dirName, {
|
||||||
|
recursive: true,
|
||||||
|
mode: 0o700,
|
||||||
|
});
|
||||||
|
return dirName;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* get home directory
|
* get home directory
|
||||||
* @returns home directory
|
* @returns home directory name
|
||||||
*/
|
*/
|
||||||
function getHomeDirectory() {
|
function getHomeDirectory() {
|
||||||
const homeEnv = getHomeEnv();
|
const homeEnv = getHomeEnv();
|
||||||
|
@ -724,7 +735,6 @@ function shouldCreateKeyFile(keyFilePath, ifKeyExists) {
|
||||||
throw new Error(`SSH key is already installed. Set "if_key_exists" to "replace" or "ignore" in order to avoid this error.`);
|
throw new Error(`SSH key is already installed. Set "if_key_exists" to "replace" or "ignore" in order to avoid this error.`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
main();
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|
262
src/main.ts
262
src/main.ts
|
@ -3,126 +3,125 @@ import path from "path";
|
||||||
|
|
||||||
import * as core from "@actions/core";
|
import * as core from "@actions/core";
|
||||||
|
|
||||||
interface FileInfo
|
interface FileInfo {
|
||||||
{
|
name: string;
|
||||||
name: string;
|
contents: string;
|
||||||
contents: string;
|
options: fs.WriteFileOptions;
|
||||||
options: fs.WriteFileOptions;
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
main();
|
||||||
|
} catch (err) {
|
||||||
|
if (err instanceof Error) {
|
||||||
|
core.setFailed(err);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* main function
|
* main function
|
||||||
*/
|
*/
|
||||||
function main(): void
|
function main(): void {
|
||||||
{
|
// parameters
|
||||||
try
|
const key = core.getInput("key", {
|
||||||
{
|
required: true,
|
||||||
// parameters
|
});
|
||||||
const key = core.getInput("key", {
|
const name = core.getInput("name");
|
||||||
required: true,
|
const knownHosts = core.getInput("known_hosts", {
|
||||||
});
|
required: true,
|
||||||
const name = core.getInput("name");
|
});
|
||||||
const knownHosts = core.getInput("known_hosts", {
|
const config = core.getInput("config");
|
||||||
required: true,
|
const ifKeyExists = core.getInput("if_key_exists");
|
||||||
});
|
|
||||||
const config = core.getInput("config");
|
|
||||||
const ifKeyExists = core.getInput("if_key_exists");
|
|
||||||
|
|
||||||
// create ".ssh" directory
|
// create ".ssh" directory
|
||||||
const home = getHomeDirectory();
|
const sshDirName = createSshDirectory();
|
||||||
const dirName = path.resolve(home, ".ssh");
|
|
||||||
fs.mkdirSync(dirName, {
|
|
||||||
recursive: true,
|
|
||||||
mode: 0o700,
|
|
||||||
});
|
|
||||||
|
|
||||||
// files to be created
|
// files to be created
|
||||||
const files: FileInfo[] = [];
|
const files: FileInfo[] = [];
|
||||||
if(shouldCreateKeyFile(path.join(dirName, name), ifKeyExists))
|
if (shouldCreateKeyFile(path.join(sshDirName, name), ifKeyExists)) {
|
||||||
{
|
files.push({
|
||||||
files.push({
|
name: name,
|
||||||
name: name,
|
contents: insertLf(key, false, true),
|
||||||
contents: insertLf(key, false, true),
|
options: {
|
||||||
options: {
|
mode: 0o400,
|
||||||
mode: 0o400,
|
flag: "wx",
|
||||||
flag: "wx",
|
},
|
||||||
},
|
});
|
||||||
});
|
}
|
||||||
}
|
if (knownHosts !== "unnecessary") {
|
||||||
if(knownHosts !== "unnecessary")
|
files.push({
|
||||||
{
|
name: "known_hosts",
|
||||||
files.push({
|
contents: insertLf(knownHosts, true, true),
|
||||||
name: "known_hosts",
|
options: {
|
||||||
contents: insertLf(knownHosts, true, true),
|
mode: 0o644,
|
||||||
options: {
|
flag: "a",
|
||||||
mode: 0o644,
|
},
|
||||||
flag: "a",
|
});
|
||||||
},
|
}
|
||||||
});
|
if (config !== "") {
|
||||||
}
|
files.push({
|
||||||
if(config !== "")
|
name: "config",
|
||||||
{
|
contents: insertLf(config, true, true),
|
||||||
files.push({
|
options: {
|
||||||
name: "config",
|
mode: 0o644,
|
||||||
contents: insertLf(config, true, true),
|
flag: "a",
|
||||||
options: {
|
},
|
||||||
mode: 0o644,
|
});
|
||||||
flag: "a",
|
}
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// create files
|
// create files
|
||||||
for(const file of files)
|
for (const file of files) {
|
||||||
{
|
const fileName = path.join(sshDirName, file.name);
|
||||||
const fileName = path.join(dirName, file.name);
|
fs.writeFileSync(fileName, file.contents, file.options);
|
||||||
fs.writeFileSync(fileName, file.contents, file.options);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
console.log(`SSH key has been stored to ${dirName} successfully.`);
|
console.log(`SSH key has been stored to ${sshDirName} successfully.`);
|
||||||
}
|
}
|
||||||
catch(err)
|
|
||||||
{
|
/**
|
||||||
core.setFailed(err.message);
|
* create ".ssh" directory
|
||||||
}
|
* @returns directory name
|
||||||
|
*/
|
||||||
|
function createSshDirectory(): string {
|
||||||
|
const home = getHomeDirectory();
|
||||||
|
const dirName = path.resolve(home, ".ssh");
|
||||||
|
fs.mkdirSync(dirName, {
|
||||||
|
recursive: true,
|
||||||
|
mode: 0o700,
|
||||||
|
});
|
||||||
|
return dirName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get home directory
|
* get home directory
|
||||||
* @returns home directory
|
* @returns home directory name
|
||||||
*/
|
*/
|
||||||
function getHomeDirectory(): string
|
function getHomeDirectory(): string {
|
||||||
{
|
const homeEnv = getHomeEnv();
|
||||||
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`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(home === "/github/home")
|
if (home === "/github/home") {
|
||||||
{
|
// Docker container
|
||||||
// Docker container
|
return "/root";
|
||||||
return "/root";
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return home;
|
return home;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get HOME environment name
|
* get HOME environment name
|
||||||
* @returns HOME environment name
|
* @returns HOME environment name
|
||||||
*/
|
*/
|
||||||
function getHomeEnv(): string
|
function getHomeEnv(): string {
|
||||||
{
|
if (process.platform === "win32") {
|
||||||
if(process.platform === "win32")
|
// Windows
|
||||||
{
|
return "USERPROFILE";
|
||||||
// Windows
|
}
|
||||||
return "USERPROFILE";
|
|
||||||
}
|
|
||||||
|
|
||||||
// macOS / Linux
|
// macOS / Linux
|
||||||
return "HOME";
|
return "HOME";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -132,25 +131,21 @@ function getHomeEnv(): string
|
||||||
* @param append true to append
|
* @param append true to append
|
||||||
* @returns new value
|
* @returns new value
|
||||||
*/
|
*/
|
||||||
function insertLf(value: string, prepend: boolean, append: boolean): string
|
function insertLf(value: string, prepend: boolean, append: boolean): string {
|
||||||
{
|
let affectedValue = value;
|
||||||
let affectedValue = value;
|
|
||||||
|
|
||||||
if(value.length === 0)
|
if (value.length === 0) {
|
||||||
{
|
// do nothing if empty
|
||||||
// do nothing if empty
|
return "";
|
||||||
return "";
|
}
|
||||||
}
|
if (prepend && !affectedValue.startsWith("\n")) {
|
||||||
if(prepend && !affectedValue.startsWith("\n"))
|
affectedValue = `\n${affectedValue}`;
|
||||||
{
|
}
|
||||||
affectedValue = `\n${affectedValue}`;
|
if (append && !affectedValue.endsWith("\n")) {
|
||||||
}
|
affectedValue = `${affectedValue}\n`;
|
||||||
if(append && !affectedValue.endsWith("\n"))
|
}
|
||||||
{
|
|
||||||
affectedValue = `${affectedValue}\n`;
|
|
||||||
}
|
|
||||||
|
|
||||||
return affectedValue;
|
return affectedValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -159,29 +154,24 @@ function insertLf(value: string, prepend: boolean, append: boolean): string
|
||||||
* @param ifKeyExists action if SSH key exists
|
* @param ifKeyExists action if SSH key exists
|
||||||
* @returns Yes/No
|
* @returns Yes/No
|
||||||
*/
|
*/
|
||||||
function shouldCreateKeyFile(keyFilePath: string, ifKeyExists: string): boolean
|
function shouldCreateKeyFile(keyFilePath: string, ifKeyExists: string): boolean {
|
||||||
{
|
if (!fs.existsSync(keyFilePath)) {
|
||||||
if(!fs.existsSync(keyFilePath))
|
// should create if file does not exist
|
||||||
{
|
return true;
|
||||||
// should create if file does not exist
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(ifKeyExists)
|
switch (ifKeyExists) {
|
||||||
{
|
case "replace":
|
||||||
case "replace":
|
// remove file and should create if replace
|
||||||
// remove file and should create if replace
|
fs.unlinkSync(keyFilePath);
|
||||||
fs.unlinkSync(keyFilePath);
|
return true;
|
||||||
return true;
|
|
||||||
|
|
||||||
case "ignore":
|
case "ignore":
|
||||||
// should NOT create if ignore
|
// should NOT create if ignore
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// error otherwise
|
// error otherwise
|
||||||
throw new Error(`SSH key is already installed. Set "if_key_exists" to "replace" or "ignore" in order to avoid this error.`);
|
throw new Error(`SSH key is already installed. Set "if_key_exists" to "replace" or "ignore" in order to avoid this error.`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main();
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue