快速構建一個shell型別的簡單應用 quick-shell.js

FlyAndNotDown發表於2019-02-21

釋出自Kindem的部落格,歡迎大家轉載,但是要注意註明出處

quick-shell.js簡介

一直想自己釋出一個npm包試試,正巧剛剛學完作業系統,寫了很多shell型別的小程式,就想著要不在nodejs上封裝一套用於快速建立簡單shell類應用的庫,於是quick-shell.js就誕生了

使用quick-shell你可以快速構建一個shell型別的簡單應用,非常適合使用js做課設或者一些小demo

安裝

該包已經發布在npm上了,可以直接使用npm安裝到專案依賴

npm install quick-shell
複製程式碼

基本使用

let shell = require(`quick-shell`);

shell
    .welcome(`welcome to my shell program`)
    .prompt(`$ `)
    .listen(`echo`, (params) => {
        console.log(params);
    })
    .listen(`add`, (params) => {
        let temp = params.split(` `);
        console.log(
            (parseInt(temp[0]) + parseInt(temp[1])).toString()
        );
    })
    .start();
複製程式碼

像這樣間可以簡單地構建一個shell型別應用,上面的程式碼執行時會像這樣:

welcome to my shell program
$
複製程式碼

當你輸入 `echo hello world`:

welcome to my shell program
$ echo hello world
hello world
複製程式碼

當你輸入 `add 7 9`:

welcome to my shell program
$ add 7 9
16
複製程式碼

就像這樣,每當你想要為你自己的shell應用新增一條指令,只需要新增它的響應即可

API

安裝:

npm install quick-shell
複製程式碼

鏈式呼叫:

shell
    .//...
    .//...
    .start();
複製程式碼

設定歡迎文字:

shell
    .welcome(`your welcome text`);
複製程式碼

設定提示符:

shell
    .prompt(`# `);
複製程式碼

自定義錯誤提示:

shell
    .error({
        inputNothing: `you input nothing`,
        noMatchedInstruction: `have no matched instruction`
    });
複製程式碼

建立一個指令監聽器:

// 這裡的 params 以 `param param param` 的形式存在
shell
    .listen(`echo`, (params) => {
        console.log(params);
    });
複製程式碼

如果你還是不滿足於現有的功能,你可以使用內部定義的事件來進行自定義操作:

shell
    .onStart(() => {
        // do something on shell start
    })
    .onExit(() => {
        // do something on shell exit
    })
    .onLine((line) => {
        // do something when a line inputed
    })
    .onCaught((instruction, params) => {
        // do something when a instruction was caught
    });
複製程式碼

開始執行程式:

shell
    .start();
複製程式碼

參考

相關文章