使用Automator打造NodeJS依賴包的懶人安裝應用

最近在幫隔壁QA組寫一點UI自動化測試的東西,也是折騰了很多之前沒有時間搞的東西。比如:

我們有一個NodeJS的包,是內網庫里的。QA Manager給組員寫了一個帶截圖的誠意滿滿的Guide Doc,然而組員們(基本都不怎么會coding)并不買賬,說太復雜了。她(QAM)就很頭疼。

我拿來一看,確實有點……畢竟要先裝node,然后node -v看版本確認安裝,然后set一個registery,裝完還要在命令行里用。對于一個Terminal是啥都不知道的人來說,確實…麻煩了點。

于是我就寫了一個sh腳本給她。大概是:

nodepath=$(which node)

if [ -n $nodepath ]; then
    echo $nodepath
else
    echo 'You dont have node installed on your laptop\n'
    echo 'Start installing node on your laptop\n'
    curl "https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE 's|.*>node-(.*)\.pkg</a>.*|\1|p')}.pkg" > "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
fi

node -v

npm config set registry https://npm.someurl.com/

npm i -g @namespace/package

npm config delete registry

寫完后,直接打開Terminal,cd到這個目錄,sh之即可。

然而這樣還是有問題,因為用戶是真的不會,于是QA Manager就像,要是能用個APP一鍵搞定就好了??!

講道理,其實可以。


我的思路是:

寫一個Automator,利用Run Shell Script這個方法來運行shell 腳本

然而問題來了,Automator的腳本里,不支持node這個命令,估計是加了安全性保護。隨后再試驗,Shell腳本也不能用。走不通了。

于是我轉而使用Apple Script去實現。先寫個測試看看有沒有安全限制,蠻簡單。

Tell Application "Terminal"

do script("sh ~/test.sh")

end tell

沒問題。

但是要生成一個sh,再echo進去,再run太復雜了,還有多重的引號轉譯。

于是我改為用Automator運行AppleScript腳本,用AS腳本來驅動sh——

成功。

下一步就要看怎么把sh的內容扔到一個文件里了。這倒是也不難,因為寫文件這種級別的操作還是沒啥問題的。

于是,最終成果如下:

最后只需要導出一個.app即可。

最終的效果就是,QA的同學,雙擊這個APP,自動生成一個sh文件,寫入目標script,使用AS去執(zhí)行之,然后刪掉sh臨時文件。

大功告成。


另外,set registry之后刪除是個不好的行為,可以用npm i xxx -registry xxx來代替。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容