From 75f4435545bd4bffe30195a7bfce6581607dad69 Mon Sep 17 00:00:00 2001 From: shimataro Date: Mon, 8 Mar 2021 17:40:09 +0900 Subject: [PATCH] implement --- .github/workflows/verify-on-ubuntu.yml | 3 --- lib/index.js | 27 +++++++++++++++++--- src/main.ts | 34 ++++++++++++++++++++++---- 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/.github/workflows/verify-on-ubuntu.yml b/.github/workflows/verify-on-ubuntu.yml index 5839b0b..28aab71 100644 --- a/.github/workflows/verify-on-ubuntu.yml +++ b/.github/workflows/verify-on-ubuntu.yml @@ -275,9 +275,6 @@ jobs: uses: ./. with: key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} no_known_hosts: true - name: print created files run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp diff --git a/lib/index.js b/lib/index.js index b7f6a6f..5c07890 100644 --- a/lib/index.js +++ b/lib/index.js @@ -428,18 +428,16 @@ const core = __importStar(__nccwpck_require__(186)); function main() { try { // parameters + const noKnownHosts = string2boolean(core.getInput("no_known_hosts")); const key = core.getInput("key", { required: true, }); const name = core.getInput("name"); const knownHosts = core.getInput("known_hosts", { - required: true, + required: !noKnownHosts, // optional if no_known_hosts is true }); const config = core.getInput("config"); const ifKeyExists = core.getInput("if_key_exists"); - // test - const noKnownHosts = core.getInput("no_known_hosts"); - console.log(noKnownHosts); // create ".ssh" directory const home = getHomeDirectory(); const dirName = path_1.default.resolve(home, ".ssh"); @@ -487,6 +485,27 @@ function main() { core.setFailed(err.message); } } +/** + * convert string to boolean + * @param value string value + * @returns boolean value + */ +function string2boolean(value) { + // true if "true" / "yes" / "on" + switch (value.trim().toLowerCase()) { + case "true": + case "yes": + case "on": + return true; + } + // true if number and non-zero + const numberValue = Number(value); + if (!isNaN(numberValue) && numberValue !== 0) { + return true; + } + // false otherwise + return false; +} /** * get home directory * @returns home directory diff --git a/src/main.ts b/src/main.ts index 429be53..3670892 100644 --- a/src/main.ts +++ b/src/main.ts @@ -18,20 +18,17 @@ function main(): void try { // parameters + const noKnownHosts = string2boolean(core.getInput("no_known_hosts")); const key = core.getInput("key", { required: true, }); const name = core.getInput("name"); const knownHosts = core.getInput("known_hosts", { - required: true, + required: !noKnownHosts, // optional if no_known_hosts is true }); const config = core.getInput("config"); const ifKeyExists = core.getInput("if_key_exists"); - // test - const noKnownHosts = core.getInput("no_known_hosts"); - console.log(noKnownHosts); - // create ".ssh" directory const home = getHomeDirectory(); const dirName = path.resolve(home, ".ssh"); @@ -86,6 +83,33 @@ function main(): void } } +/** + * convert string to boolean + * @param value string value + * @returns boolean value + */ +function string2boolean(value: string): boolean +{ + // true if "true" / "yes" / "on" + switch(value.trim().toLowerCase()) + { + case "true": + case "yes": + case "on": + return true; + } + + // true if number and non-zero + const numberValue = Number(value); + if(!isNaN(numberValue) && numberValue !== 0) + { + return true; + } + + // false otherwise + return false; +} + /** * get home directory * @returns home directory