1
0
Fork 0
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:
shimataro 2022-10-30 19:57:06 +09:00 committed by GitHub
parent b38d88da8a
commit adea214356
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 324 additions and 247 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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: |

View file

@ -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: |

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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();
})(); })();

View file

@ -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();